胡金燦 張學(xué)梁 張凱 王璐輝
【摘要】 本產(chǎn)品基于DE1-SoC開發(fā)板,通過V4L2方式進(jìn)行圖像的采集,與FPGA交互實(shí)時(shí)顯示,用Ffmpeg方式實(shí)現(xiàn)圖像的轉(zhuǎn)換和儲(chǔ)存,并通過網(wǎng)絡(luò)讓聯(lián)網(wǎng)的移動(dòng)設(shè)備和電腦實(shí)時(shí)顯示。該設(shè)備能進(jìn)行分辨率為640*480的圖像采樣,20fps的圖像顯示和存儲(chǔ)。誤碼率低,性能可靠。
【關(guān)鍵詞】 行車記錄儀 圖像采集 V4L2 FFmpeg
理論分析:
1、整體框架:
系統(tǒng)由五部分組成:視頻采集、視頻格式轉(zhuǎn)換、視頻編碼存儲(chǔ)、視頻顯示、視頻網(wǎng)絡(luò)服務(wù)。視頻采集得到原始視頻幀圖片,經(jīng)過視頻格式轉(zhuǎn)換分別得到各種圖片圖片格式,分三路傳至視頻編碼存儲(chǔ)、視頻顯示和視頻網(wǎng)絡(luò)服務(wù)作相應(yīng)處理。
2、視頻采集:視頻采集有l(wèi)inux內(nèi)嵌的v4l2框架來實(shí)現(xiàn)。先打開視頻設(shè)備文件,確定本設(shè)備為視頻捕捉設(shè)備,查詢攝像頭支持的格式,并設(shè)置。申請(qǐng)視頻采集所需的內(nèi)存塊,再確定每個(gè)內(nèi)存塊的信息,將內(nèi)存塊的地址映射到用戶空間,便于對(duì)視頻數(shù)據(jù)直接處理。把內(nèi)存塊放入隊(duì)列,啟動(dòng)設(shè)備開始采集,等待有數(shù)據(jù)并從隊(duì)列中取出,可以得到原始圖片數(shù)據(jù),再將此內(nèi)存塊放入隊(duì)列,循環(huán)進(jìn)行采樣。
3、視頻格式轉(zhuǎn)換設(shè)計(jì):將原始圖片數(shù)據(jù)判斷作相應(yīng)轉(zhuǎn)換。視頻網(wǎng)絡(luò)服務(wù)器需用到Jpg格式數(shù)據(jù);視頻編碼存儲(chǔ)需用到y(tǒng)uv420格式數(shù)據(jù);視頻顯示需用到rgb32格式數(shù)據(jù)。格式轉(zhuǎn)換引入libjpeg庫(kù),以庫(kù)個(gè)API進(jìn)行編程。
4、視頻網(wǎng)絡(luò)服務(wù)端設(shè)計(jì):創(chuàng)建一個(gè)單線程服務(wù)于網(wǎng)絡(luò)服務(wù)端。新建socket,綁定本地IP和端口號(hào),監(jiān)聽網(wǎng)絡(luò),一旦有客戶端鏈接,創(chuàng)建一個(gè)線程,將格式轉(zhuǎn)換產(chǎn)生的jpg圖片數(shù)據(jù)發(fā)送至客戶端,而主線程會(huì)一直監(jiān)聽網(wǎng)絡(luò)。
5、視頻編碼存儲(chǔ):視頻編碼和存儲(chǔ)是采用引FFmpeg庫(kù)的API來實(shí)現(xiàn)。先對(duì)FFmpeg進(jìn)行初始化,設(shè)置編碼的格式和參數(shù),打開編碼庫(kù),打開目標(biāo)存儲(chǔ)文件,將格式轉(zhuǎn)換產(chǎn)生的yuv420數(shù)據(jù)編碼并存入目標(biāo)存儲(chǔ)文件。
6、視頻顯示:視頻顯示由FPGA來完成。ARM將格式轉(zhuǎn)換生成的rgb32數(shù)據(jù)存入FPGA指定的空間,并發(fā)送控制指令開始FPGA顯示即可。
PCB電路搭建:
1.系統(tǒng)時(shí)鐘:PLL_Stream 組件產(chǎn)生108MHz 和 150MHz的頻率,為整個(gè)顯示模塊提供時(shí)鐘信號(hào);PLL_Sdram 組件主要產(chǎn)生 120MHz 的時(shí)鐘信號(hào),來對(duì) SDRAM 的控制讀寫操作。該模塊是把各種添加的組件接口相互連接,組建成一個(gè)硬件系統(tǒng)。所需要的時(shí)鐘信號(hào)都是由系統(tǒng)時(shí)鐘間接提供的。為對(duì)SDRAM進(jìn)行同步操作,所以hps_0 組件中的時(shí)鐘信號(hào)h2d_axi_clock 與SDRAM 組件的時(shí)鐘信號(hào)clock 以及 alt_vip_ vfr_0組件的時(shí)鐘信號(hào)clock_master 采用同一時(shí)鐘,本系統(tǒng)采用的是PLL 產(chǎn)生的pll_sdram.outclock0。主要使用了 Hard Processor System IP Cores、Frame Reader IP Cores、SDRAM Controller IP Cores、PLL_Altera IP Cores。是由 hps_0 來控制整個(gè)系統(tǒng)的運(yùn)行,由pll_sdram 提供整個(gè)模塊運(yùn)行所需要的時(shí)鐘信號(hào),alt_vip_vfr_0 來讀取內(nèi)存的視頻數(shù)據(jù)。
2:接口連接匹配:SDRAM 作為HPS向FPGA寫數(shù)據(jù)緩存設(shè)備,同時(shí)也供 alt_vip_vfr_0 讀取數(shù)據(jù)。所以 alt_vip_vfr_0的 Avalon master 接口也與sdram 的 salve 接口相連。HPS通過 light weight HPS-to-FPGA 接口與其 salve 接口連接實(shí)現(xiàn)。在系統(tǒng)中對(duì)這兩個(gè)IP 分配Light weight HPS-to-FPGA Bridge地址空間中的基地址,供HPS 對(duì)IP模塊進(jìn)行尋址訪問。
3:VGA顯示:第一個(gè)圖層和第二圖層模塊的顯示是由LOG_Generate_0來實(shí)現(xiàn)的,主要是在顯示屏上顯示“鄭州大學(xué)”字樣。背景層是由 timing_adapter_0 和alt_vip_tpc_0 組件來實(shí)現(xiàn)。 顯示控制模塊主要由 Clocked Video Output 組件來實(shí)現(xiàn),通過Avalon 接口與 Alpha Blending Mixer Avalon 接口相連接。直接輸出 VGA 格式的視頻圖像在顯示屏上。
結(jié)果分析:系統(tǒng)采集到的視頻畫面質(zhì)量良好,清晰度高,是一種可行的行車記錄儀解決方案。因系統(tǒng)中引入了各類格式轉(zhuǎn)化庫(kù)導(dǎo)致系統(tǒng)處理時(shí)間過長(zhǎng),導(dǎo)致fps降低,后續(xù)可將轉(zhuǎn)化庫(kù)進(jìn)行整合,以達(dá)到優(yōu)化轉(zhuǎn)換時(shí)間,提高fps。
參 考 文 獻(xiàn)
[1]《C程序設(shè)計(jì)語(yǔ)言(第2版)》Brian W.Kernighan Dennis M.Ritchie著機(jī)械工業(yè)出版社2012年
[2]《ARM&Linux;嵌入式系統(tǒng)教程》,馬忠梅等著 北京航空航天大學(xué)出版社,2004年
[3]《TCP/IP詳解 卷1:協(xié)議》W.Richard Stevens著 機(jī)械工業(yè)出版社 2013年
[4]《Verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程》夏宇聞 編著 北京航空航天大學(xué)出版社 2013年7月出版
[5]Altera 公司提供的數(shù)據(jù)手冊(cè) :《Video and Image Processing Suite》和 《Embedded Peripheral IP User Guide》
[6]友晶科技提供培訓(xùn)教程:《DE1_SOC Training Matirial》