基于NiosII的視頻采集與傳輸系統(tǒng)
采用軟件編程實現(xiàn)傳統(tǒng)圖像的采集和處理,這需要占用大量的CPU資源,一方面CPU要提高系統(tǒng)工作頻率,使得整個系統(tǒng)的可靠性接受很大的挑戰(zhàn),另一方面這類系統(tǒng)難以處理實時、高分辨率的圖像。
1 引言
采用NiosII加上FPGA可解決這些問題。Altera公司推出的NiosII是一種可配置的RISC嵌入式軟核處理器,它可與各種各樣的外設、定制指令和硬件加速單元相結合,根據(jù)用戶的需求進行裁剪,構成一個定制的SoPC。
本系統(tǒng)將視頻數(shù)據(jù)的采集和傳輸集成到單片F(xiàn)PGA上,采集部分使用硬件描述語言編寫成硬件模塊,作為外設掛到系統(tǒng)中,不占用CPU資源,提高了系統(tǒng)的運革新行速度。在此基礎上,用戶還可方便地添加IP核等方式來擴展系統(tǒng)的功能,比如將H.263視頻編碼的硬件模塊加載到NiosII系統(tǒng)中,大大縮短了開發(fā)周期。
2 NiosII處理器系統(tǒng)
一個NiosII處理器系統(tǒng)由NiosII CPU和一系列的外設組成。開發(fā)基于NiosII的嵌入式系統(tǒng),關鍵在于如何根據(jù)功能需求定制NiosII及設計自定義接口。在本系統(tǒng)中,由于要實現(xiàn)視頻數(shù)據(jù)的采集和網(wǎng)絡傳輸功能,而NiosII(version 6.0)標準接口組件中沒有視頻解碼芯片ADV7181B和網(wǎng)絡芯片DM9000A的接口,所以用戶要用硬件描述語言編寫ADV7181B和DM9000A的硬件模塊接口,然后在SOPC Builder中以用戶自定義的方式添加進去,掛到avalon總線上。本系統(tǒng)主要包括以下部分:
EP2C35(CycloneII FPCA)包括NioslI軟核CPU、操作系統(tǒng)使用的定時器timer0、網(wǎng)絡協(xié)議棧使用的定時器timer1;Flash主要用來存放軟件代碼以及一些需要保存的參數(shù);SDRAM用來在系統(tǒng)運行時的代碼和數(shù)據(jù)存儲;LED和按鍵用來指示工作狀態(tài)和系統(tǒng)復位的按鍵;為了方便調(diào)試,異步串口UART通過串口終端觀察系統(tǒng)的運行狀態(tài);自定義的視頻采集硬件模塊控制從視頻輸入口進來的視頻數(shù)據(jù)經(jīng)視頻解碼芯片ADV7181解碼后正確的存放到存儲器中以供后續(xù)的處理;以太網(wǎng)利用TCP/IP協(xié)議傳輸視頻數(shù)據(jù)。整個系統(tǒng)的結構如圖1。

3 視頻采集硬件模塊
DE2開發(fā)板上視頻A/D芯片選用的是ADV7181B,其輸出的數(shù)字視頻數(shù)據(jù)通過8位總線TD DATA [7:0]傳輸給FPGA,F(xiàn)PGA經(jīng)視頻解碼模塊在視頻數(shù)據(jù)中識別出有效數(shù)據(jù)。如圖2是視頻采集模塊的框圖。ADV7181B輸出標準的ITU656格式的數(shù)據(jù),Y:U:V,=4:2:2,分辨率為720×576,輸出像素時鐘為27 MHz,一行視頻數(shù)據(jù)的格式如表1所示。


本設計的視頻解碼模塊是通過分析視頻數(shù)據(jù)流中的“FF 00 00 SAV/EAV”,解碼得到一行的有效數(shù)據(jù)YCbCr以及場標志和場消隱信號。數(shù)據(jù)流程如圖3所示。

4 μClinux操作系統(tǒng)移植
嵌入式μClinux操作系統(tǒng)主要由3個基本部分組成:引導程序、μClinux內(nèi)核和文件系統(tǒng)。μClinux的內(nèi)核定制高度靈活化,開發(fā)者可按設計需求對內(nèi)核進行配置,在了解內(nèi)核原理后可增加各類驅動。
1) 建立開發(fā)環(huán)境
μClinux系統(tǒng)的移植選用的主機平臺是。Fedora Core6,內(nèi)核版本為2.6.19。在進行μClinux的移植之前,需要建立系統(tǒng)的交叉編譯環(huán)境。
2) 配置內(nèi)核
在編譯μClinux內(nèi)核之前,首先要對內(nèi)核進行配置。針對本系統(tǒng),由于DE2開發(fā)平臺上只有4 Mbyte的Flash,根據(jù)系統(tǒng)的功能將必要的選項選中,將沒有必要的選項去掉,以減少內(nèi)核的大小。本系統(tǒng)中需要注意的兩點是:
(1) 選擇設備驅動中的網(wǎng)絡支持選項,在Ethernet(10 or 100 Mbit/s)下面選中DM9000A,因為DE2開發(fā)板的網(wǎng)絡芯片是DM9000A。
(2) 選擇字符型設備驅動Character devices這一步要選擇串行口驅動,進入SeriaI drivers選項,然后選定Nios serial port support,這樣在內(nèi)核中加入了對Nios口的支持,就可以通過串口將內(nèi)核打印的信息傳遞給主機。
(3) 配置μClinux的文件系統(tǒng)
在內(nèi)核啟動之后,就會將romfs作為根文件系統(tǒng)。根文件系統(tǒng)中必須要有init和sh這兩個可執(zhí)行文件。這樣在內(nèi)核運行的最后,將有一個簡單的shell界面,同時用戶也可以將自己的應用程序加入到根文件系統(tǒng)中。
4) 下載μClinux內(nèi)核映象
將內(nèi)核映象和根文件系統(tǒng)下載到的Flash中,然后上電。通過串口終端工具看到系統(tǒng)啟動后的信息如圖4。說明系統(tǒng)已經(jīng)正常運行,以太網(wǎng)已經(jīng)連接上。進行網(wǎng)絡測試,在開發(fā)板端,開啟網(wǎng)絡服務器程序boa,用Internet網(wǎng)絡中的另一臺主機訪問該服務器,得到如下測試圖如圖5。

5 小結
由于本系統(tǒng)是直接對經(jīng)攝像頭采集的視頻數(shù)據(jù)打包發(fā)送,沒有對數(shù)據(jù)壓縮編碼,因而對帶寬的要求很大,尚且不能應用到實際中,但這為下一步的開發(fā)提供了一個整體構架,下一步的工作就是將視頻數(shù)據(jù)壓縮編/解碼添加到FPGA中,比如將H.263視頻編碼引入到本系統(tǒng)中,構建一個視頻終端。