HDMI 驱动控制模块
hdmi_ctrl
是
HDMI
彩条显示的核心模块,功能是将
VGA
控制模块传入的行场同步信号、图像信息转换为 HDMI
能读取的差分信号,其内部实例化若干子模块

模块及模块简介,在前面我们已经进行讲述,读者可自行查看:https://blog.csdn.net/qq_51264805/article/details/122462270?spm=1001.2014.3001.5501
HDMI 驱动控制模块就是
HDMI
驱动控制部分的顶层模块,内部实例化编码模块和并行转串行模块,连接各自对应信号,代码编写较为简单。HDMI
驱动控制模块参考代码如下:
module hdmi_ctrl
(
input wire vga_clk , //输入VGA时钟信号
input wire clk_5x , //输入五倍时钟信号
input wire sys_rst_n , //输入复位信号
input wire hsync , //输入行同步信号
input wire vsync , //输入场同步信号
input wire rgb_valid , //输入使能信号
input wire [7:0] rgb_red , //输入红色分量
input wire [7:0] rgb_green , //输入绿色分量
input wire [7:0] rgb_blue , //输入蓝色分量
output wire hdmi_r_p , //输出红色差分信号
output wire hdmi_r_n ,
output wire hdmi_g_p , //输出绿色差分信号
output wire hdmi_g_n ,
output wire hdmi_b_p , //输出蓝色差分信号
output wire hdmi_b_n ,
output wire hdmi_clk_p , //输出时钟差分信号
output wire hdmi_clk_n
);
//wire define
wire [9:0] red ; //8bit转10bit后的红色分量
wire [9:0] green ; //8bit转10bit后的绿色分量
wire [9:0] blue ; //8bit转10bit后的蓝色分量
encode encode_inst_r
(
.vga_clk (vga_clk) , //时钟信号
.sys_rst_n (sys_rst_n) , //复位信号,低电平有效
.hsync (hsync) , //行同步信号
.vsync (vsync) , //场同步信号
.rgb_vaild (rgb_vaild) , //使能信号
.data_in (rgb_red) , //输入8bit待编码数据
.data_out (red) //输出编码后的10bit红色数据
);
encode encode_inst_g
(
.vga_clk (vga_clk) , //时钟信号
.sys_rst_n (sys_rst_n) , //复位信号,低电平有效
.hsync (hsync) , //行同步信号
.vsync (vsync) , //场同步信号
.rgb_vaild (rgb_vaild) , //使能信号
.data_in (rgb_green) , //输入8bit待编码数据
.data_out (green) //输出编码后的10bit绿色数据
);
encode encode_inst_b
(
.vga_clk (vga_clk) , //时钟信号
.sys_rst_n (sys_rst_n) , //复位信号,低电平有效
.hsync (hsync) , //行同步信号
.vsync (vsync) , //场同步信号
.rgb_vaild (rgb_vaild) , //使能信号
.data_in (rgb_blue) , //输入8bit待编码数据
.data_out (blue) //输出编码后的10bit蓝色数据
);
par_to_ser par_to_ser_r
(
.clk_5x (clk_5x) , //输入系统时钟
.data_in (red) , //输入并行数据
.ser_p (hdmi_r_p) , //输出串行差分数据
.ser_n (hdmi_r_n) //输出串行差分数据
);
par_to_ser par_to_ser_g
(
.clk_5x (clk_5x) , //输入系统时钟
.data_in (green) , //输入并行数据
.ser_p (hdmi_g_p) , //输出串行差分红色数据
.ser_n (hdmi_g_n) //输出串行差分红色数据
);
par_to_ser par_to_ser_b
(
.clk_5x (clk_5x) , //输入系统时钟
.data_in (blue) , //输入并行数据
.ser_p (hdmi_b_p) , //输出串行差分绿色数据
.ser_n (hdmi_b_n) //输出串行差分绿色数据
);
par_to_ser par_to_ser_clk
(
.clk_5x (clk_5x) , //输入系统时钟
.data_in (10'b1111_1000_00) , //输入并行数据
.ser_p (hdmi_clk_p) , //输出串行差分时钟数据
.ser_n (hdmi_clk_n) //输出串行差分时钟数据
);
endmodule