<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 采用FPGA實(shí)現視頻應用中的OSD設計

采用FPGA實(shí)現視頻應用中的OSD設計

作者: 時(shí)間:2011-07-28 來(lái)源:網(wǎng)絡(luò ) 收藏
OSD FPGA通過(guò)EMIFA從DSP DM6?3接收OSD數據和控制指令,通過(guò)DSP的視頻端口1接收視頻數據,并將OSD的信息疊加到視頻數據上,輸出給視頻編碼器SAA7105。OSD的各功能模塊描述如下。
地址譯碼模塊的數據端口與DSP DM6?3的EMIFA低32位數據接口,接收DM6?3發(fā)出的數據與控制信息,這些數據和控制信息是DM6?3發(fā)出的原始32位數據。地址譯碼模塊將接收到的OSD數據,如OSD的內容等,以32位數據格式放入到FPGA的內部FIFO中。而控制信息主要是通過(guò)一組控制寄存器對OSD實(shí)現控制。
與DSP直接連接的模塊還有視頻接口模塊。視頻接口模塊與DSP的視頻端口2相連,存儲來(lái)自DSP視頻端口的數據與控制信息。這些控制信息被直接傳輸給OSD多路控制模塊,同時(shí)控制信息也直接控制視頻解碼器SAA7105。
OSD控制邏輯把從控制寄存器組得到的控制信息輸出到OSD的各個(gè)功能模塊,實(shí)現對OSD的控制。寄存器組主要分為兩個(gè)部分:一是異步寄存器組,向OSD發(fā)送如復位、OSD使能和選擇數據寬度的控制信息;另一個(gè)是同步寄存器組,主要控制OSD的位置信息。
OSD解碼模塊根據控制邏輯的控制信息,從FIFO中取出要顯示的數據,以與視頻數據同步的方式輸出到OSD CLUT模塊。從FIFO中獲得的數據是原始的DSP 32位數據,而OSD CLUT模塊需要的數據是8/16位的,所以OSD解包模塊需要以一定的規則將32位數據解包,以視頻端口的頻率將32位數據以8/16的寬度傳輸給OSD CLUT模塊。
FIFO模塊的另外一個(gè)功能是向DMA事件發(fā)生器模塊傳遞FIFO的狀態(tài)信息,如FIFO滿(mǎn)或FIFO空。DMA事件發(fā)生器監控這些事件,如果發(fā)生,則以中斷的模式發(fā)送給DM6?3,以實(shí)現對FIFO的正確讀寫(xiě)操作。
OSD CLUT模塊為從OSD解包模塊接收的每個(gè)象素的數據查找YCbCr的對應值,并控制這些OSD CLUT數據的輸出順序。這種轉換關(guān)系是由DSP通過(guò)24位的數據端口傳送過(guò)來(lái)的。OSD CLUT模塊的數據直接輸出給OSD多路控制器模塊。
OSD多路控制模塊根據從OSD CLUT模塊接收到的Alpha控制位確定輸出視頻數據,如果當前為OSD信息,即Alpha控制位有效,則輸出OSD數據給數據轉換模塊。否則,輸出從視頻接口模塊接收的原始視頻數據,以此來(lái)實(shí)現OSD功能。
OSD多路控制器輸出的數據并沒(méi)有直接送給視頻解碼器,而是通過(guò)數據轉換模塊,根據具體的應用條件,進(jìn)行必要的數據格式轉換。由SAA7105的接口時(shí)序可知,當SAA7105配置為復合視頻輸出時(shí),其要求的數據為單時(shí)鐘沿數據,此時(shí)數據轉換模塊不作任何工作,將從OSD多路控制模塊接收的數據原封不動(dòng)地傳輸給SAA7105;如果SAA7105配置為VGA或HDTV輸出模式時(shí),需要雙時(shí)鐘沿數據,此時(shí)數據轉換模塊將從OSD控制器接收到的單時(shí)鐘沿數據轉換成雙時(shí)鐘沿數據,輸出給視頻解碼器SAA7105。
由此可見(jiàn),FPGA完成了OSD的所有工作。如果要顯示OSD內容,DM6?3只需要通過(guò)EMFIA口向FPGA發(fā)送控制指令即可,這些指令當然包括OSD的內容及位置信息。
OSD控制
由XC3S250E實(shí)現的OSD設計根據接收到的OSD位置及內容信息進(jìn)行OSD顯示,對OSD顯示的內容沒(méi)有任何限制,非常靈活方便。下面以OSD漢字顯示為例說(shuō)明OSD的控制操作。
要正確的顯示漢字,就必須將輸入的漢字內碼轉換成對應的區位碼。這一功能我們通過(guò)函數Uint32 Code_Converse(unsigned char *CodeNPointer),其輸入為指針,指向要轉換漢字。返回值為該漢字對應的區位碼。OSD的顯示由函數OSDHZ?isplay實(shí)現:
		void OSDHZ_ Display

{

Uint8 *pFrame

Uint32 pitch

OSDUTIL_Point* loc

Uint32 CodeQ

OSDHZ?ont *font

Uint8 fgColor

Uint8 bgColor

}

其中,Uint8 *pFrame為OSD輸出的Buffer緩沖區;Uint32 pitch為每行顯示的象素值;OSDUTIL_Point *loc為第一個(gè)字符的顯示位置;Uint32 CodeQ為要顯示漢字的區位碼;OSDHZ?ont *font為顯示漢字所用的字體;Uint8 fgColor顯示漢字的前景色;Uint8 bgColor顯示漢字的背景色。

所以,如果需要顯示漢字,只需要將漢字進(jìn)行必要的碼制轉換,然后將轉換后的區位碼,給出顯示的位置,輸出給OSD FPGA即可。當然要顯示漢字,漢字字庫是必不可少的。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Xilinx osd

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>