初学 FPGA 的时候,我们总是存在很多疑问,比如:xilinx 和 altera 的 FPGA 那种比较好、verilog 语言被如何综合成具体硬件电路、RTL 级电路是什么意思等等。现在我们就不会迷惑于那些基本的概念问题,是时候来写一个小小的项目了。我决定编写一个没有日期功能的电子钟,还可以来复习以前学过的模块。

这个项目有些复杂,一次不太可能成功,所以我们先写一个秒表,秒表的组成大概如下:

  1. 秒增加信号产生模块。
  2. 时间计数模块1,当增加信号为 1 时加 1,满 60 清零,并产生分增加信号。
  3. 时间计数模块2,当增加信号为 1 时加 1,满 60 清零,并产生小时增加信号。
  4. 时间计数模块3,当增加信号为 1 时加 1,满 60 清零。 (小 bug,如果本实验没能成功,后面的电子钟就没发做了)
  5. 秒计数、分计数、小时计数模块寄存器中的值转化为 BCD 数 24'h??-??-??。
  6. 最后使用数码管驱动模块来显示时间,此外秒表还需要一个复位按钮和一个暂停按钮。

了解完结构之后,下一步就是考虑如何编写代码了,我的代码如下:

我的 FPGA 学习历程(12)—— 电子钟项目准备-LMLPHP

我的 FPGA 学习历程(12)—— 电子钟项目准备-LMLPHP

我的 FPGA 学习历程(12)—— 电子钟项目准备-LMLPHP

我的 FPGA 学习历程(12)—— 电子钟项目准备-LMLPHP

我的 FPGA 学习历程(12)—— 电子钟项目准备-LMLPHP

本次实验可用的 tcl 脚本文件如下:(其中 KEY 是修改后的名字)

我的 FPGA 学习历程(12)—— 电子钟项目准备-LMLPHP

编译,下载,然后看看板子上的效果,你成功了吗?(⊙o⊙)

05-07 15:25