本文通过一个简单的例子,介绍Vivado 下的仿真过程。主要参考了miz702的教程,同时也参考了Xilinx的ug937,  xapp199.。

我的软件平台是Vivado 2015.4, 硬件平台是黑金的AC7010, Zynq 7000, 其实与平台关系不大。

本文分为四部分:工程的建立,测试代码,仿真图形输出,更复杂点的例子。

工程和源码下载链接: 链接:http://pan.baidu.com/s/1gflHSdH 密码:fpi5

1:工程的建立:

打开Vivado 软件,
并点击新建工程, New Project,并点击Next

出现如图界面, 输入工程名和路径,我这里是qim

点击Next ,出现选择工程类型的界面, 选择RTL Project, 并且选择 Do not specify sources at this time.

选择硬件平台, 我是这么选择的:

点击确定,出现Summary 窗口,点击Finish, 工程就建立完成了。

2:代码的导入或输入:
本例子有2个源文件:待测试的verilog 文件, 测试文件。

右键点击Design Source ,选择Add Source

这里添加的设计源文件,并点击Next

你是选择添加还是新建,你有源代码文件,你可以选择Add  Files, 但我这是新建

新建文件名和路径,添加也一样。你要选择verilog 文件类型

出现了这样一个对话框,目录和文件名。

出现这样一个对话框,ok 就可以,

再这样,Yes, 添加估计不是这样的,

好了,文件出现在这里了

基本同样的操作,在simulate source 这里添加测试文件testbench.v 文件,不再复杂图示了。

好的,添加或新建2个文件后,这样的效果。

如果你是新建,你就需要输入源代码,或者copy 这里,去本文开头介绍的地方下载源文件好了。我这源代码是从xapp.pdf 里copy 过来的。

测试代码也是输入,或copy,最好是下载

shift_reg.v 文件的内容:

`timescale 1ns / 1ps
module shift_reg (clock, reset, load, sel, data, shiftreg);
input clock;
input reset;
input load;
input [1:0] sel;
input [4:0] data;
output [4:0] shiftreg;
reg [4:0] shiftreg;
always @ (posedge clock)
begin
 if (reset)
   shiftreg = 0;
 else if (load)
   shiftreg = data;
 else
  case (sel)
   2'b00 : shiftreg = shiftreg;
   2'b01 : shiftreg = shiftreg << 1;
   2'b10 : shiftreg = shiftreg >> 1;
   default : shiftreg = shiftreg;
  endcase
end
endmodule

这是一个移位寄存器的例子,load=1 的时候 shiftreg=data, sel =0, 不动作, =1 左移, =2 ’b10 右移

testbench.v 代码如下:

`timescale 1ns / 1ps
 module testbench; // declare testbench name
  reg clock;
  reg load;
  reg reset;  // declaration of signals
  wire [4:0] shiftreg;
  reg [4:0] data;
  reg [1:0] sel;
   // instantiation of the shift_reg design below
  shift_reg dut(.clock (clock),
.load (load),
.reset (reset),
.shiftreg (shiftreg),
               .data (data),
.sel (sel));
   //this process block sets up the free running clock
  initial begin
  clock = 0;
  forever #50 clock = ~clock;
  end
  initial begin// this process block specifies the stimulus.
    reset = 1;
    data = 5'b00000;
    load = 0;
    sel = 2'b00;
   #200
    reset = 0;
    load = 1;
   #200
    data = 5'b00001;
   #100
    sel = 2'b01;
    load = 0;
   #200
    sel = 2'b10;
   #1000 $stop;
  end
 initial begin// this process block pipes the ASCII results to the
//terminal or text editor
  $timeformat(-9,1,"ns",12);
  $display("   Time Clk Rst Ld SftRg Data Sel");
  $monitor("%t %b %b %b %b %b %b", $realtime,
       clock, reset, load, shiftreg, data, sel);
 end
 endmodule

3: 仿真过程:

仿真设置:点击主菜单 Flow->Simulation Settings
或者界面左边Project Manager 下的Simulation Settings

出现如下设置界面,并设置好,注意箭头地方是否一致,或者设置一致。

设置好之后, Flow->Run Simulation 或者左边直接点击,选择 Run Behavioral Simulation, 就是最上的那个选择。

这个时候出现如下界面:

能出现如下界面基本就是成功了,有时候你的代码有错误,就会报错。我开始的时候就是这样,也不知道怎么检查错误。后来发现如果这样,可以点击综合,Run Synthesis, 可以指示错误代码信息,方便排除, 如果你直接用下载的代码,应该不会错误。

怎么说成功了呢?图都没显示,不急,单点选择Untitled ,就是上图红箭头的地方,就会出现图形了。

但是上图还是没有波形,点击下图Zoom Fit, 出现密集的波形,你再点其上面的放大,缩小,就能看到波形了。

波形还不是很好看,可以点右上角的全图显示,shiftreg也可以点开, 这样你可以看到移位效果了。

好了,通过这个例子有了仿真的感觉了吧。

4:更复杂一点的例子

上面例子很简单,操作也没什么复杂,很多功能还不能展示。下面我们来个复杂一点的。 分别添加下载的文件, Divider_Multiple.v  Divider_Multiple_TB.v , 添加后效果如下:

我们需要仿真设置, Simulation Settings, 在对话框里,有个选择Simulation top Module name 的地方,点击就出现以下选择对话框:

这次我们选择Divider_Multiple_TB

这是一个多次分频的程序,2,3,4,8分频,还有1hz 信号,波形比较多样一点。

我们要显示内部数据,点击uut, 红箭位置, 这是Objects 窗口多了很多变量,就是红框里的

