目录
9、上板验证(目前还没有购买开发板故此部分直接复制野火文档)
前言
学习说明:是根据野火FPGA视频教程的学习笔记
一、开发设计流程
1、设计规划:分析项目需求,搭框架,确定子功能模块的结构关系、信号之间相互关系,确定模块的端口信号(即模块的输入输出),模块的功能。将一个大工程分解成几个子功能模块。
2、波形图绘制:使用绘图软件绘制信号的波形图。
3、代码编写:参照波形图编写代码,生成RTL传输级的代码。
4、代码编译:检查代码是否有语法错误。
5、逻辑仿真:modsim仿真,模拟输入信号的输入规则验证,RTL代码的功能是否符合要求。
6、波形图对比:仿真的波形图与绘制的波形图进行对比。
7、绑定管脚:界面绑定、代码绑定。
8、分析综合布局布线:生成上板的bit流文件。
9、上板验证
二、使用FPGA点亮LED灯
规范项目文件夹:文件夹命名方式字母、数字和下划线
例:G:\FPGA_Artix7\01_led\ 再次文件下建立
doc文件夹:存放数据手册、文档资料、绘制的波形图、编写的开发手册等we
led文件夹:工程文件夹
1、设计规划
由于并不是开发,而是学习,故不考虑硬件选型和电源功耗等问题。
项目功能描述:
通过一个按键控制一个led灯的亮灭,按键按下时亮起。
硬件资源:
查看硬件原理图,了解硬件资源配置
这里学习是用的野火的凌云开发板:相关资料可以去野火官网下载
找到开发版数据手册的第十二页可以看,按键与LED灯的原理图。

从以下按键原理图可知,当按键未按下时,KEY1为高电平;按下时,为低电平。

从以下LED灯原理图可知, 当LED为高电平时亮,低电平时熄灭。

模块和端口信号划分:
由于该功能较简单,仅一个功能模块即可实现,因此不需要进行功能模块划分。
功能模块取名为led,输入信号为key_in,输出信号为led_out。由此可以看出这是一个黑箱,只关心输入和输出,其中间信号的变换并不需要关系,中间黑箱只关系实现的功能就可以。


2、波形图绘制
在已创建的doc文件夹下( G:\FPGA_Artix7\01_led\doc),创建led的Visio波形图。
在使用Visio画波形图的时候需要把FPGA设计相关的图形添加进来

根据端口信号的真值表,绘制波形图。绿色信号为输入,红色信号为输出,黄色信号为中间信号

3、代码编写
创建工程
打开Vivado,在主界面点击Create Project.

打开后显示创建工程导向,点击"Next"
对工程项目命名,及设置存放位置。这里工程名为led,位置为刚刚建立的文件夹的位置。
G:\FPGA_Artix7\01_led\led
是否创建子目录,勾选后可以看出在选中的目录下,又创建了项目名的子目录。
是否勾选视情况而定,这里因为已经有led子目录了故,取消勾选


点击"Next",出现工程类型界面,选择寄存器级的工程

点击"Next",出现是否添加 .v 文件界面,如果需要可以点击添加,因为目前还没有 .v 文件,故不勾选。

点击"Next",出现是否添加连接文件,选择添加已经写好的约束文件、引脚配置,这里不进行添加。

点击"Next",出现添加FPGA芯片型号的界面,由于使用的野火的学习资源与资料,开发板是凌云核心板FPGA型号:XCa35TFGG484,故在Family框中选择Artix-7,Package框中选择fgg484,Speed框中选择-2,进行芯片的筛选,并找到xc7a35tfgg484-2。

点击"Next",出现添加FPGA芯片型号的界面

点击"Finish",完成工程创建。

创建代码文件


点击添加与创建代码文件

添加已经存在的文件:(常用于非Vivado代码编辑器,将编辑好的代码复制添加都工程下)
点击添加文件,并找到已经写好的代码文件,

选择添加,点击OK ,一般选择勾选

