《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于NoC的圖像采集系統(tǒng)設(shè)計
基于NoC的圖像采集系統(tǒng)設(shè)計
來源:微型機(jī)與應(yīng)用2012年第11期
許川佩,占來龍,任智新
(桂林電子科技大學(xué) 電子工程與自動化學(xué)院,廣西 桂林 541004)
摘要: 為了解決單核處理器系統(tǒng)的總線互連所帶來的互連延遲、存儲帶寬和功耗極限等性能提升的瓶頸問題,設(shè)計了基于NoC系統(tǒng)的實時圖像采集和處理系統(tǒng)。該系統(tǒng)采用FPGA實現(xiàn)圖像采集模塊、存儲、JPEG編解碼、資源節(jié)點(diǎn)、路由節(jié)點(diǎn)及VGA顯示等功能。實驗結(jié)果表明,在NoC系統(tǒng)上使用多核技術(shù)代替?zhèn)鹘y(tǒng)的單處理器,在提高系統(tǒng)并行性方面顯示出了NoC的巨大優(yōu)勢。
Abstract:
Key words :

摘  要: 為了解決單核處理器系統(tǒng)的總線互連所帶來的互連延遲、存儲帶寬和功耗極限等性能提升的瓶頸問題,設(shè)計了基于NoC系統(tǒng)的實時圖像采集和處理系統(tǒng)。該系統(tǒng)采用FPGA實現(xiàn)圖像采集模塊、存儲、JPEG編解碼、資源節(jié)點(diǎn)、路由節(jié)點(diǎn)及VGA顯示等功能。實驗結(jié)果表明,在NoC系統(tǒng)上使用多核技術(shù)代替?zhèn)鹘y(tǒng)的單處理器,在提高系統(tǒng)并行性方面顯示出了NoC的巨大優(yōu)勢。
關(guān)鍵詞: 片上網(wǎng)絡(luò);資源節(jié)點(diǎn);通信

 NoC(Network on Chip)的核心思想[1]是將計算機(jī)網(wǎng)絡(luò)技術(shù)移植到集成電路設(shè)計中,從體系結(jié)構(gòu)上徹底解決片上通信的瓶頸問題及時鐘問題。它充分借鑒了分布式計算機(jī)系統(tǒng)的通信方式,用路由和分組交換技術(shù)替代傳統(tǒng)的總線通信方式。結(jié)構(gòu)化的網(wǎng)絡(luò)連線[1]可以更好地控制連線的電氣參數(shù),提供更高的帶寬,支持多重的并行通信等。此外,NoC還具備數(shù)據(jù)處理量大、多任務(wù)并行計算、架構(gòu)易擴(kuò)展及靈活性強(qiáng)等特點(diǎn)。
本設(shè)計是在NoC系統(tǒng)上實現(xiàn)實時圖像采集、壓縮、解壓縮、存儲和VGA顯示等功能,利用FPGA的內(nèi)部資源設(shè)計靈活的邏輯控制,完成高速大容量數(shù)據(jù)采集的存儲和傳輸。本文提出的設(shè)計方案可以在選用成本低、操作簡單的靜態(tài)RAM的情況下, 實現(xiàn)實時大容量數(shù)據(jù)存儲需求。在EDA(Electronic Design Automation)軟件中進(jìn)行了仿真驗證,并在DE2開發(fā)板上實現(xiàn)高速實時圖像采集和處理。
1 系統(tǒng)總體方案設(shè)計
 NoC系統(tǒng)借鑒并移植計算機(jī)網(wǎng)絡(luò)通信中的概念和方法[1],用于多個核或IP(Intellectual Property core)的集成。圖1是NoC的示意圖。

 NoC系統(tǒng)由交換節(jié)點(diǎn)(Switch)、資源節(jié)點(diǎn)(Resource)和資源網(wǎng)絡(luò)接口(Resource-Network Interface)3個基本部分組成[1]。交換節(jié)點(diǎn)負(fù)責(zé)資源節(jié)點(diǎn)之間的信息交換,資源節(jié)點(diǎn)可以是處理器、存儲器、可編程邏輯器件、輸入輸出設(shè)備等。交換節(jié)點(diǎn)通過互連線按照拓?fù)浣Y(jié)構(gòu)組成網(wǎng)絡(luò)的物理架構(gòu),資源節(jié)點(diǎn)則通過RNI與交換節(jié)點(diǎn)相連。狹義的NoC指的就是僅由交換節(jié)點(diǎn)構(gòu)成的網(wǎng)絡(luò)。
