基于Virtex-6 FPGA的三種串行通信協(xié)議測試及對比 (二)
FPGA模塊結(jié)構(gòu)如圖10所示。通過VIO控制模塊,可對包事務(wù)類型、包載荷、發(fā)送地址等參數(shù)進行設(shè)置。本測試將包載荷設(shè)為256字節(jié),讀/寫內(nèi)存空間設(shè)為DSP的MSM(Multi-core Shared Memory)空間。
圖10 SRIO 2.0通信測試FPGA模塊結(jié)構(gòu)
DSP方面,需要進行相關(guān)寄存器的配置,完成SRIO的初始化,使DSP作為目標端處理FPGA發(fā)來的SRIO讀/寫請求。DSP主要配置流程包括使能SRIO接口,串并轉(zhuǎn)換模塊,鏈路數(shù)目,鏈路線速率,設(shè)備ID等參數(shù)的設(shè)置。
使用ChipScope軟件觀察FPGA相關(guān)信號,如圖11,圖12所示。
圖11 SRIO 2.0讀測試信號波形
圖12 SRIO 2.0寫測試信號波形
本測試中,F(xiàn)PGA每連續(xù)發(fā)送16384個SWRITE或NREAD包后,都會向DSP再發(fā)送1個門鈴消息。因此,可以通過計算DSP收到的相鄰兩個門鈴的時間間隔來計算SRIO讀/寫速率。
經(jīng)測算,當FPGA執(zhí)行SRIO讀/寫操作時,DSP接收的相鄰兩個門鈴的平均時間間隔為分別為2.490ms,2.266ms.故SRIO 2.0讀操作的數(shù)據(jù)傳輸速率為,
下面計算本測試條件下SRIO讀/寫的理論數(shù)據(jù)傳輸速率和實際通信效率。
SRIO 2.0協(xié)議的主要開銷為物理層編碼開銷和數(shù)據(jù)包開銷。本測試采用8位路由和34位偏移地址。該條件下SWRITE事務(wù)、RESPONSE事務(wù)的數(shù)據(jù)包結(jié)構(gòu)分別如圖13、圖14所示。
圖13 SRIO 2.0 SWRITE包結(jié)構(gòu)
圖14 SRIO 2.0 RESPONSE包結(jié)構(gòu)
由圖13可知,F(xiàn)PGA每發(fā)送一個SWRITE包,會帶來10字節(jié)的開銷,另外,DSP會返回一個4字節(jié)確認接收符號。故本測試中SRIO寫操作的理論數(shù)據(jù)傳輸速率為,
與PCIe 2.0類似,SRIO 2.0可以流水地處理多個未完成的操作,應(yīng)答開銷與發(fā)送開銷之間沒有競爭。故而SRIO 2.0讀操作可只考慮RESPONSE包開銷而忽略NREAD包開銷。由圖14可知,DSP每返回一個RESPONSE包,會帶來8字節(jié)的開銷。另外,DSP接收到NREAD包后,會返回一個4字節(jié)確認接收符號,F(xiàn)PGA接收到響應(yīng)包后,也會返回一個4字節(jié)確認接收符號。故本測試中SRIO讀操作的理論數(shù)據(jù)傳輸速率為,
SRIO讀操作的實際通信效率較低的原因是DSP響應(yīng)FPGA讀請求的時間較長。
6三種協(xié)議的分析比較
本測試中,Aurora 8B/10B、PCIe 2.0、SRIO 2.0均實現(xiàn)了在4x模式下的高速數(shù)據(jù)傳輸。下面將結(jié)合測試結(jié)果和協(xié)議的具體內(nèi)容,從以下各方面對三種協(xié)議進行比較。
(1)協(xié)議分層結(jié)構(gòu)
Aurora 8B/10B協(xié)議僅定義了鏈路層和物理層。屬于較為底層的協(xié)議。SRIO 2.0協(xié)議定義了物理層,傳輸層和邏輯層,PCIe 2.0協(xié)議定義了物理層,數(shù)據(jù)鏈路層,事務(wù)層和軟件層,這兩種協(xié)議的內(nèi)容和功能均比Aurora 8B/10B協(xié)議復(fù)雜。
(2)鏈路數(shù)目和鏈路線速率
Aurora 8B/10B協(xié)議在鏈路數(shù)目和鏈路線速率選擇上比較靈活,鏈路數(shù)目可以在1x至16x之間自由選擇,鏈路線速率可以在0.5Gb/s到6.6Gb/s間自由選擇。PCIe 2.0支持1x,2x,4x,8x,12x,16x,32x鏈路,鏈路線速率支持2.5Gb/s和5.0Gb/s.SRIO 2.0支持1x、2x、4x、8x和16x鏈路,鏈路線速率支持1.25Gb/s、2.5Gb/s、3.125Gb/s、5.0Gb/s和6.25Gb/s.
綜上可知,在鏈路線速率選擇范圍的廣泛性和靈活性上,
Aurora 8B/10B>Srio 2.0>Pcie 2.0,
鏈路數(shù)目選擇的靈活性上,
Aurora 8B/10B>Pcie 2.0>Srio 2.0.
最大允許的鏈路數(shù)目上,
Pcie 2.0>Aurora 8B/10B=Srio 2.0.
(3)數(shù)據(jù)傳輸方式
Aurora 8B/10B協(xié)議在數(shù)據(jù)封裝過程中未添加地址,設(shè)備號等信息,不能對目標設(shè)備的存儲空間進行讀寫。
PCIe 2.0可通過Memory Write,Memory Read,I/O Write,I/O Read事務(wù)對目標設(shè)備地址空間進行讀寫,但必須具備對目標設(shè)備地址空間的可見性。
SRIO 2.0數(shù)據(jù)傳輸方式更為靈活。在具備對目標設(shè)備地址空間可見性的情況下,可通過NWRITE,NWRITE_R,SWRITE,NREAD,ASTOMIC等事務(wù)對目標設(shè)備的地址空間進行直接讀寫。在不具備目標設(shè)備地址空間可見性的情況下,SRIO還提供了消息傳遞機制。用戶將數(shù)據(jù)和信箱號通過MESSAGE事務(wù)發(fā)至目標設(shè)備,目標設(shè)備根據(jù)信箱號與自身存儲空間的映射關(guān)系將數(shù)據(jù)寫入存儲空間。
綜上可知,數(shù)據(jù)傳輸方式的靈活性上,SRIO 2.0>PCIe 2.0>Aurora 8B/10B.
(4)協(xié)議開銷和數(shù)據(jù)傳輸速率
三種協(xié)議均在物理層有20%的8B/10B編碼開銷。Aurora 8B/10B協(xié)議除此之外基本上無其它開銷,而PCIe 2.0,SRIO 2.0還存在數(shù)據(jù)包開銷。與PCIe 2.0相比,SRIO 2.0的數(shù)據(jù)包格式更為簡潔,在相同的包載荷大小下,開銷更低。以256B包載荷為例,SRIO 2.0的數(shù)據(jù)包開銷最低為5.4%(SWRITE事務(wù)),而PCIe 2.0的數(shù)據(jù)包開銷最低為7.3%(Memory Write事務(wù))。然而,PCIe 2.0協(xié)議最大允許的包載荷為4KB,而SRIO最大允許的包載荷為256B.故PCIe 2.0協(xié)議可通過增大包載荷來達到更低的數(shù)據(jù)包開銷。(4KB包載荷下,PCIe 2.0的數(shù)據(jù)包開銷為0.5%)
協(xié)議的理論傳輸速率由通道帶寬和協(xié)議開銷決定,而協(xié)議的實際傳輸速率還受設(shè)備本身性能的影響。本測試中,PCIe 2.0 DMA讀操作數(shù)據(jù)傳輸速率速率高于SRIO 2.0 NREAD的主要原因是服務(wù)器對FPGA的PCIe讀請求的響應(yīng)要快于DSP對FPGA的SRIO讀請求響應(yīng)。
(5)設(shè)備尋址
PCIe協(xié)議中,各設(shè)備共享一個PCIe地址空間。整個PCIe地址空間先被分成塊,根據(jù)后來的下級總線這些塊再進一步劃分。樹形結(jié)構(gòu)中的每個設(shè)備在整個地址空間映射中被指定一個地址空間,通過執(zhí)行全部地址譯碼來查找設(shè)備。在支持帶有大容量存儲器的設(shè)備系統(tǒng)中,這種設(shè)備尋址機制不適合靈活拓展。
SRIO采用基于設(shè)備ID尋址的方案。采用該方案,使得拓撲結(jié)構(gòu)的變化僅需要更新事務(wù)路徑中的設(shè)備,從而使系統(tǒng)的拓展與拓撲結(jié)構(gòu)的更改比PCIe協(xié)議更為靈活。
Aurora 8B/10B協(xié)議未定義設(shè)備尋址機制。
(6)網(wǎng)絡(luò)拓撲
PCIe規(guī)定了生成樹拓撲結(jié)構(gòu),這種結(jié)構(gòu)適合于單個主機,多個外圍設(shè)備通信模式,但限制了端點數(shù)量,且不支持任意節(jié)點與節(jié)點間直接通信。PCIe的典型網(wǎng)絡(luò)拓撲結(jié)構(gòu)如圖15所示。
圖15 PCIe網(wǎng)絡(luò)拓撲結(jié)構(gòu)
SRIO的拓撲結(jié)構(gòu)比PCIe更為靈活,可設(shè)計成網(wǎng)型,星型,雛菊鏈或樹形拓撲結(jié)構(gòu),支持節(jié)點對節(jié)點通信,各節(jié)點間可對等的發(fā)起數(shù)據(jù)傳輸。
Aurora 8B/10B協(xié)議不支持網(wǎng)絡(luò)拓撲結(jié)構(gòu)。
(7)應(yīng)用領(lǐng)域
Aurora 8B/10B協(xié)議作為Xilinx公司開發(fā)的輕量級鏈路層協(xié)議,協(xié)議開銷小,鏈路數(shù)目和鏈路線速率選擇靈活,適用于兩片Xilinx FPGA之間的數(shù)據(jù)流傳輸。用戶也可在其基礎(chǔ)上開發(fā)高層協(xié)議。但其應(yīng)用范圍較為有限,尚未見在其他芯片中使用。
PCIe 2.0作為PCI總線的繼承,帶寬,拓展靈活性大大提高,適合于主機與外部設(shè)備的互聯(lián),在PC/Server平臺、VPX平臺有廣泛應(yīng)用,如聲卡、顯示卡、網(wǎng)絡(luò)設(shè)備(包括以太網(wǎng)、Modem)、光纖接口卡、磁盤陣列卡等。
SRIO 2.0作為一種高性能包交換的互連技術(shù),數(shù)據(jù)傳輸方式和拓撲結(jié)構(gòu)靈活,為多處理器系統(tǒng)的實現(xiàn)提供便利,廣泛用于嵌入式系統(tǒng)內(nèi)的微處理器、DSP、通信和網(wǎng)絡(luò)處理器、系統(tǒng)存儲器之間的高速數(shù)據(jù)傳輸。
7結(jié)束語
本文基于Virtex-6 FPGA芯片,對Aurora 8B/10B,PCIe2.0,SRIO 2.0三種串行通信協(xié)議進行了速率測試,并通過分析協(xié)議開銷和協(xié)議的流控制機制,計算了三種協(xié)議的理論傳輸速率和協(xié)議實際通信效率。結(jié)合測試結(jié)果和三種協(xié)議的具體內(nèi)容,對三種協(xié)議的相關(guān)參數(shù)和應(yīng)用領(lǐng)域進行了對比分析。本文測試模塊結(jié)構(gòu)的設(shè)計可為三種協(xié)議的工程實現(xiàn)提供借鑒,協(xié)議實際傳輸速率的測算和協(xié)議理論傳輸速率的分析計算可為三種協(xié)議在不同平臺和工作模式下的測試提供參考。在進行雷達信號處理機數(shù)據(jù)傳輸方案的設(shè)計時,可參照本文對三種協(xié)議的性能分析,根據(jù)系統(tǒng)自身的特點及對數(shù)據(jù)傳輸速率的要求,合理選擇協(xié)議類型和協(xié)議的工作模式。