基于FPGA的總線型LVDS通信系統(tǒng)設(shè)計(jì)
摘要:總線型低壓差分信號(hào)(BLVDS)是一種性能優(yōu)良的物理層接口標(biāo)準(zhǔn)。本文介紹一種基于總線型LVDS的通信系統(tǒng)方案,以及利用FPGA芯片實(shí)現(xiàn)系統(tǒng)核心模塊的設(shè)計(jì)方法。該方案可廣泛使用在高速通信領(lǐng)域,具有較高的應(yīng)用價(jià)值。 關(guān)鍵詞:BLVDS FPGA 串化 解串 高速通信 低壓差分信號(hào)LVDS(Low Voltage Differential Signal)是由ANSI/TIA/EIA-644-1995定義的用于高速數(shù)據(jù)傳輸?shù)奈锢韺咏涌跇?biāo)準(zhǔn)。它具有超高速(1.4Gb/s)、低功耗及低電磁輻射的特性,是在銅介質(zhì)上實(shí)現(xiàn)千兆位級(jí)高速通信的優(yōu)先方案;可用于服務(wù)器、可堆壘集線器、無線基站、ATM交換機(jī)及高分辨率顯示等等,也可用于通信系統(tǒng)的設(shè)計(jì)。BLVDS(Bus LVDS)是LVDS技術(shù)在多點(diǎn)通信領(lǐng)域的擴(kuò)展,要求附加總線仲裁設(shè)計(jì)、更大的驅(qū)動(dòng)電流(10mA)和更好的阻抗匹配設(shè)計(jì)。 通常是LVDS電路設(shè)計(jì)使用各種專用芯片,如美國國家半導(dǎo)體公司的DS92LV16等。我們用FPGA芯片自行設(shè)計(jì)BLVDS內(nèi)核及擴(kuò)展部分。相比之下,使用FPGA可大幅減少芯片數(shù)量,降低成本,提高系統(tǒng)可靠性,同時(shí)具有更大的靈活性和向后兼容性。由于目前尚無實(shí)用的16位VLVDS收發(fā)器芯片問世,本設(shè)計(jì)也填補(bǔ)了專用芯片(ASIC)的空白。 *0.18nm 6層金屬工藝,具有5.8萬個(gè)系統(tǒng)門; *使用1.8V核心電壓,低功耗設(shè)計(jì); *130MHz同部時(shí)鐘; *64KB的同步塊同存(BlockRAM),可實(shí)現(xiàn)真正的雙口操作; *支持包括LVDS、BLVDS在內(nèi)的20種高性能接口標(biāo)準(zhǔn); *8個(gè)全數(shù)字的延遲鎖定環(huán)DLL(Delay Locked Loops),具有時(shí)鐘移相和乘除功能; *支持IEEE 1149.1邊界掃描標(biāo)準(zhǔn),具有基于SRAM的在系統(tǒng)配置功能。 我們使用Xilinx Foudation F3.1i軟件開發(fā)XCV50E芯片。設(shè)計(jì)流程為:首先用編寫VHDL語言程序、繪制原理圖或設(shè)計(jì)狀態(tài)機(jī)的方法生成網(wǎng)絡(luò)表,功能仿真正確后,經(jīng)過翻譯、映射、放置和布線、時(shí)序優(yōu)化及配置過程,生成比特流文件。然后,進(jìn)行時(shí)序仿真,仿真通過后下載到PROM中。(我們用了Xilinx公司的XC18V01。) 1 結(jié)構(gòu)及工作過程 1.1 系統(tǒng)結(jié)構(gòu)和FPGA結(jié)構(gòu) 本通信系統(tǒng)由背板和若干通信子卡組成。背板并更有8個(gè)插槽,并布有BLVDS總線和其它控制、地址總線。通信子卡由EP7211芯片(負(fù)責(zé)數(shù)據(jù)處理)、XCV50E及DRAM、PROM等外圍芯片和元件組成,系統(tǒng)結(jié)構(gòu)如圖1所示。 1.2 工作過程 在發(fā)送子卡中,EP7211將待發(fā)數(shù)據(jù)整理成多個(gè)長255字,字寬16位的數(shù)據(jù)幀,發(fā)至FPGA內(nèi)的發(fā)送FIFO中。該FPGA得到總線控制權(quán)后,即發(fā)送同步幀(由同步字與填充字組成),待被尋址的接收子卡實(shí)現(xiàn)與自己的同步后,再發(fā)送數(shù)據(jù)幀。各幀數(shù)據(jù)經(jīng)串化器轉(zhuǎn)化為兩對(duì)差分信號(hào),并從中獲得同步信息并實(shí)現(xiàn)同步,繼而檢出有效數(shù)據(jù),寫入接收FIFO,同時(shí)以快中斷(FIQ)通知EP7211。 2 軟件設(shè)計(jì) 2.1 EP7211程序設(shè)計(jì) 通信子卡內(nèi)的EP7211為系統(tǒng)級(jí)芯片,用來預(yù)處理和接收數(shù)據(jù)。EP7211的內(nèi)核為ARM7TDMI,使用32位精簡指令。發(fā)送數(shù)據(jù)的流程如圖3所示。接收較簡單,只需在快中斷(FIQ)服務(wù)程序中寫入接收FIFO的讀取代碼即可。 2.2 FPGA設(shè)計(jì) FPGA的設(shè)計(jì)中,發(fā)送及接收FIFO的設(shè)計(jì)用了雙口快內(nèi)存(Block RAM),時(shí)鐘倍頻器用了延遲鎖定環(huán)(DLL)。幀解碼器由30位并行數(shù)據(jù)產(chǎn)生器、同步字檢測(cè)陣列和接收狀態(tài)機(jī)組成。以下重點(diǎn)介紹幀編碼器和串化器的設(shè)計(jì)。 幀編碼器包括一個(gè)長為256的計(jì)數(shù)器和一個(gè)四狀態(tài)的單熱點(diǎn)狀態(tài)機(jī),用以產(chǎn)生同步幀和數(shù)據(jù)幀。部分代碼如下: PROCESS(RESET,CLK) //產(chǎn)生長256的計(jì)數(shù)器 IF RESET='1'THEN COUNT=0; ELSIF CLK'EVENT AND CLK='1' THEN COUNT=(COUNT+1)MOD 256; END PROCESS; TC='1'WHEN COUNT=255 ELSE '0'; TYPE STATE_TYPE IS(IDLE,PACK1,PACK2,TRANSMIT); SIGANL SREG:SETAT_TYPE; RPOCESS(CLK,RESET) //狀態(tài)機(jī)進(jìn)程 IF CLK'EVENT AND CLK='1'THEN IF RESET=1 TEHE SREG=IDLE ELSE CASE SREG IS WHEN IDLE=> IF SEND_UD='1'THEN SREG=TRANSMIT; //空閑狀態(tài)如有發(fā)送命令,即轉(zhuǎn)入發(fā)送狀態(tài) ELSE SREG=PACK1; //否則,發(fā)送填充字1 WHEN PACK1=> (后略) (2)串化器的原理設(shè)計(jì) 串化器由多級(jí)嵌套的子圖和若干宏模塊組成,原理圖的頂層圖如圖4所示。四個(gè)四位并入串出寄存器將16位并行數(shù)據(jù)拆分為四組串行數(shù)據(jù),其中的奇數(shù)位和偶數(shù)位分別通過一個(gè)雙數(shù)據(jù)速率寄存器,得到兩個(gè)差分信號(hào),同時(shí)用另一個(gè)雙數(shù)據(jù)速率寄存器產(chǎn)生與之同步的差分時(shí)鐘。其中,雙數(shù)據(jù)速率寄存器為時(shí)序敏感器件,其內(nèi)部主要部分都加入了時(shí)序特性限制,如最大時(shí)滯(maxdelay)、最大抖動(dòng)(maxskew),并用FMAP控件強(qiáng)制性地把相關(guān)信號(hào)放入同一個(gè)函數(shù)產(chǎn)生器中。 ①BLVDS信號(hào)的偏置電壓為1.25V,電壓擺幅只有350mV,傳輸速率≥100Mb/s;因此,電路板制作至關(guān)重要,要求至少使用四層板。 ②為使干擾信號(hào)只以供模方式加到差分線對(duì)上(不影響數(shù)據(jù)正確性),要求差分線對(duì)間的距離盡可能小。BLVDS標(biāo)準(zhǔn)要求差分阻抗為100Ω,由公式: 給出。其中,ZDIF為差分線對(duì)的差分阻抗,εR為印制板介電常數(shù),δ為信號(hào)層到電源層的厚度,b為導(dǎo)線寬度。本電路選用的線距及線寬均為0.18mm。 ③考慮到阻抗不匹配引起的信號(hào)反射和導(dǎo)線的電導(dǎo)效應(yīng),要求XCV50E芯片的差分引腳盡可能地靠近子卡的邊緣連接器(≤1.52cm),并給每個(gè)差分引腳串聯(lián)一個(gè)20Ω的貼片電阻。 ④電源方面:Virtex芯片上電時(shí)要求有大于500mA的驅(qū)動(dòng)電流,同時(shí),由于多個(gè)輸出引腳的電位快速變化,要求每對(duì)電源和地引腳都要良好旁路。 4 結(jié)論 當(dāng)使用40MHz的外部時(shí)鐘時(shí),BLVDS總線上的傳輸速率為120Mb/s,成功實(shí)現(xiàn)了多個(gè)通信子卡間的高速數(shù)據(jù)通信?,F(xiàn)在,我們正將該通信系統(tǒng)移植到我單位與勝利油田聯(lián)合研制的SL-6000型高分辨率綜合測(cè)井系統(tǒng)上。 |
評(píng)論