Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
16 years ago

Stratix III EP3SL340c3 Diffrential IO data rate

Hi

I have been working on DE3 board with the above mentioned FPGA for some months now. I am trying to deserialize 8 LVDS channels from an ADC. each channel is 12 bits and ADC can work upto 50 Mega Samples per second. I am designing my own Deserializing circuit because there are not enough PLLs on DE3 FPGA ( i will interfacing 12 ADCs where as there are only 8 PLLs on FPGA) and each SERDES Megafunction requires 1 PLL.

I am trying to operate IO pins at (max) 600 Mbits per second and my shift registers are working at half the bit rate i.e. 300 mega shifts per seconed (as each channel has 2 shift registers, 1 for even stream of bits and other one for odd. In the end i interleave two streams).

I have tried many different design approaches along with playing arround with chip planner defining regions, assigning specific resources to different instances and so on... but each of my design fails at arround 25 Mega Samples. Simulation shows a picture perfect scenario even at 50 MHz. I was wondering if IO pins are creating the bottle neck here or is it the shift registers in my design. ( i am using LPM_SHIFTREG megafunction for shift registers)

If anyone can provide me some idea about where the problem could be, i would be greatful.

13 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Your solution sounds somewhat complicated, you should be able to run the shift register at 240 MHz directly. If you are not able to operate the design faster than 480 MBPS, the issue is most likely related to timing and possibly signal quality of the LVDS input. Of course, the data must be transfered to the slow (frame) clock, but that's not very critical, I think.

    I also suggested to use hardware SERDES (=ALTLVDS Megafunction) with FPGA internal reference clock and DPA. Did you try it?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    As i mentioned above, to use ALTLVDS, either i needed to use an internal PLL or external clock source. The PCB i used to interface ADC with HSTC was only connected to IO pins and Quartus wont let me place a PLL to those IO pins. To use external clock source, i needed a 80 MHz frame clock with 16% duty cycle as it is required by ALTLVDS. (80 MHz instead of 40 because ALTLVDS does not support 12 bits and i needed to go for 6 bit serdes thus doubling the frame rate) this sort of clock was not available from my ADC and using a PLL was not an option open to me. i tried this as u suggested and as i UNDERSTOOD but couldnt get far as i had no idea how to synchronize internal clock with the bit stream coming from ADC with out using a PLL.

    Also i can get my design to work upto 500Mbps which is the IO limit for my device( i think i read it in stratix III handbook). i am happy with 40 MHz ( 480 Mbps) as it does the job for me with the oscillator i have available on ADC, although my ADC can go upto 50 MHz.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Assuming the ADC clock is sourced from the FPGA, you should be able to use an internal reference clock as well. But if your present solution serves it's purpose, there's no need to change anything.