初学 FPGA 的时候,我们总是存在很多疑问,比如:xilinx 和 altera 的 FPGA 那种比较好、verilog 语言被如何综合成具体硬件电路、RTL 级电路是什么意思等等。现在我们就不会迷惑于那些基本的概念问题,是时候来写一个小小的项目了。我决定编写一个没有日期功能的电子钟,还可以来复习以前学过的模块。
这个项目有些复杂,一次不太可能成功,所以我们先写一个秒表,秒表的组成大概如下:
- 秒增加信号产生模块。
- 时间计数模块1,当增加信号为 1 时加 1,满 60 清零,并产生分增加信号。
- 时间计数模块2,当增加信号为 1 时加 1,满 60 清零,并产生小时增加信号。
- 时间计数模块3,当增加信号为 1 时加 1,满 60 清零。 (小 bug,如果本实验没能成功,后面的电子钟就没发做了)
- 秒计数、分计数、小时计数模块寄存器中的值转化为 BCD 数 24'h??-??-??。
- 最后使用数码管驱动模块来显示时间,此外秒表还需要一个复位按钮和一个暂停按钮。
了解完结构之后,下一步就是考虑如何编写代码了,我的代码如下:
注意:顶层模块中的 信号名称是大写的,用于适配 tcl 脚本文件
本次实验可用的 tcl 脚本文件如下:(其中 KEY 是修改后的名字)
编译,下载,然后看看板子上的效果,你成功了吗?(⊙o⊙)