O
o pere o
Guest
My current goal is to implement some digital signal processing (filters)
on a FPGA. I am currently using Terasics DE0 nano board. This board has
an ADC128S022 ADC. I have started as follows:
From the 50 MHz board reference I derive a 25.6 MHz signal with a PLL.
From this clock I generate the signals required to drive the ADC,
essentially a clock at 3.2 MHz. Every 16 clock cycles, the ADC gives a
12 bit sample. This translates into 200 ksps. I generate a signal
"smpl_rdy" at the appropriate position which allows me to latch the 8
most significant bits.
The main question is how should I do the signal processing:
a) Using the 25.6 MHz clock and using smpl_rdy as a clock enable
b) Deriving a new 200 kHz clock from the PLL
I have done some projects on FPGAs but they were quite simple, so I
consider myself only a little more than a beginner. I can think of some
problems with both approaches, but I may have overlooked may others:
For instance, if I followed a), I guess that Quartus II would think that
the processing happens at 25.6 MHz: if there is a long combinational
path between registers, the timing analyzer will not be able to figure
out that the data and the enable signal are stable during 16 clock
cycles. Is there a way to provide this info to Quartus II? OTOH, using
the same signal as an enable for everything further down does not seem
sound enough, thinking of fanouts. So what?
If I tried to follow b), how would I ensure that there is the proper
phase relationship between both clocks? Is there a way to achieve this?
Thanks for any advice.
Pere
on a FPGA. I am currently using Terasics DE0 nano board. This board has
an ADC128S022 ADC. I have started as follows:
From the 50 MHz board reference I derive a 25.6 MHz signal with a PLL.
From this clock I generate the signals required to drive the ADC,
essentially a clock at 3.2 MHz. Every 16 clock cycles, the ADC gives a
12 bit sample. This translates into 200 ksps. I generate a signal
"smpl_rdy" at the appropriate position which allows me to latch the 8
most significant bits.
The main question is how should I do the signal processing:
a) Using the 25.6 MHz clock and using smpl_rdy as a clock enable
b) Deriving a new 200 kHz clock from the PLL
I have done some projects on FPGAs but they were quite simple, so I
consider myself only a little more than a beginner. I can think of some
problems with both approaches, but I may have overlooked may others:
For instance, if I followed a), I guess that Quartus II would think that
the processing happens at 25.6 MHz: if there is a long combinational
path between registers, the timing analyzer will not be able to figure
out that the data and the enable signal are stable during 16 clock
cycles. Is there a way to provide this info to Quartus II? OTOH, using
the same signal as an enable for everything further down does not seem
sound enough, thinking of fanouts. So what?
If I tried to follow b), how would I ensure that there is the proper
phase relationship between both clocks? Is there a way to achieve this?
Thanks for any advice.
Pere