0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

電子設(shè)計 ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師吳畏 ? 2018-06-29 14:13 ? 次閱讀

0 引言

隨著社會信息化程度的不斷提高,人們對視頻處理的要求越來越高,視頻處理系統(tǒng)處理的數(shù)據(jù)量也越來越大。在嵌入式視頻處理系統(tǒng)中,目前主流的方案主要有3種:基于ARM、基于DSP和基于FPGA。其中FPGA不同于其他兩種芯片,它是一種半定制電路,擁有大量邏輯單元,通過配置這些邏輯單元,可以構(gòu)建相應(yīng)的電路以實現(xiàn)所需的功能。正因為其具有基于硬件加速的特點,F(xiàn)PGA被廣泛應(yīng)用于高速視頻處理系統(tǒng)。對于這類視頻處理系統(tǒng),構(gòu)建可編程片上系統(tǒng)(System-on-a-Programmable-Chip,SOPC)是目前的主流方案。SOPC是一種片上系統(tǒng),即在一塊芯片上實現(xiàn)整個系統(tǒng)的邏輯功能[1],且具有設(shè)計便捷、配置靈活、可在線調(diào)試、系統(tǒng)可復(fù)用等特點。在視頻處理系統(tǒng)的接口中,HDMI最新的高清晰度多媒體接口[2],具有高帶寬、小體積、高智能、內(nèi)容保護等優(yōu)點,被廣泛應(yīng)用于高清顯示器、高清電視之中[3]。

針對基于SOPC的視頻處理系統(tǒng),本文提出一種基于FPGA的HDMI多模式顯示模塊設(shè)計方法,可為SOPC提供一種通用的HDMI多模式顯示組件,并可適用于多種HDMI發(fā)送器以及不同參數(shù)的視頻。通過該模塊,可以實現(xiàn)多路視頻的顯示,并可配置每路視頻的位置與透明度,為視頻處理系統(tǒng)實現(xiàn)多模式的顯示提供了解決方案。

1 總體方案設(shè)計

為了驅(qū)動HDMI發(fā)送芯片,以及通過ALPHA混合實現(xiàn)多模式顯示,需要根據(jù)HDMI的工作時序設(shè)計相應(yīng)的驅(qū)動電路,而且還需根據(jù)指定的坐標(biāo)信息與透明度參數(shù),對各通道視頻的數(shù)據(jù)進行多級ALPHA混合計算,最后將驅(qū)動信號以及視頻數(shù)據(jù)輸出。根據(jù)以上功能需求,將整個模塊分為兩個分模塊,即HDMI驅(qū)動模塊和ALPHA混合模塊。系統(tǒng)框圖如圖1所示。

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

在HDMI驅(qū)動模塊中,根據(jù)HDMI接口的工作時序,設(shè)計兩個計數(shù)器分別對時鐘信號與行進行計數(shù),在相應(yīng)的時鐘周期生成行同步信號、場同步信號和數(shù)據(jù)總線使能信號[4]。設(shè)計一個坐標(biāo)指示電路,通過兩個計數(shù)器對當(dāng)前輸出的有效視頻數(shù)據(jù)的行和列進行計數(shù),并輸出計數(shù)值,此計數(shù)值用于在相應(yīng)坐標(biāo)讀取視頻數(shù)據(jù)與ALPHA混合計算。

