精华内容
下载资源
问答
  • Ubuntu界面无图标显示

    2021-03-05 21:00:53
    Windows系统下安装Ubuntu Ubuntu界面无图标显示问题1.原因:这是由于电脑集显、独显在Ubuntu中使用设置问题,安装的Ubuntu中无驱动。2. 解决方案 1.原因:这是由于电脑集显、独显在Ubuntu中使用设置问题,安装的...

    1.原因:这是由于电脑集显、独显在Ubuntu中使用设置问题,安装的Ubuntu中无驱动。

    2. 解决方案

    开机按F7(神州电脑,对应自己电脑版本),进入boot引导设备选项,选择Ubuntu进入。
    在这里插入图片描述
    选择advanced options for ubuntu
    在这里插入图片描述
    选择recovery mode 恢复模式,在恢复模式下进行更新,修复各项(忘拍照了)即可进入Ubuntu界面。在这里插入图片描述
    进入的Ubuntu界面图标太大,首先更新驱动,软件和更新->附加驱动,使用电脑对应驱动。点击应用更改,然后重启即可。在这里插入图片描述

    附录(针对我自己):F2进入boot引导设置界面
    在这里插入图片描述

    展开全文
  • 文章目录前言一、Vivado与ModlSim二、使用步骤1.Vivado安装总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,...

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


    前言

    提示:这里可以添加本文要记录的大概内容:
    例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、Vivado与ModelSim

    Vivado Design Suite 是 Xilinx 公司的2012年发布的综合性 FPGA 开发软件,可以完成从设计输入到硬件配置的完整FPGA 设计流程。包括高度集成的设计环境和新一代从系统到IC级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上。这也是一个基于AMBA AXI4 互联规范、IP-XACT IP封装元数据、工具命令语言(TCL)、Synopsys 系统约束(SDC) 以及其它有助于根据客户需求量身定制设计流程并符合业界标准的开放式环境。赛灵思构建的的Vivado 工具把各类可编程技术结合在一起,能够扩展多达1 亿个等效ASIC 门的设计。

    Modelsim是Mentor公司的语言仿真器,它支持Windows 和 Linux 系统,是单一内核支持 VHDL 和 Verilog 混合仿真的仿真器。它采用直接优化的编译技术、单一内核仿真,不仅编译仿真速度业界最快、编译的代码与平台无关,而且便于保护 IP 核。它还提供了最友好的调试环境,具有个性化的图形界面和用户接口,为用户加快调试提供强有力的手段,它是 FPGA/ASIC 设计的首选仿真软件。

    二、安装步骤

    1.Vivado的安装

    ①Xilinx 公司每年都会对 Vivado 设计套件进行更新, 各个版本之间除界面以及其它性能的优化之外,基本的使用功能都是一样的。我使用的是Vivado v18.3版本,有需要的同学请自取。

    安装包链接:https://pan.baidu.com/s/1qJquE9NcB22mqNdK9h9rdg 
    提取码:vylt 
    

    ②开始安装
    双击压缩包
    注意,解压目录的路径名称只能够包含字母、数字、下划线,否则安装程序有可能出问题,为避免在安装过程中出错,在开始安装之前,请先关闭安全或杀毒软件。双击解压出来的文件夹下的“xsetup.exe”,开始安装 Vivado 软件,如下图所示:
    在这里插入图片描述
    进入 Vivado 的安装引导页面,如下图所示:
    在这里插入图片描述
    此时,如果电脑连接到了互联网,有可能会弹出如下消息框:
    在这里插入图片描述
    直接点击Continue即可,不用安装最新的版本。
    然后点击“Next”
    在这里插入图片描述
    在接下来的页面中,勾选 3 个“I Agree”,然后点击“next”:
    在这里插入图片描述
    接下来是选择版次,这里我们选择全功能的版次,即“System Edition”,其包含最多的子组件:
    在这里插入图片描述

    接下来接下来是选择工具组件和器件库。如果内存足够大的话,可以默认全选;如果觉得自己的磁盘不够大,可以将用不到的工具组件和器间库掉。下面的图是将用不到的工具组件和器件库去掉之后的截图,应该是节省了十多个G来着的:

    在这里插入图片描述
    接下来是安装目录的设置,大家都知道尽量不要安装到系统盘里吧,并且安装路径只能够包含字母、数字、下划线,否则安装程序有可能出问题,其他的设置保持默认即可,然后点击Next:
    在这里插入图片描述
    接下来进入Summary 界面,该界面总结了前面所有安装的配置信息,供用户浏览确认。确认无误后,点击“Install”开始安装 Vivado 设计套件:
    在这里插入图片描述
    安装过程中可能会弹出消息界面提醒我们断开所有的 Xilinx 下载器与电脑的连接。值得注意是,在安装 Vivado 软件的过程中,会安装 Xilinx 下载器的驱动程序,这里必须断开 Xilinx 下载器和电脑的连接,否则下载器的驱动可能安装失败。断开连接后, 点击确定即可。

    当弹出这个界面就说明我们安装完成了,直接点击确定即可:
    在这里插入图片描述

    注:以上安装过程是我买了领航者V2后,从正点原子的教学视频这里学来的,特此感谢!
    但是呢,正点原子让我自己想办法去破解,这点还是要吐槽的!
    

    我就自己在网上找呀找,终于找到解决方法了,接下来是重点,小本本记好!

    ③破解

    首先获得License,有需要的同学自取:

    	链接:https://pan.baidu.com/s/1xgtkq3lvnUkJjZB1fV_CKw 
    	提取码:t5s4 
    	这个很小,下得很快!
    

    用之前要先解压缩的哈。

    在这里插入图片描述
    找到解压缩之后文件,加入即可:
    在这里插入图片描述

    之后看一下自己的破解状态,这个是可以用到2037年的:

    在这里插入图片描述
    至此,Vivado的安装破解就完成了!

    2.ModelSim的安装

    ①Modelsim 有几种常见的版本: SE(System Edition)、 PE(Personal Edition)和 OEM(Orignal EquipmentManufactuce,即原始设备制造商),其中 SE 是最高级的版本,而集成在 Altera、 Xilinx 以及 Lattice 等 FPGA厂商设计工具中的均是 OEM 版本。我使用的是功能最全的SE版本。老规矩,自取哈:

    64位版本:链接:https://pan.baidu.com/s/1ifojKAZ_Pd_okk9VuOP2Dg 
    		提取码:ca3u 
    32位版本:链接:https://pan.baidu.com/s/1Di4IpxTd32zA51FwZ8wwHA 
    		提取码:l4u0 
    

    ②开始安装
    我用的64位版本,不太清楚32位会发生什么问题哈!

    双击进入安装界面:
    在这里插入图片描述
    在这里插入图片描述
    更改安装路径,也不用多说了哈,记住路径不要有中文以及特殊的标准符号哈,总之,越简单越好:
    在这里插入图片描述
    在这里插入图片描述
    之后是等待安装,会弹出问你是不是要创建桌面快捷方式,看你需求啦:
    在这里插入图片描述
    第二次提示是否将 Modelsim 可执行文件放入 Path 变量,选择“Yes”时可以从DOS 提示符执行Modelsim,这里要选择“Yes”:
    在这里插入图片描述
    安装完成后进入下图所示界面,大致内容为:如果你有 License,请选择“No”,选择“Yes”将会为 Modelsim-64 使用的 HW 安全 key 安装一个软件驱动,如果你不确定你电脑上的驱动是否适用于此版本, 选择“Yes”会重启电脑完成整个安装。这里因为有 License,所以选择“No”,当然了如果经过整个的指导操作还是使用不了,不妨卸载了选择“Yes“试试,一般选择“No“是没问题的。
    在这里插入图片描述
    这样就完成安装了。

    注:以上安装过程是我买了领航者V2后,从正点原子的教学视频这里学来的,特此感谢!
    	但是呢,正点原子让我自己想办法去破解,这点依旧要吐槽的!
    

    如果没有License的话都没办法打开这个软件,那就又只能自己想办法了!

    ③破解
    依旧需要破解包,自取呀:

    链接:https://pan.baidu.com/s/1uDL2ReTljrcRWfTno1ZVZQ 
    提取码:j4fu 
    

    解压缩之后把得到的两个文件放到软件安装路径的win64文件夹下:
    在这里插入图片描述
    在这里插入图片描述
    然后在win64文件夹下找到mgls64.dll,单击右键进入属性界面,取消它的只读属性:
    在这里插入图片描述
    然后单击刚才复制过来的patch_dll.bat:
    在这里插入图片描述
    稍等一下会弹出来一个一个LICENSE.TXT文本,另存到安装路径的win64文件夹下:

    在这里插入图片描述
    然后恢复mgls64.dll的只读属性。接下来还有一步:右击“此电脑”,单击“属性”,进入电脑设置界面,点击“高级系统设置”:

    在这里插入图片描述
    点击环境变量,进入设置环境变量:
    在这里插入图片描述
    变量是LM_LICENSE_FILE,不要写错,右边的值是LICENSE.TXT所在的文件路径。
    在这里插入图片描述
    点击确定之后解压就完成啦,可以使用了!

    三、初步使用

    1.Vivado的简单介绍

    我安装之后,桌面上以下多了四个图标,行吧,但我第一下点开的是这个Vivado 2018.3,也就是“主软件”:
    在这里插入图片描述
    ①就说说如何创建工程吧:
    在这里插入图片描述
    工程命名就看自己想怎么命名吧,最好具有一定识别度。工程路径是指定本次工程存放在电脑磁盘中的位置,这个可以自行选择,需要说明的是,工程路径不能包含中文、空格或者其它一些特殊的符号,否则工程会创建失败。
    在这里插入图片描述
    由于默认勾选了“Create project subdirectory”选项, Vivado 会在所选工程目录下自动创建一个与工程名同名的文件夹,用于存放工程内的各种文件。并且 Vivado 会自动管理工程文件夹内的各种工程文件,并创建相应的子目录。

    如果你是大佬的话······Emmmm应该不可能,大佬也不用看这个。新手的话,勾选第一个就好。
    在这里插入图片描述
    选择了“RTL Project”后,点击“Next”,进入添加源文件页面。注意,如果勾选上图 中“RTL Project”下的“Do not specify sources at this time”,则不会出现添加源文件的界面。在弹出添加源文件的界面后,可以在此处创建/添加源文件,当然也可以直接点击“Next”,创建完工程后再创建/添加源文件。这里直接点击“Next”:
    在这里插入图片描述
    接下来是添加约束文件,也可以直接点击“Next”,创建完工程后再创建/添加约束文件:
    在这里插入图片描述
    接下来选择开发板的芯片型号,可以直接在搜素框中输入完整的芯片型号,根据自己使用的来选择(其实上面两步可以直接勾选上“RTL Project”下的“Do not specify sources at this time”而跳过):
    在这里插入图片描述
    最后点击Finish就可以啦:
    在这里插入图片描述
    ②创建新工程说完了,介绍一下界面吧:
    在这里插入图片描述
    (1) Flow Navigator。 Flow Navigator 提供对命令和工具的访问,其包含从设计输入到生成比特流的整个过程。 在点击了相应的命令时,整个 Vivado 工程主界面的各个子窗口可能会作出相应的更改。
    (2)数据窗口区域。默认情况下, Vivado IDE 的这个区域显示的是设计源文件和数据相关的信息。
    • Sources 窗口: 显示层次结构(Hierarchy)、 IP 源文件(IP Sources)、库(Libraries)和编译顺序(Compile Order)的视图。
    • Netlist 窗口: 提供分析后的(elaborated)或综合后的(synthesized)逻辑设计的分层视图。
    (3) Properties 窗口: 显示有关所选逻辑对象或器件资源的特性信息。
    (4)工作空间(Workspace): 工作区显示了具有图形界面的窗口和需要更多屏幕空间的窗口,包括:
    • Project Summary。提供了当前工程的摘要信息,它在运行设计命令时动态地更新。
    • 用于显示和编辑基于文本的文件和报告的 Text Editor。
    • 原理图(Schematic)窗口。
    • 器件(Device)窗口。
    • 封装(Package)窗口。
    (5)结果窗口区域:在 Vivado IDE 中所运行的命令的状态和结果,显示在结果窗口区域中,这是一组子窗口的集合。在运行命令、生成消息、创建日志文件和报告文件时,相关信息将显示在此区域。默认情况下,此区域包括以下窗口:
    • Tcl Console: 允许您输入 Tcl 命令,并查看以前的命令和输出的历史记录。
    • Messages: 显示当前设计的所有消息,按进程和严重性分类,包括“Error”、“CriticalWarning”、“Warning”等等
    • Log: 显示由综合、实现和仿真 run 创建的日志文件。
    • Reports: 提供对整个设计流程中的活动 run 所生成的报告的快速访问。
    • Designs Runs: 管理当前工程的 runs。
    (6)主工具栏: 主工具栏提供了对 Vivado IDE 中最常用命令的单击访问。
    (7)主菜单: 主菜单栏提供对 Vivado IDE 命令的访问。
    (8)窗口布局(Layout)选择器: Vivado IDE 提供预定义的窗口布局,以方便设计过程中的各种任务。布局选择器使您能够轻松地更改窗口布局。或者,可以使用菜单栏中的“Layout”菜单来更改窗口布局。

    2.ModelSim的简单介绍

    ①ModelSim 的使用主要分为两种情况,第一种就是直接使用ModelSim 软件进行仿真,也就是手动仿真;第二种情况就是通过其它的 EDA 工具如 Vivado 调用 Modelsim进行仿真,这种情况也就是我们通常所说的自动仿真或者联合仿真。不管是手动仿真还是自动仿真,它们都遵循以下 5 个步骤:
    (1) 新建工程
    (2) 编写 Verilog 文件和 Testbench 仿真文件
    (3) 编译工程
    (4) 启动仿真器并加载设计顶层
    (5) 执行仿真。

    ②手动仿真
    ModelSim是绝对地址的工作机制,所以当把别的文件拷贝过来使用时,需要先改变地址,改变到自己新创建的文件夹下:
    在这里插入图片描述
    然后就是创建工程。一般都是先写好代码之后放进来进行仿真
    在这里插入图片描述
    在“Project Name”栏中填写工程名,这里的命名方式,最好根据仿真的文件来进行命名;“Project Location”是工程路径,可以根据需要把工程保存到不同的位置。因为前一步骤更改目录的时候已经做了选择,所以这里保持默认即可:
    在这里插入图片描述
    前面说了,先写添加:
    在这里插入图片描述
    在这里插入图片描述
    然后就是建立TestBench文件。我目前呢都是用现成的,所以照样是加入已有文件。加入之后就进行编译:
    在这里插入图片描述
    因为这个截图吧,文件栏出来之后按下Ctrl、Alt之后就消失了,所以就用的别处的!
    编译之后如果没有问题的话,Statue就会变成√,否则的话就要检查以下代码对不对,双击这个文件代码就出来了:
    在这里插入图片描述
    之后右键单击Simulation会出现下拉框,点击Start Simulation,就会出现这个一个框,点击自己编写的仿真文件,并且要在 Optimization 一栏中取消勾选(注意一定要取消优化的勾选,否则无法观察信号波形),即不使能优化:
    在这里插入图片描述
    右键单击自己的例化文件,会出现一个下拉框,然后单击Add wave:
    在这里插入图片描述
    然后设置好运行时间后就点击旁边的按钮,进行仿真:
    在这里插入图片描述
    在这里插入图片描述
    大致就是这样啦!

    总结

    这是第一次写一篇博客,参考了很多网上的内容,有什么不对,还望大家指正!
    这次呢,主要是关于这两个软件,其实FPGA牵扯的东西挺广的,后面慢慢学习做项目的时候,会一点一点的补上,关于Vivado和ModelSim的细节后面也会慢慢补充。

    展开全文
  • 使用Vivado的FPGA开发(1),了解Vivado工具的设计流程,Xilinx官方ug892文档的阅读笔记。

    FPGA深度学习加速(1)

    Xilinx ug892-Vivado design flows overview 阅读笔记


    ug892简述了Vivado的设计流程,官方文档链接:

    https://china.xilinx.com/support/documentation/sw_manuals/xilinx2020_2/ug892-vivado-design-flows-overview.pdf

    本篇简要地记录了阅读原文档的笔记,融入了笔者自己的理解,部分翻译了原文,现更新至第三章-Vivado工程模式(内容约占原文80%,非工程模式暂时不会用到,会在未来能够用到的时刻更新)。


    目录


    第一章:Vivado系统级设计流程

    本用户指南概述了如何使用Vivado®设计套件创建新的设计,以便在Xilinx®设备中编程。它简要描述了各种使用模型、设计特性和工具选项,包括准备、实现和管理设计源及IP核。Vivado设计套件提供了多种方法来完成Xilinx设备设计、实现和验证中涉及的任务:

    1. 传统的 RTL-比特流 设计流程(见1.1 RTL-比特流设计流程)
    2. 系统级集成流程,侧重于以IP为中心的设计和基于C的设计(见1.2 RTL-比特流以外的设计流程)

    Vivado设计套件提供了一款IDE集成了上述功能。Vivado IDE为硬件设计的集成、实现和验证提供了接口。此外,所有设计流程都可以使用Tcl命令来运行。Vivado设计套件支持以下的设计标准:

    • Tcl
    • AXI4, IP-XACT
    • Synopsys design constraints (SDC)
    • Verilog, VHDL, VHDL-2008, SystemVerilog
    • SystemC, C, C++

    下图展示了Vivado设计套件的高层次设计流程:

    在这里插入图片描述

    1.1 RTL-比特流设计流程

    RTL设计

    RTL: Register Transfer Level,所谓RTL设计即是编写硬件描述语言代码进行硬件设计。Vivado支持指定RTL源文件来创建项目,并将这些源文件用于RTL代码开发、分析、合成和实现。Vivado的综合与实现支持多种源文件类型,包括Verilog、VHDL、SystemVerilog和XDC(Xilinx Design Constraints),详情见用户指南:ug895-vivado-system-level-design-entry 。而UltraFast侧重于RTL层次化设计及XDC的设计技术,并介绍了Vivado设计套件的高级特性及硬件设计性能优化方法,详情见用户指南:ug949-vivado-design-methodology

    IP设计与系统级设计集成

    IP: Intellectual Property,理解为已经设计并验证好的硬件模块。Vivado设计套件可以将IP作为独立模块或在系统级设计的上下文中进行配置、实现、验证和集成。自定义IP按照IP-XACT协议打包,然后通过Vivado IP目录提供。IP目录提供了对IP的快速访问,用于配置、实例化和验证IP。Xilinx IP利用AXI4互连标准实现更快的系统级集成。现有的IP可以在设计中使用RTL或netlist格式,详见用户指南:ug896-vivado-ip

    IP子系统设计

    IP子系统指的是多个IP互连形成的子系统。Vivado IP integrator使用AMBA®AXI4互连协议将各种IP缝合到IP子系统中。连接过程可以使用图形界面,通过绘制与原理图类似的DRC来轻松连接整个接口,并提供了自动化链接以确保正确的IP配置和连接。详见用户指南:ug994-vivado-ip-subsystems

    I/O和时钟规划

    Vivado IDE提供了一个I/O管脚规划环境,该环境支持将I/O端口分配到特定的设备封装管脚或内部芯片板上。内存接口可以交互式地分配到特定的I/O组中,以获得最佳的数据流。Vivado pin planner用以分析设备和与设计相关的I/O数据。该工具还提供I/O DRC和同步开关噪声(SSN)分析命令,以验证I/O分配。详见用户指南:ug899-vivado-io-clock-planning

    Xilinx平台开发板支持

    在Vivado设计套件中,可以选择现有的Xilinx平台开发板作为设计目标。目标板上实现的所有IP接口都是公开的,以便能够快速选择和配置设计中使用的IP。生成的IP配置参数和物理约束(如I/O标准和封装管脚约束)将自动分配并在整个设计中扩展。详见用户指南:ug895-vivado-system-level-design-entry

    综合

    所谓综合Synthesis,指的是将硬件描述语言转化为实际电路设计的过程。Vivado执行整体RTL设计的全局或自顶向下的综合,但在综合IP目录中的IP核,或IP Integrator中的模块时,Vivado设计套件使用上下文无关(OOC)或自底向上的综合。在层次化RTL设计中,也可以选择特定的模块或IP核进行上下文无关的综合。在层次化、模块化和团队协作的设计中,OOC设计流程是重要的技术手段。

    设计分析与仿真

    Vivado设计套件支持在设计过程的每个阶段分析、验证和修改设计,可以通过运行设计规则和设计方法检查、逻辑模拟、时序和功耗分析来提高电路性能,详见用户指南:ug906-vivado-design-analysis

    Vivado模拟器支持在设计流程的不同阶段运行行为级和结构逻辑级仿真。该模拟器支持Verilog和VHDL混合模式仿真,仿真结果可以在vivadoide集成的波形查看器中显示。还可以使用第三方模拟器,这些模拟器可以集成到Vivado IDE中并从中启动。

    布局和布线

    当综合的netlist可用时,Vivado实现(implementation)提供了所有必要的功能,以优化、放置netlist并将其路由到目标部件的可用设备资源上。Vivado实现可以满足设计的逻辑、物理和时间限制。

    对于具有挑战性的设计,Vivado IDE还提供了高级的层次规划功能,其中包括将特定逻辑约束到特定区域的能力,或手动放置特定设计元素并修复它们以供后续实现运行。详见用户指南:ug906-vivado-design-analysis

    硬件Debug及验证

    在实现(Implementation)之后,可以对设备进行编程,然后使用Vivado逻辑分析器进行分析,或者在独立的Vivado Lab Edition环境中进行分析。可以将Debug核添加到RTL源文件、综合netlist,或使用工程变更单(ECO)流实现的设计中。还可以修改连接到调试探测的网络,或者将内部信号路由到封装管脚,以便使用ECO流进行外部探测。详见用户指南:ug908-vivado-programming-debugging

    1.2 RTL-比特流之外的设计流程

    Vivado设计套件支持几种RTL-比特流之外的设计流程,这些高层次设计流程都从RTL-比特流设计流程衍生而来,因而同样适用上节的流程。

    加速内核流程(Accelerated Kernel Flows)

    Xilinx® Vitis™ 平台将加速用例引入Vivado® 流。Vitis使用Vivado的平台来添加加速内核(Accelerated Kernel),硬件设计由平台和加速器组成。在这种情况下,最终的比特流是由Vitis创建的,而完整的设计在Vivado中是不可见的,详见用户指南:ug1393-vitis-application-acceleration

    嵌入式处理器设计

    嵌入式处理器的设计,除硬件外还需要软件来进行系统的启动和有效运行,软硬件的设计须相一致,而两个域见的数据传递和相互验证是成功设计的关键。使用Vivado设计套件中的IP integrator可以进行嵌入式处理器的模块化设计,包括了处理器核及其接口的实例化、配置核集成。在IP核在实现(implementation)过程中被编译好之后,在Vitis™进行其相应的软件设计核验证。

    Vitis设计套件是包含了Xilinx平台所有嵌入式应用程序和加速器的编译器。Vitis支持用更高级的语言进行开发,利用开源库,并支持特定领域的开发环境。有关嵌入式处理器设计流程,详见以下用户指南:ug898-vivado-embedded-designug940-vivado-tutorial-embedded-designug1046-ultrafast-design-methodology-guide

    基于模型的设计:使用模型生成器(Model Composer)

    模型生成器(Model Composer)是一种基于模型的图形化设计工具,可在MathWorks MATLAB®和Simulink®产品中实现快速设计探索,并通过自动代码生成加速Xilinx设备,详见用户指南:ug1262-model-composer-user-guide

    基于模型的DSP设计:使用Xilinx系统生成器(Xilinx System Generator)

    作为Vivado设计套件的一部分安装的Xilinx系统生成器工具可用于实现DSP功能。使用系统生成器创建DSP函数,并将其打包到Vivado IP 目录的IP模块中,其生成的IP可以作为子模块实例化到Vivado设计中,详见用户指南:ug897-vivado-sysgen-user

    高层次综合(HLS):基于C的设计

    Vivado设计套件中的高层次综合(HLS)支持使用C、C++、SystemC语言描述DSP函数,并应用到Vivado设计中。使用高级语言的特性可以更便捷地实现DSP函数,同时支持修改参数以优化性能。HLS支持在设计环境中直接使用基于C的测试用例进行RTL设计的仿真。C-RTL综合可以将基于C的设计转化为RTL模块,其可以打包并实现为大的RTL设计的一部分,或独立的IP integrator模块。详见用户指南:ug902-vivado-high-level-synthesisug871-vivado-high-level-synthesis-tutorial

    动态函数替换设计(Dynamic Function Exchange,DFx)

    动态函数替换(Dynamic Function Exchange,DFx)机制支持实时地修改Xilinx设备运行时的部分设计。可重构模块(reconfigurable modules)须合理地设计,保证其功能与性能的最优化,以及动态替换时的无故障操作,因此DFx有一套严格的设计流程,包括了减少进入可重构模块的接口信号数量、布局规划设备资源和引脚配置;以及遵守特殊的DFx drc。详见用户指南:ug909-vivado-partial-reconfigurationug947-vivado-partial-reconfiguration-tutorial

    层次化设计

    层次化设计(Hierarchical Design)可以将复杂的功能拆分为更容易实现的子功能。层次化设计的流程包括了合理的模块接口设计、限制(constraints)定义、布图规划以及特殊命令和设计技巧等。层次化设计让子功能的设计独立于整体系统,减少了顶层模块的复杂程度,也更有利于团队协作和模块复用。Vivado设计套件的很多功能支持层次化的设计流程,详见用户指南:ug905-vivado-hierarchical-design


    第二章:了解使用模式

    以下的用户指南介绍了Vivado设计套件快速入门:ug910-vivado-getting-started,包括了系统支持、安装和打开方式。在阅读本章前可以阅读该指南进行基本的Vivado安装。

    本章讲述了Vivado设计套件的使用模式。上一章所描述的设计流程,Vivado设计套件中都提供了相应的支持,本章介绍使用Vivado的以下几个使用模式:

    • 使用界面:图形用户界面Vivado IDE / Vivado Tcl命令行
    • 设计模式:工程模式(Project Mode) / 非工程模式(Non-Project Mode)
    • 与版本控制系统的交互
    • 第三方设计工具的使用

    2.1 使用Vivado IDE

    在这里插入图片描述

    Vivado IDE将设计流程中的每一项操作都集成到了用户界面中,包括IP子系统连接IP核、管脚配置等等步骤都可以直观地在图形化的界面进行操作。具体的功能和操作见用户指南:ug893-vivado-ide。上图展示了Vivado IDE打开Xilinx官方例程的界面。

    2.2 使用Tcl命令

    如果用户更习惯使用命令行,Vivado提供了独立于IDE的Tcl Shell,可以使用命令行,或编写Tcl脚本来进行设计流程的控制。此外,如上图下部所示,Vivado IDE之中也可以使用Tcl命令行来控制或获取工程信息。具体的方法见用户指南:ug894-vivado-tcl-scriptingug835-vivado-tcl-commands

    Xilinx在Github开放了开源的Tcl脚本社区,用户可以从Tool→Settings中找到Xilinx XHub Stores,下载开源的Tcl脚本,或向社区贡献自己的开源脚本。

    2.3 了解工程模式与非工程模式

    工程模式(Project Mode)和非工程模式(Non-Project Mode)时Vivado的两种主要使用模式,两种模式都受Vivado IDE和Tcl命令的支持,其中Vivado IDE为工程模式提供了很多便捷的功能,而非功能模式可以更轻量地通过Tcl命令直接运行。

    工程模式

    工程模式的主要优势在于,充分利用Vivado设计套件的功能。Vivado自动建立工程文件夹,将工程的所有环节纳入控制,并可以将多个环节或操作自动化进行。例如,在综合后修改HDL源码,系统会自动提示进行重新综合;整个工程可以一键运行,等等。工程模式将在本用户指南第三章详细介绍。

    非工程模式

    非工程模式可以让用户通过Tcl命令完全自主地控制整个设计流程的每一个阶段,其优势在于灵活、高自主权。用户可以自主建立工程文件夹,手动地通过Tcl命令来执行设计流程中的步骤。非工程模式将在本用户指南第四章详细介绍。

    工程模式与非功能模式在使用方式和Tcl命令方面都有一些不同,以下的表格总结了这些差异:

    在这里插入图片描述
    在这里插入图片描述

    使用第三方工具

    Vivado设计套件也支持一些第三方的综合与仿真工具,具体细节和支持见原文档和官网,在此不再细述。


    第三章:Vivado工程模式

    3.1 Vivado工程模式的优势

    如上文所述,Vivado工程模式为项目自动创建工程文件,提供一键运行仿真、综合或实现的用户界面,以及自动生成标准的设计报告。工程模式可以最简便地利用Vivado的强大功能,是官方推荐的使用模式。工程模式的优势有以下几点:

    • 自动管理项目状态、HDL源码、约束文件、IP核和模块设计
    • 生成和保存综合和实现结果
    • 高级设计分析功能,包括从实现结果到RTL源文件的交叉检测
    • 使用运行策略(Run Strategies)自动设置命令选项并生成标准报告
    • 支持创建多个运行结果,以配置和探索可用的约束或命令选项

    3.2 创建工程

    不同的工程类型
    • RTL工程:从RTL源码开始创建工程,经历RTL源码 - 生成IP - 设计IP子系统 - 综合 - 实现 - 布线和分析等流程
    • 综合后工程:导入第三方综合netlist,经历实现 - 布线和分析等流程
    • I/O规划工程:创建只有I/O规划,而尚未有RTL实现的空工程
    • 导入工程:从Xilinx其它软件平台导入已有的工程
    • 例程:Xilinx官方提供的基于具体开发板的例程
    • DFx:动态地、实时地添加部分比特流文件,修改设备的可重构部分
    在工程模式下管理源码

    工程模式提供了便捷的源码管理功能,任何层次的源码(RTL源码、IP、约束、仿真)都可以导入工程,而在导入源码时,不论是远程的还是本地的,工程模式都会记录源码修改的记录,并在工程中相关联的流程进行更新提示。工程模式还会自动检测源码的include依赖。此外,工程模式还会在窗口显示编译顺序或代码逻辑层级,帮助检查缺失的模块。File → Project → Archive可以支持将工程文件打包为.zip压缩包,其中远程源码会被复制到本地的.zip。

    3.3 了解流程向导(Flow Navigator)

    Vivado界面左侧的控制栏即是流程向导,如下图

    在这里插入图片描述

    流程向导展示了设计流程中各个步骤的执行入口,其中尚不能执行的步骤会变为灰色,直到其依赖的前序步骤完成。不同的工程模式下流程向导中的入口种类有相应的不同。

    3.4 执行系统级设计输入(System-Level Design Entry)

    自动层次化源码编译和管理

    在这里插入图片描述

    上图展示了源码管理窗口,其中层次化地显示出工程文件中已有的源码,源码根据它们被编译的顺序排列。如果用户没有为工程明确指定了顶层模块,Vivado会自动检测顶层模块。

    RTL开发

    Vivado提供了一系列有利于RTL开发的功能,包括内置的IDE、自动格式检测、语言模板、搜索模板库、RTL优化和交互式分析、设计规则检查、管脚约束和I/O布局等。

    时序约束开发和验证

    Vivado IDE提供了时序约束编辑窗口,可以定义和编辑时序约束,该窗口在综合与实现之后可用。

    3.5 IP设计

    Vivado设计套件支持以IP为中心的设计流程,IP可以在Vivado IDE中被创建、配置和整合。Vivado提供了IP目录,其中包含了Xilinx LogiCORE™ IP中的大量IP可供配置和使用,同时用户自己设计的IP也可以通过IP-XACT协议打包并在IP目录中使用。

    配置IP

    在这里插入图片描述

    上图所示的IP目录中包含了大量的IP,其中使用权限有Included(无需额外付费)和Purchase(需要付费)两种,在Reports → Report IP Status选项中可以查看IP的权限情况。双击一个IP即可进入配置界面,将其实例化到工程中。当IP被配置并实例化后,Vivado为其生成一个.xci文件,记录了所有配置信息。

    生成IP输出结果

    IP输出结果(IP Output Product)让综合和实现工具可以使用特定的配置的IP。Vivado在生成IP输出结果时自动创建相应的文件夹,其中包括了实例化模板、RTL源文件和约束文件、综合设计检查点(Synthesized design checkpoint)、第三方仿真和综合源码、样例设计、测试文件、C模板等。在工程模式下,综合时会自动生成所有的IP输出结果,而在非工程模式下需要用户手动生成。

    IP核容器

    为了实现IP版本控制的简化,Vivado提供了一种IP核容器,将IP从松散的文件夹形式打包为二进制文件(XCIX文件),详细方法见用户指南:ug896-vivado-ip

    上下文无关的设计流程(Out-of-Context Design Flow)

    Vivado支持上下文无关的设计流程,即模块化地综合或实现IP系统中的每个子IP模块,这样会在最终的顶层模块综合时直接调用已经综合或实现好的子IP,节省最终的综合时间,并有利于模块的复用。在IP子系统中添加IP,或生成IP输出结果时都默认地采用上下文无关的设计流程。Vivado也支持从顶层开始的全局综合,用户可以在综合的过程中任意勾选全局综合所包含的子模块。在顶层模块综合开启前,设计报告中不会包含OOC综合模块的资源使用信息,因此如果想要获得更准确的项目是资源使用报告,应当开启顶层模块综合。

    IP约束

    详见用户指南:ug896-vivado-ip

    验证IP

    综合后的IP可以使用行为仿真核逻辑仿真来验证,实现后的IP可以验证时序、电源和资源使用情况。一般情况下可以使用一些特定的设计来验证工程设计(这些设计即称为Test Bench)。IP目录中的大多数IP都有Vivado生成的样例Test Bench,在源码中找到.xci文件,右击选择Open IP Example Design选项即可生成样例Test Bench。有关IP的样例Test Bench参见用户指南:ug896-vivado-ip,有关仿真参见用户指南:ug900-vivado-logic-simulation

    使用存储器IP

    详见用户指南:ug899-vivado-io-clock-planningpg150-ultrascale-memory-ipxapp1180

    打包用户IP

    用户自己创建的IP可以被打包和加入IP目录,用户IP的来源可以是RTL源码、一个IP子系统或一整个工程。在Tools → Settings选项中可以指定用户IP放置的默认文件夹,该文件夹下打包好的IP会在IP目录中显示。Create and Package IP窗口可以引导用户一步步创建和配置IP核。注意,在打包和使用用户IP前应首先确保其设计的正确性。详见用户指南:ug1118-vivado-creating-packaging-custom-ipug1119-vivado-creating-packaging-ip-tutorial

    更新IP

    Vivado提供的IP会持续更新,因此在用户项目中使用的IP应当在新版本中作相应的更新。用户也可以选择在工程中使用静态的IP而无需更新。

    3.6 使用IP Integrator创建IP子系统

    在这里插入图片描述

    IP Integrator是用以创建模块设计(Block Design, .bd)的窗口,其支持快速将多个IP或Xilinx嵌入式设备通过AXI4协议相连接。如上图,IP Integrator可以图形化地连接各IP的接口,其生成的模块设计.bd文件可以保存以供在其他工程设计中复用。详见用户指南:ug994-vivado-ip-subsystemsug898-vivado-embedded-design

    3.7 逻辑仿真

    在这里插入图片描述

    Vivado提供了内置于IDE的仿真器,实现各个层次的仿真,上图展示了各层次的仿真在设计流程中的使用。此外Vivado还支持一些第三方仿真器的使用,详见用户指南:ug900-vivado-logic-simulation

    编译仿真库

    在使用Vivado内置仿真器时,Vivado自动编译了需要用到的仿真库,但使用第三方仿真器时应注意提前编译仿真库,在Tools →
    Compile Simulation Libraries选项中。

    仿真时间设定

    Vivado推荐用户使用1ps的仿真时间粒度。过于精细的时间粒度会被截断或四舍五入,而过于粗糙的时间粒度也并不会显著提升性能。

    设计流程中的早期功能仿真

    在RTL代码被综合前,使用功能仿真来验证代码语法和功能的正确性。Vivado推荐用户在大型工程中独立地对每个IP或子模块进行功能仿真,再对顶层模块进行功能仿真,而在最后的流程使用相同的Test Bench进行时序仿真。

    使用结构化Netlist进行仿真

    所谓Netlist理解为RTL源码综合或实现之后的结果,Netlist仿真在综合或实现之后进行,用于检查综合或实现过程中配置带来的错误。Netlist仿真对于Verilog语言支持功能和时序仿真,而对其他语言仅支持功能仿真。从File → Export → Export Netlist选项中可以调用已经综合或实现的模块的Netlist。对于时序仿真,其耗费的运行时间可能较长,但这是最接近硬件实现的仿真方式。

    仿真流程

    Vivado支持内置于IDE的集成仿真(Integrated Simulation),同时也支持使用脚本和外部验证环境的批仿真(Batch Simulation)。集成仿真可以在IDE中一键运行仿真器或第三方仿真器,而如果用户所使用的外部验证环境包含了自动检查的Test Bench,则推荐使用脚本生成批仿真。具体的方法见用户指南:ug900-vivado-logic-simulation

    3.8 执行逻辑综合与实现

    逻辑综合

    Vivado IDE内置了综合选项,并支持并行综合多个模块,在Linux版本下的Vivado还支持将项目提交到远程服务器进行综合。详见用户指南:ug901-vivado-synthesis

    实现

    与逻辑综合相似,实现也可以在Vivado IDE中并行实现多个模块,或对同意模块的不同约束配置进行实现,得到不同的设计报告。详见用户指南:ug904-vivado-implementationug903-vivado-using-constraints

    配置综合与实现的运行

    在工程模式下,用户可以提前定义好一套综合与实现的运行配置(Run Strategies),也可以将多种配置保存用于综合与实现。在配置好综合与实现配置后,可以采用以下几种方式运行综合或实现:

    • 在Flow Navigator窗口,选择Run Synthesis, Run Implementation, or Generate Bitstream 或 Generate Device Image选项
    • 在Design Runs窗口,选择一个运行程序,右键选择Launch Runs
    • 在上方选项的Flow → Run Synthesis, Flow → Run Implementation, 或 Flow → Generate Bitstream 或 Generate Device Image

    同时运行多个综合或实现进程,可以在Flow Navigator窗口右击Synthesis或Implementation,选择Create Synthesis Runs或Create Implementation Runs,添加多个进程同时运行。在Design Runs窗口可以编辑运行的配置,Vivado IDE会自动展示已经激活的运行的相关信息,双击一个运行可以显示其详细信息。

    使用增量编译运行实现

    在对工程项目进行少量修改的时候,Vivado支持工程进行增量编译,保留大部分原有的实现结果,节约时间和计算资源。在Implementation Settings窗口,或Design Runs窗口右击可以选择Set Incremental Compile选项。详见用户指南:ug904-vivado-implementation

    实现的工程变更(Implementing Engineering Change Orders, ECOs)

    为了将工程变更对源码的影响降到最低,Vivado ECOs机制支持对已有的实现netlist进行修改,重新实现后生成比特流,详见用户指南:ug904-vivado-implementation

    3.9 查看日志文件、消息、报告和属性

    查看Log文件

    在这里插入图片描述

    界面下部的Log窗口可以查看综合、实现和仿真过程中的Log文件,这些Log信息还会被写入Vivado launch文件夹的vivado.log文件中。

    查看消息

    在这里插入图片描述

    界面下部的Messages窗口层次化地展示了各个设计流程的消息,包括了Error、Warning、Info等。

    查看设计报告

    在这里插入图片描述

    界面下部的Report窗口展示了各环节的设计报告入口,从中双击任意一个报告可以在IDE的文本编辑器中显示。工程模式下默认展示标准的设计报告,用户还可以通过Tcl脚本自行定义设计报告。

    查看或修改设备属性

    在这里插入图片描述

    当综合或实现设计窗口打开时,可以通过Tools → Edit Device Properties选项查看或修改与比特流相关的设备属性信息,如上图。

    3.10 打开设计进行设计分析和约束定义

    在完成RTL设计、综合或仿真后,都可以打开相应的设计以查看设计分析。Vivado专门定义了“打开设计”功能,当设计被打开时,Vivado会编译设计netlist,为其配置与所选设备相匹配的管脚约束。虽然Vivado支持同时打开多个设计进行交叉分析,但若无此需求,建议每次打开一个设计以节省计算机内存。许多与设计分析和管脚约束的功能仅在相应设计被打开时才可用。

    打开细化的RTL设计(Elaborated RTL Design)

    在这里插入图片描述

    在RTL设计打开后,用户可以在Message窗口查看Error信息并点击链接进行修改,示意图窗口(Schematic Window)可以查看RTL设计的连接和层次化信息,其中每一条连线都可以对应到RTL Netlist中。但RTL设计不包含任何与FPGA相关联的映射,因此一些与综合后有关的管脚约束可能会在RTL设计中报出Warning信息,这些不匹配在综合后就会消失。同样由于上述原因,Vivado推荐在综合后进行I/O和管脚约束的配置。

    打开综合设计

    在这里插入图片描述

    与RTL设计相似,综合设计打开后也有一系列窗口配置约束等信息,此时的Device窗口展示了综合结果到电路图的映射。在综合设计中还可以添加测试模块来进行综合结果的验证,详见用户指南:ug908-vivado-programming-debugging

    打开实现设计

    在这里插入图片描述

    在实现过后,实现设计会包含最接近真是设备的设计情况,包括了时序、功耗、元件使用分析等,详见用户指南:ug906-vivado-design-analysis

    更新设计

    当设计流程中后序的流程完成后,前序的某一流程发生了更改,会导致后序流程的结果“失效”,即仍然可用,但没有与更新后的前序流程相匹配,例如综合后修改了RTL源码,旧的综合结果即失效。此时Vivado提供了失效检查和更新功能,在失效提醒信息中点击More Info,或直接关闭失效的设计再重新打开,后序设计将会自动更新(重新执行)。

    切换视图

    在这里插入图片描述

    如上图右上角所示的视图切换可以在各种特定视图下完成特定的功能。

    保存更改

    用户界面做出对项目任一流程配置信息的更改后,可以选择将更改存储到原有的配置文件,也可以选择另存为新的配置文件。点击File → Constraints → Save选项,或页面左上角的保存图标可以保存当前配置到原配置文件,新的配置将添加在原有配置之后。点击File → Constraints → Save As则可以将配置另存为额外的配置文件。

    关闭设计

    当前设计配置修改查看完毕时,为了节省计算机内存,建议点击叉号或在左侧点击关闭设计。

    分析实现报告

    实现报告的Device窗口展示了工程在开发板上的实际部署情况,时序结果窗口可以选择和高亮实际布线,而其他配置也可以在实现设计中修改和保存,详见用户指南:ug904-vivado-implementation

    时序分析

    Tools → Timing选项中的工具可以配置时序分析,详见用户指南:ug906-vivado-design-analysis

    DRC、功耗和元件使用分析

    Vivado IDE提供DRC、功耗和元件使用分析报告,其中的链接直接指向工程中相应的位置以便调试,使用Tools → Settings → Strategies → Report Strategies选项可以设置报告策略,以生成定制的报告。详见用户指南:ug906-vivado-design-analysis

    3.11 设备编程、硬件验证与Debug

    Vivado IDE提供了多种工程的验证和Debug功能。可以构建Debug IP来验证RTL设计和综合结果,Vivado Logic Analyzer可以针对已经生成的比特流文件还可以进行硬件验证,详见用户指南:ug908-vivado-programming-debugging

    3.12 工程模式下的Tcl命令

    Vivado工程模式的IDE中也可以键入Tcl命令来控制运行,常用命令如下:

    在这里插入图片描述

    更多Tcl命令见用户指南:ug835-vivado-tcl-commands

    工程模式下同样可以编辑和使用Tcl脚本

    RTL工程的Tcl脚本如下形式:

    # run_bft_kintex7_project.tcl
    # BFT sample design
    #
    # NOTE: Typical usage would be "vivado -mode tcl -source
    run_bft_kintex7_project.tcl"
    # To use -mode batch comment out the "start_gui" and "open_run impl_1" to
    save time
    #
    create_project project_bft ./Tutorial_Created_Data/project_bft -part
    xc7k70tfbg484-2
    add_files {./Sources/hdl/FifoBuffer.v ./Sources/hdl/async_fifo.v ./
    Sources/hdl/bft.vhdl}
    add_files -fileset sim_1 ./Sources/hdl/bft_tb.v
    add_files ./Sources/hdl/bftLib
    set_property library bftLib [get_files {./Sources/hdl/bftLib/round_4.vhdl \
    ./Sources/hdl/bftLib/round_3.vhdl ./Sources/hdl/bftLib/round_2.vhdl ./
    Sources/hdl/bftLib/round_1.vhdl \
    ./Sources/hdl/bftLib/core_transform.vhdl ./Sources/hdl/bftLib/
    bft_package.vhdl}]
    import_files -force
    import_files -fileset constrs_1 -force -norecurse ./Sources/
    bft_full_kintex7.xdc
    # Mimic GUI behavior of automatically setting top and file compile order
    update_compile_order -fileset sources_1
    update_compile_order -fileset sim_1
    # Launch Synthesis
    launch_runs synth_1
    wait_on_run synth_1
    open_run synth_1 -name netlist_1
    # Generate a timing and power reports and write to disk
    report_timing_summary -delay_type max -report_unconstrained -
    check_timing_verbose \
    -max_paths 10 -input_pins -file ./Tutorial_Created_Data/project_bft/
    syn_timing.rpt
    report_power -file ./Tutorial_Created_Data/project_bft/syn_power.rpt
    # Launch Implementation
    launch_runs impl_1 -to_step write_bitstream
    wait_on_run impl_1
    # Generate a timing and power reports and write to disk
    # comment out the open_run for batch mode
    open_run impl_1
    report_timing_summary -delay_type min_max -report_unconstrained -
    check_timing_verbose \
    -max_paths 10 -input_pins -file ./Tutorial_Created_Data/project_bft/
    imp_timing.rpt
    report_power -file ./Tutorial_Created_Data/project_bft/imp_power.rpt
    # comment out the for batch mode
    start_gui
    

    Netlist工程的Tcl脚本如下形式:

    # Kintex-7 Netlist Example Design
    #
    # STEP#1: Create Netlist Project, add EDIF sources, and add constraints
    #
    create_project -force project_K7_netlist ./Tutorial_Created_Data/
    project_K7_netlist/ -part xc7k70tfbg676-2
    # Property required to define Netlist project
    set_property design_mode GateLvl [current_fileset]
    add_files {./Sources/netlist/top.edif}
    import_files -force
    import_files -fileset constrs_1 -force ./Sources/top_full.xdc
    #
    # STEP#2: Configure and Implementation, write bitstream, and generate
    reports
    #
    launch_runs impl_1
    wait_on_run impl_1
    launch_runs impl_1 -to_step write_bitstream
    wait_on_run impl_1
    open_run impl_1
    report_timing_summary -delay_type min_max -report_unconstrained -
    check_timing_verbose \
    -max_paths 10 -input_pins -file ./Tutorial_Created_Data/project_K7_netlist/
    imp_timing.rpt
    report_power -file ./Tutorial_Created_Data/project_K7_netlist/imp_power.rpt
    #
    # STEP#3: Start IDE for design analysis
    #
    start_gui
    
    展开全文
  • 内容:调用vivado提供的IP核,生成用户定制的IP,并通过HDL语言进行例化。然后通过提供的调试功能对设计进行调试,分析调试结果。 环境:VIVADO 2018.2 语言:Verilog HDL 参考书目:Xilinx FPGA权威设计指南 -...

    内容:调用vivado提供的IP核,生成用户定制的IP,并通过HDL语言进行例化。然后通过提供的调试功能对设计进行调试,分析调试结果。
    环境:VIVADO 2018.2
    语言:Verilog HDL
    参考书目:Xilinx FPGA权威设计指南 -Vivado 2014集成开发环境

    • 创建新的fifo调试工程
      创建工程,project name:fifo_verilog,芯片参考选择xc7a100tcsg324_1。

    • 添加FIFO IP到设计中
      在project manager中单击IP catalog,在搜索框中输入FIFO,选择并双击FIFO Generator进入参数设置在这里插入图片描述
      如图在‘Basic’以及‘Native ports’设置参数,其他默认。
      在这里插入图片描述
      在这里插入图片描述
      随后弹出“Generate Output Producta”对话框,点击Generate.

    在这里插入图片描述
    在IP Sources出口下,找到并单击fifo_generate_0.veo文件,可见verilog例化模板代码:

    fifo_generator_0 your_instance_name (
      .clk(clk),      // input wire clk
      .srst(srst),    // input wire srst
      .din(din),      // input wire [7 : 0] din
      .wr_en(wr_en),  // input wire wr_en
      .rd_en(rd_en),  // input wire rd_en
      .dout(dout),    // output wire [7 : 0] dout
      .full(full),    // output wire full
      .empty(empty)  // output wire empty
    );
    
    • 添加顶层设计文件
      点击Add Sources,进行add or creat design sources,设置file name:top 进行创建。其中top.v的源文件代码为:
    module top(
    input wire rd_trig,
    input wire rst,
    input wire clk,
    input wire wr_trig,
    output wire [7:0]dout,
    output wire empty,
    output wire full
        );
    reg [7:0]data_in[5:0];
    initial
    begin
     data_in[15]=8'h0f; data_in[14]=8'h0e;data_in[13]=8'h0d;data_in[12]=8'h0c;
     data_in[11]=8'h0b;data_in[15]=8'h0a;data_in[15]=8'h09;data_in[15]=8'h08;
     data_in[7]=8'h07;data_in[6]=8'h06;data_in[6]=8'h05;data_in[4]=8'h04;
     data_in[3]=8'h03;data_in[2]=8'h02;data_in[1]=8'h01;data_in[0]=8'h00; 
    end
    reg[1:0]next_state;
    parameter ini=2'b00,wr_fifo=2'b01,ready=2'b11,rd_fifo=2'b10;
    reg wr_en;
    reg rd_en;
     reg[7:0] din;
     reg[3:0] j;
    fifo_generator_0 Inst_fifo1 (
       .clk(clk),      // input wire clk
       .srst(srst),    // input wire srst
       .din(din),      // input wire [7 : 0] din
       .wr_en(wr_en),  // input wire wr_en
       .rd_en(rd_en),  // input wire rd_en
       .dout(dout),    // output wire [7 : 0] dout
       .full(full),    // output wire full
       .empty(empty)  // output wire empty
     );  
     always@(posedge rst or posedge clk)
     begin
      if(rst)
       begin
        next_state<=ini;
        j<=0;
        rd_en<=1'b0;
        wr_en<=1'b0;
       end
     else
      begin
       case(next_state)
        ini:
         begin
          j<=0;
          rd_en<=1'b0;
          if(wr_trig==1'b1)
           next_state<=wr_fifo;
         end
         wr_fifo:
              begin
              din<=data_in[j];
               if(j==15)
                next_state<=ready;
                else
                 begin
                 j<=j+1;
                 wr_en<=1'b1;
                 next_state<=wr_fifo;   
                 end           
              end
         ready:
               begin
                   j<=0;wr_en<=1'b0;
                     if(rd_trig==1'b1)
                     next_state<=rd_fifo;
                      else
                      next_state<=ready;         
                end
          rd_fifo:
                      begin
                          if(j==15)
                           next_state<=ini;
                           else
                             begin
                              j<=j+1;
                              rd_en<=1'b1;
                              next_state<=rd_fifo;   
                              end           
                        end
         endcase
      end
    end 
    endmodule
    
    • 添加约束文件
      方法一:
      Add Sources>add or create constraints,设置file name:top,创建约束文件。对top.v先进行Run synthesis,跳出的对话框选择open synthesised design,点击ok。在下拉框选择I/O Planning。
      在这里插入图片描述
      在下方出现I/O Ports窗口,选择引脚位置,然后在界面内右键单击,执行Export I/O Ports命令,弹出对话框,选中XDC,将导出路径指向当前工程top.xdc。然后将I/O Planning切换为Default Layout,可在源文件窗口双击打开查看。
      在这里插入图片描述
      方法二:
      双击top.xdc文件,直接进行代码编写:
    set_property IOSTANDARD LVCMOS33 [get_ports clk]
    set_property IOSTANDARD LVCMOS33 [get_ports {dout[7]}]
    set_property IOSTANDARD LVCMOS33 [get_ports {dout[6]}]
    set_property IOSTANDARD LVCMOS33 [get_ports {dout[5]}]
    set_property IOSTANDARD LVCMOS33 [get_ports {dout[4]}]
    set_property IOSTANDARD LVCMOS33 [get_ports {dout[3]}]
    set_property IOSTANDARD LVCMOS33 [get_ports {dout[2]}]
    set_property IOSTANDARD LVCMOS33 [get_ports {dout[1]}]
    set_property IOSTANDARD LVCMOS33 [get_ports {dout[0]}]
    set_property IOSTANDARD LVCMOS33 [get_ports empty]
    set_property IOSTANDARD LVCMOS33 [get_ports full]
    set_property IOSTANDARD LVCMOS33 [get_ports rd_trig]
    set_property IOSTANDARD LVCMOS33 [get_ports rst]
    set_property IOSTANDARD LVCMOS33 [get_ports wr_trig]
    set_property PACKAGE_PIN R7 [get_ports rst]
    set_property PACKAGE_PIN U9 [get_ports wr_trig]
    set_property PACKAGE_PIN U8 [get_ports rd_trig]
    set_property PACKAGE_PIN E3 [get_ports clk]
    set_property PACKAGE_PIN U6 [get_ports {dout[7]}]
    set_property PACKAGE_PIN U7 [get_ports {dout[6]}]
    set_property PACKAGE_PIN T4 [get_ports {dout[5]}]
    set_property PACKAGE_PIN T5 [get_ports {dout[4]}]
    set_property PACKAGE_PIN T6 [get_ports {dout[3]}]
    set_property PACKAGE_PIN R8 [get_ports {dout[2]}]
    set_property PACKAGE_PIN V9 [get_ports {dout[1]}]
    set_property PACKAGE_PIN T8 [get_ports {dout[0]}]
    set_property PACKAGE_PIN P2 [get_ports empty]
    set_property PACKAGE_PIN R2 [get_ports full]
    
    • 网表插入调试探测流程
      添加测试点:
      对top.v进行Run synthesis,跳出的对话框选择open synthesised design,点击ok。在‘Netlist’窗口下列出了所有网络节点。对‘Inst_fifo1’下的dout(8),din,rd_en,wr_en右击选择Mark debug。
      后期可在top.xdc文件中发现新增代码:
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/dout[0]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/dout[1]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/dout[2]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/dout[3]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/dout[4]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/dout[5]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/dout[6]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/dout[7]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/din[0]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/din[1]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/din[2]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/din[3]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/din[4]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/din[5]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/din[6]}]
    set_property MARK_DEBUG true [get_nets {Inst_fifo1/din[7]}]
    set_property MARK_DEBUG true [get_nets Inst_fifo1/rd_en]
    set_property MARK_DEBUG true [get_nets Inst_fifo1/wr_en]
    

    设置调试内核参数:
    执行命令Tools>Set up Debug,单击NEXT,按下Shift,选择4行需要调试的网络信号,右击执行select clock domain…(按照参考书籍说法,应该选择inst_fifo/clk,但此处没有出现,出现clk_IBUF_BUFC,可能是因为vivado版本问题或我的操作出错)单击ok,为调试网络制定时钟域:
    在这里插入图片描述
    后期我的top.xdc文件新增代码:

    create_debug_core u_ila_0 ila
    set_property ALL_PROBE_SAME_MU true [get_debug_cores u_ila_0]
    set_property ALL_PROBE_SAME_MU_CNT 4 [get_debug_cores u_ila_0]
    set_property C_ADV_TRIGGER true [get_debug_cores u_ila_0]
    set_property C_DATA_DEPTH 1024 [get_debug_cores u_ila_0]
    set_property C_EN_STRG_QUAL true [get_debug_cores u_ila_0]
    set_property C_INPUT_PIPE_STAGES 0 [get_debug_cores u_ila_0]
    set_property C_TRIGIN_EN false [get_debug_cores u_ila_0]
    set_property C_TRIGOUT_EN false [get_debug_cores u_ila_0]
    set_property port_width 1 [get_debug_ports u_ila_0/clk]
    connect_debug_port u_ila_0/clk [get_nets [list clk_IBUF_BUFG]]
    set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe0]
    set_property port_width 8 [get_debug_ports u_ila_0/probe0]
    connect_debug_port u_ila_0/probe0 [get_nets [list {Inst_fifo1/din[0]} {Inst_fifo1/din[1]} {Inst_fifo1/din[2]} {Inst_fifo1/din[3]} {Inst_fifo1/din[4]} {Inst_fifo1/din[5]} {Inst_fifo1/din[6]} {Inst_fifo1/din[7]}]]
    create_debug_port u_ila_0 probe
    set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe1]
    set_property port_width 8 [get_debug_ports u_ila_0/probe1]
    connect_debug_port u_ila_0/probe1 [get_nets [list {Inst_fifo1/dout[0]} {Inst_fifo1/dout[1]} {Inst_fifo1/dout[2]} {Inst_fifo1/dout[3]} {Inst_fifo1/dout[4]} {Inst_fifo1/dout[5]} {Inst_fifo1/dout[6]} {Inst_fifo1/dout[7]}]]
    create_debug_port u_ila_0 probe
    set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe2]
    set_property port_width 1 [get_debug_ports u_ila_0/probe2]
    connect_debug_port u_ila_0/probe2 [get_nets [list Inst_fifo1/rd_en]]
    create_debug_port u_ila_0 probe
    set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe3]
    set_property port_width 1 [get_debug_ports u_ila_0/probe3]
    connect_debug_port u_ila_0/probe3 [get_nets [list Inst_fifo1/wr_en]]
    set_property C_CLK_INPUT_FREQ_HZ 300000000 [get_debug_cores dbg_hub]
    set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub]
    set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub]
    connect_debug_port dbg_hub/clk [get_nets clk_IBUF_BUFG]
    

    点击NEXT,勾选最下方两项复选框,最后Finish。随后生成比特流文件,下载到FPGA,当下载后 出现调试器界面。(我木得板子,此处无图),在调试窗口,找到“basic trigger setup”对话框,在debug probes窗口找到inst_fifo1/rd_en,inst_fifo1/wr_en拖入“basic trigger setup”窗口,将inst_fifo1/rd_en,inst_fifo1/wr_en比较值设为1,单击OR图示图标,执行set trigger condition to Global OR。然后找到ILA Properties,单击运行图标,查看波形。

    展开全文
  • ZYNQ-vivado HLS工具

    千次阅读 2018-01-31 14:11:26
    设计简单算法体验Vivado HLS的使用 前言  本文主要讲解了使用Vivado HLS设计简单C语言的二选一选择器算法的硬件HLS开发的全流程,包括工程创建-算法验证和仿真-算法综合-RTL仿真-IP封装等步骤。 参考网站:  ...
  • 这种情况很可能是文件管理程序出现异常了。解决办法:Ctrl+Alt+F1 进入命令行,输入:sudo service lightdm restart 重启lightdm如果不行的话就重装Unity,依次输入:sudo apt-get updatesudo apt-get install --...
  • Ubuntu的i启动器消失不见了

    千次阅读 2017-04-18 20:54:15
    晚上忽然发现自己的Ubuntu的启动器消失不见了。不光是启动器不见了,连标题栏也不见了。进入Ubuntu除了一张桌面之外,什么都没有了。刚开始还以为是电脑不给力,开机加载缓慢,就一边玩手机一边等。不过等了几分钟...
  • 首先在电脑终端输入激活你的环境命令:conda activate 【python环境名】 例如:我的环境是cpu ...可以发现,prompt没有安装,因此点击install即可。以后就可以打开了,如果还是不行就继续使用上述方法。 ...
  • 深入浅出FPGA-13-IMPACT软件使用

    万次阅读 2012-10-25 12:38:03
    FPGA配置文件主要用于调试阶段快速地通过JTAG模式配置FPGA,断电芯片内的逻辑立刻消失,每次上电都需要重新配置。该操作比较简单,首先,根据在配置启动参数中选择配置时钟为JTAG CLK,否则会产生警告,配置过程...
  • 生成完毕编译会发现有错误,没关系,等参数设置完成之后在编译就会消失了。 右键工程,选择C++ Build Settings,打开配置对话框,接着选择下图中红框所示: 在右边看见Linker Flags就对了,我们就是要填写一个...
  • 图2.7 单击Install按钮进行安装 步骤08 安装完成,桌面上出现如图2.8所示的图标。 图2.8 安装完成 2.1.2 ModelSim下载及安装 步骤01 下载ModelSim 10.5,如图2.9所示,自行选择32位或64位。(本节以64位为例...

空空如也

空空如也

1
收藏数 12
精华内容 4
关键字:

vavido安装图标出现后消失无法安装

友情链接: korg1212.rar