Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

need recommand on choosing right DSP FPGA for signal processing

Status
Not open for further replies.

mathson

Newbie level 4
Joined
Oct 20, 2011
Messages
6
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,322
Hi everyone,

I am doing a project which is analyzing the spectrum datum. I had develop some algorithms in MATLAB. The code basically grap the 50000*2 matrix and do the cross correlation with another 50000*2 matrix, and go on. I hope the FPGA can get the matrix and finish the code ASAP. Do you have any recommend?
I am looking for the FPGA board for about $100~500.
Thanks!
 

Unfortunately a little more information is needed before anyone can help with a sensible recommendation...

In particular,
a) where are these matricies stored?
b) how fast do you want/need the computation done, and
c) what is the data type/precision (noting that MATLAB natively uses double precision floating point)?

FPGA's are truly wonderful beasts, but (typically) don't store large arrays of data particularly efficiently. Without knowing anything else about your problem, I'd also urge you to consider a dedicated DSP processor, which can be programmed comparatively quickly and has an instruction set/architecture optimised for these types of problems. Texas Instruments and Analog Devices have a range of cheap development boards which might be useful.
 

Thank you for your prompt answer!!!


Unfortunately a little more information is needed before anyone can help with a sensible recommendation...

In particular,
a) where are these matricies stored?
Currently I am interfacing matlab with computer with Labview, so it is readout by matlab.

b) how fast do you want/need the computation done, and
There is interval about 10ms between each time the spectrum is setupped.

c) what is the data type/precision (noting that MATLAB natively uses double precision floating point)?
Because the sampling interval from measurement is 0.002 nm. And I would love to apply interpolation to get accuracy smaller than it, say, to get 0.0002nm.


FPGA's are truly wonderful beasts, but (typically) don't store large arrays of data particularly efficiently. Without knowing anything else about your problem, I'd also urge you to consider a dedicated DSP processor, which can be programmed comparatively quickly and has an instruction set/architecture optimised for these types of problems. Texas Instruments and Analog Devices have a range of cheap development boards which might be useful.

Sorry that I am not familiar with coding on FPGA or DSP. Do you have any recommend from them?
 

Hey mathson,

OK, thanks for the extra information - so these arrays are currently stored on a PC, therefore if you have an external piece of hardware doing the computation you also need to consider the time taken to transfer the data to/fro the processor (be it FPGA or DSP). Your arrays are comparatively small, so any modern transport layer (e.g. USB, ethernet etc) will handle this with ease.

I'm not sure I quite understand what you mean when you say "Because the sampling interval from measurement is 0.002 nm. And I would love to apply interpolation to get accuracy smaller than it, say, to get 0.0002nm" in response to my question about data types. It doesn't really matter though, since you mentioned a calculation rate of 10ms which is enough time to compute a 50,000 point cross correlation in any practical precision on either of the platforms we are considering.

Given your unfamiliarity with coding on either platform though, I would now STRONGLY recommend the DSP as opposed to the FPGA approach.

The reason is that all DSPs can be programmed in C, using a suitable compiler. The Unix gcc compiler has been ported to a few popular platforms (they'll turn up in Google) and a simple seach for "cross correlation c code" will turn up snippets that might get you 90% of the way there [Cross Correlation for example]. Before the FPGA afficionados assassinate me - yes you CAN program these devices in C also, but only in code running on a processor instantiated on the array. FPGA's bring with them the (powerful, but unneccesary here) added complexity of explicit data precision, timing and memory management. Sure, essential if you only had 10 us to do your task, but you've got the luxury of 10 ms to allow you a higher level (read: easier to debug) programming environment.

Some DSP manufacturers also provide the compilers for a reasonable (or free?) cost...

Have a peek at the (excellent, and free) text The Scientist and Engineer's Guide to Digital Signal Processing too. This might help with some background/techniques.

A nagging thought to run past you first - I'd actually suspect the PC you're running all of this on would have sufficient grunt to do your calculation without the requirement of additional hardware in the first place. Using MATLAB's compiler to mex-ify a dedicated correlation routine might surprise you. If that isn't quick enough then you might be able to use DSP tricks like correlation with the FFT (e.g. **broken link removed**) to allow you to use precompiled (blindingly fast) routines like FFTW Home Page and do it all in real time with the PC's CPU.

If you decide an external DSP is still the way to go, something like TI's TMS320C6713 DSP Starter Kit (DSK) - TMDSDSK6713 - TI Tool Folder DSP starter kit would make light work of your calculation. (I'm not as familiar with the Analog Devices lineup, but this looks tasty: ADSP-21375 SHARC EZ-KIT Lite Evaluation Kit | Analog Devices - no doubt there's other manufacturers out there which would work for you too).

Good luck!
 

Hey mathson,

OK, thanks for the extra information - so these arrays are currently stored on a PC, therefore if you have an external piece of hardware doing the computation you also need to consider the time taken to transfer the data to/fro the processor (be it FPGA or DSP). Your arrays are comparatively small, so any modern transport layer (e.g. USB, ethernet etc) will handle this with ease.

I'm not sure I quite understand what you mean when you say "Because the sampling interval from measurement is 0.002 nm. And I would love to apply interpolation to get accuracy smaller than it, say, to get 0.0002nm" in response to my question about data types. It doesn't really matter though, since you mentioned a calculation rate of 10ms which is enough time to compute a 50,000 point cross correlation in any practical precision on either of the platforms we are considering.

Given your unfamiliarity with coding on either platform though, I would now STRONGLY recommend the DSP as opposed to the FPGA approach.

The reason is that all DSPs can be programmed in C, using a suitable compiler. The Unix gcc compiler has been ported to a few popular platforms (they'll turn up in Google) and a simple seach for "cross correlation c code" will turn up snippets that might get you 90% of the way there [Cross Correlation for example]. Before the FPGA afficionados assassinate me - yes you CAN program these devices in C also, but only in code running on a processor instantiated on the array. FPGA's bring with them the (powerful, but unneccesary here) added complexity of explicit data precision, timing and memory management. Sure, essential if you only had 10 us to do your task, but you've got the luxury of 10 ms to allow you a higher level (read: easier to debug) programming environment.

Some DSP manufacturers also provide the compilers for a reasonable (or free?) cost...

Have a peek at the (excellent, and free) text The Scientist and Engineer's Guide to Digital Signal Processing too. This might help with some background/techniques.

A nagging thought to run past you first - I'd actually suspect the PC you're running all of this on would have sufficient grunt to do your calculation without the requirement of additional hardware in the first place. Using MATLAB's compiler to mex-ify a dedicated correlation routine might surprise you. If that isn't quick enough then you might be able to use DSP tricks like correlation with the FFT (e.g. **broken link removed**) to allow you to use precompiled (blindingly fast) routines like FFTW Home Page and do it all in real time with the PC's CPU.

If you decide an external DSP is still the way to go, something like TI's TMS320C6713 DSP Starter Kit (DSK) - TMDSDSK6713 - TI Tool Folder DSP starter kit would make light work of your calculation. (I'm not as familiar with the Analog Devices lineup, but this looks tasty: ADSP-21375 SHARC EZ-KIT Lite Evaluation Kit | Analog Devices - no doubt there's other manufacturers out there which would work for you too).

Good luck!

Hi thylacine1975,
Thank you for your fast and detailed reply!!!
I will first try to mexify it in Matlab and use the DSP tricks as you noticed.
I will look on the DSP board that you recommend. Cuz I want to build a integrated system to handle the peak shift estimation function.
Best regards.
Mathson
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top