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