国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ZYNQ平臺(tái)的圖像處理算法IP驗(yàn)證系統(tǒng)研究

2022-10-24 01:20尹飛皓尚建華
關(guān)鍵詞:時(shí)鐘內(nèi)存傳輸

尹飛皓,尚建華

(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620)

0 引 言

隨著機(jī)器視覺和電子技術(shù)的發(fā)展,視頻圖像處理技術(shù)得到了迅速的發(fā)展并已廣泛應(yīng)用于各個(gè)領(lǐng)域[1-2]。傳統(tǒng)的ARM、單片機(jī)技術(shù)由于其主頻較低、計(jì)算能力較差,較難實(shí)現(xiàn)高速、實(shí)時(shí)的圖像處理。針對(duì)時(shí)性要求較高的應(yīng)用環(huán)境[3-4],F(xiàn)PGA憑借其獨(dú)特的流水線計(jì)算結(jié)構(gòu)[5]、完全可控的Block Ram以及內(nèi)部集成的豐富的DSP資源[6],可較好實(shí)現(xiàn)圖像的實(shí)時(shí)處理;其次,F(xiàn)PGA的可重構(gòu)性使其可以靈活地實(shí)現(xiàn)算法升級(jí)和更新,具有更好的可維護(hù)性,因此,F(xiàn)PGA已逐漸成為當(dāng)前實(shí)時(shí)圖像處理的首選[7]。

目前,市場(chǎng)上已有的硬件算法驗(yàn)證平臺(tái)普遍以FPGA/ZYNQ為控制手段,主要通過開發(fā)攝像頭實(shí)現(xiàn)。然而,這些實(shí)現(xiàn)方案存在一定的缺陷,一些圖像處理算法(如白平衡處理)會(huì)因不同的實(shí)現(xiàn)方式而對(duì)不同圖像數(shù)據(jù)產(chǎn)生明顯的差異。而基于攝像頭進(jìn)行開發(fā),必須選取實(shí)際場(chǎng)景以使攝像頭進(jìn)行數(shù)據(jù)采集并提供給算法端使用。其次,攝像頭采集圖像的幀數(shù)與像素往往在通信協(xié)議配置時(shí)被限定,因而無法滿足需要靈活配置圖像幀數(shù)和像素的驗(yàn)證場(chǎng)景。并且,基于VGA/HDMI圖像輸出的傳統(tǒng)方案也存在一定的局限性。

針對(duì)上述問題,該文基于Xilinx公司的ARM+FPGA結(jié)構(gòu)的ZYNQ芯片[8],在ARM端搭建LwIP協(xié)議棧,實(shí)現(xiàn)與上位機(jī)通信;其次,實(shí)現(xiàn)視頻配置的下發(fā)和視頻數(shù)據(jù)的互傳,基于AMBA AXI4協(xié)架構(gòu)自定義多個(gè)存儲(chǔ)器直接訪問(Direct Memory Access,DMA)的IP,并靈活地結(jié)合高性能接口和加速器一致性接口(Accelerator Coherency Port,ACP)的使用,實(shí)現(xiàn)ARM與FPGA的大數(shù)據(jù)交互和視頻無撕裂顯示;最后,針對(duì)顯示環(huán)境的不同需求,設(shè)計(jì)了上位機(jī)回收視頻和HDMI兼容多分辨率的顯示。

1 系統(tǒng)架構(gòu)

系統(tǒng)的設(shè)計(jì)方案如圖1所示。在ZYNQ-7000 SOC的可編程邏輯(Programmable Logic,PL)端實(shí)現(xiàn)多個(gè)DMA主機(jī)模塊和HDMI控制器模塊,DMA主機(jī)模塊通過AXI-ACP和AXI-HP接口實(shí)現(xiàn)FPGA端和ARM端的數(shù)據(jù)通信,并在DMA讀寫模塊間插入預(yù)讀取模式的異步先入先出對(duì)列(FIFO),進(jìn)而為待驗(yàn)證算法IP提供接口[9]。在PS端主要實(shí)現(xiàn)網(wǎng)絡(luò)通信模塊與DMA從機(jī)模塊,網(wǎng)絡(luò)通信模塊采用LwIP的Socket模式實(shí)現(xiàn)TCP通信,DMA從機(jī)模塊通過GP接口的AXI-LITE模式實(shí)現(xiàn)視頻配置數(shù)據(jù)的寄存器地址映射。

圖1 系統(tǒng)總體設(shè)計(jì)架構(gòu)

2 軟件設(shè)計(jì)

