基于USB2.0的視頻圖像處理芯片實(shí)現(xiàn)方案
1 引言
隨著計(jì)算機(jī)技術(shù)、微電子技術(shù)的高速發(fā)展,實(shí)時(shí)圖像處理在多媒體、圖像通信等領(lǐng)域有著非常廣泛的應(yīng)用。FPGA 芯片在集成度、容量和速度方面都達(dá)到了較高的水平,是實(shí)時(shí)圖像處理的理想選擇,基于FPGA 的圖像處理芯片的研究已成為信息產(chǎn)業(yè)的新熱點(diǎn)。USB2.0 接口是一個(gè)傳輸速率可以達(dá)到480Mb/s的串行接口,并由不同類(lèi)型的外圍設(shè)備共享這個(gè)接口總路線(xiàn),基于USB2.0 的視頻圖像處理芯片是按照USB協(xié)議進(jìn)行設(shè)計(jì)的。USB2.0 接口的面世,推動(dòng)了高清數(shù)碼攝像頭的普及應(yīng)用,加上同期寬帶的飛速發(fā)展,電腦攝像頭的本地和遠(yuǎn)程視頻效果都有了大幅度提升。國(guó)內(nèi)USB2.0 的視頻圖像處理芯片現(xiàn)在發(fā)展迅速,比如深圳的艾科創(chuàng)新、珠海的炬力等公司都相繼推出了各自的產(chǎn)品。本文介紹了一種基于USB2.0 的視頻圖像處理芯片的實(shí)現(xiàn)方案,并在搭建的仿真和驗(yàn)證平臺(tái)上,對(duì)系統(tǒng)進(jìn)行了功能仿真和FPGA 驗(yàn)證,結(jié)果證實(shí)本設(shè)計(jì)達(dá)到了設(shè)計(jì)要求。
2 基于USB2.0的視頻圖像處理芯片的整體實(shí)現(xiàn)方案
基于USB2.0 視頻圖像處理芯片在硬件上由8 個(gè)模塊組成:微處理器模塊(MCU)、MCU 總線(xiàn)接口模塊(MCU Bus Interface)、USB2.0 收發(fā)器模塊(USB2.0PHY)、USB2.0 串行接口引擎模塊(USB2.0 SerialInterface Engine,簡(jiǎn)稱(chēng)USB2.0 SIE)、數(shù)據(jù)緩沖模塊(Data Buffer)、DMA 傳輸控制器模塊(DMA)、圖像處理單元 (PU) 、圖像預(yù)處理單元(PPU)。其結(jié)構(gòu)框圖如下圖1 所示。
圖1 基于USB2.0 的視頻圖像處理芯片結(jié)構(gòu)框圖
其中,MCU模塊、USB2.0 PHY模塊和USB2.0 SIE模塊使用已有的IP 核,而其它模塊均采用硬件描述語(yǔ)言(Verilog HDL)自行設(shè)計(jì)。
MCU 模塊負(fù)責(zé)協(xié)調(diào)控制整個(gè)系統(tǒng)的運(yùn)作;MCUBus Interface 模塊負(fù)責(zé)各模塊的部分地址譯碼及相關(guān)數(shù)據(jù)的選通,以便于MCU 統(tǒng)一管理。USB2.0 PHY 模塊負(fù)責(zé)USB 物理層的鏈接,并將USB2.0 的總線(xiàn)信號(hào)變成標(biāo)準(zhǔn)的UTMI 接口信號(hào);USB2.0 SIE 模塊負(fù)責(zé)處理USB 協(xié)議層的操作,完成USB 協(xié)議包生成和解析,以及接收來(lái)自DMA 的圖像數(shù)據(jù),并將其保存在數(shù)據(jù)緩沖模塊,完成與MCU 進(jìn)行的互動(dòng);DataBuffer 負(fù)責(zé)將處理后的圖像數(shù)據(jù)緩存起來(lái),以備USB 同步幀傳輸時(shí)取出后發(fā)送至PC;DMA 模塊完成將PU 處理后的圖像數(shù)據(jù)傳送給USB2.0 SIE;PPU 模塊完成獲取來(lái)自Sensor傳感器輸出的圖像數(shù)據(jù),并且對(duì)數(shù)據(jù)進(jìn)行各種圖像方面的處理,然后將處理后的圖像數(shù)據(jù)發(fā)送至PU.
3 PPU模塊中核心部件的設(shè)計(jì)
PPU 模塊所完成的功能主要是:(1) YCbCr4:2:2格式到Y(jié)CbCr4:4:4 格式的轉(zhuǎn)換;(2) RGB565 格式到RGB888 格式的轉(zhuǎn)換;(3) Bayer 數(shù)據(jù)壞點(diǎn)修正及Bayer格式到RGB888 格式的轉(zhuǎn)換。其中第三個(gè)功能是本模塊的最重要的功能,本方案中采用了"兩條線(xiàn)偽雙端口+六級(jí)流水線(xiàn)"的方案來(lái)實(shí)現(xiàn),其原理圖如圖2所示。
圖2 Bayer 數(shù)據(jù)壞點(diǎn)修正及格式轉(zhuǎn)換的硬件原理圖。
從圖2 可以知道,在本方案中把壞點(diǎn)修正算法與格式轉(zhuǎn)換算法做在了一個(gè)模塊中。壞點(diǎn)地址存儲(chǔ)模塊,主要是用來(lái)接收從MCU 輸出的壞點(diǎn)信息。偽雙端口RAM1、RAM2 是用來(lái)臨時(shí)存儲(chǔ)Bayer 圖像中的前兩行數(shù)據(jù)。而右端的六級(jí)流水線(xiàn)模塊,它的作用是完成相應(yīng)的壞點(diǎn)修正和格式轉(zhuǎn)換。其中,六級(jí)流水線(xiàn)的前面五級(jí)的作用是完成3×5 窗口的壞點(diǎn)修正,而后面三級(jí)是為了完成3×3 窗口的格式轉(zhuǎn)換。
邏輯管理模塊的主要作用是統(tǒng)一管理六級(jí)流水線(xiàn)的相應(yīng)操作,其內(nèi)部包含一些計(jì)數(shù)器、比較器。從圖中還可以看到,P24、P34 分別把數(shù)據(jù)寫(xiě)入了RAM1、RAM2,這主要是為了更新RAM 中的數(shù)據(jù),使得3×6 窗口能夠漫游Bayer 圖像的每一個(gè)像素點(diǎn)。同時(shí)本設(shè)計(jì)對(duì)圖像的邊緣也做了很好的處理,采用鏡像技術(shù)對(duì)邊緣做了很好的修正。
1 引言
隨著計(jì)算機(jī)技術(shù)、微電子技術(shù)的高速發(fā)展,實(shí)時(shí)圖像處理在多媒體、圖像通信等領(lǐng)域有著非常廣泛的應(yīng)用。FPGA 芯片在集成度、容量和速度方面都達(dá)到了較高的水平,是實(shí)時(shí)圖像處理的理想選擇,基于FPGA 的圖像處理芯片的研究已成為信息產(chǎn)業(yè)的新熱點(diǎn)。USB2.0 接口是一個(gè)傳輸速率可以達(dá)到480Mb/s的串行接口,并由不同類(lèi)型的外圍設(shè)備共享這個(gè)接口總路線(xiàn),基于USB2.0 的視頻圖像處理芯片是按照USB協(xié)議進(jìn)行設(shè)計(jì)的。USB2.0 接口的面世,推動(dòng)了高清數(shù)碼攝像頭的普及應(yīng)用,加上同期寬帶的飛速發(fā)展,電腦攝像頭的本地和遠(yuǎn)程視頻效果都有了大幅度提升。國(guó)內(nèi)USB2.0 的視頻圖像處理芯片現(xiàn)在發(fā)展迅速,比如深圳的艾科創(chuàng)新、珠海的炬力等公司都相繼推出了各自的產(chǎn)品。本文介紹了一種基于USB2.0 的視頻圖像處理芯片的實(shí)現(xiàn)方案,并在搭建的仿真和驗(yàn)證平臺(tái)上,對(duì)系統(tǒng)進(jìn)行了功能仿真和FPGA 驗(yàn)證,結(jié)果證實(shí)本設(shè)計(jì)達(dá)到了設(shè)計(jì)要求。
2 基于USB2.0的視頻圖像處理芯片的整體實(shí)現(xiàn)方案
基于USB2.0 視頻圖像處理芯片在硬件上由8 個(gè)模塊組成:微處理器模塊(MCU)、MCU 總線(xiàn)接口模塊(MCU Bus Interface)、USB2.0 收發(fā)器模塊(USB2.0PHY)、USB2.0 串行接口引擎模塊(USB2.0 SerialInterface Engine,簡(jiǎn)稱(chēng)USB2.0 SIE)、數(shù)據(jù)緩沖模塊(Data Buffer)、DMA 傳輸控制器模塊(DMA)、圖像處理單元 (PU) 、圖像預(yù)處理單元(PPU)。其結(jié)構(gòu)框圖如下圖1 所示。
圖1 基于USB2.0 的視頻圖像處理芯片結(jié)構(gòu)框圖
其中,MCU模塊、USB2.0 PHY模塊和USB2.0 SIE模塊使用已有的IP 核,而其它模塊均采用硬件描述語(yǔ)言(Verilog HDL)自行設(shè)計(jì)。
MCU 模塊負(fù)責(zé)協(xié)調(diào)控制整個(gè)系統(tǒng)的運(yùn)作;MCUBus Interface 模塊負(fù)責(zé)各模塊的部分地址譯碼及相關(guān)數(shù)據(jù)的選通,以便于MCU 統(tǒng)一管理。USB2.0 PHY 模塊負(fù)責(zé)USB 物理層的鏈接,并將USB2.0 的總線(xiàn)信號(hào)變成標(biāo)準(zhǔn)的UTMI 接口信號(hào);USB2.0 SIE 模塊負(fù)責(zé)處理USB 協(xié)議層的操作,完成USB 協(xié)議包生成和解析,以及接收來(lái)自DMA 的圖像數(shù)據(jù),并將其保存在數(shù)據(jù)緩沖模塊,完成與MCU 進(jìn)行的互動(dòng);DataBuffer 負(fù)責(zé)將處理后的圖像數(shù)據(jù)緩存起來(lái),以備USB 同步幀傳輸時(shí)取出后發(fā)送至PC;DMA 模塊完成將PU 處理后的圖像數(shù)據(jù)傳送給USB2.0 SIE;PPU 模塊完成獲取來(lái)自Sensor傳感器輸出的圖像數(shù)據(jù),并且對(duì)數(shù)據(jù)進(jìn)行各種圖像方面的處理,然后將處理后的圖像數(shù)據(jù)發(fā)送至PU.
3 PPU模塊中核心部件的設(shè)計(jì)
PPU 模塊所完成的功能主要是:(1) YCbCr4:2:2格式到Y(jié)CbCr4:4:4 格式的轉(zhuǎn)換;(2) RGB565 格式到RGB888 格式的轉(zhuǎn)換;(3) Bayer 數(shù)據(jù)壞點(diǎn)修正及Bayer格式到RGB888 格式的轉(zhuǎn)換。其中第三個(gè)功能是本模塊的最重要的功能,本方案中采用了"兩條線(xiàn)偽雙端口+六級(jí)流水線(xiàn)"的方案來(lái)實(shí)現(xiàn),其原理圖如圖2所示。
圖2 Bayer 數(shù)據(jù)壞點(diǎn)修正及格式轉(zhuǎn)換的硬件原理圖。
從圖2 可以知道,在本方案中把壞點(diǎn)修正算法與格式轉(zhuǎn)換算法做在了一個(gè)模塊中。壞點(diǎn)地址存儲(chǔ)模塊,主要是用來(lái)接收從MCU 輸出的壞點(diǎn)信息。偽雙端口RAM1、RAM2 是用來(lái)臨時(shí)存儲(chǔ)Bayer 圖像中的前兩行數(shù)據(jù)。而右端的六級(jí)流水線(xiàn)模塊,它的作用是完成相應(yīng)的壞點(diǎn)修正和格式轉(zhuǎn)換。其中,六級(jí)流水線(xiàn)的前面五級(jí)的作用是完成3×5 窗口的壞點(diǎn)修正,而后面三級(jí)是為了完成3×3 窗口的格式轉(zhuǎn)換。
邏輯管理模塊的主要作用是統(tǒng)一管理六級(jí)流水線(xiàn)的相應(yīng)操作,其內(nèi)部包含一些計(jì)數(shù)器、比較器。從圖中還可以看到,P24、P34 分別把數(shù)據(jù)寫(xiě)入了RAM1、RAM2,這主要是為了更新RAM 中的數(shù)據(jù),使得3×6 窗口能夠漫游Bayer 圖像的每一個(gè)像素點(diǎn)。同時(shí)本設(shè)計(jì)對(duì)圖像的邊緣也做了很好的處理,采用鏡像技術(shù)對(duì)邊緣做了很好的修正。
4 PU模塊中核心部件的設(shè)計(jì)
圖像處理單元所要完成的功能主要有:(1)圖像濾波(Image Filte);(2)對(duì)比度(Contrast);(3)亮度(Brightness);(4)飽和度(Saturation);(5)色相(Hue);(6)銳化(Sharpness);(7)伽馬校正(Gamma)等。圖3 給出了PU 模塊中核心部件的結(jié)構(gòu),其中圖像濾波功能是通過(guò)一個(gè)1×5 窗口在圖像上的遍歷來(lái)完成,伽馬校正主要是通過(guò)對(duì)ROM 的查表來(lái)實(shí)現(xiàn)。
圖3 PU 模塊中核心部件結(jié)構(gòu)圖。
5 設(shè)計(jì)的仿真和驗(yàn)證
5.1 模塊的功能仿真
主要給出了對(duì)圖像預(yù)處理模塊中核心部件Bayer模塊的仿真驗(yàn)證方法,其他模塊的仿真驗(yàn)證與此類(lèi)似。
由于圖像處理模塊所涉及的數(shù)據(jù)量非常龐大,僅憑單一的一種或兩種軟件無(wú)法獨(dú)立完成,所以這里仿真驗(yàn)證的工作是通過(guò)三個(gè)軟件Xilinx ISE + ModelSim +Matlab 共同完成,圖4 給出了Bayer 模塊TestBench示意圖,其實(shí)現(xiàn)的步驟主要分為以下三步:
圖4 Bayer 模塊TestBench 模型示意圖。
(1)由MATLAB 從10 張有共同壞點(diǎn)位置的不同JPEG 圖像中讀取8bit 無(wú)符號(hào)RGB 數(shù)據(jù),然后由相應(yīng)的RGB 數(shù)據(jù)生成對(duì)應(yīng)的Bayer 數(shù)據(jù),并以10個(gè)。txt 文本文件來(lái)保留這10 張圖像的Bayer 數(shù)據(jù),這十張文本文件同壞點(diǎn)位置信息一起作為測(cè)試輸入激勵(lì)。
(2)把測(cè)試輸入激勵(lì),分別輸入Bayer 模塊和MATLAB 模擬Bayer 模塊功能的程序中,可以分別得到大量的信息,這些信息都是由。txt 文本文件來(lái)保存,其中MATLAB 模擬程序完成的功能與Bayer 模塊完成的功能相同,只是兩者運(yùn)行的平臺(tái)不同。
(3)比較由MATLAB 模擬程序與Bayer 模塊所生成的大量。txt 文本文件,由于模擬程序和硬件模塊具體實(shí)現(xiàn)的機(jī)制不同(模擬程序采用了矩陣運(yùn)算,而硬件模塊采用2 條線(xiàn)的行緩沖+六級(jí)流水線(xiàn)的方式實(shí)現(xiàn)),如果它們產(chǎn)生的數(shù)據(jù)一致,則可以很好的說(shuō)明硬件模塊完成了預(yù)期的功能, 然后再運(yùn)用MATLAB 顯示函數(shù),把原始圖像數(shù)據(jù)與修正后的數(shù)據(jù)以圖像的形式顯示出來(lái),這樣能以更加直觀(guān)的形式來(lái)觀(guān)察對(duì)應(yīng)的圖像效果。
5.2 FPGA 上的驗(yàn)證
5.2.1 FPGA 上驗(yàn)證平臺(tái)的搭建
圖6 所示為本設(shè)計(jì)的FPGA 驗(yàn)證平臺(tái)示意圖。
圖6 FPGA 驗(yàn)證平臺(tái)示意圖。
PC 與一塊USB2.0 PHY板通過(guò)USB2.0 總線(xiàn)連接,USB2.0 PHY 板與FPGA 開(kāi)發(fā)板由標(biāo)準(zhǔn)UTMI 接口連接。Sensor 板主要是采用美光的MT9V112 sensor 板,I2C 接口主要是用于MCU 對(duì)Sensor 的控制,Data 總線(xiàn)包括數(shù)據(jù)總線(xiàn)和數(shù)據(jù)控制總線(xiàn)。而硬件MCU 模塊、MCU Bus Interface 模塊、USB2.0 SIE 模塊、DMA 模塊、PPU 模塊和PU 模塊均已綜合生成FPGA 下載程序下載到FPGA 中。
5.2.2 驗(yàn)證過(guò)程及結(jié)果
首先在PC 端需要安裝幾個(gè)工具軟件,用于觀(guān)察USB設(shè)備描述符信息的USBViewer,用于捕捉USB 枚舉信息的工具軟件BusHund.按圖6 所示連接所有硬件,然后,將USB2.0 PHY 板的USB 接口插入到PC的USB 插口,并打開(kāi)USB 視頻管理工具軟件,能夠看到流暢的視頻圖像。專(zhuān)用測(cè)試工具軟件可以測(cè)試圖像幀速率。在驗(yàn)證的過(guò)程中,可以看到本方案所設(shè)計(jì)的芯片支持的最大分辨率為 640×480(VGA),最大分辨率時(shí)的幀速率約為15~20fps,基本達(dá)到了設(shè)計(jì)要求。
圖7 所示為PC 機(jī)上安裝的USB 數(shù)據(jù)捕捉軟件工具捕捉的視頻圖像數(shù)據(jù),經(jīng)分析這些數(shù)據(jù)證明圖像數(shù)據(jù)正常傳送至PC 用戶(hù)。
圖7 BusHound 捕捉的圖像數(shù)據(jù)。
由上圖可以看出本設(shè)計(jì)能夠穩(wěn)定地輸出圖像,能夠穩(wěn)定地實(shí)現(xiàn)設(shè)計(jì)要求。并且經(jīng)過(guò)反復(fù)的測(cè)試和評(píng)估,表明本設(shè)計(jì)達(dá)到了設(shè)計(jì)要求。表1 為經(jīng)測(cè)試能夠?qū)崿F(xiàn)的主要技術(shù)指標(biāo)。
表1 實(shí)現(xiàn)的主要技術(shù)指標(biāo)
6 結(jié)束語(yǔ)
本文設(shè)計(jì)了一種基于USB2.0 的視頻圖像處理芯片,通過(guò)功能仿真和FPGA 驗(yàn)證,表明達(dá)到了設(shè)計(jì)要求,完成了設(shè)計(jì)任務(wù)。隨著FPGA 技術(shù)不斷發(fā)展,使用FPGA 處理圖像信息已成為圖像處理領(lǐng)域中的一個(gè)發(fā)展趨勢(shì),特別是在對(duì)圖像處理速度有較高要求的實(shí)時(shí)圖像處理系統(tǒng)中,F(xiàn)PGA 將更能體現(xiàn)其在速度與靈活性方面的優(yōu)勢(shì)。