文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)02-0065-03
0 引言
隨著圖像采集,、傳輸和處理技術(shù)的發(fā)展,在很多領(lǐng)域中對(duì)圖像數(shù)據(jù)實(shí)時(shí)采集后的傳輸和處理提出了更高的要求,,尤其是高分辨率,、高頻幀相機(jī)的廣泛使用,對(duì)高帶寬的需求更加迫切,,傳統(tǒng)的總線技術(shù)PCI,、PCI-X、AGP等已很難勝任,,而串行總線PCIe,,由于利用時(shí)鐘恢復(fù)和高速差分信號(hào)克服傳統(tǒng)并行總線中的諸多限制,達(dá)到了更高的數(shù)據(jù)傳輸速率,因此一定程度上滿(mǎn)足了高數(shù)據(jù)帶寬的需求,。PCIe總線使用數(shù)據(jù)包進(jìn)行端到端的數(shù)據(jù)傳輸,,理論上PCIe 1.0能達(dá)到2.5 Gbps/lane,2.0能達(dá)到5.0 Gbps/lane,,但由于采用8b/10b編碼以及數(shù)據(jù)包頭和控制數(shù)據(jù)包的占用,,有效數(shù)據(jù)速率會(huì)低于理論值的80%[1-2]。
利用PCIe總線的高帶寬優(yōu)勢(shì),,設(shè)計(jì)了一種基于PCIe總線的多路實(shí)時(shí)傳輸系統(tǒng),,采用Bus Master DMA方式實(shí)現(xiàn)與PC之間的高速傳輸,以滿(mǎn)足多路圖像數(shù)據(jù)實(shí)時(shí)采集后傳輸和處理的高帶寬需求,。
1 系統(tǒng)結(jié)構(gòu)及工作原理
基于可編程邏輯器件FPGA的設(shè)計(jì)相比ASIC具有更好的靈活性和可配置性,,因此本文所設(shè)計(jì)的基于PCIe總線的多路實(shí)時(shí)傳輸系統(tǒng)采用了Xilinx XC6VLX240T FPGA來(lái)實(shí)現(xiàn)。本系統(tǒng)主要包括PCI Express Core(EP),、DDR3 MIG模塊,、PCIe Bus Master DMA(BMD)模塊以及DDR3讀寫(xiě)控制模塊四部分,結(jié)構(gòu)如圖1所示,。
本系統(tǒng)的主要工作原理是由DDR3緩存相機(jī)采集PC處理后的圖像數(shù)據(jù),,通過(guò)PCIe總線實(shí)現(xiàn)與PC之間高速數(shù)據(jù)傳輸。兩路相機(jī)采集后的圖像數(shù)據(jù)經(jīng)相機(jī)接口模塊前期處理后傳入DDR3讀寫(xiě)控制模塊,,由MIG模塊存入DDR3,,然后DDR3中的數(shù)據(jù)被讀入發(fā)送緩存,同時(shí)PCIe BMD模塊發(fā)送MSI報(bào)文給PC使其配置BMD相應(yīng)寄存器,,BMD模塊會(huì)讀取發(fā)送緩存中的數(shù)據(jù)組成存儲(chǔ)器寫(xiě)請(qǐng)求報(bào)文經(jīng)PCIe總線傳給PC,。對(duì)兩路圖像數(shù)據(jù)進(jìn)行基于對(duì)象的特征提取后,PC配置BMD相應(yīng)寄存器使其發(fā)送存儲(chǔ)器讀請(qǐng)求報(bào)文,,然后PC端將處理后的圖像數(shù)據(jù)組成CPLD數(shù)據(jù)包發(fā)向PCIe EP Core,,BMD模塊會(huì)將收到的CPLD TLP中的有效數(shù)據(jù)存入接收緩存,最后DDR3讀寫(xiě)控制模塊讀取接收緩存中的數(shù)據(jù),,存入DDR3以待DVI 接口模塊讀取輸出顯示,。結(jié)構(gòu)圖中FIFO除了緩存的作用外主要是解決位寬及跨時(shí)鐘域的問(wèn)題[3],而DMA FIFO接口模塊的作用主要是負(fù)責(zé)BMD模塊與FIFO間的信號(hào)連接及控制,。
2 主要模塊設(shè)計(jì)
本系統(tǒng)的設(shè)計(jì)主要是DDR3讀寫(xiě)控制模塊和PCIe BMD模塊的設(shè)計(jì),,而PCI Express Core(EP)和MIG可以通過(guò)Xilinx CORE Generator按需求的配置生成,其中PCIe配置成×4,、gen2,,利用Virtex6集成的PCIe IP實(shí)現(xiàn),MIG配置成DDR3控制器,、400 MHz,。
2.1 DDR3讀寫(xiě)控制模塊
DDR3讀寫(xiě)控制模塊由讀寫(xiě)控制模塊和仲裁模塊兩部分組成,,如圖2所示。
讀寫(xiě)控制模塊通過(guò)UI接口與MIG連接,,按照MIG的時(shí)序要求進(jìn)行讀寫(xiě)操作。并且為了讀寫(xiě)管理方便,,將DDR3按容量劃分為兩份,,分別用于存儲(chǔ)采集的兩路源圖像數(shù)據(jù)和經(jīng)PC處理后用于輸出的圖像數(shù)據(jù)。
仲裁模塊主要負(fù)責(zé)多個(gè)設(shè)備訪問(wèn)DDR3時(shí)的總線切換,。由于本系統(tǒng)不同設(shè)備讀寫(xiě)DDR3所用時(shí)間不同,,為避免采用輪詢(xún)機(jī)制所帶來(lái)的帶寬利用率的降低,采取仲裁機(jī)制,,負(fù)責(zé)對(duì)各個(gè)設(shè)備的訪問(wèn)請(qǐng)求做出應(yīng)答和總線的切換,,效率更高[4],原理如圖2所示,。設(shè)計(jì)時(shí),,為避免幾個(gè)設(shè)備同時(shí)請(qǐng)求帶來(lái)不確定性,仲裁模塊采用Round Robin仲裁模式,,使得各設(shè)備能公平得到響應(yīng)機(jī)會(huì),。綜合考慮帶寬利用率和實(shí)時(shí)性,將十行以?xún)?nèi)圖像像素點(diǎn)的讀寫(xiě)時(shí)間作為時(shí)間寬度,,保證本系統(tǒng)的高效可靠,。
2.2 PCIe BMD模塊
PCIe BMD模塊主要由三部分構(gòu)成,包括DMA 控制/狀態(tài)模塊,、發(fā)送模塊以及接收模塊,,結(jié)構(gòu)如圖3所示。
2.2.1 DMA控制/狀態(tài)模塊
DMA控制/狀態(tài)模塊包括控制/狀態(tài)寄存器和控制模塊,??刂?狀態(tài)寄存器主要寄存BMD模塊的控制及狀態(tài)信息。PC端采用數(shù)據(jù)包的形式將配置需求通過(guò)PCIe總線傳輸?shù)紼P端,,BMD接收模塊識(shí)別配置數(shù)據(jù)包(有效數(shù)據(jù)大小為1DW的存儲(chǔ)器寫(xiě)請(qǐng)求TLP),,并根據(jù)TLP的地址段將數(shù)據(jù)寫(xiě)入相應(yīng)的控制寄存器。PC端也可以發(fā)送讀控制/狀態(tài)寄存器的請(qǐng)求,,接收模塊識(shí)別到該類(lèi)數(shù)據(jù)包(請(qǐng)求數(shù)據(jù)大小為1DW的存儲(chǔ)器讀請(qǐng)求TLP)后,,產(chǎn)生CPLD請(qǐng)求,發(fā)送模塊將根據(jù)該TLP的地址讀取對(duì)應(yīng)控制/狀態(tài)寄存器的值,,生成CPLD TLP發(fā)向PC端,。
控制模塊根據(jù)控制/狀態(tài)寄存器的配置值發(fā)送相應(yīng)的控制信號(hào)給發(fā)送及接收模塊,還與DDR3讀寫(xiě)控制模塊相連,,控制原圖像數(shù)據(jù)的讀取和處理后圖像數(shù)據(jù)的寫(xiě)入,,并配合讀取操作發(fā)送MSI請(qǐng)求[5],,使PC配置BMD模塊相應(yīng)的控制寄存器以進(jìn)行存儲(chǔ)器寫(xiě)請(qǐng)求TLP的發(fā)送。
2.2.2 發(fā)送/接收模塊
發(fā)送模塊作為BMD模塊的發(fā)送部分,,主要負(fù)責(zé)在接收模塊收到讀寫(xiě)控制/狀態(tài)寄存器的請(qǐng)求后完成報(bào)文的發(fā)送,,在發(fā)送模塊收到MSI請(qǐng)求后MSI TLP的發(fā)送,以及根據(jù)PC端所配置的寄存器參數(shù)進(jìn)行存儲(chǔ)器讀/寫(xiě)請(qǐng)求TLP的發(fā)送,,其中存儲(chǔ)器寫(xiě)請(qǐng)求TLP的有效數(shù)據(jù)來(lái)自TX FIFO,。
接收模塊主要負(fù)責(zé)接收各種數(shù)據(jù)包并作出相應(yīng)操作:當(dāng)收到配置數(shù)據(jù)包時(shí),將有效數(shù)據(jù)寫(xiě)入對(duì)應(yīng)控制寄存器,;當(dāng)收到讀控制/狀態(tài)寄存器的請(qǐng)求,,通知發(fā)送模塊讀取對(duì)應(yīng)控制/狀態(tài)寄存器值組成CPLD TLP發(fā)向PC端;當(dāng)收到CPLD TLP,,其中的數(shù)據(jù)段就是發(fā)送模塊發(fā)送的存儲(chǔ)器讀請(qǐng)求TLP所請(qǐng)求的數(shù)據(jù),,然后對(duì)這些數(shù)據(jù)進(jìn)行校驗(yàn)并讀入RX FIFO等待存入DDR3。
2.2.3 PCIe BMD全雙工模式
對(duì)于本系統(tǒng)與PC之間的數(shù)據(jù)傳輸,,單一時(shí)間段內(nèi)只進(jìn)行讀或者寫(xiě)比較簡(jiǎn)單,,但為了滿(mǎn)足系統(tǒng)需要以及傳輸效率的提高,大部分情況下,,需要讀寫(xiě)數(shù)據(jù)同時(shí)進(jìn)行,。對(duì)于發(fā)送模塊而言,則需要合理安排存儲(chǔ)器寫(xiě)請(qǐng)求TLP和存儲(chǔ)器讀請(qǐng)求TLP的發(fā)送,,這里采用動(dòng)態(tài)加權(quán)循環(huán)調(diào)度算法(Dynamic Weighted Round Robin,,DWRR)。普通的加權(quán)循環(huán)調(diào)度算法(Weighted Round Robin,,WRR)是通過(guò)設(shè)置兩個(gè)計(jì)數(shù)器分別記錄當(dāng)前寫(xiě)請(qǐng)求和讀請(qǐng)求已經(jīng)發(fā)送的個(gè)數(shù),,并根據(jù)傳輸特性給兩者配置相應(yīng)的權(quán)重值。傳輸開(kāi)始后,,當(dāng)某一請(qǐng)求次數(shù)達(dá)到它的權(quán)重值,,則將該請(qǐng)求的計(jì)數(shù)器清零,再跳轉(zhuǎn)到另一請(qǐng)求,,如此循環(huán)往復(fù)直到傳輸結(jié)束,。由于讀請(qǐng)求的周期數(shù)要遠(yuǎn)小于寫(xiě)請(qǐng)求,如果讀寫(xiě)請(qǐng)求的權(quán)值設(shè)置好后就保持不變,,讀請(qǐng)求的過(guò)快發(fā)送會(huì)快速消耗PCIe EP CORE的發(fā)送緩存從而造成擁堵,,使發(fā)送模塊長(zhǎng)期處于等待狀態(tài),降低傳輸速率,。本系統(tǒng)根據(jù)這一特性對(duì)WRR算法進(jìn)行了優(yōu)化,,開(kāi)始階段由于發(fā)送緩存為空,為了充分利用總線,,將讀請(qǐng)求權(quán)值設(shè)為發(fā)送緩存大小3/4,,寫(xiě)請(qǐng)求設(shè)為其1/4,,優(yōu)先發(fā)送讀請(qǐng)求,再發(fā)送寫(xiě)請(qǐng)求,,然后根據(jù)寫(xiě)請(qǐng)求個(gè)數(shù)達(dá)到權(quán)值后發(fā)送緩存的可用數(shù)設(shè)置讀請(qǐng)求的權(quán)值,,當(dāng)發(fā)送緩存的可用數(shù)小于寫(xiě)請(qǐng)求權(quán)值一半時(shí),重新設(shè)讀寫(xiě)請(qǐng)求權(quán)值都為1,,使讀寫(xiě)請(qǐng)求逐個(gè)間隔發(fā)送直到讀請(qǐng)求優(yōu)先完成,,再發(fā)送剩余的寫(xiě)請(qǐng)求。在這過(guò)程中讀寫(xiě)請(qǐng)求權(quán)重值根據(jù)發(fā)送緩存的可用數(shù)動(dòng)態(tài)變化,,調(diào)整讀寫(xiě)請(qǐng)求的發(fā)送組合,在保證讀取速率的情況下盡量減少了擁堵時(shí)間,,從而提高整體傳輸速率,。
3 設(shè)計(jì)實(shí)現(xiàn)及測(cè)試驗(yàn)證
本設(shè)計(jì)采用Xilinx XC6VLX240T FPGA定制開(kāi)發(fā)板作為開(kāi)發(fā)平臺(tái),并結(jié)合對(duì)應(yīng)的驅(qū)動(dòng)程序和處理程序進(jìn)行測(cè)試驗(yàn)證,。
3.1 設(shè)計(jì)實(shí)現(xiàn)
整個(gè)設(shè)計(jì)采用Xilinx ISE14.7作為FPGA的開(kāi)發(fā)工具,,利用Verilog HDL進(jìn)行程序設(shè)計(jì)。根據(jù)圖1的結(jié)構(gòu)圖在頂層模塊中例化各個(gè)模塊,,并進(jìn)行相應(yīng)的優(yōu)化,。為了滿(mǎn)足測(cè)試驗(yàn)證的需求,頂層模塊中還需要例化ChipScope測(cè)試核,。設(shè)計(jì)完成后,,通過(guò)ISE綜合、映射,、布局布線,,最后生成可供下載的bit文件。綜合后整個(gè)設(shè)計(jì)占用Register資源9 317(3%),,占用LUT資源11 214(7%),,占用Bram資源12(2%)。
3.2 測(cè)試驗(yàn)證
將開(kāi)發(fā)板與PC主板的PCIe插槽相連接,,下載bit文件,,結(jié)合ChipScope軟件進(jìn)行測(cè)試。兩路相機(jī)參數(shù)同為1 920×1 080,,60 FPS,,DVI顯示參數(shù)也為1 920×1 080,
60 FPS,。DDR3 SDRAM時(shí)鐘400 MHz,,物理位寬64 bit,讀寫(xiě)控制時(shí)鐘200 MHz,,數(shù)據(jù)位寬256 bit,。PCIe配置成×4,,gen2。理論上,,DDR3的讀寫(xiě)速率和PCIe的傳輸速率滿(mǎn)足多路圖像的采集和輸出要求,。根據(jù)仲裁模塊的設(shè)計(jì),測(cè)試時(shí)間寬度分別為1,、2,、4、8行圖像像素點(diǎn)讀寫(xiě)時(shí)間下的性能,,其中7.5 KB對(duì)應(yīng)一行圖像像素點(diǎn)的數(shù)據(jù)量,。PCIe BMD單工情況下的測(cè)試結(jié)果如表1所示,并將表1的測(cè)試結(jié)果換算為gen1×8模式,,與文獻(xiàn)[6]的結(jié)果進(jìn)行對(duì)比,,如圖4所示。
對(duì)比測(cè)試結(jié)果,,文獻(xiàn)[6]在gen1×8模式時(shí)的最高傳輸速率為寫(xiě)1 311 MB/s,,讀1 002 MB/s,而本傳輸系統(tǒng)在相同模式下能達(dá)到的最高傳輸速率為寫(xiě)1 632 MB/s,,讀1 557 MB/s,,相比文獻(xiàn)[6]寫(xiě)入速率提高24.5%,讀取速率提高55.4%,,并且表現(xiàn)出傳輸數(shù)據(jù)量越大,,傳輸速率越高,超過(guò)60 KB之后趨于穩(wěn)定,。如果PCIe BMD一直工作在單工模式,,是不能滿(mǎn)足每秒寫(xiě)入和讀取900 MB數(shù)據(jù)量的要求,因此本系統(tǒng)中PCIe BMD只在每幀圖像的開(kāi)始和結(jié)束像素行傳輸時(shí)工作在單工模式,,其余時(shí)間工作在全雙工模式,。對(duì)于PCIe BMD的全雙工方式,發(fā)送模塊采用WRR算法和DWRR算法的測(cè)試結(jié)果如圖5所示,。
對(duì)比該測(cè)試結(jié)果,,可以看出對(duì)于不同數(shù)據(jù)量的傳輸,采用DWRR的傳輸速率都高于WRR,,寫(xiě)入速率最大提高3.4%,,讀取速率最大提高9.6%,最高傳輸速率能達(dá)到寫(xiě)1 478 MB/s,,讀1 438 MB/s,,保證了圖像數(shù)據(jù)傳輸?shù)絇C后有充足的時(shí)間進(jìn)行運(yùn)算處理,滿(mǎn)足本系統(tǒng)的傳輸需求,。根據(jù)PCIe BMD單雙工測(cè)試結(jié)果,,綜合考慮整個(gè)系統(tǒng)的傳輸效率,、總線切換頻率及實(shí)時(shí)性,傳輸系統(tǒng)仲裁模塊中的時(shí)間寬度設(shè)為4行圖像像素點(diǎn)的讀寫(xiě)時(shí)間為佳,。
4 結(jié)論
大數(shù)據(jù)量采集后的高速傳輸對(duì)于一個(gè)采集系統(tǒng)而言至關(guān)重要,,高性能的傳輸系統(tǒng)能為大數(shù)據(jù)量的存儲(chǔ)、處理等后期各種操作提供保障,。本文設(shè)計(jì)了一種基于PCIe總線的多路實(shí)時(shí)傳輸處理系統(tǒng),,并且通過(guò)FPGA驗(yàn)證了該系統(tǒng)的可行性。實(shí)際測(cè)試表明該系統(tǒng)能達(dá)到單工寫(xiě)1 632 MB/s,、讀1 557 MB/s和全雙工寫(xiě)1 478 MB/s,、讀1 438 MB/s的傳輸速率,完全滿(mǎn)足本系統(tǒng)高速數(shù)據(jù)傳輸?shù)男枨?,并且?duì)于其他高速傳輸系統(tǒng)的設(shè)計(jì)有一定的借鑒作用,。
參考文獻(xiàn)
[1] PCI express base specification revision 2.1[S].PCI-SIG.,Mar 4,,2009.
[2] KAVIANIPOUR H,BOHM C.High performance FPGA-basedscatter/gather DMA interface for PCIe[C].IEEE NSS/MIC,,2012,,N19-3,1517-1520.
[3] LI H,,LIU Y A,,YUAN D M,et al.A wrapper of PCI express with FIFO interfaces based on FPGA[C].IEEE ICICEE,,2012,,145,525-529.
[4] 樊博,,王延杰,,孫宏海,等.FPGA實(shí)現(xiàn)高速實(shí)時(shí)多端口圖像處理系統(tǒng)的研究[J].液晶與顯示,,2013,,28(4):620-625.
[5] 雷雨,任國(guó)強(qiáng),,孫健,,等.基于PCIE的高速光纖圖像實(shí)時(shí)采集系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2013,,39(10):136-138.
[6] 侯杭呈,,王憶文,李輝.一種基于PCI Express總線的DMA高速傳輸系統(tǒng)[J].微電子學(xué),,2013,,43(3):383-386.