选择下面3个变量div_cnt1, pos_cnt, neg_cnt。 怎么选多个呢? 用CTRL 还有shift, 选好后,鼠标右键Add to Wave Window, 这样就添加到波形图了,但还是没有波形显示。

点击 Run ->Run For , 或者工具条Run For , 你就看到有波形了

如果要复位再重放, 你就需要保存设置参数。波形图左边快捷工具条里选择 Save Waveform Configuration, 或者CTRL + S 或者File -> Save Waveform Configuration

就出现保存配置对话框。 下次就使用你刚才的设置。

还可以添加分界线,右键显示点击 New Divider,开始分界线在下面,你可以拖到任何地方,看起来比较方便一点,特别是信号多一点的时候。

还有分组功能, 控制进制显示, 模拟显示功能,颜色控制,需要慢慢体验或者学习。这些在ug937 里有介绍。

这里也就是带你入门vivado 仿真。

Vivado下的仿真入门相关推荐

  1. Vivado下的集成逻辑分析仪ILA 入门

    刚刚开始学习Zynq 7000的时候,看到别人问ILA的问题时,说是集成逻辑分析仪,我觉得这是一个好东西,我一定要学会它. 我是买了黑金的AX7010, 后来换成AC7010,开始学习Zynq 700 ...

  2. Vivado下集成逻辑分析仪ILA入门续

    在 Vivado下集成逻辑分析仪ILA入门 一文中带着读者走了一遍集成逻辑分析仪ILA的使用过程.当时通过Set up Debug 添加需要监控的点,间接添加了ILA, 本文介绍另外一种方法,直接添加 ...

  3. Vivado级联Modelsim仿真Re-launch问题

    Vivado级联Modelsim仿真出现修改设计代码后重新run do文件,波形没有随着代码修改而改变,这个问题博主之前没有注意到,因为把Vivado和Modelsim级联好后还没有试过仿真过,不过用 ...

  4. ModelSim之命令行仿真入门 (step 2)

    简单得modelsim命令行仿真 PART ONE ModelSim之命令行仿真入门 用do文件进行仿真真得很方便,比写testbench方便多了,采用do文件没有那么多信号定义,管理也比较方便. 1 ...

  5. python画仿真图-仿真入门:几行 Python 代码实现复杂社会动力学

    原标题:仿真入门:几行 Python 代码实现复杂社会动力学 编译:伯乐在线专栏作者 - Ree Ray 我们将对同一群体内两种文化特征(cultural traits)的相互竞争进行建模.这是典型的 ...

  6. Multisim14仿真入门笔记

    本文是B站北京邮电大学邓刚老师<Multisim仿真入门>的学习笔记,视频地址:[电路仿真]Multisim仿真入门(北京邮电大学 邓刚主讲)_哔哩哔哩_bilibili. 1.Multi ...

  7. ModelSim仿真入门之一:软件介绍

     http://www.cnblogs.com/xd-elegant/p/4093645.html 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤 ...

  8. Vivado 下 IP核 之ROM 读写

    目录 Vivado 下 IP核 之ROM 读写 1.实验简介 2.ROM IP 核简介 3.ROM IP 核配置 3.1.创建 ROM 初始化文件 3.2.单端口 ROM 的配置 加载数据文件,将 . ...

  9. Python离散事件仿真入门【Simpy】

    离散事件仿真 (DES) 往往是专门产品的领域,例如 SIMUL8 和 MatLab/Simulink .然而,当我在 Python 中执行过去使用 MatLab 的分析时,我很想测试 Python ...

  10. FPGA — Vivado下ILA(逻辑分析仪)详细使用方法

    使用软件: Vivado 开发板: EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA 使用程序:按键案例 ILA详细使用方法 一.ILA简介 二.ILA的使用方法 ...

最新文章

  1. 手机息屏后停止_手机息屏还能这样玩?华为这几个隐藏小功能快学起来
  2. CoordinatorLayout
  3. Get Started with Apex的playground练习
  4. 深入理解JVM—性能调优
  5. ETL作业调度软件TASKCTL自定义扩展作业类型插件安装
  6. FindBugs和JSR-305
  7. Linux 网络设备驱动开发(一) —— linux内核网络分层结构
  8. 解决pytorch训练的过程中内存一直增加的问题
  9. matlab分析具体问题论文,matlab论文12010245327马文建.doc
  10. YACC(BISON)使用指南
  11. 彻底解决--“未能加载文件或程序集“xxx.dll”或它的某一个依赖项”
  12. linux如何设置root权限,linux设置root权限的方法
  13. 二十年间的失败软件和系统
  14. Codevs 3322 时空跳跃者的困境(组合数 二项式定理)
  15. 进销存设计与分析_库存明细表(14)
  16. csapp实验摘选 I Data Lab ——小小菜下士的第一篇博客
  17. C# 终本案件、综合执行人、裁判文书爬虫
  18. DL之DSSD:DSSD算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  19. 如何在CTEX上对论文进行排版
  20. ORACLE 12C EM 端口5500关闭及如何修改默认端口

热门文章

  1. c语言求符合给定条件的整数集,中国大学MOOC-翁恺-C语言程序设计习题集(二)...
  2. 计算机学科融合信息技术,信息技术与学科教学融合课例解析
  3. 移动通信原理学习笔记之三——抗衰落和链路性能增强技术
  4. oracle考试试题及其答案,oracle考试试题及答案
  5. 网管软件的致命伤及其合理利用的小技巧(转)
  6. 【真题21套】计算机二级公共基础知识选择题真题【含解析】
  7. 现在还有人玩暗黑2吗?
  8. echarts实现水波球
  9. 张大哥笔记-有哪些可傻瓜式建站的开源网站程序
  10. 数据库课程设计(实训)