本設(shè)計在NoC網(wǎng)絡(luò)上實現(xiàn)實時圖像采集系統(tǒng),在FPGA上利用2個NIOS Ⅱ核實現(xiàn)NoC系統(tǒng)上的2個資源節(jié)點(diǎn),實現(xiàn)圖像采集的基本功能。其中,1個NIOS Ⅱ?qū)崿F(xiàn)采集壓縮功能,1個NIOS Ⅱ核實現(xiàn)解壓顯示功能。系統(tǒng)由攝像頭、NIOS Ⅱ 1、資源節(jié)點(diǎn)1、路由節(jié)點(diǎn)1、路由節(jié)點(diǎn)2、資源節(jié)點(diǎn)2、NIOS Ⅱ 2、SDRAM乒乓存儲器和VGA顯示等模塊組成。系統(tǒng)的工作流程如圖2所示。

 圖像采集系統(tǒng)工作流程是:先對OV9650的寄存器進(jìn)行配置,然后從攝像頭模塊中接收YUV422格式的數(shù)據(jù),由NIOS Ⅱ 1對接收的數(shù)據(jù)進(jìn)行JPEG壓縮,壓縮的數(shù)據(jù)發(fā)送到資源節(jié)點(diǎn)1,再發(fā)送到路由節(jié)點(diǎn)1上,由路由器把數(shù)據(jù)發(fā)送到目的路由節(jié)點(diǎn)2上,再經(jīng)資源節(jié)2發(fā)送到NIOS Ⅱ 2中,由NIOS Ⅱ 2進(jìn)行JPEG解壓縮,進(jìn)行VGA顯示,VGA顯示的緩存采用SDRAM乒乓緩存。  
2 圖像采集系統(tǒng)的模塊設(shè)計
2.1 攝像頭控制模塊

 攝像頭控制模塊的功能是采集圖像數(shù)據(jù)。OV9650攝像頭包括CMOS攝像頭和圖像處理芯片OV9650。用Verilog HDL硬件描述語言編寫SCCB總線控制器,OV9650是通過SCCB總線(SCCB總線的示意圖如圖3所示,SCL是時鐘信號線,SDA是數(shù)據(jù)線)對其寄存器進(jìn)行配置的。時鐘頻率設(shè)置為24 MHz,按照其時序完成對OV9650攝像頭的初始化配置工作。配置OV9650攝像頭的工作模式為VGA 640×480視頻格式,以YUV4:2:2數(shù)據(jù)流輸出,視頻速率為15 f/s。采集到的YUV4:2:2格式的數(shù)據(jù)送到JPEG編碼器中進(jìn)行編碼,把編碼的數(shù)據(jù)進(jìn)行打包,發(fā)送到緩沖器中,等待路由節(jié)點(diǎn)的信號,通過路由器發(fā)送到目的資源節(jié)點(diǎn)。

2.2 NIOS Ⅱ 1模塊
 NIOS Ⅱ 1模塊由SoPC構(gòu)建硬件框架[2],再在NIOS Ⅱ IDE中進(jìn)行軟件程序編寫。NIOS Ⅱ 1的功能是接收攝像頭的數(shù)據(jù),對圖像數(shù)據(jù)進(jìn)行JPEG壓縮。
 JPEG編碼算法可以用失真的壓縮方式來處理圖像,但失真的程度卻是肉眼所無法辯認(rèn)的,這也就是為什么JPEG會有如此滿意的壓縮比例的原因。它的壓縮一般過程是:首先使用正向離散余弦變換FDCT(Forward Discrete Cosine Transform)把空間域表示的圖像變換成頻率域表示的圖像,然后使用加權(quán)函數(shù)(此加權(quán)函數(shù)對于人的視覺系統(tǒng)是最佳的)對DCT系數(shù)進(jìn)行量化,最后對量化系數(shù)進(jìn)行編碼。JPEG編碼器流程圖如圖4所示。

2.3 通信節(jié)點(diǎn)發(fā)送模塊
 通信節(jié)點(diǎn)發(fā)送模塊有兩個作用,一是把4個8 bit數(shù)組成32 bit數(shù)輸出,二是對要發(fā)送的數(shù)據(jù)進(jìn)行組包。組包協(xié)議是:第一包僅包含要發(fā)送的包數(shù)、發(fā)送包的類型、數(shù)據(jù)發(fā)送的資源節(jié)點(diǎn)的地址和要接收數(shù)據(jù)的資源節(jié)點(diǎn)的地址、校驗位;后面的包包含此包的包號、包的長度、要發(fā)送的數(shù)據(jù)、校驗位。資源節(jié)點(diǎn)1的模塊圖如圖5所示。

 

 

    clk_100M是輸入時鐘,clk_50M是輸出時鐘,reset是復(fù)位信號線,b[11..0]是應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù)信號,port_av1是路由節(jié)點(diǎn)的請求信號線,ou是應(yīng)用的請求信號線,data_to_sin1[31..0]是輸出信號線,flit_head是頭flit信號線,wren寫信號線,readen是讀信號線。該模塊的功能是銜接應(yīng)用系統(tǒng)與路由節(jié)點(diǎn),使得它們之間可以進(jìn)行通信。
