我是靠谱客的博主 娇气哈密瓜,最近开发中收集的这篇文章主要介绍vivado保存ila波形数据用MATLAB分析(补码与十进制转换)一、保存与读取ila数据二、数据进制转换_补码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

 

一、保存与读取ila数据

二、数据进制转换_补码 


一、保存与读取ila数据

0.把想要观测的信号线加入在线逻辑分析仪中。上板测试,trigger到想要的实时数据。

1.保存ila数据的TCL命令
write_hw_ila_data E:/yourpath/name_ila.ila [upload_hw_ila_data hw_ila_4]
注意:
目录中不能有space,中文
name_ila为保存的文件名,需要带路径,注意是右斜“/”.hw_ila_4为你的ILA的名字,[ ]中为对应的ILA核。

2.可以读取保存的ila数据,并在vivado上显示
read_hw_ila_data E:/yourpath/name_ila.ila
display_hw_ila_data

3.把保存好的.ila格式的文件导入matlab中,在matlab中用unzip语句解压,会出现一个csv格式的文件,这个文件可以用excel或者matlab打开,并能直观地看到所有sample,保存的数据都是二进制。
在matlab中:unzip('filename','file path');

4.可在excel中用自带的函数功能对数据进行处理,处理后可以再导入matlab中进行高级处理。
也可以在matlab中,用如下函数读取.csv文件的某一列数据,B列xx行至B列xxx行赋给name:
在matlab中:name = xlsread('waveform.csv','Bxx:Bxxx');

用MATLAB直接读取整个CSV中波形时,注意第一行内容是接口名称。

二、数据进制转换_补码

name = xlsread('waveform.csv','Bxx:Bxxx');得到的变量name的元素MATLAB认为是十进制,即十进制的01串,而实际上是二进制的01串,所以要使用下面的函数进行转换。(以下所说的都是整数)
    num2str() :十进制数字变为字符串
    bin2dec() :字符串类型的二进制(matlab认为是无符号二进制)变为>=0的十进制。

那么问题来了,当你的ila数据实际是二进制补码的时候怎么转换呢?

实际就是函数 bin2dec()在将N位二进制转换为十进制后进一步判断:

当补码表示的是>=0,即二进制最高位为0时(<(2^N-1)-1),转换正确。

当补码表示的是<0,即二进制最高位为1时(>=(2^N-1)),signed_name=name-2^N

因为:设绝对值=A,补码=A取反加1=B,A+B=2^N,-A=B-2^N

反过来,如果想要通过MATLAB生成二进制补码,有对应的dec2bin()、str2num(),此时dec2bin()函数在转换前需要判断十进制的数<0,signed_dec=2^N+dec

关于补码与原码的关系可以看我写的[2]补码的意义及Verilog中的小数计算问题
参考链接:

[1] vivado保存debug波形

[2]补码的意义及Verilog中的小数计算问题

最后

以上就是娇气哈密瓜为你收集整理的vivado保存ila波形数据用MATLAB分析(补码与十进制转换)一、保存与读取ila数据二、数据进制转换_补码的全部内容,希望文章能够帮你解决vivado保存ila波形数据用MATLAB分析(补码与十进制转换)一、保存与读取ila数据二、数据进制转换_补码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部