基于Spartan-6的16路高速串行傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)
產(chǎn)生好發(fā)送時(shí)鐘后,將800MHz的發(fā)送時(shí)鐘和100MHz的FPGA內(nèi)部邏輯時(shí)鐘送到發(fā)送數(shù)據(jù)模塊開始數(shù)據(jù)的發(fā)送。送到所有輸出OSERDES2源語的時(shí)鐘和SerDes使能信號可以滿足安全的捕捉FPGA內(nèi)部并行的慢速數(shù)據(jù)到輸出SerDes,這些并行的數(shù)據(jù)然后通過高速的發(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。本文引用地址:http://m.butianyuan.cn/article/162171.htm
源同步時(shí)鐘的發(fā)送不能直接將時(shí)鐘信號通過OBUFDS類似的源語直接發(fā)送,因?yàn)?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/Spartan-6">Spartan-6是面向低成本的低端產(chǎn)品,不支持高速信號的處理,所以,發(fā)送時(shí)鐘要像發(fā)送數(shù)據(jù)一樣發(fā)送出去,通過發(fā)送一個(gè)固定常數(shù)序列“10101010”來完成時(shí)鐘的發(fā)送。
3.2 接收模塊
接收模塊的源同步時(shí)鐘是上面發(fā)送模塊發(fā)出的400MHz的時(shí)鐘,該時(shí)鐘根據(jù)需要在PLL內(nèi)部產(chǎn)生一個(gè)高速采樣時(shí)鐘,通過PLL和BUFFPLL來產(chǎn)生ISERDES2源語所需要的接收時(shí)鐘和使能信號。接收源同步時(shí)鐘首先經(jīng)過一個(gè)延遲單元。然后經(jīng)過一個(gè)BUFIO2到PLL,PLL產(chǎn)生一個(gè)800MHz的采樣時(shí)鐘和一個(gè)100MHz的FPGA內(nèi)部邏輯時(shí)鐘,再通過一個(gè)BUFPLL驅(qū)動(dòng)用于后續(xù)的邏輯。接收時(shí)鐘的產(chǎn)生模塊如圖7所示。它和發(fā)送時(shí)鐘不同之處也是在于Spartan-6是面向低成本的低端產(chǎn)品,對于400MHz的時(shí)鐘該系列FPGA無法接收,首先要將該時(shí)鐘當(dāng)成數(shù)據(jù)一樣進(jìn)行接收,收到“10101010”比特串后,作為時(shí)鐘信號送給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ù)使能信號后,系統(tǒng)就開始自循環(huán)測試,一旦出現(xiàn)錯(cuò)誤將會(huì)置錯(cuò)誤標(biāo)記,在驗(yàn)證板上有狀態(tài)燈指示該狀態(tài),經(jīng)過實(shí)際測試,送到兩片F(xiàn)PGA的時(shí)鐘為400MHz,完全滿足在16路高速串行傳輸?shù)膫鬏斔俾蔬_(dá)到12.8Gb/s的板級試驗(yàn)。只是ChipScope不能對管腳的高速信號進(jìn)行采樣觀察,所以我們在ISE11.5和ModelSim SE 6.5的環(huán)境下,仿真可以看到管腳高速信號和FPGA內(nèi)部邏輯之間收發(fā)數(shù)據(jù)的關(guān)系。圖9是發(fā)送數(shù)據(jù)的仿真結(jié)果,圖10是接收數(shù)據(jù)的仿真結(jié)果。其中,所有的輸出是差分輸出,為了便于觀察,一對的差分信號只顯示其中一個(gè)。
從圖中可以看出,源同步時(shí)鐘是400MHz,按照DDR方式傳送數(shù)據(jù),數(shù)據(jù)的傳輸速率為800MHz,即經(jīng)過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ā)信號線分別放在不同的bank上,在布線時(shí),為盡量保持同一組差分信號線間的等長,對管腳分配進(jìn)行調(diào)整,做到最優(yōu)化布線。
5 總結(jié)和展望
本文介紹了基于Xilinx公司XC6SLX150的16路高速串行傳輸?shù)?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/設(shè)計(jì)">設(shè)計(jì),此設(shè)計(jì)充分利用了Spartan-6的特點(diǎn)及其所含的IP核,不僅能夠最大限度地提高芯片性能,而且縮短了開發(fā)周期,減少了設(shè)計(jì)復(fù)雜度,有益于高速FPGA的開發(fā)。通過試驗(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ǔ)。
評論