手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

手把手Vivado全流程使用

详细见Xilinx官方文档:Vivado软件使用手册(UG893)。

频率的意义,取决于对象架构,比如,arm 和 fpga,对主频要求是不一样的,本质是arm是串行运行,而FPGA是并行的,所以频率要求不在同一个频道上,arm追求高频,而fpga则不苛刻于arm一个level。

 

 前言 

1.Vivado简介

  • Vivado设计套件,是赛灵思(Xilinx)公司最新的为其产品定制的集成开发环境,支持Block Design、Verilog、VHDL等多种设计输入方式,内嵌综合器以及仿真器,可以完成从设计输入、综合适配、仿真到下载的完整FPGA设计流程。(S6 ISE之前的老环境软件,现在主推vivado,Verilog语言)

  • Vivado集成了HLS(High Level Synthesis)工具,可以实现直接使用 C,C++ 以及 System C 语言对Xilinx的FPGA器件进行编程。用户无需手动创建 RTL,通过高层次综合生成HDL级的IP核,从而加速IP创建。

 

2.Vivado开发流程

在开始使用 Vivado 软件之前,我们先来了解一下 Vivado 软件的使用流程:

图片[1]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

注意:可以跳过综合、实现,直接生成下载

 

图片[2]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

从上图可以看出,主要有如下六步:

  • 首先打开 Vivado 软件,新建一个工程,在新建工程的时候,我们可以通过新建工程向导的方式来创建工程;

  • 工程建立完成后,我们需要新建一个 Verilog 顶层文件,然后我们将设计的代码输入到新建的 Verilog 顶层文件中;

  • HDL 源代码输入完毕之后,就是对设计文件进行分析与综合了。

    在代码输入以及设计分析阶段Vivado 软件会检查代码,如果代码出现语法错误,那么 Vivado 软件 将会给出相关错误提示

    在 FPGA 设计中,综合(Synthesis)就是将 RTL 设计转变为由 FPGA 器件中的查 找表(LUT)、触发器(FF)等各种底层电路单元所组成的网表,在这个过程中综合器也会对设计进行优化,例如,删除多余的逻辑等等。 

  • 综合完成后,我们需要进行约束的输入

    约束表达了设计者期望满足的时序要求,规范了设计的时序行为,并在综合、实现阶段来指导工具进行布局、布线,工具会按照你的约束尽量去努力实现以满足时序 要求,并在时序报告中给出结果。常用的约束包括时序约束、引脚约束等等。 

  • 接下来就可以实现整个设计实现了,包括布局和布线等。如果实现成功,则 Vivado 会给出提示结果。此时,就可以生成用于下载到器件中的比特流文件了。

  • 最后,我们会通过下载器来将这个比特流文件下载到 FPGA 中,完成整个开发流程。

 

 

01
新建工程

操作如下:

图片[3]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

图片[4]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[5]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

接下来输入工程的名称和路径:

  • 名称要能反应出工程所实现的功能,本次工程实现了 LED 闪烁的功 能,因此项目名称命名为“led_twinkle”。

  • 工程路径是指定本次工程存放在电脑磁盘中的位置,这个大家可以自行选择路径。

图片[6]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

注意:

由于默认勾选了“Create project subdirectory”选项,Vivado 会在所选工程目录下自动创建一个 与工程名同名的文件夹,用于存放工程内的各种文件。并且 Vivado 会自动管理工程文件夹内的各种工程文 件,并创建相应的子目录,这为我们的开发工作带来了很大的便捷。

我们继续点击“Next”按钮,接下来是工程类型的选择,我们选择“RTL Project”,如下图所示:

图片[7]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

这里简单介绍下各个工程类型的含义:

  • “RTL Project”是指按照正常设计流程所选择的类型,这也是常用的一种类型,“RTL Project”下的“Do not specify sources at this time”用于设置是否在创建工程向导 的过程中添加设计文件,如果勾选后,则不创建或者添加设计文件;

  • “Post-synthesis Project”在导入第三方工具所产生的综合后网表时才选择;

  • “I/O Planning Project”一般用于在开始 RTL 设计之前,创建一个 用于早期 IO 规划和器件开发的空工程;

  • “Imported Project” 用于从 ISE、XST 或 Synopsys Synplify 导入 现有的工程源文件;

  • “Example Project”是指创建一个 Vivado 提供的工程模板。

