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) beginif (rst) begincounter <= 24'd0;led <= 1'b0;end else begincounter <= counter + 1;if (counter == 24'd9999999) begincounter <= 24'd0;led <= ~led;endend
endendmodule

三、添加约束文件

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) beginif (rst)count <= 4'b0000;elsecount <= 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) beginif (rst)count <= 4'b0000;elsecount <= 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) beginif (rst)count <= 4'b0000;elsecount <= 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 设计的性能和可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/15462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIP-VLAN综合实验

一、实验拓扑 二、实验要求 1、pc1和pc3所在接口为access;属于vlan 2; PC2/PC4/PC5/PC6处于同一网段’其中PC2可以访问PC4/PC5/PC6; PC4可以访问PC6&#xff1b;PC5不能访问PC6&#xff1b; 2、PC1/PC3与PC2/PC4/PC5/PC6不在同一个网段&#xff1b; 3、所有PC通过DHCP获取IP…

闲话 .NET(5):.NET Core 有什么优势?

前言 .NET Core 并不是 .NET FrameWork 的升级版&#xff0c;它是一个为满足新一代的软件设计要求而从头重新开发的开发框架和平台&#xff0c;所以它没有 .NET FrameWork 的历史包袱&#xff0c;相对于 .NET FrameWork&#xff0c;它具备很多优势。 .NET Core 有哪些优势&am…

C# GDI+ 绘制文字不同的操作系统渲染文字大小不同

一、C# GDI 绘制文字不同的操作系统渲染文字大小不同 原因&#xff1a;使用Font 字体的时候&#xff0c;没有指定字体渲染的单位。 不同系统的默认字体单位会不同。 二、解决方案&#xff1a; 在指定字体的时候&#xff0c;指定字体大小&#xff0c;同时也要设置字体的单位 …

sqlserver 创建表,列及表,列描述

-- 创建表 CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,EmployeeName NVARCHAR(100),EmployeeEmail NVARCHAR(100) );-- 为表添加描述 EXEC sp_addextendedproperty name NMS_Description, value N员工信息表, level0type NSchema, level0name dbo, level1type N…

springboot整合kkFileView部署,前端使用

前言&#xff1a; 官方文档&#xff1a;https://kkfileview.keking.cn/zh-cn/docs/production.html docker方式或加入星球获取发行包直接获取启动&#xff0c;无需以下步骤&#xff1a; 拉取镜像# 网络环境方便访问docker中央仓库 docker pull keking/kkfileview:4.1.0# 网…

二元关系表示

一、二元关系的定义和表示 什么是二元关系&#xff1f;对集合A和B&#xff0c;A\timesB的任意子集R为A到B的一个二元关系。当AB时&#xff0c;A\timesA的任一子集R称为A上的一个二元关系。在不引起误解的情况下&#xff0c;二元关系可简称关系。 若|A|m,|B|n&#xff0c;则A到…

手机版AI写作软件哪个好用?5款AI写作软件分享

在这个快节凑的时代&#xff0c;人们对于高效、便捷的创作方式很是追求。尤其是在人工智能技术发展迅速的今天&#xff0c;AI写作软件的出现&#xff0c;让很多自媒体创作者都会想到在手机上面进内容创作&#xff0c;这样不仅能提高工作效率&#xff0c;而且工作的自由度会更高…

自动化运维(AIOps): 现代IT管理的革命

在数字化时代&#xff0c;企业的 IT 系统变得愈加复杂。从云计算到大数据&#xff0c;从物联网到人工智能&#xff0c;技术的飞速发展使得企业面临前所未有的挑战。这种复杂性不仅体现在数据量和数据流的增加上&#xff0c;还包括高成本和高错误率的运维需求。在此背景下&#…

基于51单片机的盆栽自动浇花系统

一.硬件方案 工作原理是湿度传感器将采集到的数据直接传送到ADC0832的IN端作为输入的模拟信号。选用湿度传感器和AD转换&#xff0c;电路内部包含有湿度采集、AD转换、单片机译码显示等功能。单片机需要采集数据时&#xff0c;发出指令启动A/D转换器工作&#xff0c;ADC0832根…

Android 实现竖排文本(垂直方向显示)

Android 实现竖排文本-垂直方向显示 前言效果图代码实现方式一 Custom View1. 自定义视图 VerticalTextView2. 在xml布局文件中使用3. 设置文本内容 方式二 使用 TextView 的 rotation属性方式三 使用带有跨距文本的TextView1. 自定义视图 VerticalTextView2. 在xml布局文件中使…

