当前位置: 首页 > news >正文

VIVADO导出仿真数据到MATLAB中进行分析

VIVADO导出仿真数据到MATLAB中进行分析

目录

前言

一、导出仿真数据需要编写的RTL代码

二、MATLAB读入txt文件中的数据

三、需要注意的点

总结


前言

        在使用 Xilinx Vivado 进行 FPGA 开发时,如何将 RTL 仿真生成的数据导出,进行进一步分析与可视化,是很多开发者常遇到的问题。Vivado自带仿真工具不支持直接导出仿真数据,但是我们可以通过编写一段简单的RTL代码即可将需要的仿真数据保存到txt文件中,后续MATLAB有自带的的textscan函数可以将txt中的数据读出来,本文将介绍这一过程。


提示:以下是本篇文章正文内容,禁止转载,引用请附上链接!

一、导出仿真数据需要编写的RTL代码

        示例:

integer fd;

initial begin

    fd = $fopen("output.txt", "w");

end

always @(posedge clk)

begin

    if(wr_en)

        begin

            $fwrite(fd, "%h, %h, %h\n", wr_addr_row, wr_addr_col, wr_data);

        end

end

        这段代码可以在仿真时加到design RTL代码中,综合实现的时候要去掉,代码本身是实现不了的。这段代码的含义,首先打开一个名为 output.txt 的可写文件,如果不存在,会自动创建。然后在每个时钟上升沿,当wr_en为高时,会以16进制的格式往txt文本中写入wr_addr_row, wr_addr_col, wr_data这三个数据。如果想以二进制写入,将%h改为%b即可。

        编写完代码以后,重新开始仿真,运行仿真直到仿真完要写入的所有数据停止仿真,然后关闭仿真,就能在工程目录下找到一个名为output的文本文件,如下图所示:

打开该文本文件就能看到如图所示的仿真数据了。

二、MATLAB读入txt文件中的数据

        在MATLAB中使用下面一段代码即可读出txt文本中的数据:

% 读取文件

fid = fopen('output.txt', 'r');

data = textscan(fid, '%s %s %s', 'Delimiter', ',', 'HeaderLines', 0);

fclose(fid);

% 提取三列数据

c1 = strtrim(data{1}); % 移除可能的空格

c2 = strtrim(data{2});

c3 = strtrim(data{3});

% 转换时间戳(十六进制 -> 十进制整数)

row = hex2dec(c1);

col = hex2dec(c2);

data_hex=string(c3);

三、需要注意的点

        1、这段代码仿真时可以加到设计文件中,综合实现时要删除;

        2、添加这段代码后需要重新运行仿真,仿真结束后 close simulation 才能在前文所示目录下找到包含仿真数据的txt文本文件;

        3、仿真停止,打印数据就停止,所以请确保仿真时间长度足以覆盖自己打印所需要的数据。


总结

        以上就是今天要讲的内容,本文详细介绍了如何将VIVADO仿真数据导出至txt文本文件中,然后导入到MATLAB中进行分析。

http://www.lqws.cn/news/509923.html

相关文章:

  • python基础(字符串-复习)
  • 关于素数、唯一分解等内容的详细讲解(从属于GESP五级)
  • vscode + Jlink 一键调试stm32 单片机程序(windows系统版)
  • HarmonyOS Next的HiLog日志系统完全指南:从入门到精通
  • I2C设备树参数详解
  • 猿人学js逆向比赛第一届第十三题
  • 多线程的同步
  • docker部署oracle数据库
  • Leetcode+JAVA+回溯1
  • i.MX平台下 Linux + FreeRTOS 协同启动与通讯全解(含Yocto实战与核心机制分析)
  • ​CentOS 7 单用户模式重置 root 密码完整指南
  • 无人机神经网络模块运行与技术难点
  • Dify与代理商奇墨科技为企业定制AI应用开发专属方案,适配多样化业务需求
  • vue-25( Composition API 与现有的 Options API 组件集成)
  • 采用ArcGIS10.8.2 进行插值图绘制
  • DEYOLO 全面复现,将双增强跨模态目标检测网络 DEYOLO 融合到 YOLOFuse 框架
  • C++字符大小
  • P0/P1级重大故障根因分析:技术挑战与无指责复盘文化
  • Leaking GAN
  • 医学数据分析实战:冠心病发病因素可视化
  • git学习资源
  • 轨迹降噪API及算法
  • 应用层协议 HTTP
  • 洛谷P1092 [NOIP 2004 提高组] 虫食算
  • openai-agents实现out_guardrails
  • DataSophon 1.2.1集成Flink 1.20并增加JMX 监控
  • [ruby on rails] ActiveJob中 discard_on,retry_on和 rescue_from的应用
  • 用福昕阅读器打开pdf文件,整个程序窗口自动缩小的问题
  • 14.OCR字符识别
  • 10-Python模块详解