《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的HDMI多模式顯示模塊設(shè)計(jì)
基于FPGA的HDMI多模式顯示模塊設(shè)計(jì)
2017年電子技術(shù)應(yīng)用第12期
向梓豪,,陸安江
貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽(yáng)550025
摘要: 通過SOPC進(jìn)行視頻信號(hào)處理是目前研究的熱點(diǎn),。針對(duì)此類系統(tǒng)的顯示模塊,,提出一種基于FPGA的HDMI多模式顯示模塊設(shè)計(jì)方案。首先對(duì)HDMI的驅(qū)動(dòng)時(shí)序進(jìn)行分析,,設(shè)計(jì)驅(qū)動(dòng)信號(hào)生成電路,,然后根據(jù)配置參數(shù),將多路視頻進(jìn)行多級(jí)ALPHA混合,,實(shí)現(xiàn)了通過HDMI輸出與顯示多路視頻,,并且每路視頻的位置與透明度可設(shè)置。為保證視頻的實(shí)時(shí)性,,對(duì)較為復(fù)雜的計(jì)算過程采用流水線設(shè)計(jì)方法提升速度,。模塊以Verilog HDL的形式進(jìn)行編寫,,具有較強(qiáng)的通用性。
關(guān)鍵詞: FPGA 多模式顯示 HDMI ALPHA混合
中圖分類號(hào): TN79,;TP391
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.171683
中文引用格式: 向梓豪,,陸安江. 基于FPGA的HDMI多模式顯示模塊設(shè)計(jì)[J].電子技術(shù)應(yīng)用,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 引言

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

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

1 總體方案設(shè)計(jì)

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

qrs5-t1.gif

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

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

2 HDMI驅(qū)動(dòng)模塊設(shè)計(jì)

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

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

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

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

qrs5-t2.gif

    其中VSY_HDMI的時(shí)序分段與HSY_HDMI相同,。

2.2 Verilog HDL代碼設(shè)計(jì)

    在FPGA與HDMI發(fā)送器之間,,傳輸視頻數(shù)據(jù)的方式為隨同步時(shí)鐘逐個(gè)傳送像素?cái)?shù)據(jù),對(duì)于每場(chǎng)數(shù)據(jù),,順序?yàn)閺牡谝恍虚_始從左至右傳送,,傳送完畢后開始傳送第二行,依次傳送直至最后一行數(shù)據(jù)傳送完畢,。因此在代碼中定義兩個(gè)計(jì)數(shù)值,,分別為x軸計(jì)數(shù)值x_cnt與y軸計(jì)數(shù)值y_cnt,x_cnt在每個(gè)時(shí)鐘周期遞增1,,計(jì)數(shù)完一行清零,;y_cnt則是x_cnt每計(jì)數(shù)完一行遞增1,一場(chǎng)的所有行全部計(jì)數(shù)完清零,。計(jì)數(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í)鐘周期的個(gè)數(shù),,HDMI_VTT為傳輸一場(chǎng)中所有行的數(shù)量。根據(jù)計(jì)數(shù)值,,在相應(yīng)的時(shí)間拉高行同步信號(hào)和場(chǎng)同步信號(hào),,其他時(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í)鐘周期的個(gè)數(shù),,HDMI_VST為場(chǎng)同步段所有行的數(shù)量,。在屬于數(shù)據(jù)段的計(jì)數(shù)區(qū)域,,數(shù)據(jù)總線使能信號(hào)置高電平,此時(shí)間段傳送的是有效視頻數(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í)鐘周期的個(gè)數(shù),,HDMI_VBP為每行數(shù)據(jù)段所有行的數(shù)量。HDMI_HTT,、HDMI_VTT,、HDMI_HST、HDMI_VST,、HDMI_HBP,、HDMI_VBP等參數(shù)信號(hào)接入模塊的輸入端,可根據(jù)視頻參數(shù)以及HDMI發(fā)送器型號(hào)輸入相應(yīng)的配置信息,,具有較廣泛的適用性,。

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

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

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

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

    qrs5-gs1.gif

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

qrs5-t3.gif

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

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

    qrs5-gs2-3.gif

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

    qrs5-gs4.gif

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

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 驗(yàn)證結(jié)果

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

qrs5-t4.gif

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

qrs5-t5.gif

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

5 結(jié)論

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

參考文獻(xiàn)

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

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

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

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



作者信息:

向梓豪,,陸安江

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

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