為了高效接收上位機(jī)下發(fā)的數(shù)據(jù),并根據(jù)解析到的數(shù)據(jù)進(jìn)行對(duì)應(yīng)的地址分配以及向PL端下發(fā)所需指令,系統(tǒng)在PS端對(duì)ARM部署FreeRTOS_10_Xilinx操作系統(tǒng)以實(shí)現(xiàn)任務(wù)的調(diào)度,并搭建LwIP協(xié)議棧建立TCP通信。LwIP協(xié)議棧是瑞典計(jì)算機(jī)科學(xué)院的Adam Dunkels開發(fā)的一個(gè)輕量型開源TCP/IP協(xié)議棧,其占用的RAM/ROM極少,但能實(shí)現(xiàn)TCP協(xié)議的主要功能[10]。其次,在Vivado SDK中提供了LwIP RAW/Socket API兩種接口。RAW模式具有更好的性能,占用內(nèi)存低,但實(shí)現(xiàn)難度較大且不宜移植;Socket模式的內(nèi)存開銷略大,但其易用性和移植性更好。由于ZYNQ-7020芯片的資源較為豐富,因此,在滿足系統(tǒng)網(wǎng)絡(luò)帶寬要求的前提下,該文選用Socket模式進(jìn)行開發(fā)。

2.1 數(shù)據(jù)內(nèi)部的交互設(shè)計(jì)

在建立TCP通信后,ARM端接收由上位機(jī)下發(fā)的數(shù)據(jù)包。為保證視頻數(shù)據(jù)的高效傳輸和視頻流的數(shù)據(jù)同步,需節(jié)約不必要的數(shù)據(jù)搬運(yùn)時(shí)耗并保證內(nèi)存的一致性。若采用傳統(tǒng)的內(nèi)存拷貝和搬運(yùn)的方式進(jìn)行視頻傳輸,將會(huì)降低數(shù)據(jù)的傳輸效率,導(dǎo)致視頻卡頓,因此,在收到數(shù)據(jù)后,利用Zero-Copy技術(shù)直接指向數(shù)據(jù)緩沖源地址DDR3 0X2000000進(jìn)行數(shù)據(jù)緩沖,進(jìn)而減少了數(shù)據(jù)從LwIP TCP緩沖區(qū)到目標(biāo)緩沖區(qū)的數(shù)據(jù)復(fù)制時(shí)間[10]。

在從PL端或PS端訪問DDR時(shí),二者的訪問方式不同。PL端可以直接訪問DDR;PS端訪問DDR時(shí),首先將一批數(shù)據(jù)緩存于Cache中以提高交互效率,因此,當(dāng)Cache中的數(shù)據(jù)發(fā)生變換時(shí),DDR中的數(shù)據(jù)無法立刻隨之改變。當(dāng)PL端修改DDR中的數(shù)據(jù)時(shí),ARM無法獲取DDR中已被修改的數(shù)據(jù)信息,依舊會(huì)從Cache中讀取原來未被改變的那部分?jǐn)?shù)據(jù),此時(shí)將出現(xiàn)內(nèi)存不一致的問題。為了保存內(nèi)存的一致性,通常會(huì)通過Xil_DCacheDisable關(guān)閉Cache功能,以使ARM繞過Cache而直接訪問DDR,但這又會(huì)導(dǎo)致ARM性能的大幅降低。針對(duì)上述問題,可以利用Xil_DCacheFlushRange方法將Cache中的緩存圖像數(shù)據(jù)不斷刷新寫入DDR中,在保證ARM性能的同時(shí),有效實(shí)現(xiàn)內(nèi)存的一致性。

2.2 嵌入式軟件的執(zhí)行流程

在Vivado SDK中選擇freertos_tcp_perf_server模板進(jìn)行網(wǎng)絡(luò)通信模塊的服務(wù)器端開發(fā)。首先在模板頭文件中設(shè)置緩沖區(qū)尺寸和監(jiān)聽端口號(hào)并使能數(shù)據(jù)傳輸任務(wù);然后利用模板中的lwip_sendto()和lwip_recvfrom()函數(shù)進(jìn)行TCP的收發(fā)[11],這組收發(fā)函數(shù)無需建立連接即可使用,在調(diào)用函數(shù)時(shí)會(huì)自動(dòng)建立Socket連接,如果建立失敗則會(huì)返回錯(cuò)誤;使能傳輸任務(wù)之后,在傳輸任務(wù)中初始化套接字,當(dāng)ARM端接收到上位機(jī)下發(fā)的數(shù)據(jù),內(nèi)存進(jìn)行處理并根據(jù)包頭判斷下發(fā)數(shù)據(jù)的屬性,判斷數(shù)據(jù)屬于配置數(shù)據(jù)還是屬于圖像數(shù)據(jù),配置包的結(jié)構(gòu)如圖2所示。

