FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-技术文章/快讯-技术分享-正文

Xilinx Vivado 仿真波形分析实践指南

二牛学FPGA二牛学FPGA
技术分享
1小时前
0
0
0

Quick Start:快速启动行为级仿真

打开 Vivado,创建一个新工程或打开现有工程。依次添加设计源文件(RTL)和仿真激励文件(Testbench)。在 Flow Navigator 面板中点击 “Run Simulation”“Run Behavioral Simulation”,即可启动行为级仿真。仿真启动后,波形窗口默认显示顶层模块的所有信号。你可以右键点击波形窗口,选择 “Add Wave”,或者直接拖拽信号到波形区域,以添加关注的信号。点击 “Run All” 运行仿真至结束,或点击 “Run For” 运行指定时间。使用缩放工具(放大镜图标)查看波形细节。点击 “Stop” 停止仿真,观察波形变化是否符合预期。

前置条件与环境

项目/推荐值说明替代方案
器件/板卡Xilinx 7系列或更高(如 Artix-7、Kintex-7)支持 Vivado 的任意 FPGA
EDA 版本Vivado 2020.1 及以上Vivado 2018.3(功能基本一致)
仿真器Vivado Simulator(内置)ModelSim、QuestaSim(需配置)
时钟/复位Testbench 中生成时钟(周期 10ns)和复位信号使用 IP 核时钟源
接口依赖无特殊接口要求标准 JTAG 调试
约束文件仿真阶段不需要 XDC 约束综合后仿真需 XDC

目标与验收标准

  • 功能点:成功启动行为级仿真,观察关键信号(如数据总线、控制信号)的波形。
  • 性能指标:仿真运行时间覆盖至少 1000 个时钟周期。
  • 资源:无特殊资源要求,仿真仅依赖 CPU 和内存。
  • 验收方式:波形中信号跳变符合设计逻辑,无 X 态或高阻态异常。

实施步骤

1. 工程结构

创建 Vivado 工程,添加 RTL 源文件(如 counter.v)和 Testbench(如 tb_counter.v)。确保 Testbench 中实例化设计模块,并生成时钟和复位。常见坑:Testbench 中未正确实例化模块,导致仿真无信号变化。检查模块名称和端口映射。

2. 关键模块:计数器示例

以计数器为例,RTL 代码如下:

module counter (    input clk,    input rst_n,    output reg [3:0] count);always @(posedge clk or negedge rst_n) begin    if (!rst_n)        count <= 4'b0000;    else        count <= count + 1'b1;endendmodule

3. 编写 Testbench

编写对应的 Testbench,生成时钟和复位,并实例化计数器模块:

module tb_counter;reg clk;reg rst_n;wire [3:0] count;// 时钟生成:周期 10nsalways #5 clk = ~clk;// 初始化initial begin    clk = 0;    rst_n = 0;    #20 rst_n = 1;    #1000 $finish;end// 实例化设计模块counter u_counter (    .clk(clk),    .rst_n(rst_n),    .count(count));endmodule

4. 启动仿真并添加信号

在 Flow Navigator 中点击 “Run Simulation”“Run Behavioral Simulation”。仿真启动后,波形窗口默认显示顶层模块的信号。右键点击波形窗口,选择 “Add Wave”,或直接拖拽 countclkrst_n 等信号到波形区域。

5. 运行仿真并观察波形

点击 “Run All” 运行仿真至结束,或点击 “Run For” 并输入时间(如 1000 ns)。使用缩放工具(放大镜图标)查看波形细节。点击 “Stop” 停止仿真,观察波形变化是否符合预期。

6. 验证结果

检查 count 信号是否从 0 开始递增,复位后归零。确认无 X 态或高阻态异常。若波形异常,检查 Testbench 中的实例化是否正确,时钟和复位时序是否合理。

排障指南

  • 仿真无波形:检查 Testbench 中是否实例化设计模块,时钟是否生成。
  • 信号全为 X:检查复位信号是否有效,模块端口映射是否正确。
  • 仿真时间过长:使用 “Run For” 控制仿真时间,或设置断点。

扩展:高级波形分析技巧

  • 使用光标测量:在波形窗口中点击并拖动光标,测量信号跳变的时间差。
  • 添加总线信号:右键点击总线信号,选择 “Radix” 切换显示格式(二进制、十六进制等)。
  • 保存波形配置:点击 “File”“Save Waveform Configuration”,方便后续复用。

参考

  • Vivado Design Suite User Guide: Simulation (UG900)
  • Xilinx 官方论坛:仿真相关常见问题

附录:完整 Testbench 代码

module tb_counter;reg clk;reg rst_n;wire [3:0] count;always #5 clk = ~clk;initial begin    clk = 0;    rst_n = 0;    #20 rst_n = 1;    #1000 $finish;endcounter u_counter (    .clk(clk),    .rst_n(rst_n),    .count(count));endmodule
标签:
本文原创,作者:二牛学FPGA,其版权均为FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训所有。
如需转载,请注明出处:https://z.shaonianxue.cn/39225.html
二牛学FPGA

二牛学FPGA

初级工程师
这家伙真懒,几个字都不愿写!
79618.18W3.96W3.67W
分享:
成电国芯FPGA赛事课即将上线
FPGA时序约束实战指南:从基础到复杂时钟域
FPGA时序约束实战指南:从基础到复杂时钟域上一篇
FPGA图像处理:基于Verilog的Sobel边缘检测实现下一篇
FPGA图像处理:基于Verilog的Sobel边缘检测实现
相关文章
总数:822
FPGA实现DDR5控制器:高速接口设计与信号完整性考量

FPGA实现DDR5控制器:高速接口设计与信号完整性考量

本文档旨在为FPGA工程师提供一套完整的、可实施的DDR5控制器实现方案…
技术分享
14天前
0
0
54
0
FPGA中同步FIFO与异步FIFO的实现差异与资源对比指南

FPGA中同步FIFO与异步FIFO的实现差异与资源对比指南

QuickStart:快速上手本指南面向FPGA设计工程师,旨在帮助您…
技术分享
4天前
0
0
14
0
Verilog 组合逻辑与时序逻辑划分实践指南

Verilog 组合逻辑与时序逻辑划分实践指南

QuickStart打开Vivado(或Quartus),创建新工…
技术分享
3天前
0
0
13
0
评论表单游客 您好,欢迎参与讨论。
加载中…
评论列表
总数:0
FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
没有相关内容