新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 自適應實時視頻采集處理系統的設計與實現

        自適應實時視頻采集處理系統的設計與實現

        ——
        作者:王琦 王永生 王珺 西北工業大學電子信息學院 時間:2007-01-26 來源:《電子元器件應用》 收藏

        引言

        本文引用地址:http://www.104case.com/article/21007.htm

        在信息技術和計算機互聯網飛速發展的大背景下,數字視頻的需求與日俱增。視頻監控、視頻會議及各類便攜式、手持式pda等都需要實時的視頻采集和處理,與此同時,也伴隨著海量數據的產生,這就對視頻采集系統的處理能力、并行速度提出了更高的要求。而dsp以其高精度、快速度、小功耗、高并行性、易于集成等優點很好的滿足了這一要求,同時也越來越廣泛地應用于各類實時視頻和嵌入式系統。

        本文給出了一個基于ti高端dsp芯片tms320c6211的自適應實時視頻采集處理系統的設計及實現方法,利用該方法可自適應接收ntsc或pal視頻,并自動進行50/60hz場頻的檢測,以將其解碼為數字視頻,然后通過軟件設置所需的輸出格式與分辨率,來完成實時的視頻采集與處理。

        系統概述

        本視頻采集處理系統的總體結構如圖1所示。該系統主要由攝像頭、專用視頻a/d轉換器saa7114h、視頻緩存單元、核心處理器tms320c6211單元和輸出接口構成。其中攝像頭采集的ntsc/pal模擬視頻信號通過saa7114h視頻專用解碼芯片來實時接收且完成a/d和格式轉換,并送入同步fifo芯片sn74v215進行緩沖存儲。fifo半滿時,可向tms320c6211申請中斷以請求讀入數據。tms320c6211啟動edma以完成數字視頻的轉存,dsp外圍sdram和flash用來存儲對數字視頻所做的后期處理的(例如mpeg-4、h.264壓縮)數據與程序。cpld isplsi1032e用來產生系統中所需的邏輯控制信號、讀寫控制信號、同步信號和dsp中斷請求信號,輸出接口依據應用場合可以選擇10 mb/l00mb自適應以太網接口或pci接口來完成處理后數字視頻信號的輸出。

        系統電路設計及工作原理

        ◇電路設計

        視頻采集處理系統以tms320c6211 dsp和視頻解碼芯片saa7114h為核心。tms320c6211是ti定點dsp家族的高端產品,采用最先進的vliw硬件結構,在167 mhz在時鐘下,可達133mips,本文采用的tms320c6211的外部輸入時鐘頻率為25 mhz,倍頻后處理器主頻為150 mhz。視頻解碼芯片saa7114h是philips公司的主流視頻處理芯片,具有6個模擬信號輸入端,2個模擬信號處理通道和2個模擬反混疊濾波器,可采樣支持4:2:2、4:2:0、4:1:1和4:1:0格式,a/d采樣轉換精度可達到9bit。該芯片的控制接口是i2c接口。saa7114h與同步fifo及tms320c6211的連接電路見圖2所示(cpld及其它部分略去)。

        saa7114h的工作主頻為24.576mhz,dsp可通過i2c總線與其接口,視頻圖像經saa7114h第20管腳ai11輸人采樣后,可從i port和h port以16位寬度的數字圖像格式輸出,同時輸出同步信號igpv、igph、idq、fid,iclk以分別表示行、場同步、有效標志、輸出幀同步和像素同步信號,其時序見圖3所示。這些同步信號接入cpld后,結合dsp便可完成對視頻采集和同步的控制。

        saa7114h輸出的16位數字視頻信號會先后進入兩片512×18 bit(最高2 bit未使用)同步fifo sn74v215進行緩存,再經控制邏輯將fifo輸出的兩個16位數據合并為32位數據,dsp通過edma從數據總線ed0~ed31一次讀取。fif0由dsp mcbsp1接口輸出使能信號fen,而復位信號rs則結合cpld產生的讀寫使能nwen、nren等信號進行控制。

        ◇系統工作原理

        dsp配置mcbsp1接口的4個管腳clkr1、clkx1、fsr1、fsx1均為通用i\o信號,可分別用來模擬i2c總線以完成對sa7114h的配置,同時完成對fifo的控制。數字視頻數據的傳輸是通過edma完成的。此視頻系統包括視頻同步采集和差錯控制兩個過程,其采集過程如下:

        1)系統復位后,mcbsp1接口fen和rs均保持低電平,即fifo處于復位態,不允許寫入。

        2)采集開始時,dsp將rs置1,fifo脫離復位態,然后置fen為1,并通過cpld從saa7114h輸出的視頻幀同步信號fid來鎖存fen,同時開始視頻采集。

        3)fifo采集1行視頻數據后,控制邏輯將產生信號ext_int4以通知dsp,dsp通過edma響應ext_int4中斷,同時將fifo中的1行視頻數據讀入片內sram中。edma傳輸完1行數據后,再次提出中斷請求,dsp響應此中斷后,啟動2個edma傳輸,并分離視頻數據中的y、ch、cr分量。此后,dsp讀出整行數據后清除ext_int4中斷。

        如將數字圖像以y-cr-cb表示,y表示圖像亮度分量,cr,cb分別為色差分量。那么,本系統中的設計數字視頻輸出或存貯格式如下:

        1)視頻解碼器saa7114h輸出的視頻格式為:(cb0 y0)、(cr0 y1)、(cb2 y3)……

        2)同步fifo中存儲的視頻格式為:(cbo yo cro y1)、(cb2 y2 cr2 y3)……

        3)片內sram中的存儲格式為:(cb0 y0 cr0 y1)、(cb2 y2 cr2 y3)……

        4)片外sdram中的存儲格式為:y0 y1 y2 y3…、cbo cb2……、cr0 cr2……

        saa7114視頻數據采用隔行方式輸出,最終的sdram視頻數據則以逐行方式存儲,以便于直接對視頻序列進行mpeg、h.264壓縮或進行其它處理。系統差錯控制通過檢測fifo滿標志位來實現。每當采集完1行數字視頻數據后,dsp便自動取走此行數據,當視頻掃描到下1行時,硬件邏輯將繼續向fifo寫入數據,若dsp讀fifo的速率小于硬件邏輯寫速率,則fifo將出現寫溢出,從而導致數字視頻行數據丟失,此時cpld將啟動ext_int5中斷,以表示fifo溢出錯誤。而此時dsp將復位fifo,只有frs信號置1后才能撤銷ext_int5,以重新開始視頻圖像的采集。

        系統軟件設計

        ◇軟件流程

        自適應實時視頻采集處理系統軟件主要包括dsp系統配置、saa7114h配置和edma視頻處理程序,本文主要介紹saa7114h配置及視頻數據的讀取處理程序,其系統軟件流程見圖4所示。

        ◇核心控制軟件設計

        圖4中,系統的初始化包括以下操作:

        1)初試化csl庫,csl_init();

        2)初試化中斷,包括中斷向量重定位、開全局中斷、使能nmi(非屏蔽中斷)、中斷事件映射、使能可屏蔽中斷等。

        irq_resetall();

        edma_resetall();

        init_interrupts();

        3)初始化mcbsp1,nit_mcbsp1();

        4)初始化saa7114h,并通過主函數調用子函數saa7114_init()。

        saa7114h的配置是通過dsp模擬i2c總線來配置芯片內部各寄存器的,主要配置代碼如下:

        for(i=0;saa7114_defregs[i].nsubaddr!=0xff;i++)

        err|=iic_writereg(slaveaddr,saa7114_defregs[i].nsubaddr,

        saa7114_defregs[i].nvalue);/*向saa7114h所用寄存器寫入配置信息*/

        saa7114h的配置包括對輸入輸出視頻分辨率、飽和度、色度、輸出視頻格式等相關信息的設置,其重要寄存器的設置代碼如下:

        {ahorzinputstart, oxoo},

        {ahorzinputstartmsb, 0xoo},

        /*0xoooo=輸入水平起始于0象素*/

        {ahorzinputlength, oxdo},

        {ahorzinputlengthmsb,ox02},

        /*0x02d0=輸入水平長度720象素*/

        {avertinputstart,0x15},

        /*0x0015=輸入垂直起始于23行(pal制)*/

        {avertinputlength,0x22},

        {avertinputlengthmsb,0x01},

        /*0x0122=輸入垂直長度288+2行pal制)*/

        {ahorzoutputlength,0x60},

        {ahorzoutputlengthmsb,0x01},/*0x0160=輸出水平長度352象素*/

        {avertoutputlength,0x90},

        /*0x0090=輸出垂直長度144行(單場)*/

        {chromacontrol1,ox09},/*飽和度控制01h:for pal;o9h:for ntsc*/

        {luminancebrightness,0x80},

        /*亮度設置itu level*/

        完成系統初始化和saa7114h配置后,即可打開視頻采集通道,以開始視頻采集,包括初始化視頻捕捉emda通道和使能視頻捕捉edma傳輸,其代碼如下:

        init_edma_ext_int4(); init_edma_tcc8();

        init_edma_tcc9();

        edma_enable channel(hedma_ext_int4);

        edma_enable chaining(hedma_tcc8);

        edma_enable chaining(hedma_tcc9);

        使能視頻捕捉代碼如下:

        mcbsp_setpin(hmcbsp1,rs);/*rs="1"撤銷fifo復位信號*/

        mcbsp_setpin(hmcbsp1,fen);/*fen="1"使能fifo數據采集*/

        當采集到1行數據后,便可產生ext_int4中斷,以將fifo中的這行視頻數據讀入片內sram,同時從片內sram緩沖區的1行視頻數據中分別提取y、cb、cr分量。存入片外sdram緩沖區中的操作可采用edma設計,其首個edma操作如下:

        hedma_ext_int4=edma_open(edma_cha_extint4,

        edma_open_rest);/*edma通道鏈接到ext_int4事件上*/

        edma_configargs

        (hedma_ext_int4,edma_opt_rmk(edma_opt_pri_high,/*edma優先權設為"高"*/

        edma_opt_esize_32bit,/*32bits數據*/

        edma_opt_2ds_no,/*源一維傳輸*/

        edma_opt_sum_none,/*源地址保護不變*/

        edma_opt_2dd_yes,/*目的二維傳輸*/

        edma_opt_dum_inc,/*目的地址根據索引值修改*/

        edma_opt_tcint_yes,/*使能傳輸完成中斷*/

        edma_opt_tcc_of(edma_cha_extint4),/*設置傳輸結束碼*/

        edma_opt_link_no,/*禁止重新裝載*/

        edma_opt_fs_no,)/*每次ext_int4,edma傳輸1行視頻數據*/

        edma_src_rmk(video_port),/*源地址為視頻數據端口*/

        edma_cnt_rmk(edma_cnt_frmcnt_of(0xo),/*塊中數組長度為1行視頻數據*/

        edma_cnt_elecnt_of(xd.para/2)),/*數據元長度為1行視頻象素÷ 2*/

        eedma_dst_rmk(line_buff),/*目的地址為片內視頻緩沖器line_buff*/

        edma_idx_rmk(edma_idx_frmidx_of(0x0),/*edma傳輸完成后目的地址不變*/eedma_rld_rmk

        (edma_rld_elerld_of(xd.para/2),

        0));}/*結束*/

        結束語

        本文給出了基于tms320c6211的自適應實時視頻采集處理系統的設計方法,該系統可自適應接受ntsc或pal視頻,并以標準yuv格式存貯。同時,本系統還自帶flash及10m以太網接口,可與mpeg-4、h.264等視頻壓縮算法接口,可廣泛應用于實時視頻采集、視頻監控或其他嵌入式視頻處理系統之中。




        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 敦煌市| 龙州县| 安阳县| 阿克苏市| 东城区| 黔南| 秭归县| 于都县| 贵港市| 竹北市| 锦州市| 漳平市| 阿图什市| 金昌市| 洪洞县| 喀什市| 巍山| 拉孜县| 色达县| 吉木乃县| 马龙县| 红桥区| 广西| 六枝特区| 武安市| 丽江市| 鄄城县| 黑山县| 英德市| 柯坪县| 永修县| 米易县| 富阳市| 砚山县| 健康| 抚州市| 洪湖市| 平顶山市| 禄丰县| 涟水县| 金川县|