彭俊龍,唐清善,鐘海麗,常懷志
(長沙理工大學(xué) 物理與電子科學(xué)學(xué)院,湖南長沙,410114)
現(xiàn)如今,數(shù)字圖像處理技術(shù)對于實時性的要求越來越高,特別是在處理一些復(fù)雜的場景如全景視頻拼接、多目標(biāo)跟蹤、環(huán)境感知時更甚,而這就對硬件平臺的算力和數(shù)據(jù)吞吐能力提出了更高的要求。在眾多的圖像處理平臺中,相較于傳統(tǒng)的同構(gòu)架構(gòu),DSP+FPGA 的異構(gòu)架構(gòu)的圖像處理平臺在算力和數(shù)據(jù)吞吐能力上都有明顯的優(yōu)勢。但目前已有的基于DSP+FPGA 的圖像處理平臺中,僅僅只是注重算力方面的提升,而忽略了靈活且復(fù)數(shù)的高速圖像接口對于平臺的高速運算與吞吐也是必要的。如王文清[1]等人與周全[2]等人設(shè)計的圖像處理平臺僅具有一個Camera link 接口,數(shù)據(jù)吞吐性能和靈活性相當(dāng)有限;王澤民[3]等人設(shè)計的平臺雖然擁有一個USB3.0 模塊和兩個DVI/PAL 輸出模塊,也依舊無法滿足多路高清視頻數(shù)據(jù)對接口的帶寬需求。
本文基于多核DSP+FPGA 的異構(gòu)圖像處理平臺,提出了一種多路USB3.0 接口的設(shè)計,在整個平臺設(shè)計簡單穩(wěn)定的基礎(chǔ)上,結(jié)合了多核DSP 的強(qiáng)大并行算力與多路USB 接口的高數(shù)據(jù)吞吐率和靈活性,實現(xiàn)針對如全景視頻拼接、多目標(biāo)跟蹤、環(huán)境感知等場景的高速圖像處理硬件平臺設(shè)計。
本平臺的總體設(shè)計框圖如圖1 所示。平臺以8 核DSP 芯 片TMS320C6678 為 核 心, 輔 以FPGA 芯 片XC7K410TFFG900,實現(xiàn)對圖像處理算法的高速運算,并通過4 通道的SRIO 通道完成DSP 與FPGA 間的高速交互;外掛兩組共8 片大容量的DDR3 SDRAM,用于高速運算和傳輸中的數(shù)據(jù)緩存;外接一個千兆網(wǎng)口與6 個獨立的USB3.0 接口模塊,以實現(xiàn)對運算結(jié)果、控制命令與多路高清視頻流的高速傳輸,最高可支持同時傳輸6 路1080p60分辨率的視頻流。此外,平臺上還外接了共4 片F(xiàn)LASH 存儲芯片,用于存儲運算結(jié)果和系統(tǒng)配置文件。