例化4個ALPHA混合模塊(數(shù)量可根據(jù)需求設(shè)定),最多可以使4路視頻進行多模式顯示。在ALPHA混合模塊中,根據(jù)坐標(biāo)指示電路生成的計數(shù)值,在指定的坐標(biāo)區(qū)域發(fā)出數(shù)據(jù)讀取信號對緩存的視頻數(shù)據(jù)進行讀取,并且在指定的區(qū)域生成相應(yīng)alpha值(透明度)。設(shè)計一個ALPHA混合計算電路,其負責(zé)對前景視頻數(shù)據(jù)與后景視頻數(shù)據(jù)進行ALPHA混合。ALPHA混合計算電路采用流水線設(shè)計方法,將整個計算過程分為多級進行ALPHA混合計算,每一級在一個時鐘周期內(nèi)的計算結(jié)果保存在寄存器中,提供給下一級在下個時鐘周期進行計算。ALPHA混合計算會導(dǎo)致數(shù)據(jù)輸出延遲,因此再次例化一個坐標(biāo)指示電路,將同步信號、場同步信號和數(shù)據(jù)總線使能信號都延遲相應(yīng)周期后輸入該電路,以產(chǎn)生新的同步的行和列的計數(shù)值供下一級的ALPHA混合模塊使用。本實例提供4通道分割顯示與PIP(雙通道的畫中畫)顯示兩種顯示模式用于驗證。當(dāng)配置的顯示模式為4通道分割顯示時,第一通道視頻作為前景首先和預(yù)設(shè)的底色背景進行ALPHA混合,其中重疊部分背景的透明度為0(完全不顯示),前景的透明度為1(完全顯示),再將混合后的視頻數(shù)據(jù)作為背景與第二通道的視頻進行ALPHA混合,按此方案依次完成4個通道的ALPHA混合,每個通道的位置互不重疊。而進行PIP顯示時第一通道的視頻作為背景,第二通道的視頻作為前景顯示在顯示器中心位置,重疊部分背景的透明度為0,前景的透明度為1。

2 HDMI驅(qū)動模塊設(shè)計

HDMI驅(qū)動模塊主要負責(zé)根據(jù)不同的配置信息輸出相應(yīng)的驅(qū)動信號,使視頻數(shù)據(jù)能夠通過HDMI發(fā)送器正常輸出。

2.1 HDMI發(fā)送器工作方式

視頻數(shù)據(jù)通過HDMI進行傳輸時,HDMI接收/發(fā)送芯片通過最小化傳輸差分信號(TMDS)的編碼技術(shù)將其編碼為數(shù)據(jù)包,雖然FPGA支持多種標(biāo)準(zhǔn)LVDS(低電壓差分信號),但其不能完全兼容TMDS(過渡調(diào)制差分信號),因此需要通過HDMI接收/發(fā)送芯片來實現(xiàn)HDMI接口功能。FPGA與此類HDMI芯片的傳輸通常通過一組并行總線實現(xiàn), 包含了數(shù)據(jù)總線、IIC總線、驅(qū)動信號。其中數(shù)據(jù)總線用于傳輸視頻數(shù)據(jù),IIC總線用于FPGA配置HDMI發(fā)送芯片,驅(qū)動信號中的HDMI_CLK為同步時鐘信號,DE_HDMI為數(shù)據(jù)總線使能信號,HSY_HDMI為行同步信號,VSY_HDMI為場同步信號。本模塊正常工作需要將HDMI芯片配置為RGB輸出。HDMI接口傳輸RGB信號的工作時序與VGA接口的工作時序類似,但無需將數(shù)字信號轉(zhuǎn)換為模擬信號。DE_HDMI、HSY_HDMI、VSY_HDMI以固定的時間關(guān)系輸出,HDMI_CLK則作為基準(zhǔn)時鐘與這些信號同步。

在一場的時間段,根據(jù)視頻刷新頻率以及分辨率的不同,處于同步段時行同步信號首先保持一定周期的高電平,之后置低電平并在間隔相應(yīng)的周期后輸出視頻數(shù)據(jù),這個間隙為顯示后沿。視頻數(shù)據(jù)輸出完成后間隔相應(yīng)的周期后開始下一行的傳輸,這個間隙為顯示前沿。場同步信號的時序依然是首先保持一定周期的高電平,之后置低電平,間隔相應(yīng)的行時間(傳輸一行數(shù)據(jù)所需的時鐘周期)后輸出一場中所有的行,所有行的視頻數(shù)據(jù)傳輸完成后間隔相應(yīng)的行時間后開始下一行的傳輸。其時序分段如圖2所示。

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

其中VSY_HDMI的時序分段與HSY_HDMI相同。

2.2 Verilog HDL代碼設(shè)計

在FPGA與HDMI發(fā)送器之間,傳輸視頻數(shù)據(jù)的方式為隨同步時鐘逐個傳送像素數(shù)據(jù),對于每場數(shù)據(jù),順序為從第一行開始從左至右傳送,傳送完畢后開始傳送第二行,依次傳送直至最后一行數(shù)據(jù)傳送完畢。因此在代碼中定義兩個計數(shù)值,分別為x軸計數(shù)值x_cnt與y軸計數(shù)值y_cnt,x_cnt在每個時鐘周期遞增1,計數(shù)完一行清零;y_cnt則是x_cnt每計數(shù)完一行遞增1,一場的所有行全部計數(shù)完清零。計數(shù)器Verilog HDL代碼如下:

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

