ZYNQ之FPGA学习----Vivado功能仿真

这篇具有很好参考价值的文章主要介绍了ZYNQ之FPGA学习----Vivado功能仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 Vivado功能仿真

阅读本文需先学习: FPGA学习----Vivado软件使用

典型的FPGA设计流程,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真
图片来自《领航者ZYNQ之FPGA开发指南》

Vivado 设计套件内部集成了仿真器 Vivado Simulator,能够在设计流程的不同阶段运行设计的功能仿真和时序仿真,结果可以在 Vivado IDE 集成的波形查看器中显示。Vivado 还支持与ModelSim、Verilog Compiler Simulator (VCS)、Questa Advanced Simulator等第三方仿真器的联合仿真

功能仿真需要的文件:

  • 设计 HDL 源代码,也被称为 UUT(Unit Under Test): 可以是 VHDL 语言或 Verilog 语言,既可以是设计的顶层模块,也可以是设计的下层子模块
  • 测试激励代码,也被称为 TestBench: 根据 UUT 顶层输入/输出接口的设计要求,来产生顶层输入接口的测试激励并监视顶层输出接口
  • 仿真模型/库: 根据设计内调用的器件供应商提供的模块而定,如:FIFO、ADD_SUB 等。在使用Vivado Simulator 时,仿真器所需的仿真模型/库是预编译好并集成在 Vivado 中的,因此不需要进行额外的预编译操作,直接加载 HDL 设计和 TestBench 即可执行仿真

1.1 创建TestBench

点击Sources窗口中的+,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

弹出如下窗口,选择Add or Create Simulation Sources,然后点击Next:

ZYNQ之FPGA学习----Vivado功能仿真

如图所示,点击Create File:

ZYNQ之FPGA学习----Vivado功能仿真

弹出的窗口中输入TestBench的文件名,然后点击OK,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

点击Finish,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

弹出的自动定义模块窗口中,点击OK,结束TestBench 源文件端口的定义,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

弹出一个模块定义的确认按钮,点击Yes,如下图所示:

ZYNQ之FPGA学习----Vivado功能仿真

在 Source 窗口中的Simulation Sources下面的sim_1中找到创建的TestBench文件,双击打开,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

删除文件中默认的代码,然后替换成 LED 灯闪烁的 TestBench(激励)代码,代码如下:

