前言
兩年時間使用了三款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主要關注時鍾與數據的關系,要開發者保證時序關系確保接收數據的准確性。
以上。