其中HDMI_HTT為傳輸一行所需的時鐘周期的個數(shù),HDMI_VTT為傳輸一場中所有行的數(shù)量。根據(jù)計數(shù)值,在相應(yīng)的時間拉高行同步信號和場同步信號,其他時間置低電平,其Verilog HDL代碼如下:

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

其中HDMI_HST為行同步段占用的時鐘周期的個數(shù),HDMI_VST為場同步段所有行的數(shù)量。在屬于數(shù)據(jù)段的計數(shù)區(qū)域,數(shù)據(jù)總線使能信號置高電平,此時間段傳送的是有效視頻數(shù)據(jù),其Verilog HDL代碼如下:

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

其中HDMI_HBP為每行數(shù)據(jù)段占用的時鐘周期的個數(shù),HDMI_VBP為每行數(shù)據(jù)段所有行的數(shù)量。HDMI_HTT、HDMI_VTT、HDMI_HST、HDMI_VST、HDMI_HBP、HDMI_VBP等參數(shù)信號接入模塊的輸入端,可根據(jù)視頻參數(shù)以及HDMI發(fā)送器型號輸入相應(yīng)的配置信息,具有較廣泛的適用性。

3 ALPHA混合模塊設(shè)計

本模塊根據(jù)配置信息(輸入的視頻坐標(biāo)信息、alpha值),使最多4路視頻數(shù)據(jù)在指定坐標(biāo)范圍內(nèi)顯示,并按照設(shè)定的透明度進行ALPHA混合。首先將HDMI驅(qū)動模塊生成的DE_HDMI、HSY_HDMI、VSY_HDMI等同步信號連接到坐標(biāo)指示電路的輸入端,此電路中定義兩組計數(shù)器x_cnt與y_cnt,分別對輸出的有效視頻在顯示區(qū)域內(nèi)的x坐標(biāo)與y坐標(biāo)進行計數(shù),從每行起始位置,在輸出有效視頻數(shù)據(jù)的每個時鐘周期x_cnt遞增1,每行有效視頻數(shù)據(jù)計數(shù)完成后清零,y_cnt則從有效視頻的第一行開始,在每行有效視頻傳輸完成后遞增1,場同步后清零。利用坐標(biāo)指示電路生成有效視頻的坐標(biāo)信號,即可根據(jù)設(shè)定的視頻位置信息在相應(yīng)的時刻發(fā)出讀請求信號,讀取有效視頻數(shù)據(jù),同時在相應(yīng)的時刻讀取alpha值。

ALPHA混合計算電路負責(zé)將背景視頻數(shù)據(jù)與前景視頻數(shù)據(jù)根據(jù)當(dāng)前的alpha值進行ALPHA混合。本模塊通過多級流水線設(shè)計ALPHA混合計算電路,實現(xiàn)了ALPHA混合計算的硬件加速,極大地提升了計算速度。

對于RGB編碼的視頻數(shù)據(jù),其進行ALPHA混合的公式如式1所示(該公式也適用于YUV編碼的視頻數(shù)據(jù))。

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

其中R1、G1、B1對應(yīng)混合后的視頻數(shù)據(jù)的R、G、B分量,Rf、Gf、Bf對應(yīng)前景數(shù)據(jù)的R、G、B分量,Rb、Gb、Bb對應(yīng)背景數(shù)據(jù)的R、G、B分量。在流水線設(shè)計中,將組合邏輯分成三級,第一級對擴大后的數(shù)據(jù)通過乘法器進行乘法累加運算,第二級進行加法運算,第三級進行縮小運算,該模塊框圖如圖3所示。

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

由于FPGA設(shè)計屬于數(shù)字電路設(shè)計,電路層面上無法直接計算小數(shù)點。故采用將計算數(shù)據(jù)先擴大,計算完成后再縮小的方法。具體方法為先將公式左右兩端分別擴大256倍,計算完成后再縮小256倍,將擴大后的公式分為三步計算。

第一步:進行乘法操作,如式(2)、式(3)所示。

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

第二步:進行加法操作,將第一級計算出的前景數(shù)據(jù)中間值R11、G11、B11與背景數(shù)據(jù)中間值R12、G12、B12分別相加,如式4所示。

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

