本文介绍如何在教程(三)基础上, 关联ELF输出文件并使用vivado对系统进行行为仿真.  点击vivado 开发教程 汇总, 查看教程的其他内容.

关联ELF 文件

  • 在vivado 开发教程(三) 在SDK中创建应用工程 中, 新建的工程经构建最终会生成ELF 输出文件. ELF 文件是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件(参考:百度百科). 可以在教程(三)中新建的"test"工程和导入的例程下找到.

  • 切回Vivado, 在块设计文件"system.bd"上右键,选择菜单"Associate ELF Files..."关联ELF文件.

  • 在弹出的对话框中,点击"Simulation Sources | sim_1 | system_i | microblaze_0 "树右侧的"..."按钮, 弹出选择文件对话框.

  • 点击"Add Files..." 按钮,添加ELF文件.

  • 切换目录至"D:/Projects/test/test.sdk/test_bsp_xgpio_low_level_example_1/Debug",选中"test_bsp_xgpio_low_level_example_1.elf", 添加至列表中, 选中新加入的ELF文件并点击"OK"完成.

  • 在工程管理视图 | "Sources"窗口 | "Simulation Sources"文件集 | sim_1 | ELF 下能够看到刚刚关联上去的ELF文件.

新建激励文件

  • 点击"Sources"窗口顶部的"+"按钮, 打开添加源文件对话框. 选中"Add or create simulation sources", 点击"Next"继续.

  • 点击"Create File"按钮, 在创建源文件对话框中, 输入文件名. 点击"OK", 点击"Finish".

  • 在弹出的"Define Module"对话框中, 点击"OK"即可. 激励文件不需要有定义输入输出端口.
  • 双击打开"sim_system.v"文件, 复制"system_wrapper.v"文件中的如下内容到"sim_system.v"的模块中.
  wire [7:0]led_8bits_tri_o;wire reset;wire rs232_uart_rxd;wire rs232_uart_txd;wire sysclk_125_clk_n;wire sysclk_125_clk_p;system system_i(.led_8bits_tri_o(led_8bits_tri_o),.reset(reset),.rs232_uart_rxd(rs232_uart_rxd),.rs232_uart_txd(rs232_uart_txd),.sysclk_125_clk_n(sysclk_125_clk_n),.sysclk_125_clk_p(sysclk_125_clk_p));
  • 修改sim_system.v"文件中, system_i的输入信号为"reg"类型, 编写"initial"块对输入信号进行初始化, 为时钟信号编写激励, 将"timescale" 设置为"1ns / 1ns". 最终生成的代码如下所示:
