0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何关联ELF输出文件并使用vivado对系统进行行为仿真

电子设计 来源:电子设计 作者:电子设计 2022-02-08 11:18 6871次阅读

作者:falwat

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/falwat/article/details/86171571

本文介绍如何在教程(三)基础上, 关联ELF输出文件并使用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 / 1ns

module 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 begin

reset = 1;

rs232_uart_rxd = 1;

sysclk_125_clk_n = 0;

#100;

reset = 0; // 复位完成

end

always #4 sysclk_125_clk_n = ~sysclk_125_clk_n; // 125M

endmodule

从”Source“窗口中,选中激励文件”sim_system.v“, 右键选择菜单”Set as Top“, 将激励文件设置为顶层。

o4YBAGAKDX2ANnkqAAB_BXrXtdQ397.png

点击左侧”Flow Navigator“工具窗口中的”Simulation“ | ”Run Simulation“, 点击”Run Behavioral Simulation“, 运行行为仿真。

o4YBAGAKDbuAWrxzAAAmKOa_AGY010.png

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

为了能够快速看出仿真效果,缩短仿真时间, 在SDK 中修改”xgpio_low_level_example.c“文件中的宏常量”LED_DELAY“ 改为1000 并保存, SDK在保存后会自动进行编译, 更新ELF文件。

#define LED_DELAY 1000

切回Vivado, 点击重新仿真(”Relaunch Simulation“)按钮。

设置仿真时间为500us, 点击运行指定时间(”Run for 500us“)按钮。最终的仿真时序图如下所示。

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Vivado
    +关注

    关注

    19

    文章

    820

    浏览量

    67478
收藏 人收藏

    相关推荐

    一文详解Vivado时序约束

    Vivado的时序约束是保存在xdc文件中,添加或创建设计的工程源文件后,需要创建xdc文件设置时序约束。时序约束文件可以直接创建或添加已存
    的头像 发表于 03-24 09:44 436次阅读
    一文详解<b class='flag-5'>Vivado</b>时序约束

    ELF 2学习板试用】1、快速入门、简单模块编译和运行

    ,即可对Linux内核进行一次编译。 ./build.sh kernel 在编译界面可以谈到输出信息中对上述添加的文件进行了编译,生成了
    发表于 02-17 21:24

    KiCad 9 探秘(七):使用 Jobset 批量输出文档(归档)

    “  Jobset 类似于 AD 中的 Output Job,可以根据自己的配置文件批量输出所需的文档。既减少了手动操作的工作量,也确保了输出文档的一致性。   ” Jobset 可以干什么
    的头像 发表于 02-12 12:01 270次阅读
    KiCad 9 探秘(七):使用 Jobset 批量<b class='flag-5'>输出文</b>档(归档)

    模拟行为仿真实现

    电子发烧友网站提供《模拟行为仿真实现.pdf》资料免费下载
    发表于 01-21 09:24 0次下载
    模拟<b class='flag-5'>行为</b><b class='flag-5'>仿真</b>实现

    Vivado Design Suite用户指南:逻辑仿真

    电子发烧友网站提供《Vivado Design Suite用户指南:逻辑仿真.pdf》资料免费下载
    发表于 01-15 15:25 0次下载
    <b class='flag-5'>Vivado</b> Design Suite用户指南:逻辑<b class='flag-5'>仿真</b>

    EE-110:ELF和DWARF文件格式快速入门

    电子发烧友网站提供《EE-110:ELF和DWARF文件格式快速入门.pdf》资料免费下载
    发表于 01-05 09:41 0次下载
    EE-110:<b class='flag-5'>ELF</b>和DWARF<b class='flag-5'>文件</b>格式快速入门

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-shell编程入门之提取字符设置rtc时间

    awk用法 awk是一款文本处理工具,通常在Unix和Linux操作系统中使用,用于以行为单位对文本进行处理和操作。它可以读取输入文本,对其进行处理,生成报表、统计信息等,并将结果
    发表于 12-12 17:26

    飞凌嵌入式ElfBoard ELF 1板卡-shell编程入门之提取字符设置rtc时间

    awk用法 awk是一款文本处理工具,通常在Unix和Linux操作系统中使用,用于以行为单位对文本进行处理和操作。它可以读取输入文本,对其进行处理,生成报表、统计信息等,并将结果
    发表于 12-11 16:49

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-Linux C接口编程入门之实战程序

    设置文件写的位置,write()函数将内容写入输出文件。循环读取和写入过程会一直进行,直到read()函数返回值等于或者小于0,表示已经读取完整个文件。然后,关闭输入
    发表于 10-18 09:33

    飞凌嵌入式ElfBoard ELF 1板卡-应用编程示例控制LED灯之sysfs文件系统

    上下拉即可。也可以通过Linux中的pinctrl子系统和GPIO子系统,通过配置引脚和系统提供的API进行控制。 而Linux系统通过sy
    发表于 10-18 09:31

    飞凌嵌入式ElfBoard ELF 1板卡-Linux C接口编程入门之实战程序

    设置文件写的位置,write()函数将内容写入输出文件。循环读取和写入过程会一直进行,直到read()函数返回值等于或者小于0,表示已经读取完整个文件。然后,关闭输入
    发表于 10-17 09:06

    飞凌嵌入式ElfBoard ELF 1板卡-开发环境搭建之windows和ubuntu系统互传文件

    linux-4.1.15-elf1.tar.bz2、文件系统(本节以rootfs.tar.bz2为例)、命令行测试程序elf1_cmd_wdt.c放到Windows主机的共享文件夹后。
    发表于 09-24 10:15

    使用PSpice仿真器对TI智能高侧开关中的热行为进行建模

    电子发烧友网站提供《使用PSpice仿真器对TI智能高侧开关中的热行为进行建模.pdf》资料免费下载
    发表于 09-24 09:26 0次下载
    使用PSpice<b class='flag-5'>仿真</b>器对TI智能高侧开关中的热<b class='flag-5'>行为</b><b class='flag-5'>进行</b>建模

    飞凌嵌入式ElfBoard ELF 1板卡-在ELF 1开发环境中使用QT Creator进行远程调试

    /elf/work/helloworld目录下看到编译生成的应用程序:(3)把helloworld二进制文件拷贝到ELF 1开发板的/home/root路径下进行测试:root@
    发表于 04-30 09:35

    Vivado 使用Simulink设计FIR滤波器

    的快速进位链,使实现变得容易。最后一拍数据直接使用的DSP的P端输出。 4. 模型仿真 为设计好的模型增加一个顶层,添加两个信号源作为仿真激励,使用两个频谱分析仪观测结果。 由滤波器幅值
    发表于 04-17 17:29