Vivado 使用教程(个人总结)

Vivado 是 Xilinx 公司推出的一款用于 FPGA 设计的集成开发环境 (IDE),提供了从设计输入到实现、验证、调试和下载的完整流程。本文将详细介绍 Vivado 的使用方法,包括项目创建、设计输入、约束文件、综合与实现、仿真、调试、下载配置等步骤。

一、创建新项目

1.1 启动 Vivado

打开 Vivado 应用程序,进入欢迎界面。

1.2 创建新项目

  1. 在欢迎界面选择“Create New Project”。
  2. 输入项目名称和路径。
  3. 选择“RTL Project”,并勾选“Do not specify sources at this time”。
  4. 选择目标器件(如 XC7Z020-1CLG484)。
  5. 点击“Finish”完成项目创建。

二、设计输入

2.1 添加设计源文件

  1. 在 Flow Navigator 面板中,选择“Add Sources”。
  2. 选择“Add or Create Design Sources”并点击“Next”。
  3. 点击“Create File”以创建新的 Verilog 或 VHDL 文件。
  4. 输入文件名并选择文件类型(Verilog/VHDL)。
  5. 点击“Finish”完成文件创建。

2.2 编辑设计源文件

  1. 在 Sources 面板中,双击新创建的源文件以打开编辑器。
  2. 编写设计代码。例如,以下是一个简单的 Verilog 模块:
module led_blink (
    input wire clk,
    input wire rst,
    output reg led
);

reg [23:0] counter;

always @(posedge clk or posedge rst) begin
    if (rst) begin
        counter <= 24'd0;
        led <= 1'b0;
    end else begin
        counter <= counter + 1;
        if (counter == 24'd9999999) begin
            counter <= 24'd0;
            led <= ~led;
        end
    end
end

endmodule

三、添加约束文件

3.1 添加约束文件

  1. 在 Flow Navigator 面板中,选择“Add Constraints”。
  2. 选择“Create File”并命名文件(如“constraints.xdc”)。
  3. 点击“Finish”完成文件创建。
  4. 在 Sources 面板中,双击新创建的约束文件以打开编辑器。
  5. 添加引脚约束。例如:
set_property PACKAGE_PIN W5 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]

set_property PACKAGE_PIN U16 [get_ports rst]
set_property IOSTANDARD LVCMOS33 [get_ports rst]

set_property PACKAGE_PIN V17 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]

3.2 约束文件细节

引脚约束:指定 FPGA 器件的引脚连接。

时序约束:定义时钟周期、输入和输出延迟、时钟偏移等时序要求。例如:

create_clock -period 10.000 -name clk [get_ports clk]
set_input_delay -max 5.000 -clock clk [get_ports rst]
set_output_delay -max 5.000 -clock clk [get_ports led]

布线约束:定义特定信号的布线要求,避免电源噪声和串扰。例如:

set_property PULLUP true [get_ports rst]
set_property DRIVE 12 [get_ports led]

3.3 约束文件的优化

  1. 确保时序约束的准确性,避免过于宽松或严格。
  2. 针对关键路径设置合理的时序约束,保证时序收敛。
  3. 使用分层约束文件,便于管理和维护。

四、综合与实现

4.1 运行综合(Synthesis)

  1. 在 Flow Navigator 面板中,选择“Run Synthesis”。
  2. Vivado 将开始综合设计。完成后,查看综合报告以确认无错误。

4.2 查看综合报告

  1. 在 Flow Navigator 面板中,选择“Open Synthesized Design”。
  2. 打开“Reports”选项卡,查看综合报告中的时序、资源利用情况等信息。

时序报告:检查所有路径是否满足时序要求。

资源利用报告:查看逻辑单元、寄存器、内存块、DSP 等资源的使用情况。

4.3 运行实现(Implementation)

  1. 在 Flow Navigator 面板中,选择“Run Implementation”。
  2. Vivado 将开始实现设计。完成后,查看实现报告以确认无错误。

4.4 查看实现报告

  1. 在 Flow Navigator 面板中,选择“Open Implemented Design”。
  2. 打开“Reports”选项卡,查看实现报告中的布线、时序等信息。

布线报告:检查布线是否合理,是否存在长路径或高拥堵区域。

时序报告:再次检查时序收敛情况,确保所有路径满足时序要求。

4.5 优化布线

  1. 调整约束:检查和优化约束文件,确保时序约束和布线约束合理。
  2. 重复综合和实现:多次运行综合和实现过程,逐步优化设计。
  3. 使用物理布局工具:在 Vivado 中使用物理布局工具查看和调整关键路径的布线。

4.6 布局和资源优化示例

资源优化示例

假设我们有一个简单的计数器设计:

module counter(
    input wire clk,
    input wire rst,
    output reg [3:0] count
);
    always @(posedge clk or posedge rst) begin
        if (rst)
            count <= 4'b0000;
        else
            count <= count + 1;
    end
