HDMI 直通 ILA 调试实验

FPGA教程学习

第十四章 HDMI 直通 ILA 调试实验


文章目录

  • FPGA教程学习
  • 前言
  • 实验原理
  • 程序设计
  • 实验过程
  • 实验尝试
  • 总结
  • TODO


前言

HDMI 输入直通到 HDMI 输出的显示,完成一个简单的 HDMI 输入输出检测。


实验原理

开发板 HDMI 输出接口芯片使用 ADV7511,HDMI 输入芯片采用 ADV761,可以把输入的数据通过输出直接发送出去。

程序设计

教程上说的很简单,不看I2C的话还是很简单的,只使用了几个寄存器。
HDMI 直通 ILA 调试实验_第1张图片
大概代码如下

reg 		vin_hs_d0;
reg 		vin_vs_d0;
reg 		vin_de_d0;
reg[23:0] 	vin_data_d0;
reg 		vin_hs_d1;
reg 		vin_vs_d1;
reg 		vin_de_d1;
reg[23:0] 	vin_data_d1;
(* MARK_DEBUG="true" *)reg 		vin_hs_d2;
(* MARK_DEBUG="true" *)reg 		vin_vs_d2;
(* MARK_DEBUG="true" *)reg 		vin_de_d2;
(* MARK_DEBUG="true" *)reg[23:0] 	vin_data_d2;

assign vout_clk = vin_clk;
assign vout_hs = vin_hs_d2;
assign vout_vs = vin_vs_d2;
assign vout_de = vin_de_d2;
assign vout_data = vin_data_d2;
assign rst_n = locked;
assign vin_nreset = locked;

always@(posedge vin_clk)
begin
    vin_hs_d0 <= vin_hs;
    vin_vs_d0 <= vin_vs;
    vin_de_d0 <= vin_de;
    vin_data_d0 <= vin_data;
    vin_hs_d1 <= vin_hs_d0;
    vin_vs_d1 <= vin_vs_d0;
    vin_de_d1 <= vin_de_d0;
    vin_data_d1 <= vin_data_d0; 
    
    vin_hs_d2 <= vin_hs_d1;
    vin_vs_d2 <= vin_vs_d1;
    vin_de_d2 <= vin_de_d1;
    vin_data_d2 <= vin_data_d1;   
end

实验过程

刚好电脑显卡有多的HDMI输出,接开发板的HDMI输入,开发板的HDMI输出再接一个显示器。
加载程序后电脑会识别到一个显示设备,可以使用扩展桌面。在显示器生会显示电脑的图像,注意这个图像是经过fpga转了一道的。
图像显示效果很好,没有异常。
HDMI 直通 ILA 调试实验_第2张图片

实验尝试

视频信息和数据不经过三级触发器会怎么样?
这里注释掉原来触发器部分的代码,更改为下列代码。

assign vout_hs = vin_hs;
assign vout_vs = vin_vs;
assign vout_de = vin_de;
assign vout_data = vin_data;

最后输出的显示屏效果是这样的,有许多地方和实际不一样,显示视频的话会更明显。为什么,这就是亚稳态吗?
HDMI 直通 ILA 调试实验_第3张图片


总结

本实验通过将HDMI解码数据送往编码数据芯片,实现了将输入图像直接输出的效果。

TODO

  1. 了解亚稳态。
  2. 解释图像异常的原因。
  3. 掌握使用代码调试的方法。

你可能感兴趣的:(ZYNQ学习,fpga开发)