【VGA显示】像素坐标数据和有效使能不同步

在VGA显示实验中,vga_ctrl模块的pix_data与rgb_valid信号不同步,导致数据滞后一拍。问题源于像素坐标到数据的时序延迟。解决方案是创建提前一拍的rgb_req信号,并调整行坐标以保持正确性。经过修改,数据已与使能信号同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

  VGA显示实验,模块框图如下,其中vga_ctrl为控制模块,需要输出行场同步信号和有效像素数据,其有效像素数据是通过把像素坐标数据发送到pix_gen模块,由后者计算得到。
在这里插入图片描述


问题

  vga_ctrl模块中输出的数据pix_data和有效使能信号rgb_valid不同步,如下图标记处,有效像素数据pix_data16‘d65535滞后使能信号rgb_valid一拍。
在这里插入图片描述


为什么需要同步:

  因为输出数据信号需要和行场同步信号中的数据有效部分时序对齐,来达到VGA的协议要求,而rgb_valid和行场同步信号均由行场计数器cnt_hcnt_v得到, rgb_valid与有效像素是同步的,所以只要数据和rgb_valid同步即可。


为何现在不同步:

  输出数据其实是和输入数据为组合逻辑连接,所以是同步的,而输入数据是由数据生成模块中接受了坐标数据以后才能产生,而且由于是时序逻辑,所以数据会慢坐标一拍。本质上就是该点坐标是经由一个时序逻辑才产生像素数据的,所以两者不同步

解决方法

  固定的关系在于坐标提前数据一拍,当前坐标和使能是同步的,导致数据滞后使能一拍,要抵消由于坐标到数据的滞后的一拍,只要让坐标提前一拍即可解决,像素坐标要解决其有效性和计算正确性两个问题:
  首先,有效性由rgb_valid约束,由于其是由行场计数器约束形成,修改后就不满足VGA有效像素区间了(这也是为什么没有采用将使能信号打一拍来使其同步的方法),所以这里创建一个提前rgb_valid一拍的新的信号rgb_req,将rgb_valid约束条件中行计数器的条件开始和结束均-1,从而使得rgb_req提前rgb_valid一拍。
  然后是计算正确性的问题,由于仅仅行提前1拍,场没有变化,所以提前以后计数器计数-1,所以行坐标原先的0会变成-1,所以这里行坐标需要+1。
修改前代码:
在这里插入图片描述
修改后代码:
在这里插入图片描述

  验证后,输出数据pix_data已经和有效使能信号rgb_valid同步,问题得到解决!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值