基于FPGA的LVDS接口應(yīng)用
摘要 介紹了LVDS技術(shù)的原理,對LVDS接口在高速數(shù)據(jù)傳輸系統(tǒng)中的應(yīng)用做了簡要的分析,著重介紹了基于FPGA的LVDS_TX模塊的應(yīng)用,并通過其在DAC系統(tǒng)中的應(yīng)用實(shí)驗(yàn)進(jìn)一步說明了LVDS接口的優(yōu)點(diǎn)。
關(guān)鍵詞 LVDS;FPGA;高速數(shù)據(jù)傳輸;PLL;AD9735
介紹了基于FPGA的LVDS模塊的應(yīng)用,實(shí)現(xiàn)了將數(shù)據(jù)通過FPGA(Ahera StratixII EP2S90)的LVDS發(fā)送模塊的傳輸,以640 Mbit·s-1數(shù)據(jù)率送至DAC電路。
1 LVDS技術(shù)簡介
LVDS,即Low-Voltage Differential Signaling低壓差分信號,是由美國國家半導(dǎo)體公司于1994年提出的一種信號傳輸模式,在滿足高數(shù)據(jù)傳輸率的同時降低了功耗,運(yùn)用LVDS技術(shù)可使數(shù)據(jù)速率從幾百M(fèi)bit·s-1到2 Gbit·s-1。
LVDS傳輸方式的原理是用一對線傳輸一個信號,一條傳輸正信號,另一條傳輸相反電平并且在接收端相減,可以將走線上的共模噪聲消除。因?yàn)閮筛盘柕臉O性相反,所以對外輻射的電磁場可以相互抵消,耦合越緊密,互相抵消的磁力線越多,泄露到外界的電磁能量就越少。
LVDS接口也稱RS-644總線接口,運(yùn)用LVDS傳輸技術(shù),采用極低的電壓擺幅高速差動傳輸數(shù)據(jù),具有低功耗、低誤碼率、低串?dāng)_和低輻射等特點(diǎn),可使用銅質(zhì)PCB連線傳輸或平衡電纜。LVDS在對信號完整性、低抖動及共模特性要求較高的系統(tǒng)中的應(yīng)用越來越廣泛。目前LVDS技術(shù)規(guī)范有兩個標(biāo)準(zhǔn):一個是TIA/EIA的ANSI/TIA/EIA-644標(biāo)準(zhǔn);另一個是IEEE1596.3標(biāo)準(zhǔn)。
2 基于FPGA的LVDS接口發(fā)送模塊
采用Stratix II系列的EP2S90F1020C3FPGA,其支持高速LVDS接口,在Quartus II軟件中可以調(diào)用其宏功能模塊Altlvds_tx,即LVDS接口發(fā)送模塊。此模塊將以并行方式輸入的TTL電平數(shù)據(jù)信號轉(zhuǎn)換成串行的LVDS信號輸出。
2.1 Altlvds_tx發(fā)送模式
將LVDS模塊設(shè)置為發(fā)送模式,即將左端輸入的并行tx_in信號轉(zhuǎn)化為串行的tx_out信號輸出,并且設(shè)置通道數(shù)和串行化因子,在這里,通道數(shù)即為輸出數(shù)據(jù)的位數(shù),而串行化因子表示將輸入數(shù)據(jù)分幾次輸出。例如輸入為96位的并行數(shù)據(jù),設(shè)置為24 channels×4,表示輸出串行的24位數(shù)據(jù),分4次輸出,若輸入數(shù)據(jù)時鐘為160 MHz,則輸出的數(shù)據(jù)率為4倍,即640 Mbit·s-1,并且可以輸出640 MHz的數(shù)據(jù)時鐘。在綜合設(shè)置頁面中,沒有選中“Implement Serializer/Deserializer Circuitry In Logic Cells”,就表示用到了LVDS Serdes硬核。圖2所示數(shù)據(jù)率為640Mbit·s-1,輸出時鐘為640MHz。
需要注意的是,Altlvds發(fā)送模塊在對數(shù)據(jù)進(jìn)行并轉(zhuǎn)串輸出時,會對輸入數(shù)據(jù)的順序進(jìn)行重新排列,例如:輸入8位并行數(shù)據(jù),設(shè)置2 channels×4,則輸入數(shù)據(jù)分為2組即2個通道,每組4 bit,如圖3所示。
從圖3可以看出,8位輸人數(shù)據(jù)分為2個通道,每個通道4 bit,輸出數(shù)據(jù)時,第一個輸出的2 bit數(shù)為第一個通道的最高位和第二個通道的最高位分別作輸出的高位和低位,第二個輸出的數(shù)為第一個通道的次高位和第二個通道的次高位組合,以此類推。
當(dāng)設(shè)置的串行化因子為2時,Altivds_tx模塊會自動變成DDR工作模式。[!--empirenews.page--]
2.2 AltlvdS_tx時鐘模式
Altlvds模塊內(nèi)部有一個PLL,可以得到所需要的輸出數(shù)據(jù)時鐘,在圖1中可以看到選項(xiàng)Use External PLL,當(dāng)選擇此項(xiàng)時,表示使用外部時鐘,則需要在FPGA中重新做一個PLL,并將輸出時鐘和LVDS模塊進(jìn)行相應(yīng)的連接。
當(dāng)使用內(nèi)部PLL時,如圖2所示,What is the phase alignment of‘tx_in’with respect to the rising edgeof‘tx_inclock’?(in degrees)即可以調(diào)節(jié)tx_in輸入數(shù)據(jù)和tx_inclock輸入時鐘的相位偏移,而Register‘tx_in’input port using選項(xiàng)表示輸入數(shù)據(jù)是用輸入時鐘tx_inclock控制還是用核時鐘tx_coreclock控制,默認(rèn)的是核時鐘,而當(dāng)使用tx_inclock時鐘緩存輸入數(shù)據(jù)時,可能會提示建立時間的問題,而對高速時鐘來說,使用核時鐘緩存時,會用最優(yōu)的相位位置來緩存數(shù)據(jù)。
如圖4所示,發(fā)送器設(shè)置界面中What is the phasealignment of‘tx_outclock’with respect to‘tx_out’?選項(xiàng)可以設(shè)置輸出數(shù)據(jù)和輸出時鐘的相位關(guān)系。當(dāng)選擇‘tx_coreclock’輸出時可選擇核時鐘的時鐘源What isthe clock resource used for‘tx_coreclock’?可選擇Global Clock全局時鐘或Regional Clock區(qū)域時鐘,默認(rèn)的是Auto Selection.,由編譯時自動選擇。
當(dāng)使用外部時鐘時,即在圖1中選擇Use ExternalPLL,此時新建一個PLL來提供時鐘源,這時LVDS模塊只能設(shè)置輸出數(shù)據(jù)與時鐘的相位關(guān)系,其余選項(xiàng)不可設(shè)置。
3 Altlvds_tx模塊在DAC系統(tǒng)中的應(yīng)用實(shí)驗(yàn)
3.1 系統(tǒng)硬件設(shè)計(jì)
DAC系統(tǒng)原理框圖如圖5所示。
系統(tǒng)中DSP使用TigerSHARC處理器TS101,F(xiàn)PGA采用Aitera公司的StratixII系列EP2S90F1020C3,DAC芯片采用ADI公司的AD9735。
AD9735為12 bit數(shù)模轉(zhuǎn)換器,可以提供高達(dá)1 200 MS·s-1的采樣速率,且設(shè)有一個SPI端口,可以對D/A內(nèi)部參數(shù)進(jìn)行設(shè)置,并回讀狀態(tài)寄存器。
系統(tǒng)中由DSP將處理好的數(shù)據(jù)發(fā)送至FPGA,在FPGA內(nèi)部先由雙口RAM進(jìn)行緩存,然后將讀出的數(shù)據(jù)送至LVDS_TX模塊,輸出LVDS數(shù)據(jù)和數(shù)據(jù)時鐘到AD9735。實(shí)驗(yàn)中數(shù)據(jù)率為640 Mbit·s-1,并且提供640 MHz的系統(tǒng)時鐘給AD9735。由于接口時鐘速率提高,傳統(tǒng)系統(tǒng)同步方式的數(shù)據(jù)接口電路難以實(shí)現(xiàn),則采用源同步的方式更加可行,要求時鐘伴隨數(shù)據(jù)輸出,AD9735的數(shù)據(jù)輸入接口就是按照源同步的模式設(shè)計(jì),它要求保證時鐘與數(shù)據(jù)的邊沿對齊,即需要輸入數(shù)據(jù)隨路時鐘與數(shù)據(jù)采用同樣的機(jī)理產(chǎn)生。所以通過LVDS_TX模塊產(chǎn)生所需的數(shù)據(jù)和640 MHz時鐘送至AD9735。
3.2 系統(tǒng)軟件設(shè)計(jì)
在FPGA中使用全局時鐘100 MHz通過PLL產(chǎn)生160 MHz時鐘來控制雙口RAM的寫地址計(jì)數(shù)器時鐘,并作為LVDS_TX模塊外部時鐘PLL的輸入時鐘。如圖6所示,DSP送來的24位波形數(shù)據(jù),低12位為I路數(shù)據(jù),高12位為Q路數(shù)據(jù)送至雙口RAM,由DSP的60 MHz時鐘寫入,用LVDS模塊的外部PLL產(chǎn)生的核時鐘做讀數(shù)時鐘,一次讀出96位,即4個點(diǎn)的數(shù)據(jù)。其中Rearrange模塊功能為實(shí)現(xiàn)數(shù)據(jù)位重新排列,為后面的LVDS_TX模塊數(shù)據(jù)做準(zhǔn)備(如圖3所示),使最終輸出數(shù)據(jù)能夠保證正確的數(shù)據(jù)順序。
[!--empirenews.page--]
LVDS_TX模塊的設(shè)置如圖7所示,這里使用外部時鐘控制,即在LVDS模塊外重新定制一個PLL,此PLL要設(shè)置在LVDS模式下,PLL類型會自動選擇為Fast PLL。這時PLL會有3個輸出c0,sclkout0,enable0。輸入時鐘inclk0設(shè)為160 MHz,LVDS數(shù)據(jù)率置為640 Mbit·s-1,則輸出c0為核時鐘,頻率為160 MHz,輸出sclkout0為串行化輸出時鐘640 MHz,輸出enable0為LVDS輸入使能信號。
在外部PLL設(shè)置中可以對輸出的核時鐘和高速串行化輸出時鐘的相位進(jìn)行調(diào)節(jié),因?yàn)镕PGA的高速時鐘由于內(nèi)部布線等原因可能會產(chǎn)生一些相位偏斜,導(dǎo)致數(shù)據(jù)和時鐘不能準(zhǔn)確對齊,這時就需要對時鐘的相位進(jìn)行調(diào)節(jié)來對齊數(shù)據(jù)和時鐘。本實(shí)驗(yàn)中設(shè)置c0的相偏為-45°,則sclkout0會默認(rèn)產(chǎn)生-180°相偏,因?yàn)長VDS設(shè)置的是4倍抽取關(guān)系,即45×4=180,使用外部時鐘時還可以根據(jù)需要分別調(diào)節(jié)兩個時鐘的相位。時鐘相位關(guān)系如圖8所示。
用PLL輸出的核時鐘即c0將rearrange模塊輸出的數(shù)據(jù)進(jìn)行同步后送至LVDS_TX模塊,時鐘的連接方法如圖7所示。在enable0信號有效時將數(shù)據(jù)輸入至LVDS模塊,LVDS_TX模塊輸出的24位數(shù)據(jù)輸入給2個DA(I、Q),低12位為I路,高12位為Q路,并將輸出640 MHz同步時鐘送至DA。此時LVDS模塊內(nèi)仍可以調(diào)節(jié)輸出數(shù)據(jù)和輸出時鐘的相位,但只剩下2個相位值可以調(diào)節(jié),即0°和180°。
4 實(shí)驗(yàn)結(jié)果及分析
實(shí)驗(yàn)中由DSP分別發(fā)送100 MHz和225 MHz的正余弦波形數(shù)據(jù)至FPGA,經(jīng)過雙口RAM和LVDS_TX模塊發(fā)送至AD9735,并從示波器上觀察DA的輸出波形。
實(shí)驗(yàn)中c0相偏為-45°,sclkout0為-180°相偏。由DSP首先發(fā)送的是100 MHz的I、Q波形數(shù)據(jù),AD9735的輸出波形在示波器上顯示如圖9所示,其頻譜如圖10所示。
在100 MHz時,其雜散抑制可達(dá)-41.6 dB。[!--empirenews.page--]
再發(fā)送225 MHz的I、Q波形數(shù)據(jù),輸出波形及頻譜如圖11和圖12所示。
在225 MHz時,其雜散抑制可達(dá)-36.8 dB。
以下時鐘相位的偏移對數(shù)據(jù)的影響,將c0和sclkout0相偏設(shè)置為0°。
仍由DSP發(fā)送100 MHz的I、Q波形數(shù)據(jù),輸出如圖13所示,可以看出數(shù)據(jù)質(zhì)量變差。
如圖14所示,DSP發(fā)送225 MHz的I、Q波形數(shù)據(jù)的情況。
從圖中看出,在225 MHz時時域波形質(zhì)量較差,DSP發(fā)送的數(shù)據(jù)已是不能正確讀出。可以看出在高速數(shù)據(jù)傳輸時,數(shù)據(jù)和時鐘的同步很重要,正確調(diào)整時鐘數(shù)據(jù)的相偏才能保證數(shù)據(jù)的正確傳輸。
由實(shí)驗(yàn)結(jié)果可以看出,在正確的時鐘相位下,波形數(shù)據(jù)以640 Mbit·s-1的數(shù)據(jù)率正確的送至DAC,波形和頻譜質(zhì)量良好,通過LVDS_TX接口模塊的應(yīng)用,簡單方便地實(shí)現(xiàn)了高速數(shù)據(jù)接口電路并輸出高速LVDS信號,解決了高速時鐘與數(shù)據(jù)的同步問題。
5 結(jié)束語
LVDS接口技術(shù)的優(yōu)越性能使其在大型高速數(shù)據(jù)處理傳輸系統(tǒng)中的應(yīng)用越來越廣泛。介紹了基于FPGA的LVDS_TX模塊在DAC系統(tǒng)中的應(yīng)用,實(shí)現(xiàn)了高速LVDS數(shù)據(jù)的傳輸,應(yīng)用時應(yīng)要注意:LVDS并串轉(zhuǎn)換時,數(shù)據(jù)bit位的順序問題,正確相應(yīng)的輸入數(shù)據(jù)排列才能得到正確的輸出數(shù)據(jù),同時,無論是使用LVDS模塊內(nèi)部時鐘還是外部時鐘,都要注意時鐘數(shù)據(jù)相位的正確調(diào)整,以便使數(shù)據(jù)與時鐘準(zhǔn)確對齊同步,從而得到正確良好的輸出數(shù)據(jù)波形。