Vivado初学笔记

一、Xilinx 芯片类型(转自赛灵思官网)

目前学习的是7系列。性能从低到高:SPARTAN,ARTIX,LINTEX,VIRTEX。

芯片的内部资源在官网中也有介绍,此处就不贴了。

二、Vivado安装

由于电脑系统是win7的,所以在安装Vivado18.1时安装失败,只能安装16.4。看来以后的电脑系统要转用win10了。

三、Modelsim安装

安装Modelsim时,破解时注意创建系统环境变量时的路径,如C:\modeltech_10.5\LICENSE.TXT。注意要有LICENSE.TXT。(唉,一言难尽)需要再重启电脑

四、点亮LED(转自黑金用户手册)

在刚接触Vivado时,以黑金AX7103开发板的用户指导手册作为参考。(全名《黑金AX7103开发板Verilog教程V1.0pdf》)

创建工程

IBUFGDS原语 (FPGA中还有其他的原语

因为开发板中输入的是差分时钟,而程序中用的是单端时钟,所以需要调用一个IBUFGDS的原语将差分全局时钟转换成单端全局时钟。(IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲)

IBUFGDS #
(
    .DIFF_TERM ("FALSE"),
    .IBUF_LOW_PWR("FALSE")
)
    u_ibufg_sys_clk
    (
        .I(sys_clk_p),    //此处连接差分时钟信号 正极
        .IB(sys_clk_n),   //此处连接差分时钟信号 负极
        .O(sclk)          //此处连接程序中要使用的 单端时钟
    );

添加引脚约束文件(XDC)

XDC文件主要完成管脚的约束、时钟的约束、组的约束。

添加程序文件时是Add Sources >> Add or create design sources

添加引脚约束文件是Add Sources >>Add or create constraints

引脚定义文件中的内容,以该例程点亮LED为例:

set_property CFGBVS VCCIO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]

############## clock define##################
create_clock -period 5 [get_ports sys_clk_p]            //差分时钟的时钟周期为5ns
set_property PACKAGE_PIN R4 [get_ports sys_clk_p]
set_property IOSTANDARD DIFF_SSTL15 [get_ports sys_clk_p]

############## key define##################
set_property PACKAGE_PIN T6 [get_ports rst_n]
set_property IOSTANDARD LVCMOS15 [get_ports rst_n]      //电压为1.5V

##############LED define##################
set_property PACKAGE_PIN C17 [get_ports {led[0]}]       //数组时要用{ }
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]   //电压为3.3V
set_property PACKAGE_PIN D17 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property PACKAGE_PIN V20 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property PACKAGE_PIN U20 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]

#############SPI Configurate Setting##################    //提高SPI FLASH的读写时钟
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property CONFIG_MODE SPIx4 [current_design]            //使用X4的方式读写
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

(1)前面两句是配置CFGBVS引脚的电压和配置电路的电压。

                     在黑金开发板上CFGBVS引脚(即BANK 0 的VCCIO)是上拉到3.3V;配置电路的电压也是3.3V。

(2)基本XDC编写语法(按对编写)

        (2.1) set_property PACKAGE_PIN "引脚编号" [get_ports “端口名称” ]
                电平信号癿约束如下:
                   (2.2) set_property IOSTANDARD "电压" [get_ports “端口名称” ]
                需要注意文字的大小写;端口名称是数组的话需要用{ }括起来(led信号)。端口名必须和源代码中的名字一致。

        (2.3)create_clock -period "周期" [get_ports “端口名称” ]

     时钟引脚还需要定义时钟周期约束,差分时钟只需要定义和约束 P 引脚。此处的周期单位为ns。

(3)防止固化后,关电后重新上电需要等好长时间。所以对SPI FLASH也进行了时钟约束。

编译

(1)点击 Run Synthesis,即可开始综合并生成网表文件

(2)点击 Run Implementation,开始布局布线

(3)点击Generate Bitstream,生成 bit 文件

(4)点击 Implementation >> Report Utilization 查看板子实际资源使用情况:LUT(查找表)、FF(寄存器)、IO(管脚)、BUFG(时钟Buffer)

仿真

(1)设置vivado仿真配置,点击 Simulation >> Simulation Setting,将Simulation栏中的xsim.simulate.runtime 根据需要修改,其他按默认设置即可。

(2)添加测试文件。Add Sources >> Add or create simulation sources。

(3)编写测试文件