2.4 路由節(jié)點(diǎn)
 路由單元包括交換開關(guān)以及東、南、西、北、本地5個方向的端口鏈路控制模塊。交換開關(guān)負(fù)責(zé)路由單元內(nèi)部各端口鏈路之間的數(shù)據(jù)交換。本地方向模塊與本地的資源節(jié)點(diǎn)相連,負(fù)責(zé)轉(zhuǎn)發(fā)本地資源節(jié)點(diǎn)發(fā)出以及接收的數(shù)據(jù),另外4個方向模塊與其他路由節(jié)點(diǎn)連接。由于2D-Mesh拓?fù)浣Y(jié)構(gòu)具有對稱特性,因此路由單元東、南、西和北這4個方向的端口具有相同的電路結(jié)構(gòu)。每個方向端口由輸入虛通道選擇模塊、輸入虛通道緩存模塊、路由控制模塊、請求仲裁模塊和輸出模塊幾部分組成。
2.5 通信節(jié)點(diǎn)接收模塊
 通信節(jié)點(diǎn)接收模塊是通信節(jié)點(diǎn)發(fā)送模塊的逆過程,其有兩個作用,一是把一個32 bit數(shù)分解成8 bit數(shù)輸出,二是對要接收的數(shù)據(jù)進(jìn)行解包,解包協(xié)議是組包協(xié)議的逆過程。資源節(jié)點(diǎn)2實現(xiàn)如下:
