摘 要: 為了解決單核處理器系統(tǒng)的總線互連所帶來的互連延遲,、存儲帶寬和功耗極限等性能提升的瓶頸問題,,設(shè)計了基于NoC系統(tǒng)的實時圖像采集和處理系統(tǒng)。該系統(tǒng)采用FPGA實現(xiàn)圖像采集模塊,、存儲,、JPEG編解碼、資源節(jié)點,、路由節(jié)點及VGA顯示等功能,。實驗結(jié)果表明,在NoC系統(tǒng)上使用多核技術(shù)代替?zhèn)鹘y(tǒng)的單處理器,,在提高系統(tǒng)并行性方面顯示出了NoC的巨大優(yōu)勢,。
關(guān)鍵詞: 片上網(wǎng)絡(luò);資源節(jié)點,;通信
NoC(Network on Chip)的核心思想[1]是將計算機網(wǎng)絡(luò)技術(shù)移植到集成電路設(shè)計中,,從體系結(jié)構(gòu)上徹底解決片上通信的瓶頸問題及時鐘問題。它充分借鑒了分布式計算機系統(tǒng)的通信方式,,用路由和分組交換技術(shù)替代傳統(tǒng)的總線通信方式,。結(jié)構(gòu)化的網(wǎng)絡(luò)連線[1]可以更好地控制連線的電氣參數(shù),提供更高的帶寬,,支持多重的并行通信等,。此外,NoC還具備數(shù)據(jù)處理量大,、多任務(wù)并行計算,、架構(gòu)易擴展及靈活性強等特點。
本設(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)軟件中進行了仿真驗證,,并在DE2開發(fā)板上實現(xiàn)高速實時圖像采集和處理。
1 系統(tǒng)總體方案設(shè)計
NoC系統(tǒng)借鑒并移植計算機網(wǎng)絡(luò)通信中的概念和方法[1],,用于多個核或IP(Intellectual Property core)的集成,。圖1是NoC的示意圖。
NoC系統(tǒng)由交換節(jié)點(Switch),、資源節(jié)點(Resource)和資源網(wǎng)絡(luò)接口(Resource-Network Interface)3個基本部分組成[1],。交換節(jié)點負責資源節(jié)點之間的信息交換,,資源節(jié)點可以是處理器、存儲器,、可編程邏輯器件,、輸入輸出設(shè)備等。交換節(jié)點通過互連線按照拓撲結(jié)構(gòu)組成網(wǎng)絡(luò)的物理架構(gòu),,資源節(jié)點則通過RNI與交換節(jié)點相連,。狹義的NoC指的就是僅由交換節(jié)點構(gòu)成的網(wǎng)絡(luò)。
本設(shè)計在NoC網(wǎng)絡(luò)上實現(xiàn)實時圖像采集系統(tǒng),,在FPGA上利用2個NIOS Ⅱ核實現(xiàn)NoC系統(tǒng)上的2個資源節(jié)點,,實現(xiàn)圖像采集的基本功能。其中,,1個NIOS Ⅱ?qū)崿F(xiàn)采集壓縮功能,,1個NIOS Ⅱ核實現(xiàn)解壓顯示功能。系統(tǒng)由攝像頭,、NIOS Ⅱ 1,、資源節(jié)點1、路由節(jié)點1,、路由節(jié)點2,、資源節(jié)點2、NIOS Ⅱ 2,、SDRAM乒乓存儲器和VGA顯示等模塊組成,。系統(tǒng)的工作流程如圖2所示。
圖像采集系統(tǒng)工作流程是:先對OV9650的寄存器進行配置,,然后從攝像頭模塊中接收YUV422格式的數(shù)據(jù),,由NIOS Ⅱ 1對接收的數(shù)據(jù)進行JPEG壓縮,壓縮的數(shù)據(jù)發(fā)送到資源節(jié)點1,,再發(fā)送到路由節(jié)點1上,,由路由器把數(shù)據(jù)發(fā)送到目的路由節(jié)點2上,再經(jīng)資源節(jié)2發(fā)送到NIOS Ⅱ 2中,,由NIOS Ⅱ 2進行JPEG解壓縮,,進行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ù)線)對其寄存器進行配置的,。時鐘頻率設(shè)置為24 MHz,,按照其時序完成對OV9650攝像頭的初始化配置工作,。配置OV9650攝像頭的工作模式為VGA 640×480視頻格式,以YUV4:2:2數(shù)據(jù)流輸出,,視頻速率為15 f/s,。采集到的YUV4:2:2格式的數(shù)據(jù)送到JPEG編碼器中進行編碼,把編碼的數(shù)據(jù)進行打包,,發(fā)送到緩沖器中,,等待路由節(jié)點的信號,通過路由器發(fā)送到目的資源節(jié)點,。
2.2 NIOS Ⅱ 1模塊
NIOS Ⅱ 1模塊由SoPC構(gòu)建硬件框架[2],,再在NIOS Ⅱ IDE中進行軟件程序編寫。NIOS Ⅱ 1的功能是接收攝像頭的數(shù)據(jù),,對圖像數(shù)據(jù)進行JPEG壓縮,。
JPEG編碼算法可以用失真的壓縮方式來處理圖像,但失真的程度卻是肉眼所無法辯認的,,這也就是為什么JPEG會有如此滿意的壓縮比例的原因,。它的壓縮一般過程是:首先使用正向離散余弦變換FDCT(Forward Discrete Cosine Transform)把空間域表示的圖像變換成頻率域表示的圖像,然后使用加權(quán)函數(shù)(此加權(quán)函數(shù)對于人的視覺系統(tǒng)是最佳的)對DCT系數(shù)進行量化,,最后對量化系數(shù)進行編碼,。JPEG編碼器流程圖如圖4所示。
2.3 通信節(jié)點發(fā)送模塊
通信節(jié)點發(fā)送模塊有兩個作用,,一是把4個8 bit數(shù)組成32 bit數(shù)輸出,,二是對要發(fā)送的數(shù)據(jù)進行組包。組包協(xié)議是:第一包僅包含要發(fā)送的包數(shù),、發(fā)送包的類型,、數(shù)據(jù)發(fā)送的資源節(jié)點的地址和要接收數(shù)據(jù)的資源節(jié)點的地址、校驗位,;后面的包包含此包的包號,、包的長度、要發(fā)送的數(shù)據(jù),、校驗位。資源節(jié)點1的模塊圖如圖5所示,。
clk_100M是輸入時鐘,,clk_50M是輸出時鐘,reset是復(fù)位信號線,,b[11..0]是應(yīng)用系統(tǒng)發(fā)送的數(shù)據(jù)信號,,port_av1是路由節(jié)點的請求信號線,ou是應(yīng)用的請求信號線,,data_to_sin1[31..0]是輸出信號線,,flit_head是頭flit信號線,,wren寫信號線,readen是讀信號線,。該模塊的功能是銜接應(yīng)用系統(tǒng)與路由節(jié)點,,使得它們之間可以進行通信。
2.4 路由節(jié)點
路由單元包括交換開關(guān)以及東,、南,、西、北,、本地5個方向的端口鏈路控制模塊,。交換開關(guān)負責路由單元內(nèi)部各端口鏈路之間的數(shù)據(jù)交換。本地方向模塊與本地的資源節(jié)點相連,,負責轉(zhuǎn)發(fā)本地資源節(jié)點發(fā)出以及接收的數(shù)據(jù),,另外4個方向模塊與其他路由節(jié)點連接。由于2D-Mesh拓撲結(jié)構(gòu)具有對稱特性,,因此路由單元東,、南、西和北這4個方向的端口具有相同的電路結(jié)構(gòu),。每個方向端口由輸入虛通道選擇模塊,、輸入虛通道緩存模塊、路由控制模塊,、請求仲裁模塊和輸出模塊幾部分組成,。
2.5 通信節(jié)點接收模塊
通信節(jié)點接收模塊是通信節(jié)點發(fā)送模塊的逆過程,其有兩個作用,,一是把一個32 bit數(shù)分解成8 bit數(shù)輸出,,二是對要接收的數(shù)據(jù)進行解包,解包協(xié)議是組包協(xié)議的逆過程,。資源節(jié)點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é)點給的信號線
reci_flit_head,,//頭flit信號
dataout_flag //數(shù)據(jù)輸出標志位
)
2.6 NIOS Ⅱ 2模塊
NIOS Ⅱ 2模塊由SoPC構(gòu)建硬件框架,,再在NIOS II IDE中進行軟件程序編寫。用Verilog HDL語言編寫VGA控制器和SDRAM控制器,,再編寫一個接入到Avalon總線的接口文件,,把VGA控制器和SDRAM外掛在NIOS Ⅱ 2上,。該模塊的功能是接收資源節(jié)點的數(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ù)流中包含的各種段的標識符,把要解碼的文件信息從數(shù)據(jù)流中解析出來并存儲到相應(yīng)的存儲單元,,為后面壓縮數(shù)據(jù)的解碼作準備,。數(shù)據(jù)流后經(jīng)熵解碼單元(包括Huffman解碼、變長解碼和行程解碼)進行解碼,,解碼后的數(shù)據(jù)進入反量化與反Z變換模塊,,對量化過的像素進行反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交叉進行,,保證了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)指標測試
在整個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)通過人機交互界面控制圖像采集,、傳輸和VGA顯示等功能,并且各部分能同時工作,,這也是NoC的優(yōu)勢所在,。圖8是采集的一幀圖像。
本文設(shè)計的系統(tǒng)的各個模塊都在Modelsim中進行了仿真,,并在DE2-115開發(fā)板上調(diào)試成功,,實現(xiàn)了圖像采集、JPEG編碼解碼,、傳輸和VGA顯示等功能。在NoC系統(tǒng)上實現(xiàn)數(shù)據(jù)采集系統(tǒng),,采用雙核進行處理,通過路由進行數(shù)據(jù)傳輸,,克服了總線互連、存儲帶寬及功耗極限等性能提升的瓶頸問題,。
參考文獻
[1] 阿克塞爾·詹奇,,漢努·騰胡寧.網(wǎng)絡(luò)化芯片[M].王忠,孫繼銀,,周國昌,,等,譯.西安:西安交通大學(xué)出版社,,2007.
[2] 孫春鳳,,袁峰,丁振良.基于FPGA的多通道高速CMOS圖像采集系統(tǒng)[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.