如果數(shù)據(jù)為配置數(shù)據(jù),則根據(jù)配置包的內(nèi)容,通過AXI-LITE將圖像尺寸等信息映射到對(duì)應(yīng)的寄存器地址中,并發(fā)送640×512圖像尺寸的配置包,再借助集成邏輯分析器(ILA)獲取conf_list模塊的輸出,可以驗(yàn)證是否得到正確的配置數(shù)據(jù)。

如果是圖像包頭且讀回的上位機(jī)標(biāo)志為0,則將數(shù)據(jù)包頭后的圖像數(shù)據(jù)不斷寫入內(nèi)存并做地址偏移處理,并通過EMIO GPIO向DMA讀模塊的中斷發(fā)送初始化脈沖,再依次將DDR中的圖像數(shù)據(jù)讀出;當(dāng)收到兩幀圖像數(shù)據(jù)后,再向上位機(jī)發(fā)送8字節(jié)BB以請(qǐng)求新的一幀圖像,同時(shí)清空緩沖數(shù)據(jù)。如果讀回的上位機(jī)標(biāo)志為1,則將處理后的圖像數(shù)據(jù)回傳到上位機(jī)。軟件主體控制流程如圖2所示。

圖2 軟件控制流程

3 硬件邏輯設(shè)計(jì)

3.1 DMA讀寫模塊的設(shè)計(jì)

PL側(cè)與PS側(cè)的良好通信是視頻圖像傳輸質(zhì)量和傳輸效率的重要保證。在ZYNQ SOC中,主要通過AXI-HP、AXI-GP和AXI-ACP三種AXI總線接口實(shí)現(xiàn)ARM端和FPGA端的數(shù)據(jù)交互[12]。

AXI協(xié)議是ARM公司提出的一種高性能、低延時(shí)、穩(wěn)定的片內(nèi)總線協(xié)議。該協(xié)議基于猝發(fā)和信號(hào)握手機(jī)制進(jìn)行數(shù)據(jù)傳輸,其擁有讀/寫地址通道、讀/寫數(shù)據(jù)通道、寫響應(yīng)通道五個(gè)獨(dú)立的傳輸通道。由于視頻數(shù)據(jù)傳輸帶寬寬且需要訪問DDR中的地址,因此,在該系統(tǒng)中,通過HP接口和ACP接口的AXI4-MEMORY-MAP模式完成視頻數(shù)據(jù)的DMA讀寫,結(jié)構(gòu)如圖3所示。首先由AXI-LITE配置的各寄存器獲得每幀圖像的寬和高信息,然后由乘法器計(jì)算出一幀圖像的總像素值,并以此控制猝發(fā)傳輸?shù)牡刂贰?/p>

系統(tǒng)中的三次DMA的猝發(fā)長(zhǎng)度均設(shè)置為256,AXI總線的位寬設(shè)置為64 bit,AXI時(shí)鐘設(shè)為200 MHz,進(jìn)而獲得較大的數(shù)據(jù)傳輸帶寬。由于ZYNQ中DDR的一位地址可以儲(chǔ)存8 bit數(shù)據(jù),因此,每啟動(dòng)一次猝發(fā),地址將會(huì)增加2 048位。在RGB888格式中,一個(gè)像素點(diǎn)為24 bit,且DDR中的三個(gè)地址位可儲(chǔ)存一個(gè)像元數(shù)據(jù)。因此,完成一幀完整圖像的讀寫,地址位的增量為三倍的像元數(shù)據(jù)量減去一次突發(fā)的地址增量。

圖3所示DMA讀寫模塊中,各模塊的功能如下。

圖3 DMA讀寫模塊

HP0口DMA讀模塊的主要功能是從DDR的0X2000000地址中讀出ARM端從上位機(jī)接收到的圖像數(shù)據(jù)。每當(dāng)ARM端接收到一幀圖像數(shù)據(jù),則通過EMIO GPIO向該模塊發(fā)出一次讀啟動(dòng)脈沖并將該模塊使能。然后,通過異步預(yù)讀取模式的FIFO把讀出的圖像數(shù)據(jù)進(jìn)行緩存,并提供給DMA寫模塊或圖像算法模塊,其中,F(xiàn)IFO的寫時(shí)鐘為AXI時(shí)鐘,F(xiàn)IFO的讀時(shí)鐘為圖像處理模塊時(shí)鐘。

