这是关于如何使用VHDL和FPGA电路板(如Basys3 Atrix-7 Board)制作秒表的教程。秒表可以从00.00秒到99.99秒。它使用两个按钮,一个用于启动/停止按钮,另一个用于复位按钮。数字显示在电路板的七段显示器上,使用阳极和阴极。有三个不同的文件需要为了得到这个秒表工作。
- Basys3 Atrix-7 FPGA板
- 赛灵思Vivado设计套件
- USB 2.0 A Male to Micro-B Male
第2步:框图
整体秒表有三个输入和两个输出。三个输入是开始/停止,重置和时钟。开始/停止和复位是按钮,时钟是电路板的100MHz时钟。这两个输出是七段显示器的阳极和阴极。
第一个模块(时钟分频器)有一个输入和两个输出。输入是板子的100MHz时钟,输出是两个独立的时钟,一个以480Hz运行,另一个运行0.5MHz。
第二个模块(显示器)有五个输入和两个输出。输入是电路板的100MHz时钟,来自时钟分频器模块的两个时钟以及启动/停止和复位按钮。输出是阳极和阴极。
最后一个模块(由整个框图模拟)有三个输入和两个输出。这是把所有东西放在一起的文件。输入是板子的100MHz和开始/停止和重置按钮。输出是控制七段显示器的阳极和阴极。
所有的输入和输出物理上在最后模块的电路板上。
第3步:状态图
上面的图片显示了秒表如何工作的状态图。按下重置按钮不会影响秒表的状态。下一个状态由开始/停止按钮确定。开始/停止按下时为“高”,按下时为“高”,暂时按下时为“低”,按钮为“高”时按下。如果秒表正在计数,开始/停止按钮变为“高”,则停止计数。如果秒表停止并且开始/停止按钮变为“高”,则它再次开始计数。对于这两种状态,如果开始/停止按钮是“低”,则它将保持当前处于的状态。
第4步:时钟分频器模块
时钟分频器模块有一个输入,板子的100MHz时钟和两个输出,480Hz和0.5MHz时钟。480Hz时钟用于通过快速切换四个通道同时保持七段显示器上的所有LED“开”。0.5MHz时钟用于秒表实际上按厘秒计数。(代码见附件)
第5步:显示模块
这个显示模块有五个输入,板的100MHz时钟,两个时钟模块,开始/停止和复位按钮,以及两个输出,阳极和阴极。该模块还具有秒表如何计算和合并有限状态机的“逻辑”。(代码见附件)
第6步:绑定模块
这个最后的模块是把另外两个模块放在一起的模块。它有三个输入,板的100MHz时钟和启动/停止和复位按钮,以及两个输出,阳极和阴极。100MHz时钟进入时钟分频器模块和显示模块,启动/停止和复位按钮进入显示模块。时钟分频器模块的输出(480Hz和0.5MHz)转到显示模块的两个时钟输入端。显示模块(阳极和阴极)的输出到最终模块的输出。(代码见附件)
第7步:约束
两个输入可以是Basys3 Atrix-7 FPGA电路板上的任何按钮,输出将是七段显示器的四个阳极和八个阴极(因为您还希望小数点在几秒和几毫秒之间)。
第8步:完成!
将程序上传到您的Basys3 Atrix-7 FPGA板上,然后按下开始/停止按钮以使秒表进入!