Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
20703 Discussions

IQ down converting speed

Altera_Forum
Honored Contributor II
1,198 Views

I need some advice on device speeds. 

I want to implement a simple IQ down converter. A simple test taking an input signal from an A/D (6 clocks to read), & mixing it with an NCO, implemented in a Stratix III is giving me a max clock speed of 300MHz, and therefore sample rate of 300/6. 

I haven't included the FIR filter yet. 

 

What is the max clock speed / sample speed I could practically aim for in a Stratix III? 

What is the max clock speed / sample speed I could practically aim for in a Cyclone III? 

 

That is, in practice, what is an easily achievable IF sampling frequency? 

 

Is mixing a standard IF of 10.7MHz down to an I & Q of say 100KHz easily achievable in a Cyclone III or do I have to have a Stratix?
0 Kudos
8 Replies
Altera_Forum
Honored Contributor II
462 Views

If your ADC is taking 6 cycles to read at 300MHz clock rate, then your ADC interface sounds a bit strange. 

 

I interface 1GHz dual-channel ADCs into Stratix II devices. The digitizers output 1Gbps signals which can be captured using the LVDS on the Stratix II. On a Stratix III you should be able to do something similar. I'm not sure what the LVDS limit on Cyclone III is. 

 

However, it sounds like you are only wanting to sample a signal centered on 10MHz, and if you can really only read every 6th sample from your ADC operating at 300MHz, then your effective sampling frequency is only 300MHz/6 = 50MHz, so 25MHz is your Nyquist frequency.  

 

Your external signal will need an analog filter that causes the signal amplitude to start to fall off at 10MHz (or whereever your signal is located) and by the time you get to 25MHz+15MHz = 40MHz, the signal power needs to be below your desired signal power at 10MHz (the signal at 40MHz will alias onto your signal at 10MHz when you sample at 25MHz). 

 

Once the signal is sampled, and is inside the FPGA, you have to make sure you preserve the SNR you desire your signal to have though your digital processing, eg., you need to make sure you carry the right number of bits in your NCO and the output of your NCO. 

 

The decimation rate you are considering 10MHz/100kHz is about 100x so you should be able to decimate using a multi-state design consisting of a CIC filter, followed by a pass-band cleanup filter (FIR or half-band). If you do not know these DSP terms, browse around MATLABs web. If you have a MATLAB license, you can use FDATool and the Filter Designer Toolbox to figure out what kind of filtering you need, then work your way through to an FPGA implementation. 

 

If you don't have the tool then provide a clearer explanation of your design, and perhaps someone will provide an example design for you. For example, is the signal you are trying to demodulate at a fixed location? Can you change the ADC interface so that it can be run at 300MHz, if so, then your external filtering becomes simple, and you have more flexibility in your DSP code. 

 

Cheers, 

Dave
0 Kudos
Altera_Forum
Honored Contributor II
462 Views

FPGA based digital signal processing generally uses pipelined datapathes, latency times don't affect the throughput. This is also the case with pipelined high speed ADC. 

 

You can generally assume, that FPGA based DSP can handle data streams up to the ADC sampling rate, if the required interface is supported by the respective FPGA family. The faster core and periperals of Stratix family eases the design of DSP at speeds of 100 MHz and above. In so far, design economy may suggests to choose high performance FPGA. But 100 MHz sampling rate can be handled by Cyclone designs as well.
0 Kudos
Altera_Forum
Honored Contributor II
462 Views

Looks to me that konrad is using a 50 MHz ADC (with 300 MHz DDR serial interface), so the base frequency requirement is only 50 MHz which should be easy for Cyclone III.

0 Kudos
Altera_Forum
Honored Contributor II
462 Views

If 300MHz processing means 6 channels x 50MHz each then you can process as many as suits your final speed. You don't have to process all in parallel or all in serial. 

It is a case of resource-speed trade-off. 

 

For stratix II I believe 200MHz is the comfortable limit. for stratix IV it could be 350MHz. So stratix III may in between. 

 

For very fast sections at io you can use ddio or serdes as a speed bridge 

 

I am not sure about cyclone speed.
0 Kudos
Altera_Forum
Honored Contributor II
462 Views

thanks all for the input 

I am testing using a Straix III dev board with a parrallel single ended adc (65MHz) that i used on another project (only sampling at 4MHz into a cyclone III). My ADC VHDL state machine needed 6 clocks as it includes the ast signals SOP, EOP, Valid (originally 2 channel I & Q). 

 

My choice of 10.7MHz IF is simply becuase it is a traditional IF and the RF filtering components are readily available. 

 

konrad
0 Kudos
Altera_Forum
Honored Contributor II
462 Views

 

--- Quote Start ---  

My ADC VHDL state machine needed 6 clocks as it includes the ast signals SOP, EOP, Valid. 

--- Quote End ---  

 

Doesn't sound to be a reasonable way for 65 MHz sampling speed ...
0 Kudos
Altera_Forum
Honored Contributor II
462 Views

I can read the ADC quickly but how else do you generate the AST output required for the FIR filter (I am using the mega-function)? 

I could easily change the adc but I still need to generate the Avalon signals. 

Am I taking the wrong approach? 

 

Konrad
0 Kudos
Altera_Forum
Honored Contributor II
462 Views

The Avalon interface can transfer data blocks at full clock speed, if the data sink is capable of. Depends only on the FIR design.

0 Kudos
Reply