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