图片[8]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

接下来是添加约束文件,我们也是直接点击“Next”,创建完工程后再创建/添加约束文件,如下图所 示:

图片[9]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

接下来选择开发板的芯片型号,我们可以直接在搜素框中输入完整的芯片型号,大家根据自己所使用 的 ZYNQ 核心板型号进行选择。如果使用的是 ZYNQ-7020 核心板,则输入“xc7z020clg400-2”

图片[10]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

最后进入工程概览页面,这个页面将之前几个步骤中的设置全部列了出来,供用户检查,选择不同的 芯片型号,概览页面列举的芯片型号也不一样,我们直接点击“Finish”按钮完成工程的创建。

图片[11]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

工程创建完成后,就进入了 Vivado 的工程主界面,如下图所示:

图片[12]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

下面介绍 Vivado 工程主界面中的几个主要子窗口: 

(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”、“Critical Warning”、“Warning”等等 

• Log:显示由综合、实现和仿真 run 创建的日志文件。

• Reports:提供对整个设计流程中的活动 run 所生成的报告的快速访问。

• Designs Runs:管理当前工程的 runs。 

(6)主工具栏:

主工具栏提供了对 Vivado IDE 中最常用命令的单击访问。 

(7)主菜单:

主菜单栏提供对 Vivado IDE 命令的访问。 

(8)窗口布局(Layout)选择器:

Vivado IDE 提供预定义的窗口布局,以方便设计过程中的各种任 务。布局选择器使您能够轻松地更改窗口布局。或者,可以使用菜单栏中的“Layout”菜单来更改窗口布 局。

图片[13]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[14]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[15]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

02
设计输入

图片[16]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

下面我们就来创建工程顶层文件,我们点击“Sources”窗口中的“+”号,如下图所示:

图片[17]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

弹出下图所示界面,我们选择添加设计源文件(注意,Vivado 不支持使用原理图的方式来输入设 计),然后点击“Next”按钮,如下图所示:

图片[18]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

接下来在弹出的页面中添加或者创建一个文件。

  • 果事先有编写好的代码,可以点击“Add Files”按 钮来添加文件;

  • 如果没有,则点击“Create File”创建一个新的设计文件。

图片[19]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[20]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

接下来会弹出一个对话框,对创建的设计文件进行命名。

图片[21]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[22]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

接下来会弹出一个定义模块的页面,用于设置源文件的模块名称和端口列表,Vivado 会根据在此窗口 中的设置,自动地在 HDL 源文件中写入相应的 verilog 语句。我们会手动输入代码,所以这里不作任何设 置,直接点击“OK”按钮即可,如下图所示。

图片[23]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[24]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

这时工程主界面的“Sources”窗口中就出现了我们刚刚创建的源文件,如下图所示:

图片[25]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[26]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

我们双击打开“led_twinkle”文件,删除文件中默认的代码,然后替换成 LED 灯闪烁代码,代码如 下:

图片[27]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[28]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

代码编写完成后,软件中显示的界面如下图所示:

图片[29]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

另外,如果读者认为 Vivado 的 Text Editor 默认的字体比较小,也可以依次点击“Settings”→“Text Editor” →“Fonts and Colors”,在窗口中的“Size”选项中来修改字体大小,默认是 12,我们修改为 20。

图片[30]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

单击工作空间中的保存按钮或者按下键盘的“Ctrl+S”,来保存编辑完成后的代码:

图片[31]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

另 外,在大多数情况下,Vivado IDE 会自动识别设计的顶层模块,当然,用户也可以手动指定顶层模块。从 “Sources”窗口的右击菜单中选择“Set as Top”来手动定义顶级模块。

 

 

 

03
分析与综合

图片[32]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[33]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[34]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

代码输入完毕之后,就可以对设计进行分析(Elaborated)了。

点击“Flow Navigator”窗口中的 “Open Elaborated Design”按钮,如下图所示:

图片[35]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

此时,Vivado 会编译 RTL 源文件并进行全面的语法检查,并在 Messages 窗口中给出相应的“Error” 和“Warning”。

  • 如果出现“Error”,则分析失败,用户必须修改设计文件,并重新编译源文件来取消 “Error”。

  • 如果出现“Warning”,用户也可逐一查看,以确定哪些是设计缺陷,哪些是可以忽略的。

 开分析后(Elaborated)的设计,Vivado 会生成顶层原理图视图,并在默认 view layout 中显示设计,如下 图所示:

图片[36]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

可以看到,此时窗口布局已经发生了变化,新增了 Schematic(原理图)、Netlist(网表)等窗口。

此时,我们也可以进行 I/O 引脚分配,在右上角的窗口布局(Layout)选择器中选择“I/O Planing”:

图片[37]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

现在,我们可以做下管脚约束:

图片[38]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

此时,窗口布局会打开 IO 相关的子窗口,如下图所示:

图片[39]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

在下方的“I/O Ports”窗口中,就可以进行 IO 的分配了:

图片[40]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

手动指定的方式:

如何管脚分配(约束),我们需要查看原理图

A.时钟

图片[41]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[42]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[43]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[44]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebugB.复位

图片[45]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[46]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[47]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

找核心板位置:

图片[48]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[49]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[50]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[51]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

C.LED的,为方便,可以看隐射表:

图片[52]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[53]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

led分配如下:

图片[54]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[55]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

改完后保存:

图片[56]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

点击OK,保存完,然后关闭:

图片[57]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

生成的约束文件如下:

图片[58]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

如果需要添加时序约束的话,可以在这里继续添加:

图片[59]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[40]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

这里我们暂时不分配,先对设计进行综合, 综合之后再统一输入时序约束和 IO 引脚的物理约束。 

我们关闭分析后的界面。在工作区域的顶部标题栏处,用鼠标右击,在弹出的命令列表中选择 “close”,如下图所示:

 

图片[61]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

接下来点击“Flow Navigator”窗口中的“Run Synthesis”按钮,来对代码进行综合,如下图所示:

图片[62]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

在弹出的窗口中我们直接点击 OK,如下图所示:

 

图片[63]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

这时可以看到在“Design Runs”窗口中显示正在综合,如下图所示:

图片[64]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

综合完成后,弹出如下窗口:

图片[65]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

我们关闭该窗口。接下来进行约束的输入。

 

04
约束输入

首先,我们需要先创建一个约束文件。

图片[66]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

点击“Sources”窗口中的“+”号,在弹出的窗口选择“Add or create constraints”,点击“NEXT”按钮,如下图所示:

图片[67]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[68]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

在弹出的对话框中输入约束文件的名称“led_twinkle”,然后点击“OK”按钮

图片[69]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

接下来点击“Finish”按钮,完成约束文件的创建

图片[70]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

这时我们就可以在“Sources”窗口中看到添加的这个约束文件了,如下图所示:

图片[71]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

注意:

Vivado 的约束文件是以“.xdc”为后缀的文本文件,其中存储的是一条条的 xdc 约束命令。

编辑方式:

图片[72]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

图片[73]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

我们双击打开 led_twinkle.xdc 文件,开始对工程进行约束。

约束一般分为两种

  • 一种是 IO 管脚的约束

  • 另外一种是对时序进行约束。

A.IO管脚的约束

我们先来看下 IO 管脚的约束,约束语句如下:

图片[74]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

命令的第一个关键字代表该命令的名称,其后的所有字段都是该命令的参数列表。

IO 管脚约束是对端口的 引脚位置和电平标准进行约束,例如:

第二行命令是对系统时钟的管脚进行约束:

  • “set_property”是命令的名称;

  • “PACKAGE_PIN U18”是引脚位置参数,代表引脚位置是 U18;

  • “[get_ports sys_clk]”代表该 束所要附加的对象是 sys_clk 引脚;

  • “IOSTANDARD LVCMOS33”代表该引脚所使用的电平标准是 LVCMOS33。

B.时序约束

IO 管脚约束比较好理解,就是我们的程序所驱动的 IO 和 ZYNQ 芯片的 IO 对应起来

而时序约束 (Timing Constraints)用来描述设计人员对时序的要求,比如时钟频率,输入输出的延时等,以满足设计 的时序要求。

约束语句如下:

图片[75]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

“create_clock”是该命令的名称,它会创建一个时钟;

其后的“-name clk”、“-period 20”、 “[get_ports sys_clk ]”都是该命令的各个参数,分别表示所创建时钟的名称是“clk”、时钟周期是 20ns、 时钟源是 sys_clk 端口,一般只对输入的时钟做周期的约束。

对时钟的约束最简单的理解就是,设计者需要告诉 EDA 工具设计中所使用的时钟的频率是多少;然 后工具才能按照所要求的时钟频率去优化布局布线,使设计能够在要求的时钟频率下正常工作。本次实验 sys_clk 的时钟频率为 50MHz,周期为 20ns,在做约束时可以等于这个值或者略低于这个值,不建议周期 设置的太小,否则软件在布局布线时很难满足这个要求。

 

其实对于比较简单的设计,可以不对工程做时序约束,即使不进行时序约束,也不影响最终的功能。而当设计变得复杂起来,或者输入的时钟频率比较高的时候,如果不添加时序约束,那么就有可能在验证 设计结果的时候出现一些意料之外的情况。由于本次实验较为简单,这里只对工程对 IO 管脚约束,不进 行时序约束,led_twinkle.xdc 文件输入 IO 管脚约束语句后,点击“保持”的图标或者按下键盘的 “Ctrl+S”进行保存。输入 IO 管脚约束语句后如下图所示:

图片[76]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[77]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

保存按钮后,就完成了约束的输入。

注意:每个bank提供一个电压,每个提供了,都是这个电压!

图片[78]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

 

 

 

 

 

05
设计实现

约束输入完毕之后,就可以开始实现设计了。我们点击“Flow Navigator”窗口中的“Run Implementation”按钮,如下图所示:

图片[79]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

在弹出的界面中直接点击 OK 即可

 

图片[80]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

这时可以看到“Design Runs”窗口中显示正在进行实现,如下图所示:

图片[81]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

实现完成后会弹出提示窗口,我们直接点击取消来关闭窗口,如下图所示:

图片[82]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

这时我们再次查看“Design Runs”窗口中的实现结果,如下图所示:

图片[83]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

 

 

 

 

 

06
下载比特流

 

在下载程序之前,首先要先生成用于下载到器件中的比特流文件,该文件的后缀为“.bit”。

 

点击 “Flow Navigator”窗口中的“Generate Bitstream”按钮,如下图所示:

图片[84]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

在弹出的窗口中直接点击 OK,如下图所示

图片[85]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

此时我们可以看到在“Design Runs”窗口中显示正在生成比特流,如下图所示:

图片[86]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

比特流生成完毕之后,Vivado 会弹出提示窗口,我们点击取消关闭该窗口:

图片[87]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

接下来我们开始下载比特流,点击“Flow Navigator”窗口中的“Open Hardware Manager”按钮,如 下图所示:

图片[88]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[89]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

接着 Vivado 就会打开 Hardware Manager,同时窗口布局也跟着发生了变化,如下图所示:

图片[90]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

接下来我们就要用到开发板和 Xilinx 下载器了。

首先将 Xilinx 下载器一端连接电脑,另一端与开发板 上的 JTAG 接口相连接;然后连接开发板电源线,并打开电源开关。

图片[91]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

开发板连接完成并打开电源开关后,点击“Hardware”子窗口中的“Auto Connect”按钮,如下图所 示:

 

图片[92]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

在“Hardware”子窗口中出现如下界面就表示 Vivado 就已经和下载器连接成功了,如下图所示:

图片[93]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

我们点击上图中的“Program Device”,弹出的界面如下图所示:

图片[94]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

此时 Bitstream File 一栏会自动识别到工程的比特流文件,我们直接点击“Program”按钮下载程序。

图片[95]-手把手Vivado全流程使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

需要说明的是:

  • 下载完比特流后,如果开发板断电,程序会丢失。

  • 如果想要程序断电不丢失的话,需要将程序固化至开发板中,这个需要在嵌入式 SDK 软件中完成,ZYNQ 芯片无法单独固化比特流文件 (PL 的配置文件)。这是由于 ZYNQ 非易失性存储器的引脚(如 SD 卡、QSPI Flash)是 ZYNQ PS 部分 的专用引脚,这些非易失性存储器由 PS 的 ARM 处理器进行驱动,需要将 bit 流文件和 elf 文件(软件程 序的下载文件)合成一个 BOOT.BIN,才能进行固化。详细见 ZYNQ 嵌入式 SDK 的开发流程。未来将在ZYNQ 之嵌入式开发指南的“程序固化”再讲解!

请登录后发表评论

    没有回复内容