基于 FPGA Vivado 的数字钟设计(附源工程)

时间:2024-03-25 19:07:14

今天给大侠带来基于 FPGA Vivado 的数字钟设计,开发板实现使用的是Digilent basys 3,如有想要入手 basys 3 开发板的,可以联系牛总:18511371833。话不多说,上货。

“FPGA产品设计与研发 ” 零基础入门及就业
 

基于 FPGA Vivado 的数字钟设计(附源工程)

 

本篇掌握基于diagram的Vivado工程设计流程,学会使用IP集成器,添加 IP 目录并调用其中的IP。本篇实现了一个简单的数字钟,能实现计时的功能。由于数码管只有4位,因此本数字钟只能计分和秒。本系统的逻辑部分主要由74系列的IP构成。

获取本篇相关源工程代码,可在公众号内回复“数字钟设计源工程”,本篇涉及到两个操作软件,分别是“Agent软件”和“WaveForms软件”,获取软件安装包,可在公众号内对应回复“WaveForms软件安装包”,“Agent软件安装包”。

 

基于 FPGA Vivado 的数字钟设计(附源工程)

操作步骤

 

1. 创建新的工程项目

1) 双击桌面图标打开Vivado 2017.2,或者选择开始>所有程序>Xilinx Design Tools> Vivado 2017.2>Vivado 2017.2;

2) 点击‘Create Project’,或者单击File>New Project创建工程文件;

3) 将新的工程项目命名为‘lab2’,选择工程保存路径,勾选‘Create project subdirectory’,创建一个新的工程文件夹,点击Next继续;

4) 选择新建一个RTL工程,由于本工程无需创建源文件,故将Do not specify sources at this time(不指定添加源文件)勾选上。点击 Next继续;

基于 FPGA Vivado 的数字钟设计(附源工程)

 

5) 选择目标FPGA器件:xc7a35tcpg236-1或Basys3;

6) 最后在新工程总结中,检查工程创建是否有误。没有问题,则点击Finish,完成新工程的创建;

 

2. 添加已经设计好的IP核

工程建立完毕,我们需要将lab2这个工程所需的IP目录文件夹复制到本工程文件夹下。本工程需要两个IP目录:74LSXX_LIB与Interface。74LSXX_LIB 和Interface都位于\Basys3_workshop\sources\lab2文件夹下

1) 在Flow Navigator中展开PROJECT MANAGER,选择‘Settings’。

2) 在Project Settings栏中展开IP项,选择‘Repository’,点击‘+’添加。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

3) 选择之前复制的IP文件夹

基于 FPGA Vivado 的数字钟设计(附源工程)

 

4) 确认弹窗提示一共添加了27个IP核

基于 FPGA Vivado 的数字钟设计(附源工程)

 

3. 创建原理图,添加IP,进行原理图设计。

1) 在Project Navigator下,展开IP INTEGRATOR,选择‘Create Block Design’创建新的原理图设计。

2) 将新的设计命名为‘digital_clock’。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

3) 在原理图设计界面中,主要有两种方式添加IP核:①Diagram窗口上方的快捷键;②在原理图界面中鼠标右击,选择‘Add IP’。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

4) 在IP选择框中搜索需要添加的IP,例如74LS90。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

5) 按Enter键,或者鼠标双击该IP,可以完成添加。本设计共需要添加4个74LS90,以及74LS08、seg7decimal、clk_div各1个。添加完成后如下图所示:

基于 FPGA Vivado 的数字钟设计(附源工程)

 

6) 添加一个clock IP,在IP搜索框中搜索‘clock’,选择‘Clocking Wizard’添加。双击IP进行配置,在‘Output Clocks’一项,设置输出时钟为两路100MHz输出。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

7) 在Output Clocks下方,不要勾选‘reset’和‘locked’,点击OK完成IP配置。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

8) 再添加一个concat IP,在IP搜索栏中搜索‘concat’并添加。双击IP进行配置,将端口数设为16。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

9) 同样的,再添加一个端口数为8的concat IP。至此,我们已经完成添加本设计中所有需要使用的IP。如下图所示:

基于 FPGA Vivado 的数字钟设计(附源工程)

 

10) 创建输出端口,鼠标右键选择8位concat的‘dout[7:0]’引脚,选择‘Make External’。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

11) 完成后,如下图所示:

基于 FPGA Vivado 的数字钟设计(附源工程)

 

12) 同样的,将seg7decimal IP的clr、a_to_g、an、dp这4个引脚,以及clock IP的clk_in1引脚,以及任意一个74ls90 IP的r9_1引脚make external。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

13) 修改端口名,双击端口‘r9_1’,在左侧的External Port Properties窗格中将其命名为GND。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

