vivado使用简介150908

上传人:简****9 文档编号:101766582 上传时间:2019-09-29 格式:PDF 页数:28 大小:2.14MB
返回 下载 相关 举报
vivado使用简介150908_第1页
第1页 / 共28页
vivado使用简介150908_第2页
第2页 / 共28页
vivado使用简介150908_第3页
第3页 / 共28页
vivado使用简介150908_第4页
第4页 / 共28页
vivado使用简介150908_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《vivado使用简介150908》由会员分享,可在线阅读,更多相关《vivado使用简介150908(28页珍藏版)》请在金锄头文库上搜索。

1、Vivado 使用使用入门入门 简介简介: 一个典型的,用 Vivado 进行数字逻辑电路设计的过程包括:创建模块,创 建用户约束文件,创建 Vivado 工程,插入创建的模块,声明创建的约束文件,随 意地运行动作的仿真,对创建的模块进行综合,执行设计,产生位文件,最后将 文件下载到硬件上验证设计的正确性等步骤。 Figure 1. A typical design flow 完成一个实际电路的实例 一一、新建工程、新建工程 步骤步骤如下:如下: 1 打开打开 Vivado Start All Programs Xilinx Design Tools Vivado 2013.3 Vivado

2、2013.3 或双 击桌面图标,显示如下界面: “Creating New Project”:建立新工程导航,用于建立各种类型的工程。 “Open Project”:打开一个已有的工程。 “Open Example Project”:打开示例工程。 “Documentation and Tutorials”:文件夹和说明书。可以打开Xilinx使用说明书和部 分设计数据。 “User Guide”:打开Vivado用户指南。 “Quick Take Videos”:打开Xilinx视频说明书。 2 点击“Create New Project”,开始新建,开始新建工程向导。工程向导。弹出弹出下图

3、下图 点击“Next” ,进入设置此次所建项目的名称对话框。第一次实验前,请为本课 程所有的项目新建一个文件夹,如“digital”,以后所有本课程相关项目均放在 此文件夹下,在“project location”栏选择此文件夹。接着,为本项目取名,如 “tutorial01”,勾选“Create Project Subdirectory”,在当前目录下为本工程新建一 个同工程名的子目录,保存工程所有数据文件。 注意:工程名称和存储路径中不能出现中文和空格,建议工程名称和路径名称 都是以字母开头,由字母、数字、下划线来组成。 点击“Next”。进入工程类型界面,指明工程类型,这一步定义了工程源

4、文件的 类型。选择“RTL Project”。 勾选“Do not specify sources at this time”,勾选该选 项是为了跳过在新建工程的过程中添加设计源文件的过程。 点击“Next”。进行目标器件的选择,根据实验平台选择相应的FPGA器件。本实 验使用的是Xilinx公司的Nexys4开发板,此开发板上的FPGA为Artix-7系列芯片, 即“Family”和“Subfamily”均为Artix-7,封装形式“Package”为csg324,速度等 级“Speed grade”为-1,温度等级“Temp Grade”为C。在出现的两个器件中,选 择xc7a100tcs

5、g324-1的器件。 注:实验室也提供zedboard的开发板,如果选用的是zedboard的开发板,此开发 板上的FPGA为Zynq-7000系列芯片,即“Family”和“Subfamily”均为Zynq-7000, 封装形式“Package”为clg484,速度等级“Speed grade”为-1. 点击“Next”。进入新建工程总结界面,确认相关信息与设计所用的FPGA器件信 息是否一致,一致请点击“Finish”,不一致,请返回上一步修改。 完成后,进入空白的Vivado工程界面,如图,完成新建工程过程。 二、输入设计文件 1、 如下图所示,点击Flow Navigator下的Pro

6、ject Manager-Add Sources或中间 Sources中的Add Sources对话框,打开添加设计文件对话框。 2、 选择“Add or Create Design Sources”,用来添加或新建Verilog或VHDL源文 件。 点击“Next”。如果有已经写好的.v/.vhd文件,可以通过“Add Files”一项添加。 在这里,我们要新建文件,所以选择“Create File”这一项。 4、在“File Type” 中选择Verilog,在“Create Source File”中“File Name”栏 输入你为该工程取的顶层实体文件名,这里我们取名为“tutori

7、al”。文件名可以 和工程名一样,也可以不一样。注意:件名称以字母开头,由字母、数字、下 划线来组成,不能出现中文和空格,不能以数字开头。 如图。 点击“OK”。新添加的Verilog文件“tutorial.v”出现在对话框中。 点击”Finish”。 6、在弹出的Define Module中的I/O Port Definition,输入此次设计的模块中所需 的端口,并设置输入/输出,如果端口为总线型,勾选Bus选项,并通过MSB和 LSB确定总线宽度。完成后点击OK。 (这一步也可以不用设置端口线,以后在 Verilog文件中直接声明也可以。如果这一步设置错了,也可以在Verilog文件 中

8、修改。 ) 7、新建的设计文件(此处为tutorial.v)即存在于Sources中的Design Sources中。 双击“tutorial.v”打开该文件,输入相应的设计代码。如图。如果刚才设置了 端口,则此时的代码中已经对端口进行了声明,如刚才没有设置端口,在这里 要重新声明。 本段代码的功能是完成一个四个灯的循环点亮电路。 这样来说:有一个电路,它有两个输入端clk和rst,rst的功能是对电路进行 复位,每次输入“1”值,打开复位开关,四个灯的最右面的等亮,其他灯暗。如 果输入“0”值复位开关“关”则电路正常工作,四个灯循环向左逐个点亮,但每次 只有一个灯亮。clk是时钟信号,这里使

