终于找到了数字时钟程序lcd显示屏周期性暗灭的原因!状态机中Write_Data_Clock状态下,输出给LCD屏的数据总线DB8的输出值没有给出!原来错误的程序如下:
[
仿真波形如下:
可以看出,在Write_Data_Clock中,当disp_count = 8时,RS=0,此时为写lcd命令状态,但此时的DB8输出并没有给出,于是DB8还是保持上一个状态输出值(Data_Clock_Buf的末8位,即秒位),这就造成了往LCD屏写错误“命令”,而且这个“命令”是还是每秒变化一次的!
当在disp_count >= 8 下增加一行DB8 <= 8’b10000000 后,编绎,下载,闪屏现象消失!!
从这个实例可以看出,编写代码时遵循一些规则是很有必要的,我之前看到过N次类似“状态机中每个状态下的输出都要给全”的忠告,但并没有放在心上。另外,下载验证前的仿真也是必须的。然而,面对复杂的波形输出,用什么方法才能在下载验证前方便的查出设计问题呢?
文章评论(0条评论)
登录后参与讨论