当前位置: 首页 > 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中进行分析。

相关文章:

  • 做网站添加mp3seo搜索引擎优化方法
  • 上海网站建设 乐云seo企业培训考试系统app
  • wordpress升级后出错aso关键词优化工具
  • it运维有前途吗合肥seo报价
  • 无锡宏腾网站建设国家免费培训学校
  • 注册好了域名怎么开始做网站谷歌广告优化师
  • Spring Boot 中整合 Redis
  • 防御OSS Bucket泄露:RAM权限策略+日志审计+敏感数据扫描三重防护
  • 10.多进程服务器端
  • 复制 生成二维码
  • 麒麟V10操作系统离线安装Docker、Docker compose和1Panel
  • 鸿蒙 Stack 组件深度解析:层叠布局的核心应用与实战技巧
  • 6.24_JAVA_微服务_Elasticsearch搜索
  • 用Rust写平衡三进制加法器
  • 华为云Flexus+DeepSeek征文|基于华为云Flexus Dify复用优秀 AI Agent 应用教程
  • TMS汽车热管理系统HILRCP解决方案
  • FastMCP+python简单测试
  • Jenkins+Jmeter+Ant接口持续集成
  • 信创建设,如何统一管理异构服务器的认证、密码、权限管理等?
  • 配置自己的NTP 服务器做时间同步
  • 从零学习linux(2)——管理
  • 缺少 XML 验证与资源注入修复
  • Revisiting Image Deblurring with an Efficient ConvNet论文阅读
  • Joblib库多进程/线程使用(一):使用generator参数实现边响应边使用
  • leetcode61.旋转链表
  • 物流业最后的“人工堡垒”即将失守?机器人正式接管卡车装卸工作