Module receive(
clkin,  //數(shù)據(jù)輸入時鐘
clkout,//數(shù)據(jù)輸出時鐘
reset, //復(fù)位信號
data_in,//數(shù)據(jù)輸入
data_out,//數(shù)據(jù)輸出
wren,//寫使能信號
readen, //讀使能信號
in_int,  //路由節(jié)點(diǎn)給的信號線
reci_flit_head,//頭flit信號
dataout_flag  //數(shù)據(jù)輸出標(biāo)志位

2.6 NIOS Ⅱ 2模塊
 NIOS Ⅱ 2模塊由SoPC構(gòu)建硬件框架,再在NIOS II IDE中進(jìn)行軟件程序編寫。用Verilog HDL語言編寫VGA控制器和SDRAM控制器,再編寫一個接入到Avalon總線的接口文件,把VGA控制器和SDRAM外掛在NIOS Ⅱ 2上。該模塊的功能是接收資源節(jié)點(diǎn)的數(shù)據(jù),再送入JPEG解碼器解碼,解碼后的數(shù)據(jù)送入SDRAM乒乓存儲器,最后在VGA上顯示。
2.6.1 JPEG解碼器的設(shè)計
 JPEG解壓縮是JPEG壓縮的逆過程,解碼流程的主要功能模塊包括:頭文件解析、熵解碼(包括直流系數(shù)解碼、交流系數(shù)解碼和差分解碼)、反量化與反Z變換(掃描)、IDCT變換和顏色空間轉(zhuǎn)換。在JPEG解碼模塊啟動后,頭碼流解析單元首先讀入JPEG文件的包頭,根據(jù)JPEG文件數(shù)據(jù)的存儲方式依次檢測數(shù)據(jù)流中包含的各種段的標(biāo)識符,把要解碼的文件信息從數(shù)據(jù)流中解析出來并存儲到相應(yīng)的存儲單元,為后面壓縮數(shù)據(jù)的解碼作準(zhǔn)備。數(shù)據(jù)流后經(jīng)熵解碼單元(包括Huffman解碼、變長解碼和行程解碼)進(jìn)行解碼,解碼后的數(shù)據(jù)進(jìn)入反量化與反Z變換模塊,對量化過的像素進(jìn)行反Z變換,得到8×8的數(shù)據(jù)塊。圖像數(shù)據(jù)是編碼時通過正向離散余弦變換得到的結(jié)果,解碼時必須將其反向余弦變換,將數(shù)值向時域轉(zhuǎn)換。JPEG解碼器流程圖如圖6所示。

2.6.2 VGA控制模塊的設(shè)計
 VGA顯示由FPGA根據(jù)VGA顯示時序,輸出相應(yīng)像素的RGB格式的數(shù)據(jù)、行同步信號和幀同步信號,然后經(jīng)過D/A芯片轉(zhuǎn)換后顯示。實際系統(tǒng)采用的顯示分辨率為800×600,幀頻率為75 Hz。VGA控制模塊設(shè)計如下:
module VGA_SINK(
clk, //時鐘信號
reset_n,//復(fù)位信號
ready_out,
valid_in,
data_in,  
sop_in,
eop_in,
empty_in,  
vga_clk,
vga_hs,
vga_vs,
vga_de,
vga_r,
vga_g,
vga_b)
 其中,ready_out、valid_in、data_in、sop_in、eop_in和empty_in是與Avalon總線連接的信號,vga_clk、vga_hs、vga_vs、vga_de、vga_r、vga_g和vga_b信號是與VGA模塊連接的信號。VGA模塊的工作過程是:數(shù)據(jù)從SDRAM中讀入,送到VGA顯示,判斷是否已經(jīng)讀取了一行的數(shù)據(jù),即640個RGB信號,如果讀取了一行數(shù)據(jù),則復(fù)位行信號H;判斷是否已經(jīng)讀取一幀圖像,如果讀取了一幀,則復(fù)位場信號V,至此VGA已經(jīng)完整顯示了一幀圖像。
2.6.3 SDRAM乒乓存儲器
 SDRAM乒乓存儲器的作用是為VGA顯示作緩存,一片SDRAM的數(shù)據(jù)輸出給VGA時,另一片SDRAM就接收數(shù)據(jù),2片SDRAM交叉進(jìn)行,保證了VGA實時顯示。
3 實驗結(jié)果
3.1 系統(tǒng)資源測試

 NoC應(yīng)用系統(tǒng)的功能子模塊設(shè)計完成之后,將各個功能子模塊組合、聯(lián)調(diào),由Quartus II 11.0自帶的綜合工具生成網(wǎng)表及.pof,通過as接口方式燒寫到epcs4中,系統(tǒng)綜合后的資源消耗圖如圖7所示。

 結(jié)果表明,該系統(tǒng)能正確可靠地工作。在這個系統(tǒng)中,專用邏輯寄存器占1%,總的邏輯單元占2%,總的內(nèi)存位占5%,因此還有大量的資源可以用于硬件算法或者其他方面的應(yīng)用。
3.2 系統(tǒng)指標(biāo)測試
 在整個NoC應(yīng)用系統(tǒng)的實現(xiàn)中,由于采用FPGA作為主控制器,基本上是由硬件完成了整個系統(tǒng),將圖像傳感器的幀頻設(shè)置為15 f/s(最高為30 f/s),JPEG壓縮比例為3.4%,SDRAM乒乓緩存為VGA實時顯示提供了條件。通過仿真調(diào)試,可以實現(xiàn)通過人機(jī)交互界面控制圖像采集、傳輸和VGA顯示等功能,并且各部分能同時工作,這也是NoC的優(yōu)勢所在。圖8是采集的一幀圖像。

 本文設(shè)計的系統(tǒng)的各個模塊都在Modelsim中進(jìn)行了仿真,并在DE2-115開發(fā)板上調(diào)試成功,實現(xiàn)了圖像采集、JPEG編碼解碼、傳輸和VGA顯示等功能。在NoC系統(tǒng)上實現(xiàn)數(shù)據(jù)采集系統(tǒng),采用雙核進(jìn)行處理,通過路由進(jìn)行數(shù)據(jù)傳輸,克服了總線互連、存儲帶寬及功耗極限等性能提升的瓶頸問題。
參考文獻(xiàn)
[1] 阿克塞爾·詹奇,漢努·騰胡寧.網(wǎng)絡(luò)化芯片[M].王忠,孫繼銀,周國昌,等,譯.西安:西安交通大學(xué)出版社,2007.
[2] 孫春鳳,袁峰,丁振良.基于FPGA的多通道高速CMOS圖像采集系統(tǒng)[J].計算機(jī)工程與應(yīng)用,2008(21):46-48.
[3] Altera. Altera Cycone IV Device Hand-book [Z].http://www.altera.com,2010.
[4] 杜慧敏,李宥謀,趙全良.基于Verilog的FPGA設(shè)計基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2006.
[5] 杜林奇,許開宇,張欣璐.基于FPGA和視頻解碼芯片的實畦圖像采集系統(tǒng)設(shè)計[J].電子元器件應(yīng)用,2008(05):56-60.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。