如何在低成本FPGA中實現(xiàn)動態(tài)相位調(diào)整
在FPGA中,動態(tài)相位調(diào)整(DPA)主要是實現(xiàn)LVDS接口接收時對時鐘和數(shù)據(jù)通道的相位補償,以達到正確接收的目的。ALTERA的高端FPGA,如STRATIX(r) 系列中自帶有DPA電路,但低端的FPGA,如CYCLONE(r)系列中是沒有的。本文主要闡述如何在低端FPGA中實現(xiàn)這個DPA的功能。
實現(xiàn)架構(gòu)
在LVDS輸入接收時,時鐘和數(shù)據(jù)的相位可能是不確定的,因此我們需要將時鐘的相位作出調(diào)整,使得時鐘能穩(wěn)定的采集到輸入數(shù)據(jù)。工作的核心就是用鎖相環(huán)PLL的相位調(diào)整功能,產(chǎn)生若干個時鐘的不同相位,看哪些相位能準(zhǔn)確的采集到輸入數(shù)據(jù),然后取窗口中間的一個時鐘相位,作為正常工作時的采樣時鐘。比如通過PLL產(chǎn)生0,45,90,135,……,315度8個相移的時鐘,如果0,45,90度相移的時鐘能正確采樣到輸入,那么最后選取中間相位,即45度的時鐘作為采樣時鐘。這樣接口上具有最大的時序裕量,從而保證鏈路的可靠性。圖1為這個設(shè)計的基本結(jié)構(gòu),通過PLL調(diào)整相位的接口,產(chǎn)生了時鐘的不同相位來采集數(shù)據(jù),最后選擇一個最合適的相位。
CYCLONE系列的PLL的相位調(diào)整接口時序如圖2所示,當(dāng)用戶邏輯控制phasestep, phasecounterselect與phaseupdown信號時,PLL的輸出時鐘C0就改變一次相位。在QII生成PLL時,用戶必須選上create optional inputs for dynamic phase reconfigure,否則缺省是不會有這些管腳的,如圖3所示。另外必須在output clock tab中寫入phase shift step resolution的值,這樣才能確定每次相位調(diào)整的步長。
應(yīng)用實例
本例中的參考設(shè)計采用CYCLONE3器件,與ADI公司的ADS5277接口,已經(jīng)在硬件上測試過,證明是有效的。ADS5277是一款8通道高速ADC芯片,主要用于超聲設(shè)備以及測試設(shè)備中。圖4是該參考設(shè)計電路框圖。
ADS5277送到FPGA的是一個192MHz的時鐘,8路LVDS數(shù)據(jù),速率是384Mbps。上電復(fù)位后ADS5277發(fā)送的數(shù)據(jù)是‘0101010101……’,F(xiàn)PGA啟動DPA電路,準(zhǔn)確確定時鐘相位后再通過控制信號,使得ADS5277發(fā)送‘000000111111……’這樣的PATTERN,F(xiàn)PGA可以確定字的邊界,這一步成功以后,F(xiàn)PGA就可以通過控制信號讓ADS5277發(fā)送正常工作時的數(shù)據(jù),因為經(jīng)過了時鐘相位調(diào)整這一過程,以后的數(shù)據(jù)采樣是非常穩(wěn)定的,不會受到溫度電壓變化來的影響。
當(dāng)然這個設(shè)計可以和所有LVDS發(fā)送芯片接口,并不只限于ADS5277。甚至可以應(yīng)用于ALTERA高端FPGA中,比如STRATIX4的帶有DPA專用電路的管腳只分布在左右BANK,而用到這個設(shè)計的話,上下BANK的IO也能使用。DPA設(shè)計所消耗的邏輯資源是非常小的,選用器件為3C16F256C8, 如表1所示。
圖1、在FPGA中實現(xiàn)DPA設(shè)計架構(gòu)。
圖2、PLL的相位調(diào)整接口時序。
圖3、
[!--empirenews.page--]
圖4、參考設(shè)計電路框圖。