• 三款LVDS ADC的使用总结


    前言

    两年时间使用了三款ADC:AD9653,AD9266,AD3442,在此记录下坑及使用经验。

    参考文档

    xapp524-serial-lvds-adc-interface.pdf

    所需用到的原语:IDDR、ISERDESE2等

    1.AD9653:ADI公司的采样率高达125M,16bit ADC

    时序图1:

     时序图2:

     根据时序图,可使用ISERDESE2进行解串。

    对于xilinx7系列的FPGA,DDR模式的ISERDESE2支持4、6、8bit,级联支持10、14bit。对于SDR模式的ISERDESE2支持2,3,4,5,6,7,8bit。

    则对于16bit的ADC,可使用SDR或DDR模式,且ADC需配置为双线,即为时序图1的时序。

    2.AD9266:16bit ADI公司的高达80M采样的ADC

    时序图1:

     可以看到数据是并行的8个通道,DDR。则可以使用IDDR进行接收。

    3.AD3442:TI公司14bit高达50M采样的ADC。

    时序图1:

    时序图2:

     这里简单起见,使用时序图1 进行ISERDESE2解串处理,14bit的数据可用级联DDR模式。

    参考文档中的图,下述图主要用于调整经过IBUFIO或BUFR的时钟边沿跟经过IBUFDS的时钟边沿对齐。使得LVDS数据和时钟均只经过IBUFDS,保证相位关系。

     然后用ISERDESE2接收数据,根据实际情况是否使用IDELAY模块对数据进行延时,使得数据尽量对齐中心边沿,当然如果PCB保证了数据和时钟的等长处理则更佳,只需考虑高低温情况的偏斜。

    需考虑bit调整,其次需要字节对齐,因为解串出来的数据第一个bit是随机的,不一定就是所需的数据,需要进行字节训练,保证解串出的值的正确性。

    上述两个步骤操作完成后,就可以放心采集数据了。

    Thinking:高速率情况应该也可使用双线级联DDR14bit模式,对数据进行拆分。

    使用IDDR和ISERDESE2主要关注时钟与数据的关系,要开发者保证时序关系确保接收数据的准确性。

    以上。

  • 相关阅读:
    高级I/O之存储映射I/O
    高级I/O之readn和writen函数
    高级I/O之readv和writev函数
    高级I/O之异步I/O
    高级I/O之I/O多路转接——pool、select
    高级I/O之STREAMS
    高级I/O之记录锁
    高级I/O之非阻塞I/O
    用于守护进程的出错处理函数
    守护进程之客户进程-服务器进程模型
  • 原文地址:https://www.cnblogs.com/kingstacker/p/13266679.html
Copyright © 2020-2023  润新知