Matlab对Modelsim仿真生成的数据进行分析

Matlab对Modelsim仿真生成数据的处理也是通过文件读写实现的。即通过Verilog语句,将仿真过程中的某个信号写入文件,然后在Matlab中在把这个文件的数据读出来,就可以在Matlab中进行分析了。

下图也通过一个简单的例子,说明一下整个过程。

以下的Verilog语句实现将信号data_out的数据写入data_out.txt文件

integer w_file;

initial w_file = $fopen("data_out.txt");

always @(i)

begin

$fdisplay(w_file,"%h",data_out);

if(i == 8‘d255) //共写入256个数据

$stop;

end

下图是截取的data_out.txt的部分内容:

然后就可以编一小段Matlab的程序将data_out.txt中的数据读取进行分析了。下面一段Matlab的程序是将数据读取,并通过图形显示出数据的波形。

fid = fopen(‘data_out.txt‘,‘r‘);

for i = 1 : 256;

num(i) = fscanf(fid, ‘%x‘, 1); %这句话的意思是从fid所指的文件以16进制方式读出一个数据。

end

fclose(fid);

plot(num);

当利用fscanf函数时要注意两点,

第一:保证读取的数据格式和文件中保存的数据格式是相同的,例如这里文件中保存的格式是十六进制,所以读取的时候也应该以十六进制的形式读出。

第二:要保证文件中数据的个数和设定的读取的数目(这里是256)保持一致。例如,要将生成文件data_out.txt中多余的换行符去掉(一般最后会多出一行),否则Matlab会将空的行也当做一个数据,从而两个数目不一致,导致Matlab报错。

下图是Matlab将data_out.txt中的数据读出,并显示出的波形:

当然,有了Matlab这个强大的工具,也就可以很方便的看信号的频谱等信息了。

另外在说一点,就是关于通过Verilog将数据写入文件有多种方法,上面用的是$fdisplay这个系统函数,当然还有$fmonitor和$fwrite等几个命令,下面简单说一下这几个命令的不同。

时间: 2024-10-03 23:07:49

Matlab对Modelsim仿真生成的数据进行分析的相关文章

通过文件读写方式实现Matlab和Modelsim的联合仿真

虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处理的函数,而且图形显示功能也很强大,所以在做数字信号处理算法的FPGA验证的时候借助Matlab会大大加快算法验证的速度. 关于Matlab和Modelsim联合仿真,我从网上看到两种方法,一种是通过Link for Modelsim建立Matlab和Modelsim的联合仿真接口:另一种就是通过文

Quartus和Modelsim仿真ROM模块

新建一个工程 选择工程保存路径,为工程取一个名字 Page 2 of 5 直接点击next ? ? Page 4 of 5 直接点击next ? 下面为工程添加文件 ? 需要注意模块名和模块所在文件的文件名要一致,下面的代码保存在Wave.v这个文件中 module Wave( input i_clk, input i_rst_n, output reg[7:0] led ); ? parameter Delay500MS = 10; ? reg clk_led; reg[24:0] cnt;

ModelSim仿真入门 精讲

ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发方面的初学者,那么这个教程一定能够帮助你在仿真技术上越过新人的台阶:如果您是FPGA开发的老手,这篇文档也并非对您没有帮助,您可以把教程发给其他刚入门的同事,免去您亲自上阵指导的麻烦,把主要的精力放在更有价值的地方. 一.FPGA设计仿真验证简介 严格来讲,FPGA设计验证包括功能仿真.时序仿真和电

modelsim仿真rom.mif文件配置需要绝对路径

昨晚用modelsim仿真ROM,居然输出的数据全部都是000.这个在以前是没有过的.难道modelsim坏了?我试了一个以前的rom测试文件,居然显示正常.这就怪了.难道2个月没碰就这么生疏了? 然后开始找原因.最后看到一个帖子说,如果rom无输出,可能是IP核配置文件的,初始化文件需要使用绝对路径.然后我就把配置文件的初始化mif改成了绝对路径.居然就好了. 但是我查看了下以前的测试.也没有是绝对路径啊.唉~~~只能说modelsim还有待加强啊! modelsim仿真rom.mif文件配置

用ModelSim仿真SDRAM操作

之前写了两篇关于Modelsim仿真的blog,其中模块管脚的命名可能让人觉得有些奇怪,其实不然,之前的两篇内容都是为了仿真SDRAM操作做铺垫的. 由于SDRAM的仿真过程相对比较复杂,也比较繁琐.故可能需要不止一篇blog来完成. 在开始仿真之前,如果对SDRAM原理以及时序不是很了解的朋友,推荐看一下如下这篇文章: SDRAM-高手进阶,终极内存技术指南——完整进阶版 OK,下面正式开始仿真的过程. 通过看内存技术指南,我们大概可以总结出SDRAM的工作过程: 上电后进入200us的输入稳

matlab 与 modelsim 联调 cic抽取滤波器

注:本设计的参数为:D=2,R=5,N=3:时钟频率为50mhz,输入信号为有符号8位,根据公式bmax=bin+N*log(2,R*D):可以得到bmax=18: 1,cic抽取滤波器原理 网上资料一大堆,不说了.重点在于传递函数,以及各个部分的结构. 2,simulink仿真 模型图 频谱仪显示结果 3,cic滤波器verilog 代码 module cic_dec(clk,rst_n,datain,dataout);input clk,rst_n;input [7:0] datain;ou

ModelSim 仿真流程简要

1.    ModelSim简介 ModelSim分几种不同的版本:SE.PE和OEM,其中集成在 Actel(爱特公司).Altera (阿尔特拉).Xilinx(赛灵思)以及Lattice(莱迪思)等FPGA厂商设计工具中的均是其OEM版本,SE版本为最高级版本.ModelSim仿真分为功能仿真,门级仿真,时序仿真 ◆  功能仿真(前仿真,代码仿真) 主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致.可综合FPGA代码是用RTL级代码

modelsim仿真脚本化环境

刚开始学习modelsim仿真的时候,基本上都是按照图形界面的流程,建立工程-->添加设计代码-->编译-->打开仿真波形界面.但是,每次重复这些操作会感到很繁琐,而且,对于大的工程,动辄几十上百个设计文件,一个一个添加,费时费力又容易遗漏,所以想提高效率,脚本化环境是最佳的选择. 以下是自己在参考了网上一些资料和教程之后,整理的modelsim仿真脚本,供大家参考,也希望能有高人多多指教. 脚本的功能: 自动搜索源代码并生产filelist文件 自动编译并根据需要是否打开图形界面,并自

pytorch:EDSR 生成训练数据的方法

Pytorch:EDSR 生成训练数据的方法 引言 Winter is coming 正文 pytorch提供的DataLoader 是用来包装你的数据的工具. 所以你要将自己的 (numpy array 或其他) 数据形式装换成 Tensor, 然后再放进这个包装器中. 使用 DataLoader 有什么好处呢? 就是他们帮你有效地迭代数据, 举例: import torch import torch.utils.data as Data #utils是torch中的一个模块,Data是进行小