Vivado 2018.3软件安装入门及LED闪烁教程

目录

  • 一、安装Vivado
  • 二、Vivado使用流程,新建项目
  • 三、程序设计
  • 1、创建.V文件
  • 2、.V文件代码
  • 3、添加管教约束
  • 4、下载验证
  • 四、参考资料
  • 一、安装Vivado

    官方下载链接:
    https://www.xilinx.com/support/download.html

    选择对应的版本下载:

    下载完成后解压文件夹,双击xsetup.exe

    然后一路傻瓜式安装,注意安装路径不能有中文字符和空格。

    此外还需要软件许可安装,以下是安装软件许可教程及文件。
    https://www.bilibili.com/read/cv15414254/

    二、Vivado使用流程,新建项目

    点击Vivado 2018.3

    在开发环境里点击 Create New Project

    点击next

    输入项目名称,选择存放路径,然后点击next

    选择RTL Project ,然后点击next

    这一步是添加 Source 文件,这里先不添加,点击 Next

    这里是添加约束文件,同样暂时不添加,点击 Next

    选择器件,可以根据开发板上的芯片型号来做选择,由于芯片型号比较多,
    可以做一些筛选。
    Z7-Lite7020的用户在Family栏里选择Zynq-7000,Package栏选择clg400,
    速度等级为 2,然后在下面的类表里选择相应的器件。

    话点击 Finish,完成项目创建

    创建后的项目

    其中,红色框为设计流程导航窗,从上到下是 FPGA 开发的各个环节。黄色
    框为工程数据文件窗口,可以查看工程的层次结构,编辑工程文件属性。紫色框
    为主工作窗,根据不同的 layout 有不同的显示内容。蓝色框为结果显示窗,显示
    各个环节的执行结果。黑色框可在不同的 layout 之间切换。

    三、程序设计

    1、创建.V文件

    在做程序设计前,我们需要先创建一个.v 的程序文件,左侧边栏 Project
    Manager 下,点击 Add Source 图标

    选择 Add or Create Design Source,然后点击 Next

    用户可以添加已有的程序,这里我们还有程序,选择 Create File

    弹出对话框,输入文件名 led,点击 OK

    点击 Finish 完成

    向导会提示您定义 I/O 的端口,这里不定义,后面程序中编写即可

    此时在 Project Manager 界面下面的 Design Source 下有 led_flash.v 文件,并
    且自动成为项目的 top 模块

    2、.V文件代码

    接下来就是编写本次实验主要的部分,完成流水灯的部分。代码如下:

    `timescale 1ns / 1ps
    //
    // Company: 
    // Engineer: 
    // 
    // Create Date: 2023/05/14 10:46:26
    // Design Name: 
    // Module Name: led_flash
    // Project Name: 
    // Target Devices: 
    // Tool Versions: 
    // Description: 
    // 
    // Dependencies: 
    // 
    // Revision:
    // Revision 0.01 - File Created
    // Additional Comments:
    // 
    //
    
    
    module led_flash(
    input       wire      clk,
    input       wire      rst_n,
    output      reg [1:0] led
    
        );
    reg [27:0]  cnt;
    wire        add_cnt;
    wire        end_cnt;
    
    always@(posedge clk or negedge rst_n) begin
        if(!rst_n) begin
        cnt<=28'd0;
        end
        else if(add_cnt) begin
        if(end_cnt)
        cnt <= 28'd0;
        else
        cnt <= cnt+1'b1;
        end
    end
    assign add_cnt = 1; 
    assign end_cnt = add_cnt && cnt== 10_000_000 - 1;
      
     //--------------------led--------------------
     always @(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
    led <= 2'b10;//reset state
    end
    else if(end_cnt)begin
    led <= {led[0], led[1]};
    end
    else begin
    led <= led; //keep the state
    end
    end
    endmodule
    

    就代码中的几个注意点做以下说明:12 行声明了一个计数器,用来计数时
    间,通过该计数器来控制其他逻辑。18 到 31 行是计数器的实现代码,每个复位
    时计数器保持为 0,复位计数后,每个时钟周期计数器加一,当计数到最大值时
    清零计数器并且重新开始计数。
    35 到 45 行是控制 led 灯流水的操作。在复位的时候,led 的最低位有效,每
    当计数器计数到最大值的时候,led 完成移位,这里使用了位拼接的方式来完成
    led 的移位操作。可以看到代码十分的简单。

    3、添加管教约束

    和之前 ISE 软件不同, Vivado 使用的约束文件格式是 xdc 文件。xdc 文件里
    主要是定义管脚约束,时钟约束, 以及其他时序约束。这里我们需要对 led.v 程序
    中的输入输出端口分配到 FPGA 的管脚上, 这就需要将管脚分配的.xdc 文件添加
    到工程中
    我们需要先创建一个.xdc 的约束文件,左侧边栏 Project Manager 下,点击
    Add Source 图标

    选择 Add or create constraints,点击 Next

    点击 Create File 按钮,在 file name 输入 top_pin 文件名,点击 OK


    点击 Finish 按钮,完成约束文件的创建

    打开 top_pin.xdc 文件,添加如下约束,约束文件如何写,可以参考 xilinx 的
    相关文档,下面来介绍一下最基本的 XDC 编写的语法,普通 IO 口只需约束引脚
    号和电压,管脚约束如下:

    set_property PACKAGE_PIN “引脚编号” [get_ports “端口名称” ]

    电平信号的约束如下:

    set_property IOSTANDARD “电压” [get_ports “端口名称” ]

    这里需要注意文字的大小写,端口名称是数组的话用{ }刮起来, 端口名称必须和源代码中的名字一致,且端口名字不能和关键字一样。以 led[0]的约束为例:

    set_property PACKAGE_PIN G14 [get_ports {led[0]}]

    是为了绑定 led[0]的管脚

    set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]

    是为了设置 led[0]的电平约束。

    Z7-Lite 系列的约束文件如下:

    create_clock -period 20.000 [get_ports clk]
    set_property PACKAGE_PIN N18 [get_ports clk]
    set_property IOSTANDARD LVCMOS33 [get_ports clk]
    ############## key define##################
    set_property PACKAGE_PIN P16 [get_ports rst_n]
    set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
    ##############LED define##################
    set_property PACKAGE_PIN P15 [get_ports {led[0]}]
    set_property PACKAGE_PIN U12 [get_ports {led[1]}]
    set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
    set_property IOSTANDARD LVCMOS33 [get_ports {led[*]}]
    set_property IOSTANDARD LVCMOS33 [get_ports clk]
    

    依次点击 1 综合,2 实现,3 生成.bit 文件,或者直接双击 3,其效果是一样

    4、下载验证

    生成完.bit 文件就可以下载到 FPGA 芯片中,看一下 LED 的运行结果。将下载
    器连接到 JTAG 口,给板子上电。

    点击 Open target

    然后点击Auto Connect自动搜索开发板

    连接成功后,在 Hardware 窗口下会显示当前扫描到的设备,如下图扫描到
    的设备是 xc7z020 与我们在一开始的时候选择的器件型号相吻合。


    点击 Program device,下载程序,弹出对话框,直接点 Program 按钮。

    下载完成后可以看到 2 个 led 灯开始进行流水操作

    四、参考资料

    Part1_Z7_Lite系列教程之逻辑篇

    物联沃分享整理
    物联沃-IOTWORD物联网 » Vivado 2018.3软件安装入门及LED闪烁教程

    发表评论