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