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

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

■2.2 固件設計

■2.3 FPGA 控制邏輯

3 功能測試



4 結語