14) 同样的,将‘clk_in1’更名为‘clk’,‘dout[7:0]’更名为‘JC[7:0]’,‘a_to_g[6:0]’更名为‘seg[6:0]’,如下图所示:

基于 FPGA Vivado 的数字钟设计(附源工程)

 

15) 按照下图连线,可以参考‘连线攻略.txt’文件。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

16) 点击图纸上方的按键,验证设计的正确性。

17) 通过验证后,点击OK继续。Ctrl+S保存设计。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

18) 在Sources窗格中鼠标右键‘digital_clock’,选择‘Generate Output Products’。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

19) 在弹出窗口中,综合选项选择‘Global’,点击‘Generate’继续。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

20) 完成后,点击‘OK’继续。

21) 在Sources窗格中鼠标右键‘digital_clock’,选择‘Create HDL Wrapper’。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

22) 使用默认选项,点击OK继续,完成HDL文件的创建。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

23) 至此,原理图的设计已经完成。

 

4. 添加约束文件

1) 在Flow Navigator中,展开PROJECT MANAGER,点击‘Add Sources’。

2) 选择‘Add or create constraints’,点击Next继续。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

3) 选择‘Add Files’,找到并添加‘Digital_Clock.xdc’文件。注意,要勾选Copy constraints files into project(文件路径:\Basys3_workshop\sources\lab2)

 

5. 综合、实现、生成比特流文件

1) 实验一已经介绍过流程了,为了节省时间,这里就不一步一步再做赘述了,我们直接在Flow Navigator中展开PROGRAM AND DEBUG,点击Generate Bitstream。Vivado工具会提示没有已经实现的结果,点击‘Yes’,Vivado工具会依次执行综合、实现和生成比特流文件。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

2) 完成后,选择‘Open Hardware Manager’打开硬件管理器。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

3) 连接Basys3开发板,点击‘Open target’,选择‘Auto connect’。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

4) 连接完成后,点击‘Program device’。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

5) 检查弹出框中所选中的bit文件,然后点击Program进行下载。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

6. 使用逻辑分析仪验证结果

Analog Discovery2(AD2)

1) 按照下图接线,将PMOD 1-4口分别连接AD2 0-3数字I/O口,PMOD 5(GND)口与AD2 GND口连接,PMOD 7-10口分别与AD2 4-7数字I/O口连接。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

基于 FPGA Vivado 的数字钟设计(附源工程)

 

2) 连接AD2与电脑,打开WaveForms软件,获取WaveForms软件,可以在公众号内部回复“WaveForms软件安装包”。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

3) 在工具栏选择Settings>Device Manager,打开设备管理器。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

4) 选择连接的设备,点击‘Select’。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

5) 在左侧的功能选择栏选择‘Logic’,使用逻辑分析仪。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

6) 在窗口中点击‘Click to Add channels’,选择‘Bus’。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

7) 将DIO 0-3端口添加到Bus1。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

8) 同样的,点击左上角,将DIO 4-7端口添加到Bus2。完成后,如下图所示:

基于 FPGA Vivado 的数字钟设计(附源工程)

 

9) 点击‘Run’,观察数字时钟的秒针输出。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

OpenScope

1) 按照下图接线,将PMOD 1-4口分别连接OpenScope 1-4数字I/O口,PMOD 5(GND)口与OpenScope GND口连接,PMOD 7-10口分别与AD2 5-8数字I/O口连接。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

2) 连接OpenScope与电脑,打开Digilent Agent软件,获取Agent软件,可以在公众号内部回复“Agent软件安装包”。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

3) 在Windows工具栏右侧,右键Digilent Agent图标,选择‘Launch WaveForms Live’,在浏览器中打开WaveForms Live。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

4) 在浏览器页面中,点击‘ADD A DEVICE’添加设备。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

5) 选择AGENT。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

6) 输入设备的hostname或者IP地址,点击‘+’按钮添加。

在本地电脑中,默认值为http://localhost:42135

基于 FPGA Vivado 的数字钟设计(附源工程)

 

7) 选择连接OpenScope的串口,点击Open打开串口。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

8) 使用默认设置,在最下方点击‘DONE’完成添加。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

9) 点击打开添加的设备,在界面右侧将Time设置为5s,在Trigger一栏选择OFF。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

10) 在界面右侧找到Digital一项,选择ANALYZER,依次点击1-8端口。

基于 FPGA Vivado 的数字钟设计(附源工程)

 

11) 点击右上方的‘SINGLE’按钮运行一次,完成后在左侧波形图中可以观察秒针的输出,可以使用鼠标拖动波形,方便观察。

基于 FPGA Vivado 的数字钟设计(附源工程)