9、用的是开发板上自带的一个系统时钟, 频率是100MHZ的。当时钟信号从0计满一次224后,亮的灯顺次向左移1位。 电路的输出端是led,是一个四位的变量。复位时输出“0001”,然后每计满 个224时钟周期,循环左移一位。 这段代码的两个输入端是:时钟clk和复位rst端,输出端是一个四位的总线 结构Led3:0(led3、led2、led1、led0) 。 代码解释: module tutorial( input clk, / 输入信号,时钟信号,缺省宽度,默认为1位 input rst, / 输入信号,复位信号,缺省宽度,默认为1位 output 3:0 led / 输出信号,宽度为4位,

10、发光二极管 ); reg 23 : 0 cnt_reg; / 局部变量,1个24位的寄存器,用于计数 reg 3 : 0 light_reg; / 局部变量,1个4位的寄存器,用于暂存数据 /*因为以上两个变量要在always块中被赋值,因此语法要求定义为reg型变量。 如果是在assign语句中被赋值,则应声明为wire型变量。 */ always (posedge clk) / always块,每当时钟上升沿到来时执行always块 / 中begin end 之间的语句 begin if (rst) / 如果复位信号有效 cnt_reg = 0; / 计数器清0 else / 否则 cnt

11、_reg = cnt_reg + 1; / 计数器加1计数 end always (posedge clk) / always块,每当时钟上升沿到来时执行always / 块中begin end 之间的语句 begin if (rst) / 如果复位信号有效 light_reg = 4b0001; / 暂存器中的值赋值为 4b0001 else if (cnt_reg = 24hffffff) begin / 如果复位信号无效,切计数器已 / 经计数到24hffffff if (light_reg = 4b1000) / 如果暂存器中的值为 4b1000 light_reg = 4b0001;

12、 / 则将暂存器赋值为 4b0001 else / 如果暂存器中的值不为 4b1000 light_reg = light_reg 1; / 则将暂存器中的数左移一位 end end assign led = light_reg; / 将暂存器中的值从输出端输出 endmodule 如果大家不能理解这段代码的含义,也没有关系,这个例子只是让大家先 认识一下Verilog语言,了解一下Vivado设计的流称,轮流点亮灯是为了增加实验 的趣味性。 保存,编译器会自动初步检查语法错误,并将此文件加入到工程库中,如 果编译器检查没有语法、拼写错误,则在Sources栏可见此文件, 且文件前有一个“”型

13、符号。 如果没有此符号出现,说明文件没有正确加到工程中,检查添加文件步骤 是否正确,或者文件中是否有逻辑错误使得文件无法正常解析。 激励代码保存后,可以点击工程导航栏Synthesis下的 “Run Synthesis”,对工 程进行编译。编译过程是对设计进行检查,检查设计中的简单逻辑、语法错误 等,请仔细检查“error”项,修改每一个error后再编译。 二、利用Vivado进行功能仿真 1、创建激励测试文件,在 Source 区域中右击选择 Add source 2、 在Add Source界面中选择第三项Add or Create Simulation Sources, 点击Next。

14、 3、 选择 Create File,创建一个新的激励测试文件 4、 输入激励测试文件名(和设计代码文件区别开) ,点击 OK。点击 Finish。 5、 在弹出的端口设置对话框中,不要设置端口。 6、 点击 OK。 7、新建的测试文件(此处为 test_tutorial.v)即存在于 Sources 中的 Simulation Sources 中。 8、双击打开test_tutorial.v,输入测试激励代码。 激励代码的作用是给输入信号赋不同的值,检查输出的变化是否符合设计要 求。 注意:测试代码的端口参数列表要保持空的;在变量声明中,输入变量声明 “reg”类型的,输出变量要声明为“wi

15、re”类型的。 保存激励代码,如果没有语法错误,这时在Sources栏的Simulation Sources栏 下会出现实例“u0”。因为测试代码中将tutorial模块实例化,并取名为“u0”, 如果没有出现“u0”,则检查测试代码是否有逻辑错误,修改错误,保存,直至 测试代码被正确解析。 激励激励代码解释:代码解释: timescale timescale 1ns / 1ps1ns / 1ps 此语句说明时延时间单位为1 ns并且时间精度为1ps。如“#2”代表延时时间2 ns。 另另:在:在生成生成test_tutorial.v文件的时候,编译器会在test_tutorial.v文件的第

16、一个 自动产生这个语句,如果自动产生了,则不用用户重复输入了,但用户可以修 改延时时间和时间精度。 module test_tutorial( ); reg clk; reg rst; wire 3 : 0 led; tutorial u0( .clk(clk), .rst(rst), .led(led) ); /*这条语句是将tutorial.v文件中的tutorial模块实例化,并取名为“u0”.因 为我们是要对tutorial模块进行仿真,因此要实例化tutorial模块。*/ parameter PERIOD = 10; /定义一个常量 always begin /* “always”是指循环执行下面这段激励,一般用于 写时钟激励,也可以将下面两句写为: clk1 = clk1; #(P

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号