十年饮冰,难凉热血,NXP1062的HDMI例程

阅读 4

06-05 06:00

以下是一个NXP1062的HDMI例程:

//**************************************************************************
// *** 名称 : hdmixs_top
// *** 作者 : 不想上体育课
// *** 博客 : https://blog.csdn.net/m0_47220307?type=blog
// *** 日期 : 2022.09
// *** 描述 : top
//**************************************************************************
`timescale 1ns / 1ps
module hdmixs_top(
input                                        sys_clk_n ,//差分时钟输入
input                                        sys_clk_p ,
input                                        sys_rst_n ,
output                                       tmds_clk_n,//TMDS时钟通道
output                                       tmds_clk_p,
output         [2:0]                         tmds_data_n,//TMDS数据通道
output         [2:0]                         tmds_data_p
 );
wire                                             rst_n   ;
wire                                             clk_out1;
wire                                             clk_out2;
wire                                             locked;
wire                                             hdmi_hs;
wire                                             hdmi_vs;
wire              [10:0]                          w_x_pixel;
wire              [10:0]                          w_y_pixel;
// wire [15:0] pixel_data;
wire                                             hdmi_de;
wire              [23:0]                         rgb_data;
wire                                             tmds_oen;//TMDS输出使能
wire              [23:0]                         pixel_data;
assign rst_n=sys_rst_n&locked;               //在保证时钟稳定的情况下,才保证正常工作
assign clk_out1 = sys_clk_n;
assign clk_out2 = sys_clk_p;
clk_wiz_0 clk_div(
      .clk_out1                                  (clk_108M         ),   //输出108MHZ的频率
	  .clk_out2                                  (clk_540M         ),
	  .reset                                     (1'b0             ),
      .locked                                    (locked           ),
      .clk_in1_p                                 (sys_clk_p        ),
	  .clk_in1_n                                 (sys_clk_n        )
);
hdmixs_driver dri(
      .clk_out1                                  (clk_108M         ),
	  .rst_n                                     (rst_n            ),
	  .pixel_data                                (pixel_data       ),
	  .hdmi_hs                                   (hdmi_hs          ),
	  .hdmi_vs                                   (hdmi_vs          ),
	  .hdmi_de                                   (hdmi_de          ),
	  .vedio_rgb                                 (rgb_data         ),
	  .x_pixel                                   (w_x_pixel        ),
	  .y_pixel                                   (w_y_pixel        )
);
hdmixs_display dis(
      .clk_out1                                  (clk_108M         ),
	  .rst_n                                     (rst_n            ),
	  .x_pixel                                   (w_x_pixel        ),
	  .y_pixel                                   (w_y_pixel        ),
	  .pixel_data                                (pixel_data       )
);
rgb_to_hdmi urtg(
      .clk_out1                                  (clk_108M         ),  //输出108MHZ的频率
	  .clk_out2                                  (clk_540M         ),
      .rst_n                                     (rst_n            ),
	  .hdmi_de                                   (hdmi_de          ),
	  .pixel_data                                (rgb_data         ),
	  .hdmi_hs                                   (hdmi_hs          ),
	  .hdmi_vs                                   (hdmi_vs          ),
      .tmds_clk_n                                (tmds_clk_n       ),
	  .tmds_clk_p                                (tmds_clk_p       ),
	  .tmds_oen                                  (tmds_oen         ),
      .tmds_data_n                               (tmds_data_n      ),
	  .tmds_data_p                               (tmds_data_p      )
);
endmodule

此例程是基于Verilog语言的HDMI输出实现,包含以下几个主要模块:

hdmixs_top模块

这是顶层模块,负责将各个子模块连接在一起,实现HDMI输出的整体功能。

hdmixs_driver模块

此模块用于定义显示的屏幕设置,包括分辨率、同步信号等参数,并输出当前行列计数值和图像数据。

hdmixs_display模块

用于设置显示图像区域,根据行列计数值和像素坐标,从ROM中读取相应的像素数据并输出。

rgb_to_hdmi模块

实现了将RGB数据转换为HDMI信号的TMDS编码,并进行并行转串行操作,最终输出差分信号。

需要注意的是,这个例程是一个通用的HDMI输出实现,可能需要根据具体的NXP1062开发板和硬件环境进行适当的修改和调整。同时,在实际应用中,还需根据具体需求进行进一步的优化和完善。

精彩评论(0)

0 0 举报