本帖最后由 zhangyuhua 于 2017-3-18 20:29 编辑
一周才完成了一个倒计时系统的设计。效率太低了,即使有点低,但也总结下。 此系统实现的功能介绍。
a. 两个按键key1/key2。key1是复位按键,此按键被按下,系统复位;key2按键是停止/开始按键,即当首次按下,系统开始计时,再次被按下,系统停止计时;再次按下,系统再次计时。
b. 选用6个数码管的板子,来实现此功能系统。
整个系统可分三个子系统,分别是计时模块、BCD转码模块和数码管显示模块这三个模块。下图是整个系统架构:
下面分别详细介绍下,三个子系统是如何实现的。
(1)计时模块
(其中:cnt_ms代表毫秒信号
cnt_s秒信号代表
dout_vld代表此模块输出一个信号,可供下一个模块使用)
源代码:
为了节省仿真时间,在这里使用了一个宏定义如下:
`ifndef 语句1
`else 语句2
`endif
在这里不具体介绍这个语法是怎么使用的。可查看一些语法书籍。
(2)总结: 这个计时模块比较简单,内部就使用了3个计数器。
设计整个倒计时系统,我花费的时间比较长,大概用了一周的时间。过了两天再重新看自己写的代码时,里面一些信号名就不知道它代表的意思了。还得重新看代码。这样会浪费大量的时间。所以,我自己总结了下自己的代码风格。以后都遵循这些规则,可以减少代码的修改时间。
在模块中要使用三个信号。一是,模块触发信号(eg.此模块中的key_vld);二是,模块输出使能信号(eg.此模块中的dout_vld);三是,模块正在工作状态的信号(eg.此模块中的flag信号)。
|