endmodule

资源利用报告

  1. 在综合完成后,查看综合报告中的“Utilization Report”,检查 LUT、FF、BRAM 和 DSP 的使用情况。
  2. 如果发现某些资源使用过多,可以尝试以下优化:
    • 重写代码以减少不必要的逻辑。
    • 使用更高效的数据结构(如将组合逻辑转换为查找表或存储器)。
布局优化示例
  1. 在综合和实现完成后,查看实现报告中的“Placement Report”和“Routing Report”。
  2. 检查是否有信号的延迟过长或拥堵区域。
  3. 使用 Vivado 的“Floorplanning”工具进行手动布局优化:
    • 将相关模块放置在相邻区域内,减少布线长度。
    • 确保关键信号的路径尽可能短,减少延迟。
    • 示例:将计数器和 LED 驱动逻辑放置在相邻的逻辑块中。

五、仿真

5.1 添加仿真源文件

  1. 在 Flow Navigator 面板中,选择“Add Sources”。
  2. 选择“Add or Create Simulation Sources”并点击“Next”。
  3. 点击“Create File”以创建新的仿真文件(如“testbench.v”)。
  4. 输入文件名并选择文件类型(Verilog/VHDL)。
  5. 点击“Finish”完成文件创建。

5.2 编写测试平台

  1. 在 Sources 面板中,双击新创建的仿真文件以打开编辑器。
  2. 编写测试平台代码。例如:
module counter(
    input wire clk,
    input wire rst,
    output reg [3:0] count
);
    always @(posedge clk or posedge rst) begin
        if (rst)
            count <= 4'b0000;
        else
            count <= count + 1;
    end
endmodule

5.3 运行仿真

  1. 在 Flow Navigator 面板中,选择“Run Simulation”。
  2. 选择“Run Behavioral Simulation”。
  3. 仿真完成后,查看波形窗口以验证设计行为。

5.4 波形查看和分析

  1. 在仿真过程中,可以使用 Vivado 仿真器查看波形图。
  2. 在波形窗口中,选择感兴趣的信号,点击“Add to Wave”以添加到波形视图中。
  3. 使用“Zoom In”和“Zoom Out”工具调整波形视图。
  4. 在波形视图中,检查信号的时序关系和逻辑行为,验证设计的正确性。

5.5 仿真报告

查看仿真日志,确认所有测试用例通过,并且没有错误和警告。

六、调试

6.1 设置调试探针

  1. 在设计源文件中插入 ILA (Integrated Logic Analyzer) 核。
  2. 例如,将以下代码添加到 Verilog 模块中:
ila_0 ila_inst (
    .clk(clk),
    .probe0(count)
);

6.2 配置调试核

  1. 在 Flow Navigator 面板中,选择“Open IP Integrator”。
  2. 在 IP Integrator 中添加 ILA 核,并将其连接到设计中相应的信号。

6.3 运行调试

  1. 在 Flow Navigator 面板中,选择“Run Implementation”。
  2. 生成比特流文件并下载到 FPGA。
  3. 打开硬件管理器,配置 ILA 并运行调试。

七、下载配置

7.1 下载比特流文件

  1. 连接 FPGA 开发板与计算机。
  2. 在 Flow Navigator 面板中,选择“Open Hardware Manager”。
  3. 选择“Open Target”,然后选择“Auto Connect”。
  4. 选择“Program Device”,并选择生成的比特流文件进行下载。

7.2 验证设计

  1. 确认 FPGA 已正确配置。
  2. 验证设计功能是否符合预期。

八、综合和实现的优化技巧

8.1 Lint 检查

Lint 检查用于在代码综合之前查找和修复代码中的潜在错误和不规范写法。

  1. 在 Flow Navigator 面板中,选择“Open Synthesized Design”。
  2. 选择“Report”->“Report DRC”进行设计规则检查。
  3. 选择“Report”->“Report CDC”进行时钟域交叉检查。
  4. 查看报告中的警告和错误信息,修改代码以修复这些问题。

8.2 时序优化

  1. 在综合和实现过程中,检查时序报告,确保所有路径满足时序要求。
  2. 使用多重约束(Multi-Constraint)文件,根据不同的工作条件设置不同的时序约束。
  3. 调整代码结构,优化关键路径,减少路径延迟。

8.3 资源优化

  1. 检查资源利用报告,确保设计在目标 FPGA 上的资源利用率合理。
  2. 使用高效的数据结构和算法,减少资源消耗。
  3. 使用分层设计,将复杂模块分解为多个子模块,提高设计的可维护性和可扩展性。