`timescale 1ns / 1nsmodule sim_system;wire [7:0]led_8bits_tri_o;reg  reset;reg  rs232_uart_rxd;wire rs232_uart_txd;reg  sysclk_125_clk_n;wire sysclk_125_clk_p = ~sysclk_125_clk_n;system system_i(.led_8bits_tri_o(led_8bits_tri_o),.reset(reset),.rs232_uart_rxd(rs232_uart_rxd),.rs232_uart_txd(rs232_uart_txd),.sysclk_125_clk_n(sysclk_125_clk_n),.sysclk_125_clk_p(sysclk_125_clk_p));initial beginreset = 1;rs232_uart_rxd = 1;sysclk_125_clk_n = 0;#100;reset = 0;  // 复位完成endalways #4 sysclk_125_clk_n = ~sysclk_125_clk_n; // 125Mendmodule
  • 从"Source"窗口中,选中激励文件"sim_system.v", 右键选择菜单"Set as Top", 将激励文件设置为顶层.

  • 点击左侧"Flow Navigator"工具窗口中的"Simulation" | "Run Simulation", 点击"Run Behavioral Simulation", 运行行为仿真.

  • 编译成功后会自动打开仿真("SIMULATION")视图, 主工具栏会增加如下几个工具图标:

  • 为了能够快速看出仿真效果,缩短仿真时间, 在SDK 中修改"xgpio_low_level_example.c"文件中的宏常量"LED_DELAY" 改为1000 并保存, SDK在保存后会自动进行编译, 更新ELF文件.
#define LED_DELAY     1000
  • 切回Vivado, 点击重新仿真("Relaunch Simulation")按钮.
  • 设置仿真时间为500us, 点击运行指定时间("Run for 500us")按钮.最终的仿真时序图如下所示.

vivado 开发教程(四) 行为仿真相关推荐

  1. 开发教程(四) MIP组件平台使用说明

    组件审核平台用于上传 MIP 组件.经过自动校验之后,提交审核,通过审核的组件会定时推送到线上,供网站使用. 平台地址:https://www.mipengine.org/platform/ 1. 使 ...

  2. ROS1结合自动驾驶数据集Kitti开发教程(四)画出自己车子模型以及照相机视野

    注意: 再学习本系列教程时,应该已经安装过ROS了并且需要有一些ROS的基本知识 ubuntu版本:20.04 ros版本:noetic 课程回顾 ROS1结合自动驾驶数据集Kitti开发教程(一)K ...

  3. 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo

     更多微信技术交流,请加QQ群:289709451.287090836     前几章中我讲解了微信开发平台提供第三方平台的好处,和使用流程,如果你看了我的文章相信你对开放平台有了初步的了解,但是在实 ...

  4. IntelliJ IDEA 12详细开发教程(四) 搭建Android应用开发环境与Android项目创建

    今天我要给大家讲的是使用Intellij Idea开发Android应用开发.自我感觉使用Idea来进行Android开发要比在Eclipse下开发简单很多. (一)打开网站:http://devel ...

  5. 安卓USB开发教程 四 安卓 AOA

    Android 开放性配件协议(AOA) Android 开放性配件协议(AOA)支持允许外部 USB 硬件(Android USB 配件)与工作在配件模式下的 Android 设备进行交互.当处于配 ...

  6. Kinect开发教程四:用Kinect控制鼠标玩水果忍者PC版

    最近Kinect连接Xbox玩水果忍者的视频非常红火,可惜小斤只有本本和Kinect,没法玩Xbox上的体感游戏.幸运的是,寻寻觅觅后,小斤发现水果忍者有PC版本,既然上一个教程我们已经可以让Kine ...

  7. Android 日历开发教程[四]

    这节开始制作 Activity 视图. 视图的设计,在原理上可以借鉴 HTML 设计,目前大家的共识是内容与样式分离,也就是内容在 HTML 文件中定义,样式在 CSS 文件中对应. 同样,Andro ...

  8. Dapp开发教程四 Asch Dapp Dice Game

    这个dice game与上一个mini dao相比,代码规模大了许多,功能也复杂了很多,创建了三个合约类型,彼此之间有依赖关系,合约的执行还要依赖历史交易数据. 但是我觉得在原理上与上一个项目相比,并 ...

  9. ODOO13 开发教程四 模型中的字段

    在这篇文章中,我将整理出odoo中不同类型的字段及其它们的使用.在开始之前,我必须再给大家讲讲蛋挞王子的故事. 在上节中,小程序猿为蛋挞王子做了一个图书管理的模块,并进行了安装测试.但很明显,模块太简 ...

  10. 微信公众号开发教程(四)自定义菜单

    作者:陈惠,叩丁狼教育高级讲师.原创文章,转载请注明出处. 本篇文章,我们来做一个最常见的,也是用户最喜欢使用的功能--自定义菜单. 因为菜单只需要点一下就可以获取需要的信息,无需用户手动输入关键字, ...

最新文章

  1. Python 自带IDLE中调试程序
  2. mesh和wifi中继的区别_什么是MESH WIFI?通俗易懂告诉你为什么需要它
  3. 基于深度学习的图像语义分割技术概述之4常用方法
  4. 看完让你理解WebSocket原理
  5. 算法(19)-leetcode-剑指offer3
  6. python logging模块学习
  7. mysql中如何迁移数据文件,迁移mysql数据文件存放位置
  8. read the function in so lib on ubuntu
  9. 诺基亚n9支不支持java_诺基亚N9支持720p播放吗
  10. DSP入门必看(非常好的DSP扫盲文章)
  11. xlsxwriter去掉网格线_python之xlsxwriter模块(可操作xls/xlsx格式文件)
  12. 编写个人所得税计算程序
  13. 智齿科技B+轮获投1.5亿,为智能云客服领域最大单笔融资
  14. python arp断网攻击_arp断网攻击,手把手教你arp断网攻击怎么解决
  15. 小熊派使SPI驱动TFT-LCD(ST7789)显示试验
  16. 【TUG 话题探讨 005】TiDB 生态工具(DM、TiCDC等)使用场景及常见问题
  17. 第一章 C语言与内存
  18. 信号与系统难点之(双边、单边)Z变换的时移性质
  19. 全国天气预报信息 API 接口
  20. 学习笔记(二):使用 TensorFlow 的起始步骤(First Steps with TensorFlow)

热门文章

  1. 写给非网工的CCNA教程(5)应用最为广泛的网络--局域网LAN
  2. C#旅程——ListView控件使用
  3. Save as PDF/X-3/4/5 error with pdflib
  4. 【游戏引擎Easy2D】三分钟学会游戏的控制移动,键盘识别详解
  5. 黑盒测试方法之功能图法
  6. 分享五款可以大幅度提升办公效率的实用软件
  7. ajaxSubmit异步提交
  8. matlab曲线拟合预判,matlab里曲线方程的拟合度,通过rms值来判断
  9. 快手滑块验证码分析 2022/03/17
  10. 【Linux】linux查看GPU信息