《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于FPGA的HDMI多模式顯示模塊設計
基于FPGA的HDMI多模式顯示模塊設計
2017年電子技術應用第12期
向梓豪,陸安江
貴州大學 大數(shù)據(jù)與信息工程學院,貴州 貴陽550025
摘要: 通過SOPC進行視頻信號處理是目前研究的熱點,。針對此類系統(tǒng)的顯示模塊,,提出一種基于FPGA的HDMI多模式顯示模塊設計方案。首先對HDMI的驅動時序進行分析,設計驅動信號生成電路,然后根據(jù)配置參數(shù),將多路視頻進行多級ALPHA混合,,實現(xiàn)了通過HDMI輸出與顯示多路視頻,并且每路視頻的位置與透明度可設置,。為保證視頻的實時性,,對較為復雜的計算過程采用流水線設計方法提升速度。模塊以Verilog HDL的形式進行編寫,,具有較強的通用性,。
中圖分類號: TN79;TP391
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.171683
中文引用格式: 向梓豪,,陸安江. 基于FPGA的HDMI多模式顯示模塊設計[J].電子技術應用,,2017,43(12):48-51.
英文引用格式: Xiang Zihao,,Lu Anjiang. Design of HDMI multi mode display module based on FPGA[J].Application of Electronic Technique,,2017,43(12):48-51.
Design of HDMI multi mode display module based on FPGA
Xiang Zihao,Lu Anjiang
College of Big Data and Information Engineering,,Guizhou University,,Guiyang 550025,China
Abstract: Using SOPC to process video signal is a hot research at present. As for the display module of the system, the paper puts forward a kind of design, which contains multi mode display module and is based on FPGA. First,,it analyses the timing sequence of HDMI driver and designs driving signal to create circuits. Then, according to the configuration parameters, mixes the multi-channel video together in the form of multistage ALPHA mixing, to realize the output and display of the multi video by HDMI, meanwhile the position and transparency of every video can be set. To assure the real-time of the video, for the more complicated calculating process, it designs the assembly line way to promote the speed. The module is written in the form of Verilog HDL, which has strong versatility.
Key words : FPGA,;multi mode display;HDMI,;ALPHA mixing

0 引言

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

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

1 總體方案設計

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

qrs5-t1.gif

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

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

2 HDMI驅動模塊設計

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

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

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

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

qrs5-t2.gif

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

2.2 Verilog HDL代碼設計

    在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代碼如下:

always @(posedge clk or negedge rst_n)

    if(!rst_n) x_cnt<= 12′d0;

    else if(x_cnt >= HDMI_HTT) x_cnt<= 12′d0;

    else x_cnt <= xcnt+1′b1;

always @(posedge clk or negedge rst_n)

    if(!rst_n) y_cnt <= 12′d0;

    else if(x_cnt== HDMI_HTT) begin

        if(y_cnt >= HDMI_VTT) y_cnt<= 12′d0;

        else y_cnt <= y_cnt +1′b1;

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

always @(posedge clk or negedge rst_n)

    if(!rst_n) HSY_HDMI <= 1′b0;

    else if(xcnt < HDMI_HST ) HSY_HDMI <= 1′b1;

    else hdmi_hsy <= 1′b0;

always @(posedge clk or negedge rst_n)

    if(!rst_n) VSY_HDMI <= 1′b0;

    else if(ycnt < HDMI_VST) VSY_HDMI <= 1′b1;

    elseVSY_HDMI<= 1′b0;

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

always @(posedge clk or negedge rst_n)

    if(!rst_n) DE_HDMI <= 1′b0;

    else if((xcnt >= (HDMI_HST+ HDMI_HBP)) && (xcnt < (HDMI_HST+ HDMI_HBP+ HDMI_HVT))&& (ycnt >= (HDMI_VST+HDMI_VBP)) && (ycnt < (HDMI_VST+HDMI_VBP+ HDMI_VVT)))

    DE_HDMI <= 1′b1;

    else DE_HDMI <= 1′b0;

其中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ā)送器型號輸入相應的配置信息,,具有較廣泛的適用性。

3 ALPHA混合模塊設計

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

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

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

    qrs5-gs1.gif

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

qrs5-t3.gif

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

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

    qrs5-gs2-3.gif

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

    qrs5-gs4.gif

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

assign o_data_R=data_R_tmp[8] ? 8′hff : data_R_tmp[7 : 0];

assign o_data_G=data_G_tmp[8] ? 8′hff : data_G_tmp[7 : 0];

assign o_data_B=data_B_tmp[8] ? 8′hff : data_B_tmp[7 : 0];

其中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 驗證結果

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

qrs5-t4.gif

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

qrs5-t5.gif

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

5 結論

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

參考文獻

[1] 劉紫燕,馮亮,,祁佳.一種基于FPGA的實時視頻跟蹤系統(tǒng)硬件平臺設計[J].傳感器與微系統(tǒng),,2014,33(7):98-102.

[2] 李煌.基于FPGA的HDMI顯示系統(tǒng)的設計與實現(xiàn)[D].上海:華東師范大學,2008.

[3] 梁義,,濤唐垚,,史衛(wèi)亞,等.基于Cyclone IV的Camera Link-HDMI高清視頻轉換器設計[J].電子技術應用,,2013,,39(5):12-14.

[4] 陳志杰.高清混合視頻矩陣的研究及FPGA實現(xiàn)[D].泉州:華僑大學,2014.



作者信息:

向梓豪,,陸安江

(貴州大學 大數(shù)據(jù)與信息工程學院,貴州 貴陽550025)

此內容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載,。