HDMI数据的接收发送实验(二十四)

概述

我们创建一个HDMI_OUT模块,在这个模块中,把1024768像素的图片传输给HDMI_TX模块,经过8b转10b,10b转1b,再转化为差分信号与HDMI_RX模块相连。通过仿真观察b通道的10bit数据是否有354、0ab、354这一组固定的数据。如果在HDMI_RX模块中出现了这一组数据,后边就会接收到1024 768像素图片的时序。

二、仿真测试HDMI数据传输

仿真结构如图所示:

HDMI_TX模块需要clk_1x和clk_5x的时钟,所以在HDMI_OUT模块中使用PLL配置输入的时钟sclk,输出一个周期为原时钟五倍的时钟clk_5x和一个周期不变的时钟clk_1x。

在HDMI_TX中,把8bit的RGB数据通过encoder模块转化为10bit数据,再通过serializer模块把10bit数据转化为1bit数据,经过OBUFDS转化为差分信号输出送给HDMI_IN模块用作仿真。

在tb中,只需要给出像素时钟和时钟动态相移使用的时钟和复位即可。

仿真测试激励模块:

`timescale 1ns / 1ps

module tb_hdmi();

reg sclk ;

reg rst_n ;

reg clk_200 ;

//in

wire tmds_clk_p ;

wire tmds_clk_n ;

wire tmds_r_p ;

wire tmds_r_n ;

wire tmds_g_p ;

wire tmds_g_n ;

wire tmds_b_p ;

wire tmds_b_n ;

wire r_hdmi_en ;

initial

begin

sclk = 1'b1;

rst_n = 1'b0;

clk_200 = 1'b1;

#200

rst_n = 1'b1;

end

always #5 sclk = ~sclk;

always #2.5 clk_200 = ~clk_200;

复制代码
hdmi_in  inst_hdmi_in (
		.clk        		(sclk		),
		.rst_n      		(rst_n		),
		.clk_200    		(clk_200	),
		.tmds_clk_p 		(tmds_clk_p	),
		.tmds_clk_n 		(tmds_clk_n	),
		.tmds_r_p   	(tmds_r_p	),
		.tmds_r_n   	(tmds_r_n	),
		.tmds_g_p   	(tmds_g_p	),
		.tmds_g_n   	(tmds_g_n	),
		.tmds_b_p   	(tmds_b_p	),
		.tmds_b_n   	(tmds_b_n	),
		.clk_1x     		(clk_1x	),
		.r_pixel    		(r_pixel	),
		.g_pixel    		(g_pixel	),
		.b_pixel    		(b_pixel	),
		.h_sync     		(h_sync	),
		.v_sync     		(v_sync	),
		.vga_de     	(vga_de	),
		.r_hdmi_en  	(r_hdmi_en	)
	);

hdmi_out inst_hdmi_out
	(
		.clk        		(sclk			),
		.rst_n      		(rst_n			),
		.HDMI_CLK_P 	(tmds_clk_p		),
		.HDMI_CLK_N 	(tmds_clk_n		),
		.HDMI_D2_P  	(tmds_r_p		),
		.HDMI_D2_N  	(tmds_r_n		),
		.HDMI_D1_P  	(tmds_g_p		),
		.HDMI_D1_N  	(tmds_g_n		),
		.HDMI_D0_P  	(tmds_b_p		),
		.HDMI_D0_N  	(tmds_b_n		)
	);

三、总结

本次实验围绕 HDMI 数据传输的仿真验证展开,构建了一个完整的发送--接收链路测试平台。实验的核心目标是验证 HDMI 发送端(hdmi_out)产生的差分信号能否被接收端(hdmi_in)正确解码,并恢复出 1024×768 像素的图像时序。

后边我们主要介绍图像时序的产生过程。

本文章由威三学社威三学院出品

对课程感兴趣可以私信联系

课程官网:www.v3edu.com

相关推荐
ALINX技术博客5 小时前
8 通道同步采样 ADC!AN706 波形显示实验 【FPGA黑金云课堂】
fpga开发
szxinmai主板定制专家13 小时前
RK3568+FPGA+CODESYS异构控制方案:赋能半导体设备与工业自动化升级
人工智能·fpga开发·自动化·rk3576·半导体设备
辰丁电子14 小时前
allegro入门教程-菜单栏Logic
fpga开发·pcb设计·pcb工艺·layout·pcb layout
FPGA小徐1 天前
数字IC/FPGA设计基础_ILA原理与使用
fpga开发
FPGA小徐1 天前
FPGA 部署 YOLO 完整指南:从模型量化到 Zynq PS+PL 硬件加速
yolo·fpga开发
dadaobusi2 天前
学习:chiesel,scala
学习·fpga开发·scala
爱吃汽的小橘2 天前
异步FIFO核心揭秘:格雷码与指针同步
fpga开发
璞致电子2 天前
基于 P201Pro | 接收端基础知识——Costas环锁定后为何仍会错?DQPSK与前导码相位校正(6)
经验分享·fpga开发·ad9361·软件无线电·sdr·qpsk·pzsdr
璞致电子2 天前
基于 AD9361 (PZSDR‑P201Pro) 软件无线电实战综述:从板卡选型、硬件平台升级到 GNU Radio QPSK 完整收发链路
经验分享·嵌入式硬件·fpga开发·软件无线电·sdr·璞致电子
炎龙铠甲会合体3 天前
从 SPEC 到上板:在 Zynq-7020 上用 RTL 手写一个 YOLO 卷积加速器(完整教程)
yolo·fpga开发·axi·芯片验证