8.4 物理布局优化

  1. 在物理布局阶段,使用 Vivado 提供的布局工具,手动调整关键路径的布局。
  2. 确保关键信号布线尽量短,减少布线延迟。
  3. 使用区域约束(Area Constraints),将相关模块放置在相邻的区域内,减少信号延迟。

8.5 布局和资源优化示例

假设我们有一个简单的计数器设计:

module counter(
    input wire clk,
    input wire rst,
    output reg [3:0] count
);
    always @(posedge clk or posedge rst) begin
        if (rst)
            count <= 4'b0000;
        else
            count <= count + 1;
    end
endmodule

资源优化示例

  1. 在综合完成后,查看综合报告中的“Utilization Report”,检查 LUT、FF、BRAM 和 DSP 的使用情况。
  2. 如果发现某些资源使用过多,可以尝试以下优化:
    • 重写代码以减少不必要的逻辑。
    • 使用更高效的数据结构(如将组合逻辑转换为查找表或存储器)。

布局优化示例

  1. 在综合和实现完成后,查看实现报告中的“Placement Report”和“Routing Report”。
  2. 检查是否有信号的延迟过长或拥堵区域。
  3. 使用 Vivado 的“Floorplanning”工具进行手动布局优化:
    • 将相关模块放置在相邻区域内,减少布线长度。
    • 确保关键信号的路径尽可能短,减少延迟。
    • 示例:将计数器和 LED 驱动逻辑放置在相邻的逻辑块中。

九、实机条件下的调试

9.1 设置和配置调试核

  1. 在设计中添加 ILA 核,捕获实际工作条件下的信号。
  2. 配置 ILA 核,选择要捕获的信号和触发条件。例如:
ila_0 ila_inst (
    .clk(clk),
    .probe0(count)
);

9.2 运行实机调试

  1. 生成比特流文件并下载到 FPGA。
  2. 连接调试设备(如 JTAG 调试器)与 FPGA 开发板。
  3. 在 Vivado 中打开硬件管理器,选择“Open Hardware Manager”。
  4. 选择“Open Target”,然后选择“Auto Connect”。
  5. 在硬件管理器中配置 ILA,设置触发条件并捕获信号数据。
  6. 分析捕获到的波形数据,检查信号时序和逻辑行为。

9.3 调试步骤示例

  1. 在硬件管理器中,选择“Add Probes”添加需要监控的信号。
  2. 设置触发条件,例如设置计数器达到特定值时触发捕获。
  3. 开始捕获数据,运行 FPGA 设计,触发器触发时自动捕获信号。
  4. 分析波形图,检查信号是否按照预期工作。
  5. 根据需要调整设计,重新生成比特流文件,并再次下载和验证。

十、总结

