BB-World

手把手系列教程Basys3篇之四:用Verilog生成一个简单的时序电路(计数器)

2
阅读(18755)

在这个设计实验中,我们将演示如何。此外,我们还将演示一个分层设计,使用一个独立的显示组件,将二进制的数值转换显示到七段显示器上


工程中所使用的软件版本为Xilinx Vivado 2016.2,硬件是Basys3开发板。当然,你也可以用容易将它移植到Nexy4DDR开发板上。


建议在学习这一例程前,先完成较为简单的社区手把手系列教程Basys3篇之三:Basys3 FPGA 3-8译码器实现http://www.digilent.com.cn/community/154.html,然后再来尝试这一实验。前一个例程,将教会你如何生成一个新的工程和添加设计源文件。


好了,下面让我们开始吧!


下面这一工程中使用了两个设计源文件和一个管脚约束文件。

blob.png

顶层模块 counter 包含了一个100MHzFPGA时钟所生成的1Hz时钟代码,和一个1hz的频率下工作的09计数器

顶层模块同时也例化了一个低层次的显示模块副本。

display 模块将09的值转换为七段字符。

 

第三个是管脚约束文件,在工程使用的端口要指定FPGA对应的引脚,这个管脚约束文件专门针对Basys3开发板。

 

下面演示三个设计源文件

blob.png


blob.png


blob.png


如果你已经在里工程添加好三个设计源文件,那么你可以一步步点击‘Run Synthesis’>=‘Implementation’>=‘Generate Bitstream’:


blob.png


8个综合后的警告是由于设定的恒定值被用于驱动阳极七段的显示。这就是我们的设计目的,我们可以忽略这些警告。

 

如果比特流文件已经生成,那么你可以通过下载Hardware Manager下载到FPGA里了。(可以到Decoder设计指导查看更多的细节)。

 

当下载完成后,你可以看到数码管每秒钟循环显示09的数值。当计数到9的时候led同时会亮起来。

 

其他有用的注释

在约束文件里我们指定FPGA的时钟是100MHz(单次10ns的时间)。

blob.png

这将需要的工具用来实现设计FPGA,所以它可以运行在这个速度上。

 

下面总结了这个工程设计的时序要求。

 

我们还可以看到FPGA实现设计所需的资源。一个使用了42LUTs31FFsLUT被用在实现设计的组合逻辑中,触发器被使用在实现时序逻辑电路中。31个触发器是需要实现1Hz时钟(27个触发器),和计数器(4个触发器)。


blob.png


学习心得

编辑好文档后马上就上板验证了,先来看看结果怎么样

398167901129700823.jpg

761545470069561889.jpg

206234635061144483.jpg

当计数到9的时候led灯会亮起来哦


在经历过一次英文文档的翻译后,这次学习起来也开始有点上手了,学会了计数器的设计方法,一秒的计数器定时,还有数码管的显示,结合上一次的点灯实验,有进一步熟悉了vivado的简单操作流程,学习FPGA就是这样子不断积累经验的,相信自己接下来可以做的更好哦


下面还是有附件翻译文档和工程文件(⊙o⊙)哦

counter.zip

Basys开发板指导文档翻译.zip