`timescale 100ps / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Module Name: vtf_led_test
//////////////////////////////////////////////////////////////////////////////////
module vtf_led_test;
    // Inputs
    reg sys_clk_p;
    wire sys_clk_n;
    reg rst_n;
    // Outputs
    wire [3:0] led;
    // Instantiate the Unit Under Test (UUT)
    led_test uut (
        .sys_clk_p(sys_clk_p),
        .sys_clk_n(sys_clk_n),
        .rst_n(rst_n),
        .led(led)
    );
initial begin
    // Initialize Inputs
    sys_clk_p = 0;
    rst_n = 0;
    // Wait 100 ns for global reset to finish
    #1000;
    rst_n = 1;
    // Add stimulus here, stop simulation after 2ms
    #20000;
    $stop;
    end
    always #25 sys_clk_p = ~ sys_clk_p; //5ns 一个周期,产生 200MHz 时钟源,timescale是100ns
    assign sys_clk_n=~sys_clk_p;    //此处需要注意
endmodule

(4)点击 Run Simulation >> Run Behavioral Simulation

下载和调试

(1)右键Program And Debug >> Bitstream Setting...;-bit_file打勾,其他不打勾。

(2)点击Generate Bitstream 产生 bit 文件和 bin 文件。

(3)点击Program And Debug >> Open Hardware Manager >> Open Target >> Auto Connect ,在Hardware界面下显示xc71100t_0 的图表说明JTAG已经建立连接。

(4)右键xc71100t_0 >> Program Device

(5)软件会自动选择项目生成的 bit 件,点击Program即可。

固化

(1)右键xc71100t_0 >> Add Configuration Memory Device...

(2)选择FLASH型号

(3)在弹出的 Program Configuration Memory Device 窗口中,Configration file 选择生成的 .bin 文件。

(4)点击OK,开始编程FLASH

Vivado 是一个功能强大的 FPGA 开发工具,涵盖了从设计输入到实现、验证、调试和下载的完整流程。对于初学者或需要深入了解 Vivad 的用户来说,获取相关的使用教程和下载指南是十分重要的。 ### Vivado 使用教程 本仓库提供 **Vivado官方教程的中文翻译版本** 下载,这份教程详细介绍了 Vivado 的使用方法和相关设计技巧,非常适合作为设计时的参考资料。该教程具有以下特点: - **权威性高**:作为官方教程,内容准确且全面。 - **易于理解**:通过中文翻译,降低了语言门槛。 - **内容详尽**:涵盖 Vivado 各项功能,包括项目创建、设计输入、约束文件、综合与实现、仿真、调试、下载配置、优化技巧等步骤[^1]。 通过这些内容的学习和实践,可以有效提高 FPGA 设计的性能和可靠性。 ### Vivado 下载与安装指南 目前,Vivado 已推出 2019.1 版本,而实验室所安装的为 2018.3 版本。由于软件向下兼容的特性,建议用户安装 2018 版本。若选择安装 2019 版本,请自带笔记本进行安装,因为安装过程与之前没有差别,这里以 2018.1 版本为例介绍下载和安装过程。 在安装过程中,需要注意以下几个关键点: 1. **系统要求**:确保计算机满足 Vivado 的最低系统要求,包括操作系统版本、内存大小、磁盘空间等。 2. **许可证管理**:安装完成后,需申请并激活合适的许可证。 3. **安装选项**:根据需求选择安装组件,如开发工具链、文档、示例工程等。 完成安装后,可以通过目录结构查看教程内容[^3]。如果在使用过程中遇到问题,可参考教程中提供的示例和解决方案。 ### 示例代码:Vivado 中的 Tcl 脚本化操作 Vivado 支持通过 Tcl 脚本自动化执行任务,这对于重复性的操作非常有用。以下是一个简单的 Tcl 脚本示例,用于创建一个新项目并添加源文件: ```tcl # 创建新项目 create_project my_project ./my_project -part xc7z020clg400-1 # 添加 Verilog 源文件 add_files -norecurse {../src/top_module.v ../src/sub_module.v} # 设置顶层模块 set_property top top_module [current_fileset] # 运行综合 launch_runs synth_1 wait_on_run synth_1 # 运行实现 launch_runs impl_1 wait_on_run impl_1 # 生成比特流 launch_runs impl_1 -to_step bitstream ``` 此脚本展示了如何通过命令行方式快速构建一个完整的 FPGA 工程流程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值