找回密码
 立即注册
搜索
查看: 3346|回复: 0

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

[复制链接]

346

主题

14

回帖

3万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
36982
发表于 2023-8-18 20:48:16 | 显示全部楼层 |阅读模式
本帖最后由 眼镜一米二 于 2023-8-18 20:51 编辑

叁芯智能科技FPGA就业班09月开班中


今天给大侠带来基于 FPGA Vivado 的数字钟设计,开发板实现使用的是Digilent basys 3。话不多说,上货。

需要源工程可以在以下资料获取里获取。

资料汇总|FPGA软件安装包、书籍、源码、技术文档…(2023.07.09更新)




本篇掌握基于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_workshop\sources\lab2文件夹下

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_workshop\sources\lab2)


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’按钮运行一次,完成后在左侧波形图中可以观察秒针的输出,可以使用鼠标拖动波形,方便观察。







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|冀ICP备20011060号-2|叁芯智能

GMT+8, 2024-12-22 02:05 , Processed in 0.081175 second(s), 20 queries .

Powered by Discuz! X3.4

© 2017-2018

快速回复 返回顶部 返回列表