关于vga_driver模块的data_req需提前vga_en输出使能一拍的问题

原因:vga_driver模块向上层模块发送数据请求后,等待一个像素时钟周期,上层模块才能将像素点数据输送到vga_driver的pixel_data接口,故此时vga_en输出使能正好有效,则输入的pixel_data数据正好与输出的vga_rgb对齐,假设data_req没有提前一拍(如下图所示),即data_req和vga_en对齐,则前端会发送一个无效像素点数据(如1),后端会丢失一个像素点数据(如2)。

所遇bug:

问题就出在第一张图的2处,导致每一行的末尾都有一个像素点的丢失,导致vga显示异常,signaltap抓取信号如下:

由第二张图片的2,4,5可以看出,63F1h像素点数据并没有发出,进而说明以上问题。

修改正确后的代码:

//有效数据信号
assign vga_en=(((h_cnt>=H_SYNC+H_BACK)&&(h_cnt<H_SYNC+H_BACK+H_DISP))&&((v_cnt>=V_SYNC+V_BACK)&&(v_cnt<V_SYNC+V_BACK+V_DISP)))?1'b1:1'b0;

//像素点数据请求信号:每一行提前一个像素周期请求
assign data_req=(((h_cnt>=H_SYNC+H_BACK-1'b1)&&(h_cnt<H_SYNC+H_BACK+H_DISP-1'b1))&&((v_cnt>=V_SYNC+V_BACK)&&(v_cnt<V_SYNC+V_BACK+V_DISP)))?1'b1:1'b0;    

 signaltap抓取信号如下:

如上图中的6所示,已解决上述问题。 

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值