摘 要: DM6446在VENC標準模式下視頻輸出的分辨率有限,不適用于高清視頻的顯示和位圖層控制界面的繪制,因此需要將其配置成非標準模式下的高清數字視頻輸出。這里通過直接對芯片內部PLL以及VENC時序發生器的配置,產生顯示高清數字視頻所需的像素時鐘和同步控制時序信號,VENC的輸出再經由TFP410提供的DVI顯示接口,最終實現了720P,1080P以及WUXGA分辨率下的高清數字視頻顯示。此方法電路實現簡單,系統配置靈活,且視頻顯示穩定,為基于DM6446的嵌入式多媒體系統高清數字視頻顯示接口提供了有效的參考方案。
關鍵詞: DM6446; TFP410; DVI; 高清數字視頻
中圖分類號: TN919?34; TP391 文獻標識碼: A 文章編號: 1004?373X(2013)16?0081?04
0 引 言
TI公司推出的DM6446芯片在視頻處理領域被廣泛的使用,其基于ARM+DSP雙核架構,同時具備了通用處理器(GPP)和專用數字處理器(DSP)的功能[1]。它的視頻處理子系統(VPSS)同時包含了視頻采集的接口——視頻處理前端(VPFE),以及視頻顯示的接口——視頻處理后端(VPBE),這也是其能夠在視頻處理領域嶄露頭角的重要組成部分[2?3]。DM6446能夠同時支持標準時序PAL/NSTC制式的數字和模擬視頻輸出,也支持非標準模擬VGA顯示接口[4],但這些模式的視頻輸出的分辨率都較低,不適用于需要大分辨率顯示的場合。
要讓其支持高清顯示,就必須通過編程配置,實現高清顯示所需的時序控制信號。DM6446支持并行的24位RGB888視頻數據輸出,經過外部芯片編碼轉換后送給顯示器顯示。這里采用的編碼芯片是TFP410,它接收并行的圖像數據以及同步控制信號,經過編碼轉換后,按照DVI標準傳輸給顯示器進行顯示[5]。
文中第1部分介紹了高清數字視頻接口設計的整體結構;第2部分介紹了TFP410的配置和使用方法;第3部分介紹了實現高清數字顯示所需的VENC的參數配置方法,同時結合OSD窗口配置給出了實際的高清數字視頻顯示結果。
在目標板上, 720P(1 280×720@60 Hz)、1 080P(1 920×1 080@60 Hz)以及WUXGA(1 920×1 200@60 Hz)分辨率的數字視頻顯示都能夠穩定運行,說明這里提出的高清數字視頻顯示接口設計方案是正確、可行的,對基于DM6446高清數字視頻顯示應用具有重要參考意義。
1 高清數字視頻顯示接口整體結構
整個DVI高清數字視頻顯示接口的結構如圖1所示,主要可分為DM6446的VPSS接口部分以及DVI驅動器TFP410接口兩部分。
圖1 DVI高清數字視頻顯示接口整體結構
VPFE從外部采集到視頻數據后存儲于DDR2中的指定位置,VPBE中的在屏顯示模塊(OSD)也在DDR2中有對應的緩沖區,這些模塊與DDR2之間的數據傳輸都有專門的讀寫邏輯控制,以保證數據的傳輸帶寬滿足系統要求。對于高清顯示的支持,主要是對VPBE中的視頻編碼模塊(VENC)的時序控制部分的正確配置,包括VENC時鐘、OSD時鐘和輸出給TFP410的像素時鐘,以及視頻的行同步、場同步信號等,這些在后面會有具體介紹。
TFP410主要起到視頻數據編碼的作用,將前面由VENC輸出的圖像數據以及同步控制信號經編碼后用差分串行的方式(T.M.D.S)傳輸給顯示器,這可以保證數據在傳輸過程中的抗干擾能力。同時,TFP410包含有一個I2C接口,使得DSP可以通過它配置DVI驅動器的工作模式。在系統上電后,TFP410能夠檢測到顯示器是否連接,這樣DSP便可以通過檢查相應的狀態位來決定是否發送視頻數據。
2 TFP410的工作模式配置
TFP410支持的最高像素時鐘為165 MHz,能夠滿足高清數字視頻顯示的需求,其總共有兩種配置方法:引腳直接配置法和I2C配置法。采用引腳直接配置的方法,上電后芯片可以直接工作在既定模式下,但是功能比較單一,工作模式不夠靈活。采用I2C配置的方法,便可以根據需要調整芯片的工作模式,包括數據采集的時鐘沿、數據位寬、數據采集延時等。通過讀取TFP410中的相關狀態寄存器,DSP端的應用程序還能夠獲得圖像傳輸的相關信息,包括水平、垂直全局分辨率,以及顯示器是否連接等。
TFP410的I2C可訪問寄存器共有256個,其中絕大多數是保留使用的,在實際使用中,需要操作的寄存器更是少數。在這里,只需配置寄存器CTL_1_MODE、CTL_2_MODE、CTL_3_MODE即可,其他的都可以按照默認配置,一般情況下無需改變。設置CTL_1_MODE. PD#=1使芯片從節電模式恢復到普通模式;設置CTL_1_MODE.HEN=1、CCTL_1_MODE.VEN=1使能行、場同步信號輸入,設置CCTL_1_MODE.TDIS=0使能芯片T.M.D.S電路輸出。CTL_2_MODE主要用于主機檢測顯示器狀態,而CTL_3_MODE則主要負責數據采集過程中的時延控制。對TFP410的基本配 置流程如圖2所示。
在圖2中,僅僅是列出了必須配置的寄存器,其余寄存器可以不用修改,一般不影響使用。配置CTL_1_MODE=0x37,使器件工作模式為:24位數據寬度、單端像素時鐘(VCLK)輸入、在VCLK上升沿采樣輸入數據。配置好TFP410后,DM6446只要按照高清數字視頻的標準時序輸出相應的圖像數據和同步控制信息,就能夠將OSD上的內容通過DVI接口顯示到LCD顯示器上。
3 VENC及OSD配置
3.1 VENC配置
當VENC工作在標準模式(Standard Mode)下時,只能夠輸出標準的PAL/NTSC同步時序,在此模式下輸出的畫面分辨率最大只有720×576,這在許多場合已經不能滿足使用需求。其實VENC本身能夠支持的畫面分辨率遠不止于此,只是若要輸出大分辨率的畫面,就必須自己編程產生視頻同步控制時序,也即讓VENC工作于非標準模式(Non?standard Mode)[6?8]。
VENC主要由3大塊組成:模擬視頻編碼模塊(數模轉換DACs)、數字視頻輸出模塊(數字LCD控制器)以及時序發生器(Timing Generator)。其中,模擬視頻編碼模塊只能工作于標準模式下,因此,在配置輸出非標準模式下的數字畫面時,應該禁用DAC。對于數字LCD控制器部分的編程,主要是設置輸出圖像數據的格式(并行24位RGB888)以及配置輸出LCD_OE(數據輸出使能)指示信號。而對時序發生器的編程配置,則是輸出高分辨率數字畫面的關鍵所在,整個VPSS的時鐘分布控制結構如圖3所示。
圖3 VPSS時鐘分布控制結構
根據VESA DMT標準,顯示1 080P畫面所需像素時鐘[9]為148.5 MHz。從圖3可以看到,VPSS的時鐘共有4個來源可以選擇:其中MXI為芯片主要輸入時鐘,其頻率僅有24 MHz,不能滿足要求;PCLK是由外部輸入的視頻采集時鐘,在這里也不適用;VPBECLK是專門的輔助時鐘輸入,而PLL2_divider1是內部倍頻時鐘,這兩者經過配置都可以在高清數字視頻顯示接口設計中使用。在這里,主要是采用PLL2_divider1時鐘。由PLL2提供給VPSS的時鐘與輸入時鐘的關系如下所示[10]:
[VPSS_CLK=27×PLLM+1DIVIDER1+1 MHz]
通過配置鎖相環PLL2控制器的PLLM=21,DIVIDER1=3,便可以得到148.5 MHz的像素時鐘。通過寄存器VPBE_PCR.VENC_DIV位可以選擇VENC_CLK是否為VPSS_CLK的一半,當VENC_DIV=1(需要VPSS_CLKCTL.DACCLKEN=1)時,輸入時鐘將被2分頻,VENC_CLK變成74.25 MHz,這正好是顯示720P畫面所需的像素時鐘。而且,148.5 MHz的像素時鐘也能夠同時支持WUXGA畫面的顯示。相同的時鐘輸入能夠同時滿足多種高清分辨率圖像的顯示要求,這就為不同顯示分辨率間的切換提供了編程上的便利性。
輸出給TFP410的像素時鐘VCLK,以VENC_CLK為基準,可以通過時鐘樣式寄存器VENC_DCLKPTNn以及VENC_DCLKPTNnA(n=0~3)自定義自己的輸出波形和周期,可配置的波形周期為64位。從圖3中可以看到,整條VCLK輸出鏈路還受內部使能位VCLKE、極性控制位VCLKP、以及輸出管腳三態控制VCLKZ的層層控制。要輸出時鐘,則必須正確配置所有的控制位。在這里,通過配置,使得輸出時鐘VCLK與內部VENC_CLK相等,時鐘的流向如圖3中的加粗黑實線所示。
經過DCLK的配置,已經能夠得到顯示720P,1 080P、WUXGA畫面所需的74.25 MHz及148.5 MHz的像素時鐘VCLK。VENC在VCLK的上升沿輸出圖像數據,不過由于實際傳輸的數據有些是用于視頻消隱的,必須有相關信號來指示有效視頻數據的范圍,這就是視頻同步時序信號。視頻同步主要有行同步(HSYNC)和場同步(VSYNC),具體定義可以參見相關文檔[3]。最后,依據VESA DMT標準和實測結果,得到的整個VENC相關寄存器配置情況如表1所示。
表1主要給了在只提供148.5 MHz像素時鐘情況下,要實現720P,1 080P和WUXGA分辨率畫面顯示,VENC所必須配置的寄存器的值。按照表中的參數進行設置后,輸出時鐘VCLK、編碼時鐘VENC_CLK以及窗口時鐘OSD_CLK三者相等。VPBE_PCR可用于配置時鐘頻率在74.25 MHz和148.5 MHz之間切換,以滿足在720P和1 080P(或WUXGA)顯示分辨率下系統對編碼時鐘的需求。
3.2 OSD配置
經過VENC的配置,系統已經支持高清數字視頻的輸出,由于VENC編碼數據來自于OSD模塊,所以要輸出有效數據,還必須對OSD模塊進行配置。DM6446的OSD模塊共支持兩個視頻窗口VIDWIN0/1和兩個位圖窗口OSDWIN0/1,還有透明矩形光標窗口(Regular Cursor)。其中,視頻窗口VIDWIN0作為所有窗口的畫布窗口,其他所有窗口的顯示范圍都必須在此窗口內,而且在顯示其他窗口之前也必須使能VIDWIN0。所有的OSD窗口都有獨立的使能控制位,當所有的窗口都不使能時,VENC將只顯示OSD中由寄存器MODE.BCLUT、MODE.CABG指定的背景色。
OSD窗口位置的確定與VENC中的同步時序有關。所有窗口的基準位置為(BASEX,BASEY),同時利用(xxx_XP,xxx_YP)來確定相對位置。一般的,設置BASEX=HSTART,BASEY=VSTART,這樣,窗口的基準點便與顯示器的左上角零點對齊。由于VIDWIN0是所有窗口的畫布窗口,因此在實際使用中使該窗口的大小與VENC中指定的顯示分辨率相等,從而使VIDWIN0完全覆蓋整個顯示器屏幕。
視頻窗口和位圖窗口在DDR2 SDRAM中都有對應的緩沖區用于保存窗口中的像素數據,緩沖區的起始位置由xxx_ADR指定,窗口數據行偏移量由xxx_OFST指定。起始位置寄存器xxx_ADR的值是可以動態改變的,并且改變后的值只有在下一幀同步信號(VSYNC)到來時才起作用,這樣我們便可以在內存中開辟多個窗口緩沖區,以增加窗口的顯示效率。這里配置OSD窗口主要是為VENC提供顯示數據,其他有關OSD模塊的配置可以參考其說明文檔[3],這里不贅述。
3.3 實際顯示效果
在實際顯示OSD窗口的過程中,要保證VIDWIN0的分辨率不超過VENC中顯示的有效分辨率(HVALID x VVALID),而其他所有OSD窗口的范圍都不能超出VIDWIN0,否則將會導致畫面顯示不正常。雖然VENC輸出分辨率已經能夠達到1 080P和WUXGA,但在這個高清分辨率顯示下,只有VIDWIN0能夠用于視頻顯示,其他窗口必須保持關閉狀態,這主要受制于OSD模塊的傳輸帶寬。而在VENC配置為720P分辨率的情況下,能夠穩定實現多個窗口同時顯示,如圖4所示。
在這里,VIDWIN0、VIDWIN1、OSDWIN0的大小分別為1 280×720,800×600和640×480,像素格式分別為3字節RGB888、2字節的YUV422和2字節的RGB565。此時顯示器顯示的行同步信號頻率為45.2 kHz,幀同步頻率為60.2 Hz,分辨率為1 280×720,說明高清數字視頻顯示接口工作正常,能夠穩定實現在高分辨率下的多窗口同時在屏顯示。
4 結 語
利用DM6446的數字視頻輸出接口,搭配DVI驅動芯片TFP410,通過對芯片內部時鐘以及視頻編碼模塊(VENC)時序發生器的正確配置,實現了電路結構簡單、配置靈活的高清數字視頻顯示接口。在目標板上,這里提出的高清數字視頻顯示接口方案能夠穩定顯示720P、1 080P及WUXGA分辨率的畫面,說明該方案易用、可行,具有實用性,對于擴展基于DM6446的數字視頻顯示接口具有重要參考意義。
參考文獻
[1] Texas Instruments. TMS320DM6446 digital media system?on?chip [R]. USA: Texas Instruments, 2010.
[2] Texas Instruments. TMS320DM644x DMSoc video processing front end (VPFE) user’s guide [R]. USA: Texas Instruments, 2010.
[3] Texas Instruments. TMS320DM644x DMSoc video processing back end (VPBE) user’s guide [R]. USA: Texas Instruments, 2011.
[4] 周永錄,姚寒冰,代紅兵,等.一種基于DaVinci DM6446的非標準VGA接口設計與實現[J].計算機應用研究,2008,25(12):3841?3843.
[5] Texas Instruments. TI PanelBus? digital transmitter [R]. USA: Texas Instruments, 2011.
[6] 王艷艷,郅晨,張俊業.基于TMS320DM6446的數字視頻輸出顯示技術的設計與實現[J].計算機工程與設計,2009,30(4): 811?815.
[7] 張彥龍.基于DM6446的立體圖像顯示系統和視頻捕捉系統的設計與實現[D].天津:天津大學,2007.
[8] GONZALES Juan, FRAGER Neal, LINK Ryan. Digital video using DaVinci SoC [R]. USA: Texas Instruments, 2007.
[9] VESA. Proposed VESA and industry standards and guidelines for computer display monitor timing (DMT) [S]. [S.l.]: VESA, 2008.
[10] Texas Instruments. TMS320DM644x DMSoc ARM subsystem reference guide [M]. USA: Texas Instruments, 2010.