DPE
Newbie level 3
- Joined
- Jan 9, 2010
- Messages
- 3
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1,281
- Location
- Austin, TX
- Activity points
- 1,320
I've begun a crash course on FPGA design having not touched them since school more than a decade ago. I've been tasked with designing an FPGA-based solution for the following:
Digitize 4096 samples of 16 channels of 1kHz audio in parallel, perform FFT's on each, and calculate various SNR/THD/IP3 characteristics.
We'll be using Xilinx and would like to get by with the Web Pack version of ISE. I've currently zero'ed in on the xc3sd1800a. This FPGA will not have enough memory to store all of the data; so I'm planning on adding some external memory.
My current algorithm is as follows:
1. Have the FPGA monitor a set of three pins which will be used to kickoff the FPGA to read in the serial data from the digitizers (sampled at 192kHz).
2. As each 24-bit result is received, have the FPGA turn around and push the 16 24-bit words to the external RAM. Repeat this process 4096 times.
3. Have the FPGA read in the 16 data sets from external memory serially and perform the FFT and other calcuations.
4. Make the results available to the host processor (perhaps JTAG register reads by the host).
Having never done this before, I'm looking for any advice from experts. Does this plan sound reasonable? How overly ambitious is this for my first project? Any pitfalls you can see coming in either the HW or SW design that could be avoided with bit of wisdom from an experienced designer? Any particular books that you would recommend? I just purchased Chu's book on the Spartan 3. I plan on lifting what I can from the eval board schematic for hardware design.
Sorry for the long-winded explanation with no particular technical question. But I would really appreciate anyone's feedback!
Digitize 4096 samples of 16 channels of 1kHz audio in parallel, perform FFT's on each, and calculate various SNR/THD/IP3 characteristics.
We'll be using Xilinx and would like to get by with the Web Pack version of ISE. I've currently zero'ed in on the xc3sd1800a. This FPGA will not have enough memory to store all of the data; so I'm planning on adding some external memory.
My current algorithm is as follows:
1. Have the FPGA monitor a set of three pins which will be used to kickoff the FPGA to read in the serial data from the digitizers (sampled at 192kHz).
2. As each 24-bit result is received, have the FPGA turn around and push the 16 24-bit words to the external RAM. Repeat this process 4096 times.
3. Have the FPGA read in the 16 data sets from external memory serially and perform the FFT and other calcuations.
4. Make the results available to the host processor (perhaps JTAG register reads by the host).
Having never done this before, I'm looking for any advice from experts. Does this plan sound reasonable? How overly ambitious is this for my first project? Any pitfalls you can see coming in either the HW or SW design that could be avoided with bit of wisdom from an experienced designer? Any particular books that you would recommend? I just purchased Chu's book on the Spartan 3. I plan on lifting what I can from the eval board schematic for hardware design.
Sorry for the long-winded explanation with no particular technical question. But I would really appreciate anyone's feedback!