LVDS
即Low-Voltage Differential Signaling。FPGA的selecteIO非常強(qiáng)大,支持各種IO接口標(biāo)準(zhǔn),電壓電流都可以配置。其接口速率可以達(dá)到幾百M(fèi)甚至上千M。使用lvds來(lái)接收高速ADC產(chǎn)生的數(shù)據(jù)會(huì)很方便。像ISERDES,IDDR,IDELAY,OSERDES,ODDR這種資源在FPGA的IOB中多得是(每個(gè)IO都對(duì)應(yīng)有,最后具體介紹),根本不擔(dān)心使用。最近剛在項(xiàng)目中用到,提供一個(gè)思路,具體的器件使用參考FPGA手冊(cè)。
使用的AD芯片是ADI的AD9653,125M16bit高精度高速ADC,用到的采樣速率是80M。其SPI配置會(huì)單獨(dú)開(kāi)一篇來(lái)講,SPI配置里面有個(gè)大坑,本來(lái)以為調(diào)好了的,后來(lái)又發(fā)現(xiàn)了問(wèn)題,調(diào)了三天才定位到問(wèn)題在哪,這就是硬件的魅力(坑爹)所在了吧。這里主要介紹FPGA的接收部分。
接收ADC數(shù)據(jù)的時(shí)序圖,
有幾點(diǎn)需要注意:
0 , 可以看出分成三種信號(hào),數(shù)據(jù)采樣時(shí)鐘DCLK,幀同步信號(hào)FCLK,和輸入數(shù)據(jù)DATA
1,輸入數(shù)據(jù)采樣時(shí)鐘默認(rèn)是已經(jīng)對(duì)齊了輸入數(shù)據(jù)的中點(diǎn),但幀時(shí)鐘是和數(shù)據(jù)字節(jié)邊緣對(duì)齊的。
2,使用Iserdes接收數(shù)據(jù),Idelay調(diào)整時(shí)鐘延遲。
1,對(duì)數(shù)據(jù)采樣時(shí)鐘的處理如下
通過(guò)控制延時(shí),使得CLK和經(jīng)過(guò)IBUFDS的BitClk對(duì)齊,從而消除IBUFIO和BUFR還有net的延時(shí)。這樣所有的輸入信號(hào)都只經(jīng)過(guò)了一個(gè)IBUFDS,延時(shí)相等。對(duì)Idelay的控制,可以手動(dòng)調(diào)節(jié),也可以用自動(dòng)算法。(參考xapp524)
1.1手動(dòng)調(diào)節(jié)對(duì)齊
首先來(lái)看看手動(dòng)調(diào)節(jié)算法,用vivado的vio可以很方便的輸入輸出,可手動(dòng)在線修改觀察現(xiàn)象,對(duì)后面的自動(dòng)訓(xùn)練算法也有一定的啟發(fā)作用。 默認(rèn)R_delay_cnt=0時(shí),可以看到輸入的正弦波形很亂
慢慢的增加R_delay_cnt,當(dāng)R_delay_cnt=12時(shí),開(kāi)始出現(xiàn)穩(wěn)定的正弦波,實(shí)驗(yàn)發(fā)現(xiàn)R_delay_cnt=14,15,16時(shí)恰好采到時(shí)鐘的邊緣,也就是跟輸入的原始時(shí)鐘對(duì)齊了,可以看到采到邊緣是allign_word一直在跳變,有的是0,有的是1。一直到R_delay_cnt=18,正弦波都很穩(wěn)定。有效窗口可以準(zhǔn)確計(jì)算出來(lái),200M的Idelay參考時(shí)鐘,78ps/tap。7tap*78ps=546ps。說(shuō)明數(shù)據(jù)的有效窗口很小,畢竟是320M的DDR,半個(gè)周期都才1.56ns.
最后取R_delay_cnt=15,可以在代碼里面寫(xiě)死。
1.2自動(dòng)訓(xùn)練算法
既然有了手動(dòng)調(diào)節(jié)的算法,為什么還要用自動(dòng)訓(xùn)練對(duì)齊的算法呢?在高低溫測(cè)試的時(shí)候,器件的延遲會(huì)受溫度的影響發(fā)生變化,特別是在時(shí)鐘頻率很高,數(shù)據(jù)有效窗口很小的時(shí)候,這時(shí)候就需要能夠動(dòng)態(tài)的改變R_delay_cnt的值去自適應(yīng)delay的變化,增加了魯棒性。
有了上面的手動(dòng)調(diào)節(jié)算法,自動(dòng)訓(xùn)練的思路也很簡(jiǎn)單了。上電復(fù)位后R_delay_cnt一直自加,記下最后一個(gè)全0和第一個(gè)全1的值,取中點(diǎn)。這里只考慮了一種情況,還可能是從全1到全0的情況。代碼如下
2,對(duì)幀同步信號(hào)和數(shù)據(jù)的處理
用上面產(chǎn)生的數(shù)據(jù)采樣時(shí)鐘同時(shí)去采樣FCLK和DATA,使用Iserdes可以1:8進(jìn)行串并轉(zhuǎn)換。但是我們不知道字節(jié)的邊界在哪里,所以要使用一個(gè)bit_slip對(duì)串轉(zhuǎn)并的結(jié)果進(jìn)行移位,移位的同時(shí)檢測(cè)FCLK轉(zhuǎn)換的輸出,當(dāng)輸出是8’b11110000的時(shí)候就停止移位。
當(dāng)數(shù)據(jù)率不是很高的IDDR數(shù)據(jù),使用DDR替代Iserdes接收。IDDR和Iserdes使用的資源相同(待驗(yàn)證)
HR Bank真實(shí)的器件如下,一對(duì)IOB,可單獨(dú)使用,可差分使用。后面的資源從上到下依次是ISERDES(ILOGIC),IDELAY,OLOGIC(OSERDES),ILOGIC,IDELAY,OLOGIC。(ILOGIC可作為IDDR,OLOGIC可作為ODDR)。左上角的是一個(gè)clock region(如X0Y2)的中間分布的四個(gè)BUFIO和BUGR(局部時(shí)鐘驅(qū)動(dòng),局部時(shí)鐘分頻,二者延時(shí)相等)。后面是一個(gè)IDELAYCTRL。
下面分別詳細(xì)介紹: IDEALY, 經(jīng)過(guò)IDELAY必須要經(jīng)過(guò)ISERDES,可直通。 ISERDES, ISERDES和ILOGIC使用相同的資源,可互換 ILOGIC,
OSERDES,和OLOGIC使用相同的資源,可互換
功能描述
? Edge triggered D type flip-flop(FF)
? DDR mode (SAME_EDGE or OPPOSITE_EDGE)
? Level sensitive latch(Latch)
? Asynchronous/combinatorial(直通)
審核編輯 :李倩
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618549 -
lvds
+關(guān)注
關(guān)注
2文章
1127瀏覽量
67480 -
AD芯片
+關(guān)注
關(guān)注
2文章
25瀏覽量
18683
原文標(biāo)題:LVDS高速ADC接口, xilinx FPGA實(shí)現(xiàn)
文章出處:【微信號(hào):ZYNQ,微信公眾號(hào):ZYNQ】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Altera FPGA與高速ADS4249和DAC3482的LVDS接口設(shè)計(jì)

FPGA | Xilinx ISE14.7 LVDS應(yīng)用
基于FPGA的高速LVDS數(shù)據(jù)傳輸
如何尋找使用XILINX FPGA的高速ADC評(píng)估套件?
如何將高速ADC與串行LVDS輸出連接到virtex 7 fpga?
利用FPGA 實(shí)現(xiàn)與TS201 的LinkPort 高速數(shù)據(jù)
基于FPGA的LVDS接口應(yīng)用

(Xilinx)FPGA中LVDS差分高速傳輸?shù)?b class='flag-5'>實(shí)現(xiàn)
基于FPGA的LVDS過(guò)采樣技術(shù)研究并用Xilinx評(píng)估板進(jìn)行驗(yàn)證

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

Xilinx FPGA的SerDes接口詳細(xì)說(shuō)明

如何使用Xilinx的FPGA對(duì)高速PCB信號(hào)實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

具有LVDS輸出的LTM9011 ADC的AN147-Altera Stratix IV FPGA接口

高速ADC與FPGA的LVDS數(shù)據(jù)接口中避免時(shí)序誤差的設(shè)計(jì)考慮

評(píng)論