【FPGA】Modelsim和Vivado的使用


  笔者在这里使用的Vivado软件版本是Vivado 2020.2,据说该版本比较稳定。参考的课程是正点原子的课程手把手教你学达芬奇&达芬奇Pro之FPGA开发篇。文章未完成,但是会不定期补充完善,笔者学到新的Vivado使用技巧和操作也会更新到此文章中,如果篇幅过大就单独写一篇文章说明。


一、FPGA工程文件结构

  首先说明一下FPGA工程的文件结构,一个科学的文件结构对于工程的管理和维护是十分重要的。笔者使用的文件结构如下:

  • Doc:存放说明性文件,例如模块功能框图,芯片的参考手册,波形图,README文件等。
  • Sim:存放仿真相关文件,例如TestBench文件,Modelsim工程文件夹使用的仿真模块等。
    • TB:存放TestBench文件。
    • 存放Modelsim仿真的文件等。
  • Rtl:存放工程中所有模块的Verilog源码(RTL代码)。
  • Prj:Vivado工程文件夹。

二、Modelsim的使用

  较为简单,暂略,之后有时间再补充。比较难的部分在于TCL命令的使用,可以查阅一些简单的指令,例如run

三、Vivado的使用

3.1 建立工程

  1. 工程的名字一般和顶层模块的名称保持一致,将工程文件的位置确定为Prj文件夹后取消勾选Create project subdirectory
  2. 选择RTL Project
  3. 添加RTL源文件(Verilog代码)。
  4. 添加约束文件(可以在工程内手动添加)。
  5. 选择FPGA芯片型号(达芬奇为xc7a35tfgg484-2)。

3.2 分析 RTL ANALYSIS

  点击Open Elaborated Design对代码进行RTL分析。在右上角的菜单中可以原则不同的分析视图:

  • Default Layout:打开默认布局(代码的逻辑原理图)。
  • I/O Planning:IO管脚约束,打开之后可以在下面的IO Ports窗口约束管脚及对应的电平标准。按快捷键Ctrl+s保存后会弹出一个窗口,要求建立管脚约束的.xdc文件。.xdc文件的文件名一般和顶层模块名(工程名)保持一致。.xdc文件也可以自己编写,利用相关资料直接在该文件中写约束管脚的代码实现的效果是一模一样的。
  • Floorplanning

  分配完IO管脚约束之后就可以点击生成比特流文件了,点击后自动完成综合(Synthesis)和执行(Implementation)操作。

3.2.1 .xdc约束(Constraints)文件的产生

  .xdc约束文件可以由上面的方法产生,也可以在Source窗口直接点击鼠标右键产生。

3.3 综合 SYNTHESIS

  所谓综合,就是将Verilog的逻辑代码对应到FPGA的底层硬件的操作。在分析(RTL Analysis)中打开的原理图是一个抽象出的原理图,而在综合中打开的原理图是和FPGA的硬件资源直接相关的原理图。

3.4 执行 IMPLEMENTATION

  在执行(Implementation)中可以查看实际的硬件电路连接图。

3.5 烧录程序

  点击PROGRAM AND DEBUGOpen Hardware Manager中的Open Target进行自动连接,Vivado会自动识别生成的比特流文件.bit。点击下载Program即可下载程序。

3.6 程序固化

  通过3.5的在线烧录的方法是无法将程序烧录到板卡上去的,只有将编译好的程序烧录到开发板上的 QSPI Flash 中,程序才能上电后自动执行。QSPI中的Q是指该芯片的数据线有4位,分别是DQ0~DQ3。达芬奇上的Flash除了可以存储程序外,还可以存储一些用户数据。
  固化烧录文件主要分为以下两种,它们都可以由比特流文件.bit产生:

  • .bin文件:一般由Vivado软件编译产生,存储在特定目录下的二进制文件
  • .mcs文件:一般通过Vivado GUI界面操作或TCL命令生成,.mcs文件里包含了.bin文件的内容,除此之外,每行的开始有地址信息,最后一个Byte是CRC校验信息。

3.6.1 SPI约束

  对于达芬奇开发板而言,在工程的.xdc文件中添加以下约束以加快上电后的程序读取速度。

