Zynq-7000 PL端HDMI的顯示控制
掃描二維碼
隨時隨地手機(jī)看文章
Zynq-7000 PL端HDMI的顯示控制
1 背景知識
HDMI(High Definition Multimedia Interface)是高清晰多媒體接口線的縮寫,能高品質(zhì)地傳輸未經(jīng)壓縮的高清視頻和多聲道音頻數(shù)據(jù),最高數(shù)據(jù)傳輸速度為5Gbps。同時無需在信號傳送前進(jìn)行數(shù)/?;蛘吣?/span>/數(shù)轉(zhuǎn)換,可以保證最高質(zhì)量的影音信號傳送。
HDMI線支持5Gbps的數(shù)據(jù)傳輸率,最遠(yuǎn)可傳輸30米,足以應(yīng)付一個1080p的視頻和一個8聲道的音頻信號。而因為一個1080p的視頻和一個8聲道的音頻信號需求少于4GB/s,因此HDMI線還有很大余量。這允許它可以用一個電纜分別連接DVD播放器,接收器和PRR。此外HDMI支持EDID,DDC2B,因此具有HDMI的設(shè)備具有“即插即用”的特點,信號源和顯示設(shè)備之間會自動進(jìn)行“協(xié)商”,自動選擇最合適的視頻/音頻格式。如下圖是一根HDMI線。
DMI接口的原理圖
上圖所示,HDMI接口有3對數(shù)據(jù)差分信號、一對時鐘差分信號、HDMI_CEC(HDMI遙控器信號)、HDMI IIC信號、HDMI_HPD(HDMI熱插拔檢測信號)和HDMI_OUT_EN(HDMI電源輸出控制)。本節(jié)設(shè)計將把RGB888轉(zhuǎn)化為HDMI信號輸出來控制顯示屏的顯示。
3 HDMI接口的FPGA設(shè)計
上圖所示,為整個HDMI接口顯示模塊圖。主要分為三個模塊。
1)時鐘產(chǎn)生模塊
時鐘產(chǎn)生模塊主要產(chǎn)生VGA顯示的像素時鐘和HDMI的串行時鐘。我們實驗的顯示器推薦設(shè)置為(1920x1080)所以pixel_clock為148.5MHZ。HDMI的串行時鐘為pixel_clock的5倍為742.5MHZ。
2)HDMI_data_gen模塊
HDMI_data_gen模塊主要產(chǎn)生VGA的時序和測試圖像。我們這里采用1920x1080@60HZ。時序參數(shù)如下圖所示。
具體參數(shù)代碼如下:
于按鍵程序和各種測試圖像的產(chǎn)生請參考《基于FPGA的5英寸LCD屏顯示》或聯(lián)系FPGA開源工作室。
3)VGA轉(zhuǎn)HDMI模塊
這個模塊我們采用IP。具體代碼有興趣的同學(xué)可以研究研究。VGA轉(zhuǎn)HDMI的內(nèi)部模塊如下圖。
4)代碼和約束
頂層代碼:
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2018/08/27 16:50:00
// Design Name:
// Module Name: HDMI
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
// FPGA開源工作室
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module HDMI(
input clk_50M,
input KEY,
output HDMI_CLK_P,
output HDMI_CLK_N,
output HDMI_D2_P,
output HDMI_D2_N,
output HDMI_D1_P,
output HDMI_D1_N,
output HDMI_D0_P,
output HDMI_D0_N,
output HDMI_OUT_EN,
output [3:0] LED
);
wire pixclk;
wire[7:0] R,G,B;
wire HS,VS,DE;
assign HDMI_OUT_EN = 1'b1;
HDMI_data_gen u_HDMI_data_gen
(
.pix_clk (pixclk),
.turn_mode (KEY),
.VGA_R (R),
.VGA_G (G),
.VGA_B (B),
.VGA_HS (HS),
.VGA_VS (VS),
.VGA_DE (DE),
.mode (LED)
);
wire serclk;
wire lock;
wire[23:0] RGB;
assign RGB={R,G,B};
HDMI_FPGA_ML_0 u_HDMI_FPGA
(
.PXLCLK_I (pixclk),//148.5MHZ
.PXLCLK_5X_I (serclk),//742.5MHZ
.LOCKED_I (lock),
.RST_N (1'b1),
.VGA_HS (HS),
.VGA_VS (VS),
.VGA_DE (DE),
.VGA_RGB (RGB),
.HDMI_CLK_P (HDMI_CLK_P),
.HDMI_CLK_N (HDMI_CLK_N),
.HDMI_D2_P (HDMI_D2_P),
.HDMI_D2_N (HDMI_D2_N),
.HDMI_D1_P (HDMI_D1_P),
.HDMI_D1_N (HDMI_D1_N),
.HDMI_D0_P (HDMI_D0_P),
.HDMI_D0_N (HDMI_D0_N)
);
clk_wiz_0 u_clk
(
.clk_in1 (clk_50M),
.reset (1'b0),
.clk_out1 (pixclk),
.clk_out2 (serclk),
.locked (lock)
);
endmodule
約束代碼:
set_property IOSTANDARD LVCMOS33 [get_ports clk_50M]
set_property PACKAGE_PIN U18 [get_ports clk_50M]
create_clock -period 20.000 -waveform {0.000 10.000} [get_ports clk_50M]
set_property IOSTANDARD TMDS_33 [get_ports HDMI_CLK_P]
set_property IOSTANDARD TMDS_33 [get_ports HDMI_D0_P]
set_property IOSTANDARD TMDS_33 [get_ports HDMI_D1_P]
set_property IOSTANDARD TMDS_33 [get_ports HDMI_D2_P]
set_property IOSTANDARD LVCMOS33 [get_ports HDMI_OUT_EN]
set_property PACKAGE_PIN N18 [get_ports HDMI_CLK_P]
set_property PACKAGE_PIN V20 [get_ports HDMI_D0_P]
set_property PACKAGE_PIN T20 [get_ports HDMI_D1_P]
set_property PACKAGE_PIN N20 [get_ports HDMI_D2_P]
set_property PACKAGE_PIN V16 [get_ports HDMI_OUT_EN]
set_property IOSTANDARD LVCMOS33 [get_ports KEY]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[0]}]
set_property PACKAGE_PIN N15 [get_ports KEY]
set_property PACKAGE_PIN M14 [get_ports {LED[0]}]
set_property PACKAGE_PIN M15 [get_ports {LED[1]}]
set_property PACKAGE_PIN K16 [get_ports {LED[2]}]
set_property PACKAGE_PIN J16 [get_ports {LED[3]}]
4下板測試
當(dāng)按下按鍵時,我們的屏幕就會顯示不同的測試圖像。結(jié)果如下:
總結(jié):
HDMI的實現(xiàn)對后期高清視頻圖像處理至關(guān)重要,需要源碼的同學(xué)可以聯(lián)系FPGA開源工作室。