ACP口DMA寫模塊的主要功能是將處理后的圖像數(shù)據(jù)重新寫入DDR中。ACP接口是ZYNQ PS端上的加速器一致性接口,是一個(gè)兼容AXI3的64位從機(jī)接口,可以與SCU(Snoop Control Unit)連接并為PL側(cè)提供異步緩存能力,實(shí)現(xiàn)PL側(cè)直接訪問PS側(cè)。ACP接口與Cache刷新函數(shù)配合使用還可解決Cache一致性的問題,有效保證ARM的性能[13]。

HP2口DMA讀模塊的主要功能是讀取DDR中存儲(chǔ)的處理后的圖像數(shù)據(jù),并通過異步預(yù)讀取模式的FIFO將該圖像數(shù)據(jù)傳輸給HDMI控制模塊,其中,寫FIFO的時(shí)鐘為AXI時(shí)鐘,讀FIFO的時(shí)鐘為HDMI控制模塊的時(shí)鐘。為了保證視頻流暢并防止FIFO被寫滿,當(dāng)FIFO中緩存圖像數(shù)據(jù)不足一行且讀通道非忙時(shí),AXI讀數(shù)據(jù)的有效信號(hào)設(shè)為高電平;當(dāng)讀數(shù)據(jù)和讀數(shù)據(jù)響應(yīng)同時(shí)有效時(shí),寫FIFO的使能信號(hào)設(shè)為高電平,且FIFO深度設(shè)置為2 048,以大于一行像素量的最大值。

3.2 HDMI控制器的設(shè)計(jì)

HDMI控制器的結(jié)構(gòu)如圖4所示,根據(jù)HDMI1.4設(shè)計(jì)規(guī)范,通過VGA時(shí)序轉(zhuǎn)換可得到三組八位RGB數(shù)據(jù)[14-15],然后借助8b/10b模塊獲得直流平衡性更好、轉(zhuǎn)換電平更密集的10 bit編碼組,并將10 bit并行數(shù)據(jù)串行化處理,最后通過OBUFDS原語將串行數(shù)據(jù)轉(zhuǎn)換為差分信號(hào),實(shí)現(xiàn)系統(tǒng)終端的顯示。由主機(jī)和從機(jī)構(gòu)成的兩個(gè)OSERDESE2原語在將10 bit并行數(shù)據(jù)串行化處理時(shí)[16],為了避免普通IO口因過高的時(shí)鐘頻率而發(fā)生嚴(yán)重的時(shí)鐘抖動(dòng),OSERDESE2原語選擇雙沿傳輸模式,且串行化時(shí)鐘的頻率為并行數(shù)據(jù)時(shí)鐘的五倍。

圖4 HDMI控制器結(jié)構(gòu)

較傳統(tǒng)設(shè)計(jì)方案而言,該系統(tǒng)實(shí)現(xiàn)了HDMI兼容分辨率的無撕裂顯示。根據(jù)配置數(shù)據(jù)包的圖像尺寸,HDMI模塊可實(shí)現(xiàn)1 280×1 024分辨率的圖像顯示并向下兼容多種分辨率的顯示。由于系統(tǒng)中的ARM端與FPGA端存在圖像數(shù)據(jù)多次交互的過程,因此,圖像數(shù)據(jù)需同步處理,以保證圖像幀同步,避免出現(xiàn)圖像顯示撕裂的情況。

系統(tǒng)采用如圖5所示的雙幀緩存設(shè)計(jì)時(shí)序,通過雙幀緩存圖像數(shù)據(jù)的類乒乓操作方式解決圖像撕裂問題。每次進(jìn)行DMA寫操作時(shí),首先在DDR中緩存兩幀圖像數(shù)據(jù);當(dāng)?shù)诹銕瑪?shù)據(jù)寫入到DDR中時(shí)將Frame_Flag拉高,當(dāng)?shù)谝粠瑪?shù)據(jù)寫入DDR時(shí)將Frame_Flag拉低;然后,將Frame_Flag信號(hào)傳遞到DMA讀模塊,在DMA寫模塊寫第零幀數(shù)據(jù)時(shí)讀出第一幀數(shù)據(jù),在DMA寫模塊寫第一幀數(shù)據(jù)時(shí)讀出第零幀數(shù)據(jù)。通過上述雙幀緩存操作,可有效避免同時(shí)讀寫同一幀圖像數(shù)據(jù)所造成的數(shù)據(jù)不同步問題。

圖5 雙幀緩存時(shí)序關(guān)系

4 系統(tǒng)測(cè)試與結(jié)果分析

