fpga驱动hdmi

fpga 驱动hdmi

1、原理:

在这里插入图片描述

2、码源(感觉有点水 copy过来的 感觉自己像个裁缝不会自己写代码)

首先我是调用了hdmi的驱动ip核在github下载
hdmi_display
更多的ip核可以在ip核下载
本人实现完全参考该博客:hdmi_fpga

3、补充一部分:如何添加下载的ip核到工程:

在这里插入图片描述
在这里插入图片描述
就完成了添加下载的IP 接着就是例化(可以进入IP source 进行查看.veo文件)
效果:
在这里插入图片描述

4、补充一下

  1. 关于原语:在看正点原子驱动正点原子有个oddr困扰了许久 因为他的平台有直接的ip vivado没有 我想着自己写时序 写出来了 但是不能保证稳定 后面找资料 了解到原语实现
    对于原语我的理解:类似底层实现 属于verilog的汇编
    下面是oddr的原语实现:
   ODDR #(
   .DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE" 
   .INIT(1'b0),    // Initial value of Q: 1'b0 or 1'b1
   .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC" 
) ODDR_clk (
   .Q(Q),   // 1-bit DDR output
   .C(C),   // 1-bit clock input
   .CE(CE), // 1-bit clock enable input
   .D1(D1), // 1-bit data input (positive edge)
   .D2(D2), // 1-bit data input (negative edge)
   .R(R),   // 1-bit reset
   .S(S)    // 1-bit set
);    

然后就是一个博主自己码的hdmi驱动 hdmi驱动_不用ip
原本参考的 上述正点原子的文章 但是他在quartus II实现的 但是移植到vivado会有很多错误 其中一个就是oddr 另一个就是oddr实现后 差分信号是用的module实现生成的 但是vivado并不知道这是一个差分信号 所以还要用另一个原语实现差分信号的生成:

//转换差分信号  
OBUFDS #(
    .IOSTANDARD         ("TMDS_33")    // I/O电平标准为TMDS
) TMDS0 (
    .I                  (tmds_data_serial[0]),//输入信号
    .O                  (tmds_data_p[0]),//输出两个差分信号
    .OB                 (tmds_data_n[0]) 
);

但是这个问题我一直没想打困扰了7个多小时
2. 还有就是约束文件时钟生成:

set_property -dict { PACKAGE_PIN K17   IOSTANDARD LVCMOS33 } [get_ports { sys_clk }];
create_clock -add -name sys_clk_pin -period 20.00 -waveform {0 10} [get_ports { sys_clk }];
//20ns时钟周期 0-10ns高电平(占空比为50%)
//这些是好像因为电平不确定 可能会损害硬件 加上这个就可以生成bitstream
set_property SEVERITY {Warning} [get_drc_checks NSTD-1]

set_property SEVERITY {Warning} [get_drc_checks RTSTAT-1]

set_property SEVERITY {Warning} [get_drc_checks UCIO-1]

  1. 我觉得还是要自己写代码 得找网站进行训练 然后多看多练 下面这个老哥说的就很不错:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值