第三步:進行縮小操作,分別對第二步得到的中間值右移8位,為保證數(shù)據(jù)的精確性,對得到的數(shù)據(jù)進行溢出處理。代碼如下:

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

其中o_data_R、o_data_G、o_data_B為完成ALPHA混合和溢出處理后的視頻的R分量、G分量、B分量,data_R_tmp、data_G_tmp、data_B_tmp為完成ALPHA混合但未經(jīng)溢出處理的視頻的R分量、G分量、B分量。溢出處理為判斷經(jīng)過流水線輸出的9 bit視頻數(shù)據(jù)的最高位是否為0,不為0輸出8′hff,否則輸出前8 bit數(shù)據(jù)。

4 驗證結(jié)果

將該模塊作為一個基于SOPC的四通道視頻處理系統(tǒng)的顯示模塊,編譯后配置到FPGA中并在開發(fā)板上運行,HDMI發(fā)送器為ADV7513,加載的配置信息為4通道分割顯示,并將輸出的視頻數(shù)據(jù)直接在顯示器上顯示,其實際效果如圖4所示。

關(guān)于基于FPGA的HDMI多模式顯示模塊的設(shè)計

由于實驗條件所限,只有一路信號源,因此將該信號源分別連接4個通道,可以看出每個通道的視頻都能完全顯示。將配置信息切換為PIP顯示,重疊部分背景透明度為0,窗口為1,其實際效果如圖5所示。

可以看出重疊部分窗口能完全顯示,背景完全不顯示。整個系統(tǒng)工作正常,模塊實現(xiàn)了相應(yīng)功能。

5 結(jié)論

本文設(shè)計了一個基于FPGA的HDMI多模式顯示模塊,該模塊能夠驅(qū)動HDMI輸出顯示多路視頻,并且可以配置每路視頻的顯示位置以及重疊部分的透明度。通過設(shè)置驅(qū)動信息,模塊可適用于多種型號HDMI的發(fā)送器以及不同參數(shù)的視頻。設(shè)計中通過流水線提升了處理速度,加強了顯示的即時性。因此在基于SOPC的視頻處理系統(tǒng)中,可以作為一種通用、高速、多功能的HDMI輸出顯示組件,具有較好的應(yīng)用前景。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21754

    瀏覽量

    604221
  • HDMI
    +關(guān)注

    關(guān)注

    32

    文章

    1718

    瀏覽量

    152059
  • 顯示模塊
    +關(guān)注

    關(guān)注

    1

    文章

    50

    瀏覽量

    23580