【Windows系统】解决Intel 6代CPU安装win7系统过程中无法操作键盘鼠标的问题

问题 微软表示&#xff0c;从 2016 年 7 月 17 日起&#xff0c;新的 Intel、AMD 和Qualcomm 处理器将仅支持 Windows 10&#xff0c;不再支持 Windows 7 和 8.1。因此&#xff0c;Intel 6代以后的CPU因为没有USB驱动无法完成win7系统的安装。 下文核心思想是通过老毛桃PE系统…

云界洞见:移动云服务开启技术创新与问题解决的新篇章

一、什么是移动云 移动云以“央企保障、安全智慧、算网一体、属地服务”为品牌支撑&#xff0c;聚焦智能算力建设&#xff0c;打造一朵智能、智慧、安全可信可控的云&#xff0c;提供更优质的算力服务&#xff0c;引领云计算产业发展。 那么下面博主带领大家了解移动云的优势所…

关于c++的通过cin.get()维持黑框的思考

1.前言 由于本科没有学过c语言&#xff0c;研究生阶段接触c上手有点困难&#xff0c;今天遇到关于通过cin.get()来让黑框维持的原因。 2.思考 cin.get()维持黑框不消失的原因一言蔽之就是等待输入。等待键盘的输入内容并回车&#xff08;一般是回车&#xff09;后cin.get()才…

Plotly库利用滑块创建数据可视化

使用了Plotly库来创建一个数据可视化图表&#xff0c;并使用滑块来控制显示哪些数据 import plotly.graph_objects as go from plotly.subplots import make_subplots# 示例数据 x [1, 2, 3, 4, 5] y1 [1, 2, 3, 4, 5] y2 [5, 4, 3, 2, 1] y3 [2, 3, 1, 5, 4]# 创建子图 f…

Python vscode debug: Error while enumerating installed packages.解决

记录一个vscode python debug时出现的错误&#xff1a; 具体错误如下&#xff1a; E00000.030: Error while enumerating installed packages. Traceback (most recent call last): File “/root/.vscode-server/extensions/ms-python.debugpy-2024.0.0-linux-x64/bundled/lib…

Study--Oracle-03-Oracle19C--RAC集群部署

一、硬件信息及配套软件 1、硬件设置 RAC集群虚拟机&#xff1a;CPU:2C、内存&#xff1a;9G、操作系统&#xff1a;30G、数据库安装目录&#xff1a;100G 数据存储&#xff1a;50G &#xff08;10G*5&#xff09; 共享存储&#xff1a;2G &#xff08;1G*2&#xff09; 2…

基于 vuestic-ui 实战教程

1. 前言简介 Vuestic UI是一个基于开源Vue 3的UI框架。它是一个MIT许可的UI框架&#xff0c;提供了易于配置的现成前端组件&#xff0c;并加快了响应式和快速加载Web界面的开发。它最初于2021年5月由EpicMax发布&#xff0c;这就是今天的Vuestic UI。 官网地址请点击访问 体验…

【Linux安全】iptables防火墙(二)

目录 一.iptables规则的保存 1.保存规则 2.还原规则 3.保存为默认规则 二.SNAT的策略及应用 1.SNAT策略的典型应用环境 2.SNAT策略的原理 2.1.未进行SNAT转换后的情况 2.2.进行SNAT转换后的情况 3.SNAT策略的应用 3.1.前提条件 3.2.实现方法 三.DNAT策略及应用 1…

怎么查看项目中antd的版本

使用antd时&#xff0c;有在线参考资料&#xff0c;但是需要根据项目需要&#xff0c;选择对应版本的参考资料。 antd在线参考资料&#xff1a; 组件总览 - Ant Design 如何查看当前项目中antd的版本呢&#xff1f; 在项目的终端中输入&#xff1a; npm list antd antd官网选择…

庆余年第2季,带你走进怎样的世界?

《庆余年》第二季 演员阵容与幕后团队的新组合为我们带来了别样的观影体验 他的演技真的是在线&#xff0c;其实这剧本很难搞 该搞笑的时候要搞笑&#xff0c;但也不能一直在无厘头胡闹 所以题主说节奏拿捏的好我也很赞同 反观有其他几位演员控制力就差很多 特别是某一集…