# SPI Configuration
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property CONFIG_MODE SPIx4 [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
# 所有未使用的引脚都上拉
# set_property BITSTREAM.CONFIG.UNUSEDPIN PULLUP [current_design]

3.6.2 .bin文件的产生

  在Settings中找到Bitstream,勾选-bin_file按钮即可在每次生成比特流文件.bit后生成对应的.bin文件。生成的两个文件可以在以下目录中找到:

../Prj/project_name.runs/impl_1/

3.6.3 .mcs文件的产生

  点击菜单栏中的Tools,点击Generate Memory Configuration File…打开以下窗口:
请添加图片描述

3.6.4 添加配置的存储器件并配置固化文件

  打开Open Hardware Manager并连接好器件后,点击菜单栏中的Tools,点击Add Configuration Memory Device并选择器件型号,打开以下窗口:
在这里插入图片描述
  依次选择制造商,大小,通信种类和位宽,下面的搜索栏中就会出现对应的器件。在这里(达芬奇)出现的两个器件,上面的是3.3V的,下面的是1.8V的,故选择上面的即可。
  选择OK后,跟随引导窗口配置固化文件。如果没有跳出窗口,也可以在Hardware窗口右击选择Program Configuration Memory Device…打开配置窗口:
在这里插入图片描述
  选择任意方式生成的固化文件均可,选择后其他选项保持默认(擦除,下载程序并校验)点击OK就会自动开始下载,重启开发板电源即可看到对应的程序现象。如果只需要擦除就仅选择Erase即可。

3.7 IP核的使用(以PLL为例)

  IP(Intellectual Property)核,即知识产权,是ASIC或FPGA中的预先设计好的电路功能模块。一般而言,常用并且复杂的电路功能可以封装成IP核,他的可靠性相较于自行编写的电路模块高。IP核可以理解为实现某种功能的电路模块,在实际使用的时候可以当作一个“黑盒子”使用。使用IP核可以加速设计流程,提高开发效率。在Vivado中使用图形化界面进行配置,并且根据配置的写法对配置后的IP核进行例化即可。
  IP核可以是电路生产厂商定义的官方IP核,也可以是用户自己定义封装的自定义IP核。厂商提供的IP核还是十分丰富的,例如PLL、RAM、FIFO、FFT、FIR等。

IP核存在很多优点,但是也存在很多局限,主要体现在以下几点:

  1. 移植性差:IP核不能跨平台使用;
  2. 功能调整空间小:基本上只能将IP核当作黑盒子使用;
  3. 部分IP核需要付费使用。

如何使用IP核:在工程管理(PROJECT MANAGER)窗口的IP Catalog中,搜索要使用的IP核(以时钟向导Clocking Wizard IP为例):
在这里插入图片描述
请添加图片描述
请添加图片描述

四、Modelsim + Vivado 联合仿真

  对于使用Xilinx公司的FPGA芯片的工程,使用Vivado软件自带的仿真工具进行仿真是十分方便的,但缺点在于当工程量相当大的时候,使用芯片开发商自带的仿真工具进行仿真往往十分缓慢。而Modelsim作为一个优秀的仿真工具,在对大型工程执行仿真操作是十分快速方便的。所以,我们可以通过Vivado自动生成仿真库(对于IP核以及原语,必须通过编译生成对应的仿真库),然后在Modelsim中进行仿真,这样就可以大大提高仿真效率
  首先,在工程引导界面点击Tools下的Complie Simulation Libraries
在这里插入图片描述

  之后,执行以下步骤:

  1. Simulator选项中选择要使用的仿真器;
  2. Family中选择要编译生成的目标器件;
  3. 在Modelsim的安装路径(笔者在D:/modeltech64_2020.4)中新建一个安放仿真库的保存文件夹,可以命名为vivado_2020_2_lib
  4. 选择编译库的存储路径和GCC编译时需要使用的可执行路径为vivado_2020_2_lib
  5. 点击Complie执行编译(首次编译时间可能达到10~20分钟,配置好之后的工程不需要编译)。

在这里插入图片描述

  1. 打开工程,在设置中的3rd Party Simulators中设置Modelsim和GCC的安装路径,如下图所示:
    在这里插入图片描述

  2. Simulation中设置目标模拟器和编译库的位置,点击OK即可。

在这里插入图片描述

  之后点击运行行为级仿真即可自动打开Modelsim软件进行仿真。

  如果仿真过程中修改了某文件,可以关闭Modelsim再次运行仿真;也可以不关闭,找到仿真库xil_defaultlib,即可找到所有的文件,再次运行仿真前进行再次编译即可。


  持续不定期更新完善中……


  原创笔记,码字不易,欢迎点赞,收藏~ 如有谬误敬请在评论区不吝告知,感激不尽!博主将持续更新有关嵌入式开发、FPGA方面的学习笔记。


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Include everything

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值