圖1 平臺的總體設(shè)計框圖
當(dāng)平臺啟動后,外部視頻源通過復(fù)數(shù)個USB3.0 接口將多路視頻數(shù)據(jù)流輸入平臺,經(jīng)USB3.0 芯片傳輸至FPGA上并緩存在FPGA 端的DDR3 SDRAM 中,而后通過SRIO高速通道和PCIE 高速通道轉(zhuǎn)存至DSP 端的DDR3 SDRAM中,再經(jīng)由DSP 中的EDMA(Enhanced Direct Memory Access)分別搬運至8 個DSP 核中進(jìn)行運算,并將結(jié)果輸出通過千兆網(wǎng)口輸出。
由上述流程可知,各個傳輸環(huán)節(jié)的數(shù)據(jù)吞吐量決定了整個平臺的吞吐量,也是平臺能否實時傳輸和處理多路視頻數(shù)據(jù)的關(guān)鍵?,F(xiàn)對各個模塊進(jìn)行定量分析。
吞吐量的數(shù)學(xué)公式[4]為
式中:Total_data為一幀圖像的比特數(shù)(bit);Total_lantency為傳輸一幀圖像所需的時間。
以攝像頭常用的YUYV 格式,分辨率1080p60 的高清視 頻 數(shù) 據(jù) 為 例, 其 所 需 的 最 小 吞 吐 率為:
(1)USB3.0 接 口 模 塊:USB3.0 接 口 模 塊 采 用CYUSB3014 芯片完成協(xié)議轉(zhuǎn)換,并將數(shù)據(jù)通過GPIF II 接口傳輸至FPGA中,其最大吞吐量由GPIF II接口(32bit位寬,時鐘100MHz)限制,為但因傳輸時內(nèi)部套接字于不同DMA 緩沖區(qū)轉(zhuǎn)換存在延遲,其實際最大吞吐量僅為最大吞吐量的80%, 為TP_USB3 =TP_USB3 ×80% = 2.56Gbps。
(2)FPGA 端DDR3 SDRAM 模塊:該模塊采用的是4片MT41J64M16HA-15E 芯片,每片位寬16bit,采用時鐘為100MHz,等效時鐘為800MHz,其接口的最大吞吐量為
(3)4 通道的SRIO 通道模塊:該模塊使用FPGA 與DSP 的Serdes 互連實現(xiàn),線速率為5Gbps,因8 位/10位 編 碼 開 銷, 其 有 效 最 大 吞 吐 量 為考慮協(xié)議開銷等取80%,實際最大吞吐量為TP_SRIO2 =TP_SRIO× 80% = 12.8Gbps。
(4)2 通道的PCIE 通道模塊:與SRIO 通道模塊相同,線 速 率 為5Gbps, 實 際 最 大 吞 吐 量 為
(5)DSP 端DDR3 SDRAM 模塊:該模塊采用的是4片MT41J256M16HA-125E 芯片,每片位寬16bit,采用時鐘為200MHz,等效時鐘為1600Mhz,其接口的最大吞吐量為
(6)DSP 核:8 個C66x 核的核心時鐘為1.4GHz,每核可達(dá)到定點運算44.8GMAC 與浮點運算22.4GFLOP,核心通過片內(nèi)TeraNET 總線可實現(xiàn)的最大吞吐率為TP_DSP=2Tbps。
(7)千兆網(wǎng)口模塊:千兆網(wǎng)口模塊的最大吞吐率為TP_Gnet=1Gbps。
對于單路1080p60 的高清視頻數(shù)據(jù)輸入, 因TP_1080p6 0 基于以上吞吐量分析,本平臺的6 路USB3.0 模塊可傳輸最高1080p60 分辨率的視頻數(shù)據(jù)流,并通過SDRAM 緩存和SRIO+PCIE 通道傳輸至DSP 中,經(jīng)由8 核分工協(xié)同計算,最終實現(xiàn)多路視頻數(shù)據(jù)的實時傳輸和處理。 本平臺上的多路USB3.0 接口模塊主要由6 個USB3.0模塊與FPGA 控制邏輯組成,每個USB3.0 模塊均可獨立實現(xiàn)基于USB3.0 協(xié)議的數(shù)據(jù)傳輸,并可根據(jù)實際應(yīng)用場景靈活配置復(fù)數(shù)個USB3.0 接口,實現(xiàn)同時對復(fù)數(shù)個PC 機(jī)/視頻源的視頻數(shù)據(jù)的接收與發(fā)送。 本平臺的USB3.0 接口模塊采用Cypress 公司的集成型芯片CYUSB3014,內(nèi)部集成32 位、工作頻率為200MHz的ARM926EJ 內(nèi)核與512KB 的嵌入式RAM,符合USB3.2規(guī)范版本[5]。通過6 片CYUSB3014 芯片分別連接USB 線纜與FPGA,實現(xiàn)FPGA 端到外部復(fù)數(shù)個PC 機(jī)/視頻源的通信,其硬件框圖如圖2 所示。 圖2 多路USB3.0 接口模塊硬件框圖 每個USB3.0 模塊將可編程的GPIF II 接口配置為32 位寬的從FIFO 接口,分別與FPGA 的一個IO BANK 相連。此種連接方式可使每個USB3.0 模塊的FPGA 控制邏輯在布線時相對獨立,節(jié)省全局資源。此外,F(xiàn)PGA 通過USB_RST引腳外接放大電路連接至各模塊的硬復(fù)位引腳,進(jìn)行統(tǒng)一復(fù)位控制,節(jié)約IO 資源。 此外,基于信號完整性考慮,對于超高速信號線(USB_SSTX_P/M 和USB_SSRX_P/M)在布線時僅進(jìn)行單層布線并盡可能地縮短布線長度(700mil 以下),嚴(yán)格控制等長與差分阻抗(90Ω),并保證完整的電源回路。對于GPIF II 接口的總線,則以時鐘線為基準(zhǔn)做等長處理,控制線間間距,并嚴(yán)格控制單端阻抗為50Ω。 固件是指由內(nèi)核控制和調(diào)用芯片資源,接收并處理外部命令的代碼[6]。通過固件編程設(shè)計,實現(xiàn)USB3.2 協(xié)議、GPIF接口配置和DMA通道配置,從而實現(xiàn)USB的高速傳輸。 GPIF 接口可通過SDK 中的GPIF II Designer 工具[7],進(jìn)行可視化配置,按照圖2 的實際電路連接配置為32 位寬的從FIFO 接口,并創(chuàng)建GPIF 接口狀態(tài)機(jī),進(jìn)行時序仿真,最后編譯成C 頭文件整合到固件鏡像中。 CYUSB3014 的數(shù)據(jù)傳輸框圖如圖3 所示,由兩條DMA 通道(U2P 通道和P2U通道)實現(xiàn)GPIF 模塊(P 端)到USB 模塊(U端)的數(shù)據(jù)傳輸,每條DMA 通道都由一個發(fā)送套接字、一個接收套接字和若干DMA緩沖區(qū)組成。其中DMA 緩沖區(qū)的數(shù)量和大小影響通道的數(shù)據(jù)傳輸吞吐量。本平臺設(shè)計有兩種DMA 緩沖區(qū)配置,一種是U2P 通道優(yōu)先的IN 型配置,其接收緩沖區(qū)設(shè)置為8,發(fā)送緩沖區(qū)設(shè)置為4;另一種為P2U 通道優(yōu)先的OUT 型配置,其接收緩沖區(qū)數(shù)量為4,發(fā)送緩沖區(qū)數(shù)量設(shè)置為8,所有緩沖區(qū)大小均為16KB。具體可根據(jù)實際應(yīng)用場景,選擇配置出復(fù)數(shù)個IN型和OUT 型USB3.0接口。 圖3 CYUSB3014 傳輸框圖 FPGA 控制邏輯主要實現(xiàn)數(shù)據(jù)從FIFO 接口到DDR3 SDRAM 的數(shù)據(jù)傳輸與存儲控制,其邏輯框圖如圖4 所示。其中USB_WR_Ctrl 為從FIFO 接口控制狀態(tài)機(jī),MIG_Control 是基于Xilinx 官方IP 核MIG()的控制狀態(tài)機(jī),USB_Read_IFIO 和USB_Write_FIFO 是 兩 個 位 寬128bit-32bit 的FIFO,用于同步時序、緩沖數(shù)據(jù)和轉(zhuǎn)換數(shù)據(jù)位寬。 圖4 FPGA 控制邏輯框圖 當(dāng)USB 主 機(jī) 發(fā) 送IN 或OUT 令 牌 數(shù) 據(jù) 包 時,CYUSB3014 根據(jù)收到的指令產(chǎn)生FLAG 標(biāo)志信號并發(fā)送至FPGA,F(xiàn)PGA 邏輯中的USB_WR_Ctrl 控制狀態(tài)機(jī)根據(jù)標(biāo)志信號進(jìn)行IN/OUT 狀態(tài)轉(zhuǎn)換,發(fā)送信號至MIG_Control 狀態(tài)機(jī)并控制GPIF II 總線實現(xiàn)對CYUSB3014 的數(shù)據(jù)寫入,或從CYUSB3014 的數(shù)據(jù)讀出。而后CYUSB3014 通過P2U通道或U2P 通道和USB 線纜實現(xiàn)與USB 主機(jī)的數(shù)據(jù)傳輸。 MIG_Control 控制狀態(tài)機(jī)負(fù)責(zé)在多個USB3.0 模塊和其他模塊(如SRIO 模塊)中進(jìn)行仲裁,并基于事先分配的存儲空間進(jìn)行數(shù)據(jù)的存儲與傳輸。 使用官方SDK 中提供的USB Control Center 工具[8],作為USB3.0 接口的上位機(jī),實現(xiàn)對多個USB3.0 接口的傳輸測試。測試項目如下: (1)使用Bulk loop 工具測試各USB3.0 模塊的穩(wěn)定性和誤碼率; (2)使用Streamer 工具測試各USB3.0 模塊的BULK IN 和BULK OUT 傳輸速率; (3) 使 用USB Control Center 工 具 測 試 多 個USB3.0 接口同時傳輸數(shù)據(jù)能力,同時向兩個USB3.0 模塊傳輸測試文件(內(nèi)容分別為5a5a5a5a a5a5a5a5 和3c3c3c3c c3c3c3c3 的重復(fù)文本),并用VIVADO 的ILA(在線邏輯分析儀)抓取FPGA 收到的數(shù)據(jù)波形,對比傳輸數(shù)據(jù)的有效性。 (1)與(2)的測試結(jié)果見表1。(3)的功能測試如圖5 和圖6,從ILA 抓取的波形來看,兩路數(shù)據(jù)均以100MHz 的速率輸入FPGA 的FIFO。 表1 多路USB3.0模塊傳輸速率測試表 圖5 兩路USB3.0 接口傳輸測試圖 圖6 兩路USB3.0 接口傳輸測試波形圖 從測試結(jié)果可以看出,本平臺設(shè)計的多路USB3.0 接口,各接口均可有效地實現(xiàn)330MB/s(2.64Gbps)以上的傳輸速度,并可配置多個接口同時傳輸視頻圖像數(shù)據(jù),整體模塊的吞吐量符合設(shè)計預(yù)期。 為解決復(fù)雜圖像處理應(yīng)用場景如全景視頻拼接、多目標(biāo)跟蹤、環(huán)境感知等對于圖像處理設(shè)備的高實時性和靈活性需求,本文結(jié)合多路USB3.0 接口的高吞吐性能與多核DSP+FPGA 架構(gòu)的高算力優(yōu)勢,提出了基于多路USB3.0接口的高速圖像處理平臺設(shè)計,并在經(jīng)過基于吞吐率的論證與實際測試后,驗證了這一設(shè)計的有效性。此外,本平臺整體采用10 層板疊層設(shè)計,在保證系統(tǒng)穩(wěn)定性和可靠性的同時,成本低體積小,于大范圍生產(chǎn)和應(yīng)用中具有相當(dāng)?shù)膬?yōu)勢。2 多路USB3.0 接口模塊設(shè)計
■2.1 硬件設(shè)計

■2.2 固件設(shè)計

■2.3 FPGA 控制邏輯

3 功能測試



4 結(jié)語