Fog Creek Software
Discussion Board




DSP programmer interview

What kind of questions will be asked?

Anon
Monday, February 23, 2004

What is meant by "Nyquist rate"?
What does it mean to have an orthogonal transform?
What is a Z transform?
Describe the differences between an IIR and FIR filter.
What is "Noise Bandwidth"?

Those would be the softball questions.

hoser
Monday, February 23, 2004

* What is meant by "Nyquist rate"?

Uh... "The sniffling, sneezing, aching, so you can rest" rate?

* What does it mean to have an orthogonal transform?

Change your teeth into a proportional form?

* What is a Z transform?

Can it be the last transform?

Wait, I know this stuff!  Why are you kicking me out?!

T.J.
Monday, February 23, 2004

"Noise Bandwidth"  ~ sorry, could you repeat the question, I couldn't understand it because of the strength of your voice.

Simon Lucy
Monday, February 23, 2004

If this is for an embedded system then you'll need to be familiar with common DSP chip architectures.

DSP
Monday, February 23, 2004

What DSP architectures do you know?

Why do most DSPs have a VLIW core?

What families of DSP's have you used (TigerSHARC, BlankFin, Trimedia, Nexperia, 'C6416, 'C6711, etc)?

What development environments have you worked with?

What's DSP/BIOS?  How about pSOS?

What's a JTAG emulator used for?

What DSP assembly languages have you worked with?

What special concerns do you have when using DSP assembler?

Why are most DSP's very sensitive to hand optimization?

Name some applications that use a DSP, and why they would use a DSP.

Myron A. Semack
Monday, February 23, 2004

BlankFin = BlackFin

Myron A. Semack
Monday, February 23, 2004

I've designed a couple of DSP chips and I can't answer most of Myron's questions.

And what's an orthogonal transform?

anon DSP developer
Monday, February 23, 2004

Well, it's certainly good to see that it's not just the people who interview for business programming positions who are holier than thou snobs. ;)

Sum Dum Gai
Tuesday, February 24, 2004

I don't know that they are being snobish. I think there's a lot of confusion about what questions are useful to ask in an interview. It's entirely possible that I wouldn't be very good at doing whatever Myron is hiring for. I can build chips but that doesn't necessarily mean I can come up with the most efficient algorithms for them. I know more than a random person off the street but is that enough? Could be similar to a piano builder who plays a bit but he isn't Chopin.

anon DSP developer
Tuesday, February 24, 2004

Know FFT and how you use it.
Know A->D and D->A convertors.
Know sampling rates, losey/lossless compression algorithms.
Know S/N ratios and how to remove noise from a signal.
Know neural nets and how you would train them, or not train them, depending on their type.

It never hurts to be familar with the signal processing software packages from Matlab or Mathematica.

Bathmophobic skier
Tuesday, February 24, 2004

anon DSP developer,

Which ones can't you answer?  I'm genuinely curious.

Most of those questions are things that I asked my last interviewee with DSP experience.  He got almost all of them right.

Myron A. Semack
Tuesday, February 24, 2004

Also, know digital fliters - band pass, notch, etc.

Bathmophobic skier
Tuesday, February 24, 2004

An orthogonal transform means that the series coefficients are not inter-related.

For example, suppose I have a "transform" that fits a curve or data set to a polynomial series:

y = a0 + a1*x + a2*x^2 + a3*x^3 + ...

Adding additional higher order coefficients will change the lower order terms.  This would be an example of a non-orthogonal transform.

The Fourier Transform is an example of an orthogonal transform.  Once you calculate a term, any term, it stands alone - unrelated to any other term, higher or lower.

Noise Power BW:  N = kTB.  Everyone knows that.

Snobery?  We are not amused...

hoser
Tuesday, February 24, 2004

Thanks hoser.

--

I can answer bathmorphic's questions no problem.

On Myrons,

> What DSP architectures do you know?

What do you mean by DSP architecture? Specific chips or general things like RISC vs VLIW vs whatever else? I can talk about the tradeoffs of various architectural approaches to distributing synchronization signals/clocks within the silicon. Or the tradeoffs of having on-chip memory vs off-chip. Or various strategies for cell layout.

> Why do most DSPs have a VLIW core?

