lcd_interface.v 的功能大致如下:
(一)初起的时候,液晶控制模块对液晶初始化。RAM模块本身也自行初始化。
(二)每隔一段时间,液晶控制模块就会从RAM模块读取图像信息,然后利
用这些信息来驱动液晶的显示。
在51~145行就是液晶控制模块的核心部分。61~114行是 initial_module.v 的部分,然而该功能被使能是在 isStart[1] ,亦即isStart寄存器最高位被拉高的时候才发生。这也就是说,lcd_interface.v 初始化的时候,51~145的“initial function”(液晶初始化功能)就被执行。 在同一个时间20~28行的定时器也开始计数。但是在定时器完成计数之前,在109行,产生了“完成反馈”,亦即“initial fucntion”已经执行完毕。此时在39行,if条件成立 isStart 被清零。 115~145行是“draw function”(液晶绘图功能)。该功能会发生在,当isStart[0],isStart寄存器的最低位被拉高的时候。每隔25ms的时间在20~28行的定时器都会产生定时,isStart的最低位都会被拉高。换句话说,每隔25ms“draw function”就会被执行。
当“draw function”完成后(140行),就会产生一个“完成反馈”。在同一个时间39行的if条件就会成立,isStart会被清零。 在148行的 Read_Addr_Sig 信号是作为“RAM模块”读取的寻址信号。 在前面,笔者显示了该lcd_interface.v 的扫描频率是 40Hz。如果换做公式来表达的话: T = 1 / F = 1 / 40Hz = 25 ms 这也是20~28行的定时器要每隔25ms产生一次定时的原因。因为每隔25ms,isStart寄存器的最低位就会被拉低,然后“draw function”就会被执行。换句话说,定时器的存在是为了充当“仿顺序操作”模块的“Start_Sig”信号。当然也可以这样说“Start_Sig 和 Done_Sig 都是发生在液晶控制模块的内部”(液晶控制模块自己自动使能自己)。
评论0
最新资源