色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于FPGA的視頻應用OSD設計

          基于FPGA的視頻應用OSD設計

          作者: 時間:2011-09-25 來源:網(wǎng)絡 收藏

          通過EMIFA從DSP DM6?3接收數(shù)據(jù)和控制指令,通過DSP的端口1接收數(shù)據(jù),并將的信息疊加到數(shù)據(jù)上,輸出給視頻編碼器SAA7105。OSD的各功能模塊描述如下。

          地址譯碼模塊的數(shù)據(jù)端口與DSP DM6?3的EMIFA低32位數(shù)據(jù)接口,接收DM6?3發(fā)出的數(shù)據(jù)與控制信息,這些數(shù)據(jù)和控制信息是DM6?3發(fā)出的原始32位數(shù)據(jù)。地址譯碼模塊將接收到的OSD數(shù)據(jù),如OSD的內容等,以32位數(shù)據(jù)格式放入到的內部FIFO中。而控制信息主要是通過一組控制寄存器對OSD實現(xiàn)控制。

          與DSP直接連接的模塊還有視頻接口模塊。視頻接口模塊與DSP的視頻端口2相連,存儲來自DSP視頻端口的數(shù)據(jù)與控制信息。這些控制信息被直接傳輸給OSD多路控制模塊,同時控制信息也直接控制視頻解碼器SAA7105。

          OSD控制邏輯把從控制寄存器組得到的控制信息輸出到OSD的各個功能模塊,實現(xiàn)對OSD的控制。寄存器組主要分為兩個部分:一是異步寄存器組,向OSD發(fā)送如復位、OSD使能和選擇數(shù)據(jù)寬度的控制信息;另一個是同步寄存器組,主要控制OSD的位置信息。

          OSD解碼模塊根據(jù)控制邏輯的控制信息,從FIFO中取出要顯示的數(shù)據(jù),以與視頻數(shù)據(jù)同步的方式輸出到OSD CLUT模塊。從FIFO中獲得的數(shù)據(jù)是原始的DSP 32位數(shù)據(jù),而OSD CLUT模塊需要的數(shù)據(jù)是8/16位的,所以OSD解包模塊需要以一定的規(guī)則將32位數(shù)據(jù)解包,以視頻端口的頻率將32位數(shù)據(jù)以8/16的寬度傳輸給OSD CLUT模塊。

          FIFO模塊的另外一個功能是向DMA事件發(fā)生器模塊傳遞FIFO的狀態(tài)信息,如FIFO滿或FIFO空。DMA事件發(fā)生器監(jiān)控這些事件,如果發(fā)生,則以中斷的模式發(fā)送給DM6?3,以實現(xiàn)對FIFO的正確讀寫操作。

          OSD CLUT模塊為從OSD解包模塊接收的每個象素的數(shù)據(jù)查找YCbCr的對應值,并控制這些OSD CLUT數(shù)據(jù)的輸出順序。這種轉換關系是由DSP通過24位的數(shù)據(jù)端口傳送過來的。OSD CLUT模塊的數(shù)據(jù)直接輸出給OSD多路控制器模塊。

          OSD多路控制模塊根據(jù)從OSD CLUT模塊接收到的Alpha控制位確定輸出視頻數(shù)據(jù),如果當前為OSD信息,即Alpha控制位有效,則輸出OSD數(shù)據(jù)給數(shù)據(jù)轉換模塊。否則,輸出從視頻接口模塊接收的原始視頻數(shù)據(jù),以此來實現(xiàn)OSD功能。

          OSD多路控制器輸出的數(shù)據(jù)并沒有直接送給視頻解碼器,而是通過數(shù)據(jù)轉換模塊,根據(jù)具體的條件,進行必要的數(shù)據(jù)格式轉換。由SAA7105的接口時序可知,當SAA7105配置為復合視頻輸出時,其要求的數(shù)據(jù)為單時鐘沿數(shù)據(jù),此時數(shù)據(jù)轉換模塊不作任何工作,將從OSD多路控制模塊接收的數(shù)據(jù)原封不動地傳輸給SAA7105;如果SAA7105配置為VGA或HDTV輸出模式時,需要雙時鐘沿數(shù)據(jù),此時數(shù)據(jù)轉換模塊將從OSD控制器接收到的單時鐘沿數(shù)據(jù)轉換成雙時鐘沿數(shù)據(jù),輸出給視頻解碼器SAA7105。

          由此可見,完成了OSD的所有工作。如果要顯示OSD內容,DM6?3只需要通過EMFIA口向FPGA發(fā)送控制指令即可,這些指令當然包括OSD的內容及位置信息。

          OSD控制

          由XC3S250E實現(xiàn)的OSD根據(jù)接收到的OSD位置及內容信息進行OSD顯示,對OSD顯示的內容沒有任何限制,非常靈活方便。下面以OSD漢字顯示為例說明OSD的控制操作。

          要正確的顯示漢字,就必須將輸入的漢字內碼轉換成對應的區(qū)位碼。這一功能我們通過函數(shù)Uint32 Code_Converse(unsigned char *CodeNPointer),其輸入為指針,指向要轉換漢字。返回值為該漢字對應的區(qū)位碼。OSD的顯示由函數(shù)OSDHZ?isplay實現(xiàn):
          void OSDHZ_ Display{
          Uint8 *pFrame
          Uint32 pitch
          OSDUTIL_Point* loc
          Uint32 CodeQ
          OSDHZ?ont *font
          Uint8 fgColor
          Uint8 bgColor
          }
          其中,Uint8 *pFrame為OSD輸出的Buffer緩沖區(qū);Uint32 pitch為每行顯示的象素值;OSDUTIL_Point *loc為第一個字符的顯示位置;Uint32 CodeQ為要顯示漢字的區(qū)位碼;OSDHZ?ont *font為顯示漢字所用的字體;Uint8 fgColor顯示漢字的前景色;Uint8 bgColor顯示漢字的背景色。
          所以,如果需要顯示漢字,只需要將漢字進行必要的碼制轉換,然后將轉換后的區(qū)位碼,給出顯示的位置,輸出給OSD FPGA即可。當然要顯示漢字,漢字字庫是必不可少的。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