创建新的代码文件:(常用于在Vivado软件内部编写代码)
点击创建代码文件

点击OK,出现提示是否添加输入输出端口。

这里不需要添加所以直接点击OK

编写代码
代码编辑器设置

1、在Vivdo自带编辑器内编写

2、在notepad++编辑器内编写
修改打开编辑器设置

添加notepad++编辑器路径,路径设置格式为:
D:/Program Files (x86)/Notepad++/notepad++.exe [file name] -n[line number]
填入即可,点击OK并应用。

现在在Vivado内点击代码文件,直接可以跳转到notpad++代码编辑器中。

4、代码编译
Vivado只要填加上.v文件,那么软件就会自动编译,查找语法错误
这里将代码删除个",",点击保存后可以看出,会有提示错误。
5、逻辑仿真
testbench的原理
testbench是测试脚本,测试我们用硬件描述语言(HDL)设计的电路,测试设计电路的整体功能、部分性能能否达到预期目标。
testbench又可以成为事前仿真,主要是针对逻辑进行仿真。
当然还有其他仿真方式,时序仿真(过后仿真),由于时序仿真速度非常慢,而且并非100%正确,故采用速度较快的事前仿真,只需要编写一次代码,就可以进行快速仿真。
时序仿真多用于IC相关行业,如数字IC设计与验证。
Testbench过程及步骤
编写Testbench进行测试过程:
1、产生模拟激励(输入波形);
2、将产生的激励加入到被测试模块并观察其输出相应;
3、将输出相应与期望进行对比,从而判断设计的正确性。
步骤:
1、设计功能框图
这里测试功能常用“tb_工程名”来表示

2、将功能模块插入到测试文件中

3、在测试文件和功能模块之间加入信号传递连接
注:并非说在测试文件验证逻辑功能后上板就一定能够正常工作,虽然逻辑没有问题,但是在高速系统中往往需要进行时序约束,否则会由于系统工作太快导致时序违例,导致不能正常工作。
Testbench仿真文件的建立
创建与添加仿真文件与创建代码文件类似

如果已经有仿真文件可以直接根据路径进行添加,否则需要建立仿真文件
这里以创建为例进行操作


默认OK即可

已经建好的仿真文件

Testbench仿真代码的编写
编写后由于例化所以会自动包含功能文件


逻辑仿真

运行结果:

6、波形图对比


对比绘制波形图可以两者关系为取反,与仿真结果类似。
7、绑定管脚
方式一:界面设置创建(约束文件)
双击运行

弹出对话框后点击OK,最后出现以下界面 ,并单击管脚设置

对管脚进行设置

设置好后快捷键“CTRL + S”保存该约束文件。
生成一个物理与时序的约束文件

点击查看xdc约束文件
方式二:直接创建并编写约束文件

生成文件后直接在xdc文件中编写约束代码。
8、分析综合布局布线
生成上板的bit流文件,双击



生成后,点击取消即可

9、上板验证(目前还没有购买开发板故此部分直接复制野火文档)
下载到开发板



如图 8-80 所示,方框中是我们 bit 文件所在的位置,确认无误后点击“program”进行下载。

程序的固化


需要设置的参数:

生成成功

生成文件的位置

已经生成.bin文件 



接下来如图 8-89 所示,在“Configuration file”一栏中点击搜索添加我们前面生成的MCS 文件或 BIN 文件,其余选项按默认设置即可,点击“OK”


本文档仅仅是学习FPGA的笔记
这篇博客详细记录了基于FPGA的LED灯控制学习过程,包括项目规划、波形图绘制、代码编写、逻辑仿真、管脚绑定及上板验证等步骤。作者使用了野火的FPGA开发板,通过一个按键控制LED灯的亮灭,并通过Vivado进行设计与仿真,最后解释了如何将程序固化到外部Flash中,确保上电后仍能运行。
https://www.bilibili.com/video/BV1nQ4y1Z7zN?p=3
3556

被折叠的 条评论
为什么被折叠?