收藏 人收藏

    評論

    相關(guān)推薦

    【ZYNQ Ultrascale+ MPSOC FPGA教程】第十五章HDMI字符顯示實驗

    HDMI輸出實驗中講解了HDMI顯示原理和顯示方式,本實驗介紹如何使用FPGA實現(xiàn)字符顯示,通
    的頭像 發(fā)表于 01-25 09:52 ?5553次閱讀
    【ZYNQ Ultrascale+ MPSOC <b class='flag-5'>FPGA</b>教程】第十五章<b class='flag-5'>HDMI</b>字符<b class='flag-5'>顯示</b>實驗

    u***顯示

    本帖最后由 eehome 于 2013-1-5 10:01 編輯 USB顯示方案USB2.0 轉(zhuǎn)VGA、DVI、HDMI、LVDS提供USB2.0 轉(zhuǎn)VGA、DVI、HDMI
    發(fā)表于 10-23 21:43

    例說FPGA連載29:HDMI顯示驅(qū)動子板設(shè)計

    `例說FPGA連載29:HDMI顯示驅(qū)動子板設(shè)計特權(quán)同學(xué),版權(quán)所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1c0nf6Qc SF-HDMI
    發(fā)表于 09-07 16:46

    例說FPGA連載89:多分辨率HDMI顯示驅(qū)動設(shè)計之功能概述

    對ADV7513的寄存器配置,實現(xiàn)ADV7513接口模式和工作模式的初始化配置。圖18.2 FPGA與ADV7513接口示意圖如圖18.3所示,本實例實現(xiàn)多分辨率的HDMI
    發(fā)表于 04-11 22:37

    例說FPGA連載90:多分辨率HDMI顯示驅(qū)動設(shè)計之hdmi_controller.v模塊代碼解析

    `例說FPGA連載90:多分辨率HDMI顯示驅(qū)動設(shè)計之hdmi_controller.v模塊代碼解析特權(quán)同學(xué),版權(quán)所有配套例程和更多資料下載
    發(fā)表于 04-12 21:45

    例說FPGA連載95:基于HDMI的AV采集顯示之功能概述

    例說FPGA連載95:基于HDMI的AV采集顯示之功能概述特權(quán)同學(xué),版權(quán)所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1c0nf6Qc 本實例系統(tǒng)功能框圖如圖19.1
    發(fā)表于 04-24 19:27

    例說FPGA連載97:基于HDMI的AV采集顯示hdmi_controller.v模塊代碼解析

    `例說FPGA連載97:基于HDMI的AV采集顯示hdmi_controller.v模塊代碼解析特權(quán)同學(xué),版權(quán)所有配套例程和更多資料下載鏈
    發(fā)表于 05-02 22:37

    FPGA DEMO】Lab 4:攝像頭HDMI顯示(高速--HDMI&攝像頭)

    ,如果此時開發(fā)板已經(jīng)連接攝像頭和HDMI的話,可以看到HDMI顯示顯示攝像頭采集的視頻圖像。(注意: 攝像頭模塊焦距是可調(diào)的,如果焦距不合
    發(fā)表于 07-30 15:21

    帶攝像機接口的HDMI輸入輸出FMC模塊

    FMC-HDMI-CAM FMC? 模塊可為支持 ?Xilinx FMC? 功能的基線板提供高清視頻接口。 ?HDMI? 視頻源可向該模塊提供視頻內(nèi)容。該
    發(fā)表于 02-08 20:39 ?1314次閱讀

    基于FPGAHDMI高清顯示接口驅(qū)動

    FPGA仿真篇-使用腳本命令來加速仿真二 基于FPGAHDMI高清顯示借口驅(qū)動 基于FPGA灰度圖像高斯濾波算法的實現(xiàn)
    發(fā)表于 02-20 20:54 ?1.2w次閱讀

    基于FPGA的多功能LCD顯示控制器是如何實現(xiàn)的

    基于FPGA設(shè)計 LCD顯示控制器 ,關(guān)鍵在于采用硬件描述語言設(shè)計有限狀態(tài)機(FSM)來控制LCD模塊的跳轉(zhuǎn),文獻中就是使用FSM實現(xiàn)了對LCD模塊
    發(fā)表于 04-02 09:13 ?1294次閱讀

    如何使用FPGA實現(xiàn)字符顯示

    HDMI輸出實驗中講解了HDMI顯示原理和顯示方式,本實驗介紹如何使用FPGA實現(xiàn)字符顯示,通
    的頭像 發(fā)表于 02-09 10:29 ?3639次閱讀
    如何使用<b class='flag-5'>FPGA</b>實現(xiàn)字符<b class='flag-5'>顯示</b>

    【ZYNQ Ultrascale+ MPSOC FPGA教程】第十五章 HDMI字符顯示實驗

    HDMI輸出實驗中講解了HDMI顯示原理和顯示方式,本實驗介紹如何使用FPGA實現(xiàn)字符顯示,通
    發(fā)表于 01-28 06:22 ?14次下載
    【ZYNQ Ultrascale+ MPSOC <b class='flag-5'>FPGA</b>教程】第十五章 <b class='flag-5'>HDMI</b>字符<b class='flag-5'>顯示</b>實驗

    基于FPGA圖片動態(tài)顯示VGA系統(tǒng)

    本文使用FPGA芯片,在 QuartusⅡI工作平臺下,利用 Verilog硬件描述語言,實現(xiàn)了VGA幅圖片動態(tài)彩色顯示系統(tǒng)的設(shè)計。設(shè)計中將VGA顯示的同步控制、圖像
    發(fā)表于 06-01 10:08 ?27次下載

    HDMI無縫拼接矩陣的三種模式

    HDMI無縫拼接矩陣的三種模式? HDMI無縫拼接矩陣是一種在多個顯示屏之間實現(xiàn)無縫切換和拼接的高級視頻處理設(shè)備。它的出現(xiàn),解決了傳統(tǒng)拼接方式中的黑屏、閃屏和不同分辨率
    的頭像 發(fā)表于 12-04 14:40 ?943次閱讀