Do they? I guess most custom DSPs do, but I include RISCs in my definition of DSPs and I think there are a lot of them out there. There's also stuff like the old 56k architecture, which was not VLIW. What do you mean by most? In numbers of chips sold? I didn't know that. VLIW is a good way to go with a lot of custom chips where you want to store the entire state, or much of it of the chip in a single or a small set of wide registers.

> What families of DSP's have you used (TigerSHARC, BlankFin, Trimedia, Nexperia, 'C6416, 'C6711, etc)?

Don't know any of those. Nowadays, I like the PPC for DSP work. In the past I've used 56k. In between, I've developed a couple of VLIW ASICs.

> What development environments have you worked with?

Emacs? C? Assembly? Custom DSP programming tools I've written for custom architectures? Is this what you're asking?

> What's DSP/BIOS?  How about pSOS?

No idea!

> What's a JTAG emulator used for?

I don't know - isn't JTAG that serial signal standard for testing chips at the foundry or is that something else?

> What DSP assembly languages have you worked with?

Like I said before, nowadays on PPC RISC I mainly work in C since there's no way I can optimize a pipelined architecture as well as the compiler.

> What special concerns do you have when using DSP assembler?

Maybe you could clarify what sort of architecture in particular we are talking about. There seem to be challenges unique to each different situation.

> Why are most DSP's very sensitive to hand optimization?

Sensitive in what way?

> Name some applications that use a DSP, and why they would use a DSP.

Anything with a control, audio or high frequency signal that needs to be filtered, analysed or synthesized. For example, Satellites, GPS, cell phones, musical instruments, deep space probes.

anon DSP developer
Tuesday, February 24, 2004

> What do you mean by DSP architecture?

I should have said brands of DSP there.  Have you worked with Analog Devices DSPs?  How about TI?  Philips?


>> Why do most DSPs have a VLIW core?
>
> Do they?

Most of the newly developed ones are all VLIW.

All the higher-end ones, like the TI 'C6416, the Nexperia, etc seem to.  Some of the Analog Devices DSP's are VLIW.

Most of the IP cores that you can license (for use in an FPGA), are RISC.
A lot of motion control, microcontrollerish, DSPs are RISC.


> What families of DSP's have you used (TigerSHARC, BlankFin, Trimedia, Nexperia, 'C6416, 'C6711, etc)?

These are all the current offerings from the big DSP vendors (TI, Philips, Analog Devices).

Don't know any of those. Nowadays, I like the PPC for DSP work. In the past I've used 56k. In between, I've developed a couple of VLIW ASICs.


>> What development environments have you worked with?

> Emacs? C? Assembly? Custom DSP programming tools I've written for custom architectures? Is this what you're asking?

Yes in a way.  I looking for answers like Code Composer Studio, VisualDSP++, Mathworks, LabView.


>> What's DSP/BIOS?  How about pSOS?

> No idea!

Real-time operating systems that run on the DSP core.  They provide you with all the services of a read operating system (task scheduling, drivers, TCP/IP stacks, etc).  It makes multi-threaded applications MUCH easier.


> I don't know - isn't JTAG that serial signal standard for testing chips at the foundry or is that something else?

That's one use.  JTAG is also used as a debugger.  Most DSP demo boards have a JTAG port on it for loading compiled binaries, poking around the memory map, stepping through an application, etc.


>> What DSP assembly languages have you worked with?

> Like I said before, nowadays on PPC RISC I mainly work in C since there's no way I can optimize a pipelined architecture as well as the compiler.

But what ones have you worked with in the past?


>> What special concerns do you have when using DSP assembler?

>  Maybe you could clarify what sort of architecture in particular we are talking about. There seem to be challenges unique to each different situation.

Basically, what I'm looking for is that you need to account for the architecture.  If it's a VLIW core, you need group your assembly functions into blocks of 8.  If you're not using a particular execution unit, you need to pad some NOPs.


>> Why are most DSP's very sensitive to hand optimization?

> Sensitive in what way?

Depending on how badly the C compiler sucks, you may have to manually unroll the loops, group instructions a certain way, etc.


>> Name some applications that use a DSP, and why they would use a DSP.

> Anything with a control, audio or high frequency signal that needs to be filtered, analysed or synthesized. For example, Satellites, GPS, cell phones, musical instruments, deep space probes.

Good, but why would you use a DSP instead of a CPU?

Myron A. Semack
Wednesday, February 25, 2004

*  Recent Topics

*  Fog Creek Home