許川佩,占來龍,任智新
(桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004)
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)高速實時圖像采集和處理。
NoC系統(tǒng)借鑒并移植計算機網(wǎng)絡(luò)通信中的概念和方法[1],用于多個核或 IP(Intellectual Property core)的集成。圖1是NoC的示意圖。
圖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所示。
圖2 圖像采集系統(tǒng)工作流程
圖像采集系統(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乒乓緩存。
攝像頭控制模塊的功能是采集圖像數(shù)據(jù)。OV9650攝像頭包括CMOS攝像頭和圖像處理芯片OV9650。用VerilogHDL硬件描述語言編寫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é)點。
圖3 SCCB的示意圖
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所示。
圖4 JPEG編碼器流程
通信節(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所示。
圖5 資源節(jié)點1模塊圖
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é)點,使得它們之間可以進行通信。
路由單元包括交換開關(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)。每個方向端口由輸入虛通道選擇模塊、輸入虛通道緩存模塊、路由控制模塊、請求仲裁模塊和輸出模塊幾部分組成。
通信節(jié)點接收模塊是通信節(jié)點發(fā)送模塊的逆過程,其有兩個作用,一是把一個32 bit數(shù)分解成8 bit數(shù)輸出,二是對要接收的數(shù)據(jù)進行解包,解包協(xié)議是組包協(xié)議的逆過程。資源節(jié)點2實現(xiàn)如下:
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所示。
圖6 JPEG解碼器流程圖
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è)計如下:
其中,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實時顯示。
NoC應(yīng)用系統(tǒng)的功能子模塊設(shè)計完成之后,將各個功能子模塊組合、聯(lián)調(diào),由Quartus II 11.0自帶的綜合工具生成網(wǎng)表及.pof,通過as接口方式燒寫到epcs4中,系統(tǒng)綜合后的資源消耗圖如圖7所示。
圖7 綜合后的資源消耗圖
結(jié)果表明,該系統(tǒng)能正確可靠地工作。在這個系統(tǒng)中,專用邏輯寄存器占 1%,總的邏輯單元占 2%,總的內(nèi)存位占5%,因此還有大量的資源可以用于硬件算法或者其他方面的應(yī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是采集的一幀圖像。
圖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].王忠,孫繼銀,周國昌,等,譯.西安:西安交通大學出版社,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].西安:西安電子科技大學出版社,2006.
[5]杜林奇,許開宇,張欣璐.基于 FPGA和視頻解碼芯片的實畦圖像采集系統(tǒng)設(shè)計[J].電子元器件應(yīng)用,2008(05):56-60.