原创 不可小视的状态机

2010-7-26 18:36 2291 2 2 分类: FPGA/CPLD

终于找到了数字时钟程序lcd显示屏周期性暗灭的原因!状态机中Write_Data_Clock状态下,输出给LCD屏的数据总线DB8的输出值没有给出!原来错误的程序如下:


531b5c3f-b2b9-404a-b1ea-56ead35f82cb.jpg[


 


仿真波形如下:


0ab25317-79e3-4336-8897-0de0a3cd6a5f.JPG


可以看出,在Write_Data_Clock中,当disp_count = 8时,RS=0,此时为写lcd命令状态,但此时的DB8输出并没有给出,于是DB8还是保持上一个状态输出值(Data_Clock_Buf的末8位,即秒位),这就造成了往LCD屏写错误“命令”,而且这个“命令”是还是每秒变化一次的!


当在disp_count >= 8 下增加一行DB8 <= 8’b10000000 后,编绎,下载,闪屏现象消失!!


从这个实例可以看出,编写代码时遵循一些规则是很有必要的,我之前看到过N次类似“状态机中每个状态下的输出都要给全”的忠告,但并没有放在心上。另外,下载验证前的仿真也是必须的。然而,面对复杂的波形输出,用什么方法才能在下载验证前方便的查出设计问题呢?

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条