自動(dòng)白平衡算法(Automatic White Balance,AWB)是圖像傳感器預(yù)處理圖像的一種常用圖像色彩處理方法,其目的是通過還原白色目標(biāo)的顏色,進(jìn)而準(zhǔn)確還原其他物體的色彩[17]。常用的AWB算法有灰度世界法(Gray World Method,GWM)、完美反射法(Perfect Reflector Method,PRM)、灰度世界和完美反射正交組合算法(Quadratic Combining GWM&PRM,QCGP)等。其中,GWM和PRM算法具有較好的實(shí)時(shí)性且易于硬件實(shí)現(xiàn),因而被廣泛應(yīng)用[18];QCGP算法計(jì)算量極大,因此實(shí)時(shí)性受到一定限制;GWM算法是在獲取圖像中RGB三色通道的均值以及所有像素色彩的均值后,通過計(jì)算以使三個(gè)均值趨于一致;PRM算法則是將圖像中亮度最高的點(diǎn)作為“白色”參考,然后進(jìn)行白平衡處理。

本次測(cè)試中,分別使用GWM和PRM兩個(gè)算法對(duì)系統(tǒng)性能進(jìn)行測(cè)試。原始圖像如圖6(a)所示,圖像偏綠。經(jīng)過GWM算法矯正后,圖像更符合真實(shí)的人眼視覺效果(圖6(b)),而經(jīng)過PRM算法處理后的圖像已經(jīng)失真(圖6(c))。同時(shí),也可利用RTL電路實(shí)現(xiàn)GWM和PRM圖像處理算法,處理效果與軟件算法處理的效果相同(圖6(d)(e)),且具有很好的實(shí)時(shí)性。GWM和PRM兩種算法的用時(shí)情況如表1所示。

圖6 系統(tǒng)測(cè)試結(jié)果

表1 不同平臺(tái)的算法實(shí)現(xiàn)速度

經(jīng)過測(cè)試,系統(tǒng)平均傳輸速率可達(dá)400 Mbps以上,能夠達(dá)到實(shí)時(shí)圖像傳輸和處理的要求。另外,系統(tǒng)硬件邏輯資源占用率低于20%且保留了豐富的BRAM和DPS資源,能夠?yàn)楹罄m(xù)復(fù)雜圖像算法IP的驗(yàn)證提供充足的擴(kuò)展空間。

5 結(jié)束語

針對(duì)當(dāng)前硬件圖像算法驗(yàn)證平臺(tái)的缺陷,以ZYNQ為主控芯片設(shè)計(jì)了一款靈活高效的圖像算法IP驗(yàn)證系統(tǒng),并提供了完整的圖像傳輸和顯示方案,通過軟硬協(xié)同的方式充分發(fā)揮了ARM+FPGA架構(gòu)的優(yōu)勢(shì)。借助GWM和PRM兩種算法對(duì)系統(tǒng)性能進(jìn)行了測(cè)試,測(cè)試結(jié)果表明,GWM和PRM算法在FPGA中具有很好的實(shí)時(shí)性,可以實(shí)現(xiàn)400 Mbps以上的視頻傳輸速率,能夠較好地支持圖像算法IP的驗(yàn)證,有效降低外設(shè)成本。

猜你喜歡
時(shí)鐘內(nèi)存傳輸
軌道交通信號(hào)系統(tǒng)無線傳輸應(yīng)用
5G高新視頻的雙頻段協(xié)同傳輸
5G 16K虛擬現(xiàn)實(shí)視頻傳輸關(guān)鍵技術(shù)
牽引8K超高清傳輸時(shí)代 FIBBR Pure38K
古代的時(shí)鐘
筆記本內(nèi)存已經(jīng)在漲價(jià)了,但幅度不大,升級(jí)擴(kuò)容無須等待
“春夏秋冬”的內(nèi)存
這個(gè)時(shí)鐘一根針
有趣的時(shí)鐘
時(shí)鐘會(huì)開“花”
建宁县| 青田县| 长沙市| 封丘县| 泰州市| 香港 | 寻乌县| 莲花县| 措美县| 义乌市| 布拖县| 静宁县| 延吉市| 武汉市| 兴山县| 水城县| 马关县| 宕昌县| 民丰县| 洛川县| 丹寨县| 广昌县| 沛县| 呼伦贝尔市| 五河县| 类乌齐县| 沂水县| 东光县| 渝中区| 汉沽区| 射阳县| 重庆市| 沧源| 新乡市| 石棉县| 昭苏县| 长丰县| 寻乌县| 黑龙江省| 巴彦淖尔市| 巨野县|