基于Spartan-6的16路高速串行傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)
摘要:高速串行傳輸?shù)脑O(shè)計(jì)是FPGA設(shè)計(jì)的一個(gè)重要方面。在串行傳輸的設(shè)計(jì)中摒棄了采用FPGA內(nèi)部邏輯資源實(shí)現(xiàn)從而限制了串并轉(zhuǎn)換速度的傳統(tǒng)設(shè)計(jì)方法,SelectIOTM接口技術(shù)給FPGA實(shí)現(xiàn)高速串行傳輸提供了良好的舞臺(tái),本文詳細(xì)闡述了1:8 DDR模式下16路高速串行傳輸?shù)膶?shí)現(xiàn),并通過(guò)了16路高速串行傳輸達(dá)到12.8Gbit/s傳輸速率的板級(jí)試驗(yàn)。
關(guān)鍵詞:低電壓差分信號(hào);串并轉(zhuǎn)換;現(xiàn)場(chǎng)可編程門陣列;串化器/解串器
0 引言
用現(xiàn)場(chǎng)可編程門陣列(FPGA)開發(fā)高速系統(tǒng)時(shí)常常需要實(shí)現(xiàn)高速串行傳輸,傳統(tǒng)的做法是直接利用FPGA的內(nèi)部邏輯資源來(lái)進(jìn)行設(shè)計(jì),但這樣做往往使得傳輸?shù)臅r(shí)鐘的最高頻率受FPGA內(nèi)部資源利用率、布局布線等因素的影響,難以滿足設(shè)計(jì)要求,并最終影響整個(gè)系統(tǒng)的性能。隨著工藝技術(shù)的不斷進(jìn)步與市場(chǎng)需求的日益增加,超大規(guī)模、高速、低功耗的新型FPGA不斷推出,給高速電路的設(shè)計(jì)帶來(lái)了極大的方便。賽靈思(Xilinx)公司在其新的面向低端的partan-6系列產(chǎn)品中集成了輸入串并轉(zhuǎn)換器(ISEKDES)和輸出并串轉(zhuǎn)換器(OSERDES),能夠提供高速的I/O處理能力,不受FPGA內(nèi)部資源的限制,不占用系統(tǒng)邏輯資源。
本文以兩片XC6SLX150之間以16路高速數(shù)據(jù)通信為例,介紹了SERDES(串化器/解串器)的工作原理與具體應(yīng)用。其中每片F(xiàn)PGA需要接收并發(fā)送高速的16路串行數(shù)據(jù)并在接收時(shí)將其轉(zhuǎn)換為128位并行數(shù)據(jù)做其它處理,為了實(shí)現(xiàn)高速串行傳輸,同時(shí)又不占用芯片內(nèi)部的邏輯資源,我們用Xilinx的SERDES源語(yǔ)方便、快速地實(shí)現(xiàn)了該設(shè)計(jì)。
1 Spartan-6簡(jiǎn)介
Xilinx目標(biāo)設(shè)計(jì)平臺(tái)的芯片基礎(chǔ)融合了行業(yè)領(lǐng)先的工藝,可編程的邏輯技術(shù)和收發(fā)器功能以及用于高級(jí)存儲(chǔ)支持的控制器,從而可以為成本敏感應(yīng)用提供高性能的FPGA。高級(jí)功耗管理技術(shù)的創(chuàng)新,結(jié)合以更低的1.0V電源操作的核心選項(xiàng),讓新的Spartan-6 FPGA系列比前幾代Spartan系列的功耗降低了65%。該公司的partan-6系列正是一款為滿足低成本和低功耗設(shè)計(jì)要求而推出的系列產(chǎn)品。
運(yùn)用第六代Spartan FPGA系列產(chǎn)品,系統(tǒng)開發(fā)人員可以在將系統(tǒng)成本減半,開發(fā)出功耗更低的“更環(huán)保”的產(chǎn)品的同時(shí),達(dá)到新的功能要求。Spartan-6 FPGA支持汽車信息娛樂(lè)、平板顯示器、多功能打印機(jī)、機(jī)頂盒、家庭網(wǎng)絡(luò)、視頻監(jiān)控等應(yīng)用,它能對(duì)低風(fēng)險(xiǎn)、低成本、高性能進(jìn)行最優(yōu)平衡。
Spartan-6 FPGA系列雙寄存器、六輸入的高效LUT邏輯結(jié)構(gòu)采用了行業(yè)領(lǐng)先的Virtex架構(gòu),可以跨平臺(tái)兼容和提高系統(tǒng)性能。由于增加了Virtex系列的系統(tǒng)級(jí)模塊,其中包括DSP slice、高速收發(fā)器以及PCI Express端點(diǎn)模塊,因此實(shí)現(xiàn)了比以往更大的系統(tǒng)級(jí)集成。Spartan-6 FPGA系列由兩個(gè)領(lǐng)域優(yōu)化的子系列組成,該系列所提供的功能組合,可以達(dá)到價(jià)格敏感的大批量應(yīng)用的嚴(yán)苛要求:Spartan-6 LX FPGAs和Sp-artan-6 LXT FPGAs。
Spartan-6 LX FPGAs針對(duì)需要絕對(duì)最低成本的應(yīng)用而優(yōu)化。該平臺(tái)器件支持高達(dá)147k邏輯密度、4.8Mb存儲(chǔ)器、集成存儲(chǔ)控制器、DSP slice以及易用的高性能硬IP,同時(shí)采用了創(chuàng)新的基于開放標(biāo)準(zhǔn)的配置。
Spartan-6 LXT FPGAs擴(kuò)展了LX系列,可提供多達(dá)八個(gè)3.125Gb/s GTP收發(fā)器和一個(gè)集成的PCI Express模塊,它們都采用了成熟的Vir-tex FPGA系列技術(shù),可以為串行連接提供業(yè)界風(fēng)險(xiǎn)最低、成本最低的解決方案。
本文中采用Spartan-6 LX FPGAs中的XC6SLX150-EG(G)4.84進(jìn)行板級(jí)驗(yàn)證測(cè)試。該芯片內(nèi)的SelectIOTM接口技術(shù)(多電壓、多標(biāo)準(zhǔn)Selec-tIO模塊組)有如下性能:
·每個(gè)差分I/O具有最高1050 Mb/s的數(shù)據(jù)傳輸速率
·可選輸出驅(qū)動(dòng),最高每針腳24mA
·3.3V到1.2V I/O標(biāo)準(zhǔn)和協(xié)議
·低成本HSTL和SSTL內(nèi)存接口
·符合熱插拔標(biāo)準(zhǔn)
·可調(diào)整I/O轉(zhuǎn)換速率,改進(jìn)信號(hào)完整性
2 SERDES的結(jié)構(gòu)與工作原理
所有Spartan-6型號(hào)的器件的I/O Tile都包括兩個(gè)IOBs、兩個(gè)ILOGICs、兩個(gè)OLOGICs和兩個(gè)IODELAYs。其中ILOGICs和OLOGICs可以配置為輸入SerDes(ISERDES)或者輸出SerDes(OSERDES)模塊或者其他I/O接口。如圖1所示為Spartan-6 FPGA的I/O Tile。
每一款該型號(hào)的FPGA的輸入/輸出模塊(IOB)包含一個(gè)4-bit輸入SerDes和一個(gè)4-bit輸出SerDes,兩個(gè)相鄰的SerDcs模塊(主模塊和從模塊)級(jí)聯(lián)在一起可以生成一個(gè)8bit IOB,這使得每一個(gè)IOB不論在SDR模式下或是在DDR模式下其數(shù)據(jù)的輸入輸出串并轉(zhuǎn)換速率從2:1到8:1都成為可能。
2.1 ISERDES
每一款Spartan-6型號(hào)FPGA的IOB的輸入SerDes都可以甩ISERDES2源語(yǔ)來(lái)實(shí)例化。
ISERDES2是Spartan-6內(nèi)部集成的輸入串并轉(zhuǎn)換器源語(yǔ),支持單倍數(shù)據(jù)速率(SDR)和雙倍數(shù)據(jù)速率(DDR)兩種模式。這兩種模式均可以進(jìn)行編程操作,在SDR模式下,可以實(shí)現(xiàn)1bit串行數(shù)據(jù)到生成2、3、4bit的并行數(shù)據(jù)的轉(zhuǎn)換;在DDR模式下,可以實(shí)現(xiàn)1bit串行數(shù)據(jù)到5、6、7及8bit并行數(shù)據(jù)的轉(zhuǎn)換。當(dāng)生成數(shù)據(jù)的位寬大于6時(shí),需要采用主從模式將兩個(gè)相鄰的ISER2DES2模塊連接在一起。每一個(gè)ISERDES2還包括一個(gè)由設(shè)計(jì)者提供BITSL IP(比特偏移控制)操作的并行數(shù)據(jù)字對(duì)齊邏輯。SerDes的串并轉(zhuǎn)換速率之比指的是用于捕捉數(shù)據(jù)的高速I/O時(shí)鐘和用于處理并行數(shù)據(jù)的低速內(nèi)部邏輯時(shí)鐘之比,例如,一個(gè)500MHz的單端I/O 時(shí)鐘接收500MHz的數(shù)據(jù),ISERDES2的串并轉(zhuǎn)換速率為4:1指的是FPGA采用125MHz時(shí)鐘來(lái)處理接收的并行數(shù)據(jù)。
ISERDES2的結(jié)構(gòu)如圖2所示。
當(dāng)兩個(gè)ISERDES2級(jí)聯(lián)時(shí),其中一個(gè)是主模式,一個(gè)是從模式,表1顯示了兩個(gè)ISERDES2源語(yǔ)級(jí)聯(lián)時(shí)的數(shù)據(jù)位高低連接方式:
2.2 OSERDES
同樣,每一款Spartan-6型號(hào)FPGA的IOB的輸出SerDes都可以用OSERDES2源語(yǔ)來(lái)實(shí)例化。其結(jié)構(gòu)和源語(yǔ)操作方式以及轉(zhuǎn)換速率比與ISER-DES2源語(yǔ)類似,在SDR模式下,可以實(shí)現(xiàn)1bit串行數(shù)據(jù)到生成2、3、4bit的并行數(shù)據(jù)的轉(zhuǎn)換;在差分輸出方式下,可以實(shí)現(xiàn)1bit串行數(shù)據(jù)到5、6、7及8bit并行數(shù)據(jù)的轉(zhuǎn)換。下圖為OSERDES2模塊以8:1的轉(zhuǎn)換率配置下差分輸出的級(jí)聯(lián)圖。
圖3 OSERDES 8:1差分輸出級(jí)聯(lián)拓?fù)鋱D
當(dāng)兩個(gè)OSERDES2級(jí)聯(lián)時(shí),其中一個(gè)是主模式,一個(gè)是從模式,表2顯示了兩個(gè)OSERDES2源語(yǔ)級(jí)聯(lián)時(shí)的數(shù)據(jù)位高低連接方式
3 Spartan-6的1 6路高速串行傳輸?shù)脑O(shè)計(jì)
兩片XC6SLX150 FPGA之間以16路高速數(shù)據(jù)相互通信,其中還需要一路源同步時(shí)鐘,一路標(biāo)志信號(hào)用來(lái)使能片間數(shù)據(jù)的收發(fā)控制,每片F(xiàn)PGA需要一個(gè)400MHz的時(shí)鐘輸入作為高速數(shù)據(jù)發(fā)送時(shí)鐘。其基本的發(fā)送拓?fù)鋱D如下:
接收時(shí)鐘直接使用源同步時(shí)鐘,發(fā)送時(shí)鐘采用輸入到FPGA的400MHz的時(shí)鐘。接收的數(shù)據(jù)送到一個(gè)128×1024的fifo中,然后進(jìn)行處理,將數(shù)據(jù)送到發(fā)送模塊,發(fā)送給相連的FPGA中,另一片F(xiàn)PGA做同樣的處理。
3.1 發(fā)送模塊
發(fā)送模塊采用輸入到FPGA的400MHz的時(shí)鐘作為發(fā)送時(shí)鐘源,首先經(jīng)BUFI02后送入PLL,產(chǎn)生一個(gè)800MHz的采樣發(fā)送時(shí)鐘和一個(gè)100MHz的FPGA內(nèi)部邏輯時(shí)鐘,再通過(guò)一個(gè)BUFPLL驅(qū)動(dòng)用于后續(xù)的邏輯。發(fā)送時(shí)鐘的產(chǎn)生模塊如圖5所示。
產(chǎn)生好發(fā)送時(shí)鐘后,將800MHz的發(fā)送時(shí)鐘和100MHz的FPGA內(nèi)部邏輯時(shí)鐘送到發(fā)送數(shù)據(jù)模塊開始數(shù)據(jù)的發(fā)送。送到所有輸出OSERDES2源語(yǔ)的時(shí)鐘和SerDes使能信號(hào)可以滿足安全的捕捉FPGA內(nèi)部并行的慢速數(shù)據(jù)到輸出SerDes,這些并行的數(shù)據(jù)然后通過(guò)高速的發(fā)送時(shí)鐘發(fā)送出去。其中一路的數(shù)據(jù)發(fā)送如圖6,共有16路相同的模塊組成128bit的高速串行數(shù)據(jù)的傳輸,每路數(shù)據(jù)發(fā)送速率為800MHz,則每路的數(shù)據(jù)傳輸速率為8bit×100MHz=800b/s,共16路數(shù)據(jù)線,則總的傳輸速率為12.8Gb/s。
源同步時(shí)鐘的發(fā)送不能直接將時(shí)鐘信號(hào)通過(guò)OBUFDS類似的源語(yǔ)直接發(fā)送,因?yàn)镾partan-6是面向低成本的低端產(chǎn)品,不支持高速信號(hào)的處理,所以,發(fā)送時(shí)鐘要像發(fā)送數(shù)據(jù)一樣發(fā)送出去,通過(guò)發(fā)送一個(gè)固定常數(shù)序列“10101010”來(lái)完成時(shí)鐘的發(fā)送。
3.2 接收模塊
接收模塊的源同步時(shí)鐘是上面發(fā)送模塊發(fā)出的400MHz的時(shí)鐘,該時(shí)鐘根據(jù)需要在PLL內(nèi)部產(chǎn)生一個(gè)高速采樣時(shí)鐘,通過(guò)PLL和BUFFPLL來(lái)產(chǎn)生ISERDES2源語(yǔ)所需要的接收時(shí)鐘和使能信號(hào)。接收源同步時(shí)鐘首先經(jīng)過(guò)一個(gè)延遲單元。然后經(jīng)過(guò)一個(gè)BUFIO2到PLL,PLL產(chǎn)生一個(gè)800MHz的采樣時(shí)鐘和一個(gè)100MHz的FPGA內(nèi)部邏輯時(shí)鐘,再通過(guò)一個(gè)BUFPLL驅(qū)動(dòng)用于后續(xù)的邏輯。接收時(shí)鐘的產(chǎn)生模塊如圖7所示。它和發(fā)送時(shí)鐘不同之處也是在于Spartan-6是面向低成本的低端產(chǎn)品,對(duì)于400MHz的時(shí)鐘該系列FPGA無(wú)法接收,首先要將該時(shí)鐘當(dāng)成數(shù)據(jù)一樣進(jìn)行接收,收到“10101010”比特串后,作為時(shí)鐘信號(hào)送給PLL。
產(chǎn)生好接收時(shí)鐘后,將800MHz的采樣時(shí)鐘和100MHz的FPGA內(nèi)部邏輯時(shí)鐘送到接收數(shù)據(jù)模塊開始數(shù)據(jù)的接收。其中一路的接收如圖8,共有16路相同的模塊組成128bit的高速串行數(shù)據(jù)的傳輸,每路數(shù)據(jù)采樣速率為800MHz,內(nèi)部FPGA邏輯時(shí)鐘為100MHz,則每路的數(shù)據(jù)傳輸速率為8b-it×100MHz=800b/s,共16路數(shù)據(jù)線,則總的傳輸速率為12.8Gb/s。
4 實(shí)驗(yàn)結(jié)果分析
在上述的結(jié)構(gòu)中,首先在FPGA1的邏輯中將Rec-FIFO初始化為滿數(shù)據(jù)狀態(tài),當(dāng)發(fā)送了數(shù)據(jù)使能信號(hào)后,系統(tǒng)就開始自循環(huán)測(cè)試,一旦出現(xiàn)錯(cuò)誤將會(huì)置錯(cuò)誤標(biāo)記,在驗(yàn)證板上有狀態(tài)燈指示該狀態(tài),經(jīng)過(guò)實(shí)際測(cè)試,送到兩片F(xiàn)PGA的時(shí)鐘為400MHz,完全滿足在16路高速串行傳輸?shù)膫鬏斔俾蔬_(dá)到12.8Gb/s的板級(jí)試驗(yàn)。只是ChipScope不能對(duì)管腳的高速信號(hào)進(jìn)行采樣觀察,所以我們?cè)贗SE11.5和ModelSim SE 6.5的環(huán)境下,仿真可以看到管腳高速信號(hào)和FPGA內(nèi)部邏輯之間收發(fā)數(shù)據(jù)的關(guān)系。圖9是發(fā)送數(shù)據(jù)的仿真結(jié)果,圖10是接收數(shù)據(jù)的仿真結(jié)果。其中,所有的輸出是差分輸出,為了便于觀察,一對(duì)的差分信號(hào)只顯示其中一個(gè)。
從圖中可以看出,源同步時(shí)鐘是400MHz,按照DDR方式傳送數(shù)據(jù),數(shù)據(jù)的傳輸速率為800MHz,即經(jīng)過(guò)PLL后的采樣時(shí)鐘(或者高速發(fā)送時(shí)鐘)為800MHz,而產(chǎn)生的FPGA內(nèi)部邏輯的時(shí)鐘為100MHz,從上兩圖中的波形可以看出,該設(shè)計(jì)實(shí)現(xiàn)了高速串行傳輸?shù)墓δ?。在FPGA設(shè)計(jì)中,輸入輸出管腳的鎖定是重要的一環(huán),一個(gè)合理的管腳分配方案不僅可以降低布線復(fù)雜度,而且可以減少布線的延遲,并有利于PCB板的制作。X-C6SLX150有四個(gè)bank,本文中的串行傳輸采用LVDS 2.5V標(biāo)準(zhǔn),我們將收發(fā)信號(hào)線分別放在不同的bank上,在布線時(shí),為盡量保持同一組差分信號(hào)線間的等長(zhǎng),對(duì)管腳分配進(jìn)行調(diào)整,做到最優(yōu)化布線。
5 總結(jié)和展望
本文介紹了基于Xilinx公司XC6SLX150的16路高速串行傳輸的設(shè)計(jì),此設(shè)計(jì)充分利用了Spartan-6的特點(diǎn)及其所含的IP核,不僅能夠最大限度地提高芯片性能,而且縮短了開發(fā)周期,減少了設(shè)計(jì)復(fù)雜度,有益于高速FPGA的開發(fā)。通過(guò)試驗(yàn),結(jié)果表明,采用Xilinx Spartan-6 SerDes設(shè)計(jì)的每路高速串行傳輸可以實(shí)現(xiàn)800Mb/s的傳輸速率,但Spartan-6本身具有每個(gè)差分I/O的最高數(shù)據(jù)傳輸速率為1050Mb/s的性能,由于硬件的限制未能驗(yàn)證,在今后的設(shè)計(jì)中希望可以進(jìn)行彌補(bǔ)。