【原创】基于FPGA的VGA测试程序
1赞
发表于 2016/11/5 14:33:21
阅读(2201)
【主题】:基于FPGA的VGA测试程序
【作者】:LinCoding
【时间】:2016.11.5
【声明】:转载、引用,请注明出处
由于自己先买的黑金的开发板,后买的CB的书,最近在看基于SDRAM的VGA显示,一直有点问题,今天上午本来想写个验证程序看一下问题在哪,但是却弄了一上午,因为碰到了一个小问题,不过最终还是解决了。
先上效果图:
就是这样每隔一秒切换下一张,但是问题是,VGA一直停留在第一张图片上
这是我的定时器程序:
就是每当一张图片的数据完成以后开始定时1s,isCount是定时器的开关
原本写成这样,做了仿真,isCount时钟等于0,定时器无论如何也不会开始工作,很郁闷,最后发现是这个样子的:
if ( lcd_xpos == `H_DISP && lcd_ypos == `V_DISP ) begin isCount <= 1'b1;
尽管打开了定时器,但是同时由于没有display_done == 0; 导致执行了下面这个if语句的else,也就是isCount <= isCount,而此时isCount是上一个clk的值,也就是复位时候的0,所以导致了isCount被赋值1时候也被赋值0,产生了竞争,最后可能是由于编译器优化为了0,导致定时器开启失败,也就导致,状态机只停留在了这个状态
最后优化如下:
if ( display_done ) begin isCount <= 1'b0; image_state <= image_state + 1'b1; end else if ( lcd_xpos == `H_DISP && lcd_ypos == `V_DISP ) begin isCount <= 1'b1; image_state <= image_state; end
问题得到完美解决!