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

2020-12-30 14:36:38 浏览数 (1)

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

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

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

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

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

操作步骤

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继续;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4. 添加约束文件

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

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

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

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

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

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

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

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

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

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口连接。

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

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

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

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

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

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

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

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

OpenScope

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

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

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

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

5) 选择AGENT。

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

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

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

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

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

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

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

END

0 人点赞