`timescale 1ns / 1ps //仿真时间单位为1ns,精度为1ps
  
module tb_led_twinkle (); //TestBench 的模块名定义

//输入 
reg           sys_clk; 
reg           sys_rst_n; 
  
//输出 
wire  [1:0]   led; 

//信号初始化
initial  begin 
    sys_clk = 1'b0; 
    sys_rst_n = 1'b0; 
    #200 
    sys_rst_n = 1'b1; 
end 
 
//生成时钟 
always #10 sys_clk = ~sys_clk; 

//例化待测设计 
led_twinkle  u_led_twinkle( 
    .sys_clk         (sys_clk ), 
    .sys_rst_n       (sys_rst_n ), 
    .led             (led) 
    ); 

endmodule

为了便于仿真,稍微改动一下led_twinkle.v文件的代码,将计时器 cnt 的最大计时值设为 10,如下图所示:

module led_twinkle(
    input sys_clk, //系统时钟
    input sys_rst_n, //系统复位,低电平有效
    output [1:0] led //LED灯
);
reg [25:0] cnt;

//对计数器的值进行判断,以输出 LED 的状态
//assign led = (cnt < 26'd2500_0000) ? 2'b01 : 2'b10 ;
assign led = (cnt < 26'd5) ? 2'b01 : 2'b10 ;//仅用于仿真
//计数器在 0~5000_000 之间进行计数
always @ ( posedge sys_clk  or  negedge sys_rst_n)  begin
    if(!sys_rst_n)
        cnt <= 26'd0;
    //else if(cnt < 26'd5000_0000)
    else if(cnt < 26'd10)//仅用于仿真
        cnt <= cnt + 1'b1;
    else
        cnt <= 26'd0;
end

ila_0 u_ila_0 (
	.clk(clk), // input wire clk

	.probe0(probe0), // input wire [0:0]  probe0  
	.probe1(probe1), // input wire [1:0]  probe1 
	.probe2(probe2) // input wire [25:0]  probe2
);

endmodule

在Flow Navigator窗口中点击Run Simulation,并选择Run Behavioral Simulation,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

进入仿真界面,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

  • Scope 窗口。 Scope(范围)是 HDL 设计的层次划分,可以看到设计层次结构。选择一个 Scope 层次结构中的作用域时,该作用域内的所有 HDL 对象,包括 reg、wire 等都会出现在Objects窗口中
  • Object 窗口。 Objects窗口会显示在Scopes窗口中选择的范围内的所有 HDL 仿真对象,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

  • 波形窗口。 用于显示所要观察信号的波形, 若要向波形窗口添加单个 HDL 对象或多个 HDL 对象,在Objects窗口中,右键单击一个或多个对象,然后从下拉菜单中选择Add to Wave Window选项

点击波形窗口中的保存按钮,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

弹出窗口,点击Yes,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

  • 仿真工具栏。 仿真工具栏包含运行各个仿真动作的命令按钮,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真
工具栏从左至右依次是:

Restart: 将仿真时间重置为零,波形窗口中原有的波形都会被清除。下次执行仿真时,会从 0时刻重新开始
Run all: 运行仿真
**Run For: ** 运行特定的一段时间。 紧随在后面的两个文本框用于设定仿真时长的数值大小和时间单位
Step: 按步运行仿真,每一步仿真一个 HDL 语句
Break: 暂停当前仿真
Relaunch: 重新编译仿真源并重新启动仿真

Settings 窗口中设置默认仿真时长的参数值,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

点击Restart,波形窗口中的当前仿真时刻点回归到0ns:

ZYNQ之FPGA学习----Vivado功能仿真

如图所示,开始仿真:

ZYNQ之FPGA学习----Vivado功能仿真

cnt 信号默认显示为 16 进制,为了方便观察,将其设置为 10 进制。对 cnt 信号右键,在弹出的菜单中选择Radix,然后选择Unsigned Decimal,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

修改后,波形如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

仿真结束后, 可以在 Flow Navigator 窗口中找到 SIMULA TION, 选择 Close Simulation ,如图所示:

ZYNQ之FPGA学习----Vivado功能仿真

弹出关闭仿真的确认窗口,点击OK即可:

ZYNQ之FPGA学习----Vivado功能仿真

致谢领航者ZYNQ开发板,开启FPGA学习之路!

希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距文章来源地址https://www.toymoban.com/news/detail-416836.html

到了这里,关于ZYNQ之FPGA学习----Vivado功能仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 关于FPGA(Vivado)后仿真相关问题的探讨

    关于FPGA(Vivado)后仿真相关问题的探讨

            FPGA后仿真时,相比于功能仿真增加了门延时和布线延时,相对于门级仿真增加了布线延时,因此后仿真相比于功能仿真具有不同的特点。         下面所示的代码在功能仿真时是正确的的,但在后仿真时,似乎是有问题的。功能很简单,当delay为高电平时,a与

    2024年02月08日
    浏览(8)
  • Vivado仿真数据导出至.txt文件——FPGA开发

    在FPGA开发过程中,仿真是验证设计的重要环节。在Vivado设计套件中,我们可以使用仿真工具来验证设计的功能和性能。本文将介绍如何将Vivado仿真数据导出至.txt文件,以方便后续分析和处理。 步骤如下: 打开Vivado设计套件并创建一个新的工程。 在工程中添加设计文件和约

    2024年02月05日
    浏览(311)
  • 【小技巧】vivado中功能仿真和时序仿真

    【小技巧】vivado中功能仿真和时序仿真

    欢迎订阅《FPGA/MATLAB/SIMULINK系列教程》 Simulink教程目录 目录 1.1功能仿真和时序仿真概述 1.2vivado中功能仿真和时序仿真操作方法        Vivado是Xilinx公司的一款集成开发环境(IDE),包括用于FPGA设计、仿真和验证的各种工具。在Vivado中进行功能仿真和时序仿真的操作方法如下

    2024年02月11日
    浏览(6)
  • Vivado仿真功能

    Vivado仿真功能

    仿真是FPGA开发中常用的功能,通过给定测试激励,对比输出结果,来验证设计的功能性。本文将介绍vivado中仿真功能的使用。 Vivado支持:Vivado Simulator、Questa、ModelSim、IES、VCS、Rivera-PRO和Active-HDl等等仿真工具。 vivado中的仿真可以分为三种: RTL级行为仿真:一种在综合和实现

    2024年02月11日
    浏览(9)
  • 【【萌新的FPGA学习之Vivado下的仿真入门-2】】

    【【萌新的FPGA学习之Vivado下的仿真入门-2】】

    我们上一章大概了解了 我们所需要进行各项操作的基本框架 对于内部实现其实一知半解 我们先从基本的出发 但从FPGA 了解一下 vivado下的仿真入门 正好帮我把自己的riscV 波形拉一下 行为级仿真 step1: 进入仿真界面:SIMULATION-单击 Run Simulation-单击 Run Behavioral Simulation。 Step2:设

    2024年02月08日
    浏览(25)
  • Vivado仿真中输出高阻态FPGA故障分析与解决

    Vivado仿真中输出高阻态FPGA故障分析与解决 在FPGA的设计中,Vivado仿真常常被用来验证设计的正确性。但是,有时候仿真结果会出现输出高阻态的情况,这个问题可能导致设计无法正常工作。本篇文章将详细分析这个问题出现的原因,并提供一些可能的解决方法。 当我们进行

    2024年02月09日
    浏览(125)
  • 0—基于FPGA(ZYNQ-Z2)的多功能小车

    0—基于FPGA(ZYNQ-Z2)的多功能小车

       在电子技术与创新的课设中我选择了这个题目,在设计的时候遇到了非常多的问题,但是网上的对应资料又非常少,因此在完成设计之后,我把设计方法与代码在这篇博客中分享出来,希望能对需要的人有所帮助。 目录 1.题目 2. 题目分析: 3. 器件使用 4. 工程文件  5. 传

    2024年02月07日
    浏览(6)
  • 基于FPGA的AES加密解密vivado仿真,verilog开发,包含testbench

    基于FPGA的AES加密解密vivado仿真,verilog开发,包含testbench

    目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整verilog          AES, 高级加密标准, 是采用区块加密的一种标准, 又称Rijndael加密法. 严格上来讲, AES和Rijndael又不是完全一样, AES的区块长度固定为128比特, 秘钥长度可以是128, 192或者256. Rijndael加密法可以支持更大范围的区

    2024年02月01日
    浏览(9)
  • 5—基于FPGA(ZYNQ-Z2)的多功能小车—软件设计—蓝牙串口

    5—基于FPGA(ZYNQ-Z2)的多功能小车—软件设计—蓝牙串口

    目录 1.蓝牙模块介绍 2.UART介绍 3.Verilog代码: 3.1Uart_RX模块: 3.2 分频模块: 3.3 Uart驱动模块 3.4 Uart控制模块 4. 总览   我使用的是JDY-31蓝牙模块,在连线中,要注意RX-TX,TX-RX。   即FPGA约束的TX对应蓝牙模块的RX,约束的RX对应蓝牙模块的TX。 蓝牙模块使用UART串口通信协议,具体

    2024年02月05日
    浏览(14)
  • 基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)

    基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)

    微信公众号上线,搜索公众号 小灰灰的FPGA ,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 源码工程链接 https://download.csdn.net/download/m0_50111463/88529260

    2024年02月10日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包