ZYNQ之FPGA学习----Vivado软件使用

Posted 鲁棒最小二乘支持向量机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZYNQ之FPGA学习----Vivado软件使用相关的知识,希望对你有一定的参考价值。

1 Vivado软件使用

Vivado Design Suite 是 Xilinx 公司的综合性 FPGA 开发软件,可以完成从设计输入到硬件配置的完整FPGA 设计流程。Vivado学习使用版本为Vivado v18.3

Vivado软件使用流程:

  • 新建工程
  • 设计输入
  • 分析与综合
  • 约束输入
  • 设计实现
  • 生成和下载比特流

1.1 新建工程

Vivado软件启动界面如图所示,点击Create Project新建工程:

直接点击Next,如图所示:

输入工程的名称和路径,工程路径不能包含中文、空格或者其它一些特殊的符号,如图所示:

默认勾选了Create project subdirectory选项,Vivado 会在所选工程目录下自动创建一个与工程名同名的文件夹,用于存放工程内的各种文件。继续点击Next,选择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 提供的工程模板

然后,进入添加源文件界面,如图所示,直接点击Next,创建完工程后再创建或添加源文件:

然后是添加约束文件,如图所示,直接点击Next,创建完工程后再创建或添加约束文件:

然后选择开发板的芯片型号,核心板是ZYNQ-7070,故输入xc7z020clg400-2,如图所示:

最后进入工程概览界面,直接点击Finish完成工程的创建,如图所示:

Vivado的工程主界面,如图所示:

  • Flow Navigator: 提供对命令和工具的访问,包括从设计输入到生成比特流的整个过程
  • 数据窗口区域: 默认情况,该区域显示设计源文件和数据相关的信息。1、Sources窗口,显示层次结构(Hierarchy)、IP源文件(IP Sources)、库(Libraries)和编译顺序(Compile Order)的视图。2、 Netlist窗口,提供分析后的(elaborated)或综合后(synthesized)逻辑设计的分层视图
  • Properties窗口: 显示有关所选逻辑对象或器件资源的特性信息
  • 工作空间(Workspace): 工作区显示了具有图形界面的窗口和需要更多屏幕空间的窗口。1、 Project Summary 提供当前工程的摘要信息,它在运行设计命令时动态地更新。2、用于显示和编辑基于文本的文件和报告的 Text Editor。3、原理图(Schematic)窗口。4、器件(Device)窗口。5、封装(Package)窗口
  • 结果窗口区域: 运行的命令的状态和结果,显示在结果窗口区域中,这是一组子窗口的集合。在运行命令、生成消息、创建日志文件和报告文件时,相关信息将显示在此区域。1、Tcl Console 允许您输入 Tcl 命令,并查看以前的命令和输出的历史记录。2、Messages 显示当前设计的所有消息,按进程和严重性分类。3、Log 显示由综合、实现和仿真 run 创建的日志文件。 4、Reports 提供对整个设计流程中的活动 run 所生成的报告的快速访问。5、 Designs Runs 管理当前工程的 runs
  • 主工具栏: 提供最常用命令的单击访问
  • 主菜单: 提供对命令的访问
  • 窗口布局(Layout)选择器: 提供预定义的窗口布局,以方便设计过程中的各种任务

1.2 设计输入

创建工程顶层文件,点击Sources窗口中的+,如图所示:

弹出界面如下,选择添加设计源文件,然后点击Next:

在如下界面添加或创建文件,如果有编写好的代码,选择Add Files;否则,点击Create File:

命名创建的设计文件,然后点击OK,如图所示:

如下图,点击Finish:

弹出如下界面,用于设置源文件的模块名称和端口列表,在此不作设置,点击OK:

弹出如下模块定义确认界面,点击YES:

此时工程主界面Sources窗口出现刚创建的源文件,如图所示:

双击打开,删除默认代码,编写新代码如下:

module led_twinkle(
    input sys_clk, //系统时钟
    input sys_rst_n, //系统复位,低电平有效
    output [1:0] led //LED灯
);
reg [25:0] cnt;

//对计数器的值进行判断,以输出 LED 的状态
assign led = (cnt < 26'd2500_0000) ? 2'b01 : 2'b10 ;
//计数器在 0~5000_000 之间进行计数
always @ ( posedge sys_clk  or  negedge sys_rst_n)  begin
    if(!sys_rst_n)
        cnt <= 26'd0;
    else if(cnt < 26'd5000_0000)
        cnt <= cnt + 1'b1;
    else
        cnt <= 26'd0;
end
endmodule

软件中显示界面如下:

1.3 分析与综合

对设计进行分析(Elaborated),点击Flow Navigator窗口中的Open Elaborated Design,如图所示:

点击OK,如图所示:

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

进行 I/O 引脚分配,在右上角的窗口布局(Layout)选择器中选择I/O Planing,如图所示:

窗口布局会打开IO相关的子窗口,如图所示,暂时不分配,先对设计进行综合,综合之后再统一输入时序约束和 IO 引脚的物理约束:

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

如下图,点击OK:

综合完成后,弹出窗口,直接关闭即可,如图所示:

1.4 约束输入

创建约束文件,点击Sources窗口中的+,如图所示:

弹出窗口选择Add or create constraints,点击Next,如图所示:

在如下界面点击Create File,创建新的约束文件:

弹出的对话框,输入约束文件名称,点击OK,如图所示:

点击Finish,完成约束文件的创建,如图所示:

Sources窗口,双击添加的约束文件,如图所示:

约束一般分为两种, 一种是 IO 管脚的约束,另外一种是对时序进行约束。IO 管脚的约束语句如下:

#IO 管脚约束 
set_property -dict PACKAGE_PIN U18 iosTANDARD LVCMOS33 [get_ports sys_clk] 
set_property -dict PACKAGE_PIN J15 IOSTANDARD LVCMOS33 [get_ports sys_rst_n] 
set_property -dict PACKAGE_PIN J18 IOSTANDARD LVCMOS33 [get_ports led[0]] 
set_property -dict PACKAGE_PIN H18 IOSTANDARD LVCMOS33 [get_ports led[1]]

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

#时钟周期约束 
create_clock -name clk -period 20 [get_ports sys_clk ] 

输入 IO 管脚约束语句后如图所示:

1.5 设计实现

点击 Flow Navigator 窗口中的 Run Implementation,如图所示:

弹出如下界面,点击Yes:

然后点击OK,如图所示:

实现完成后,弹出如下界面,关闭即可:

1.6 下载比特流

生成比特流文件,点击Flow Navigator 窗口中的 Generate Bitstream 按钮,如图所示:

由于疫情,一直无法去实验室,故ZYNQ开发板不在身边,该步骤内容待更新

致谢领航者ZYNQ开发板,开启FPGA学习之路!

希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距

以上是关于ZYNQ之FPGA学习----Vivado软件使用的主要内容,如果未能解决你的问题,请参考以下文章

ZYNQ之嵌入式学习----开篇实验Hello World

学fpga(hls之vivadozynq和petalinux)

基于Zynq-7000系列之硬件开发学习教程——Xilinx Vivado HLS案例

ZYNQ之FPGA学习----UART串口实验

ZYNQ之FPGA学习----EEPROM读写测试实验

ZYNQ之FPGA学习----FIFO IP核使用实验