Vivado 是一个功能强大的 FPGA 开发工具,提供了从设计输入到实现、验证、调试和下载的完整流程。本文详细介绍了 Vivado 的使用方法,包括项目创建、设计输入、约束文件、综合与实现、仿真、调试、下载配置、优化技巧等步骤。通过这些内容的学习和实践,可以有效提高 FPGA 设计的性能和可靠性。

  • 30
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vivado软件的使用 一、 建立工程 1.1新建一个工程 或者: 1.2设置工程名字和路径。输入工程名称、选择工程存储路径,并勾选Create project subdirectory选项,为工程在制定存储路径下建立独立的文件夹设置完成后,点击Next。注意: 工程名称和存储路径中不能出现中文和空格,建议工程名称以字母、数字、下划线来组成。 1.3选择RTL Project一项,并勾选Do not specify sources at this time,勾选该选项是为了跳过在新建工程的过程中添加设计源文件。点击Next。根据使用的FPGA开发平台,选择对应的FPGA目标器件. 1.4确认相关信息与设计所用的FPGA器件信息是否一致,一致请点击Finish,不一致,请返回上一步修改。 1.5得到如下的空白的Vivado工程界面,完成空白工程新建 二、 工程设计 2.1设计文件输入,如下图所示,点击Flow Navigator下的Project Manager->Add Sources或中间Sources中的对话框打开设计文件导入添加对话框。 2.2添加设计文件,然后Next 2.3如果有v/vhd文件,可以通过Add File一项添加。在这里,我们要新建文件,所以选择Create File一项。 2.4在Create Source File中输入File Name,点击OK。注:名称中不可出现中文和空格。 2.5在弹出的Define Module中的I/O Port Definition,输入设计模块所需的端口,并设置端口防线,如果端口为总线型,勾选Bus选项,并通过MSB和LSB确定总线宽度。完成后点击OK. 2.6新建的设计文件(此处为flow_led.v)即存在于Source中的Design Source中。双击打开该文件,输入相应的设计代码。 三、 添加约束 添加约束文件,有两种方法可以添加约束文件,一是利用Vivado中planning功能,二是可以直接新建XDC的约束文件,手动输入约束命令。 3.1利用IO planning 3.1.1点击Flow Navigator 中Synthesis中的Run Synthesis,先对工程进行综合。 3.1.2综合完成后,选择Open Synthesized Design,打开综合结果。 3.1.3此处应该出现如下界面,如果没有出现,在图示位置layout中选择IO planning在右下方的选项卡中切换I/O ports 一栏,并在对应的信号后,输出对应的FPGA管脚标号,并制定I/O std。(具体的FPGA约束管脚和IO电平标准,可参考对应板卡的用户手册或原理图)。 3.1.4完成后,点击上方工具栏中的保存按钮,工程提示新建XDC文件或选择工程中已有的XDC文件。在这里,我们要Create a new file,输入File name,点击OK完成约束过程。 3.1.5、此时在Source下的Constraints中会找到新建的XDC文件。 3.2建立XDC文件 3.2.1、点击Add Source ,选择第一项Add or Create Constraints一项,点击Next。 3.2.2、点击Create File ,新建一个XDC文件,输入XDC文件名,点击OK。点击Finish。 3.2.3、双击打开新建好的XDC文件,按照如下规则,输入相应的FPGA管脚约束信息和电平标准。 四、 功能仿真 4.1创建激励测试文件,在Source中右击选择Add source。在Add Source界面中选择第三项Add or Create Simulation Source,点击Next。 4.2选择Creat File,创建一个新的激励测试文件。输入激励测试文件名,点击OK,然后点击Finish。 4.3弹出module端口定义对话框,由于此处是激励文件,不需要有对外的接口,所以为空。点击OK,空白的激励测试文件就建好了。 4.4在source 下双击打开空白的激励测试文件,完成对将要仿真的module的实例化和激励代码的编写。激励文件完成后,工程目录如下图: 4.5此时,进入仿真。在左侧Flow Navigator中点击Simulation 下的Run Simulation 选项,并且选择Run Behavioral Simulaiton一项,进入仿真界面。 4.6下图为仿真界面。 4.7可以通过左侧的Scope一栏中的目录结构定位到设计者想要查看的module内部寄存器,在Objects对应的信号名称上右击选择Add To Wave Window,将信号加入波形中。 4.8可通过选择工具栏中的如下选项来进行波形的仿真时间控制,如下工具条,分别是复位波形(即清空现有波形)、运行仿真、运行特定时长的仿真、仿真时长设置、仿真时长单位、单步运行、暂停…… 4.9最终得到的仿真效果图如下。核对波形与预设的逻辑功能是否一致,仿真完成。 五、综合下载 5.1在Flow Navigator中点击Program and Debug下的Generate Bitstream选项,工程会自动完成综合、实现、Bit文件生成过程,完成之后,可点击Open Implemented Design 来查看工程实现结果。 5.2点击Flow Navigator中的Open Hardware Manager一项,进入硬件编程管理界面。 5.3在Flow Navigator中展开Hardware Manager ,点击Open New Target 5.4在弹出的Open hardware target向导中,先点击Next,进入Server选择向导。 5.5保持默认,next。 5.6选中FPGA芯片型号,点击Next。完成新建Hardware Target。 5.7此时,Hardware一栏中出现硬件平台上可编程的器件。(此处以zynq为例,如果是纯的FPGA的平台,该出只有一个器件。)在对应的FPGA器件上右击,选择Program Device 5.8选择bit文件位置,默认,直接Program。 观察实验结果,设计完成。
Vivado是一款由Xilinx开发FPGA设计工具。下面是一个简单的Vivado使用教程: 1. 下载和安装Vivado:首先,你需要从Xilinx官方网站下载Vivado的安装包,并按照安装向导进行安装。 2. 创建新项目:打开Vivado软件后,选择"Create Project"来创建一个新项目。在弹出的对话框中,选择项目名称和存储路径,并选择项目类型(如RTL工程或者IP工程)。 3. 添加设计文件:在项目设置完成后,你需要将设计文件添加到项目中。你可以选择在项目创建时添加文件,也可以后续通过"Add Sources"选项添加文件。可以添加的设计文件类型包括Verilog、VHDL等。 4. 添加约束文件:在设计过程中,你需要使用约束文件对设计进行约束。可以通过右键点击项目名称,选择"Add Sources",然后选择添加约束文件。 5. 进行综合:综合将设计文件转换为逻辑网表,并生成一个综合后的设计。在Vivado中,选择"Run Synthesis"来进行综合操作。 6. 进行实现:实现是将综合后的设计映射到目标FPGA设备上,并最终生成比特流文件。选择"Run Implementation"来执行实现过程。 7. 下载比特流文件:完成实现后,你可以通过选择"Generate Bitstream"来生成比特流文件,并将其下载到目标FPGA设备上进行验证。 以上是一个简单的Vivado使用教程,希望对你有所帮助。如果你需要更详细的指导或有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃辣椒的年糕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值