项目整体设计
1.原理:
hdmi_ctrl 是 HDMI 彩条显示的核心模块,功能是将 VGA 控制模块传入的行场同步信号、图像信息转换为 HDMI 能读取的差分信号,其内部实例化若干子模块,HDMI 线缆和连接器提供四个差分线对,组成 TMDS 数据和时钟通道,这些通道用于传递视频,音频和辅助数据;另外, HDMI 提供一个 VESA DDC 通道,DDC 是用于配置和在一个单独的信源端和一个单独的接收端交换状态;可选择的 CEC 在用户的各种不同的音视频产品中,提供高水平的控制功能;可选择的 HDMI 以太网和音频返回(HEAC), 在连接的设备中提供以太网兼容的网络数据和一个和 TMDS 相对方向的音频回返通道;此外还有热插拔检测信号 HDP ,当显示器等 HDMI 接口的显示设备通过 HDMI 接口与 HDMI 信源端相连或断开连接时, HDMI 信源端能够通过 HPD 引脚检测出这一事件,并做出响应。HDMI 中的 TMDS 传输系统分为两个部分:发送端和接收端。 TMDS 发送端收到 HDMI 接口传来的表示 RGB 信号的 24 位并行数据( TMDS 对每个像素的 RGB 三原色分别按 8bit 编码,即 R 信号有 8 位,G 信号有 8 位,B 信号有 8 位),然后对这些数据和时钟信号进行编码和并/串转换,再将表示 3 个 RGB 信号的数据和时钟信号分别分配到独立的传输通道发送出去。接收端接收来自发送端的串行信号,对其进行解码和串/并转换,然后发送到显示器的控制端。与此同时也接收时钟信号,以实现同步。
原理部分请参考原文链接:https://blog.csdn.net/qq_51264805/article/details/122420123
2.设计代码
top.v
module top(
//system clocks
input sys_clk,
input rst_n,
input[15:0] ad7606_data, //ad7606 data
input ad7606_busy, //ad7606 busy
input ad7606_first_data, //ad7606 first data
output[2:0] ad7606_os, //ad7606
output ad7606_cs, //ad7606 AD cs
output ad7606_rd, //ad7606 AD data read
output ad7606_reset, //ad7606 AD reset
output ad7606_convstab, //ad7606 AD convert start
//hdmi output
output TMDS_clk_p,
output TMDS_clk_n,
output[2:0] TMDS_data_p, //rgb
output