vivado中如何读取十进制小数_Vivado抓取信号

本文介绍了在Vivado中如何导出在线逻辑分析仪(ILA)的信号数据,并利用MATLAB进行解析和处理。通过保存ILA数据为.ila文件,然后在MATLAB中解压并读取csv文件,将16位有符号数(补码)转换为可处理的格式。解析后的数据可以用于后续的算法验证和分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:桂。

时间:2018-05-03  21:16:03

前言

FPGA调试需要抓取特定信号,一个直观的思路是:保存抓取的信号,事后分析/ 或者 导出实测数据,用作后续算法仿真验证。 本文简要记录数据的导出及读取。

一、信号导出

(1)把想要观测的信号线加入在线逻辑分析仪中。

(2)上板测试,trigger到想要的实时数据,用一句TCL语句保存为ila格式的文件,那句话是write_hw_ila_data data1 [upload_hw_ila_data hw_ila_1] 。其中data1为用户自己取的文件名,要带上路径,hw_ila_1为要保存的那组实时信号的名字。还有两句是读出保存好的数据的,read_hw_ila_data data1.ila,display_hw_ila_data。

(3)把保存好的.ila格式的文件导入matlab中,用unzip语句解压,会出现一个csv格式的文件,这个文件可以用excel打开,并能直观地看到所有sample。

(4)在excel中用自带的函数功能对数据进行处理,处理后可以再导入matlab中进行高级处理。

二、信号读取

解压的数据如图所示:

c4ed5a7a47e771d448cb5bd70b780568.png

鉴于此,只能先借用MATLAB强大的数据分析能力,先把数据解析出来。以waveform.csv文件为例进行解析,waveform.csv中的有效数据为第4列到第11列,有效数据是从左到右、从上至下排列的正弦波采样数据,16位有符号数(补码),采样点排列顺序为:

E2->F2->G2....L2->E3->F3->G3….

解析源码如下:

c

### Vivado 中仿真读取十进制数的方法 在 Vivado 的仿真环境中处理十进制数值主要涉及两个方面:一是如何定义和初始化这些十进制值;二是怎样确保仿真的过程中能够正确解析并显示这些数值。 对于第一个方面,当希望加载预设的十进制数据至 FPGA 设备中的 RAM 或 ROM 组件时,可以通过设置 `memory_initialization_radix` 参数来指定输入的数据格式为十进制[^2]。例如: ```verilog // Verilog 代码片段用于声明一个具有初始值设定的 Block RAM module rom ( input wire clk, output reg [7:0] dout ); reg [9:0] addr; initial begin $readmemh("data_file.mif", ram); // 假定 data_file.mif 文件内含以十六进制编码的数据 end ... endmodule ``` 然而,在实际操作中如果想要直接使用十进制形式的数据,则应修改 `.mif` 文件或其他类似的内存映射文件的内容,并确保其头部指定了正确的基数(如 `memory_initialization_radix=10;`),以便于工具识别这是十进制而非默认的十六进制表示法。 至于第二个方面——使仿真结果显示为易于理解的形式,通常情况下波形查看器会按照项目配置自动决定数据显示的方式。但是为了强制让某些信号始终呈现为十进制格式,可以在启动仿真之前调整相应选项或者利用命令行指令改变目标变量的表现方式。比如,在 ModelSim 这样的第三方仿真平台里可以这样做: ```tcl # Tcl 脚本示例,用于更改当前窗口内的所有整型信号十进制视图 foreach sig [get_waveform_signals -filter {type==integer}] { set_property radix decimal $sig } ``` 另外值得注意的是,尽管上述方法可以帮助更方便地理解和验证设计行为,但在底层实现层面所有的运算还是基于二进制逻辑完成的。因此即使看到的是十进制输出,也不影响最终硬件的行为特性。 最后关于 CSV 数据导出的问题,虽然原始采集到的信息可能是二进制位宽表达,但这并不妨碍后期转换成其他任何形式供进一步分析使用。只要掌握了合适的脚本编写技巧,就能轻松地把这类数据转化为更加通用易懂的十进制或者其他所需格式[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值