博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
modelsim数据导出用于matlab绘图
阅读量:5267 次
发布时间:2019-06-14

本文共 1194 字,大约阅读时间需要 3 分钟。

  最近在做基于FPGA的仿核脉冲信号发生器,在写完部分代码之后,需要验证是否符合所预期的效果,即相邻脉冲的时间间隔符合指数分布,计数率即一定时间内的脉冲数是否符合泊松分布,于是希望用matlab进行绘图,看起来更直观。那么modelsim中的波形数据怎么导出呢?这里用的方法是将数据导出到txt文件中,再在matlab中导入。

  要将波形导入txt文件,需要用到$fopen()和$fdisplay();先贴上代码,后面再解释。

integer i;      integer w_file;      initial begin        Rst_n = 0;        i = 0;        #(`clk_period*20+1);        Rst_n = 1;        /*导出space_cnt的波形数据*/        w_file = $fopen("space_cnt.txt");        for(i=0;i<=2047;i=i+1)begin            wait(pulse);            #50;            $fdisplay(w_file,"%d",space_cnt);            if(i == 2047)                $fclose(w_file);        end

         /* 导出Opulse_cnt的波形数据

            w_file = $fopen("Opulse_cnt.txt");
            for(i=0;i<=8191;i=i+1)begin
            #10_000;
            $fdisplay(w_file,"%d",Opulse_cnt);
            if(i == 8191)
            $fclose(w_file);
            end*/

#(`clk_period*2000);        $stop;    end

  这里的space_cnt.txt就是数据导入的文件,这个文件不用自己去新建,testbench会帮你生成好。space_cnt是数据信号线,即要导出的数据。

做脉冲间隔计数,关注的就是两个脉冲之间有多少个时钟周期,所以这里每两个脉冲检测完我只输出一个最终数据,而将计数器的计数过程选择不关心,即x。从波形可以看出,space_cnt的输出时刻比pulse的上升沿滞后了50ns,所以代码中在等待到pulse的上升沿之后,延时50ns再去将数据写入txt。注意:这里写入2048个数据,还是会有个别的数据为x,这些x在matlab读取时是读不出来的而且会阻断它后面的数据读取。所以在matlab读取之前需要将txt中的x全部替换成空。

matlab代码及结果如下:

 

转载于:https://www.cnblogs.com/kl2blog/p/6623279.html

你可能感兴趣的文章
mysql新建用户,用户授权,删除用户,修改密码
查看>>
FancyCoverFlow
查看>>
JS博客
查看>>
如何设置映射网络驱动器的具体步骤和方法
查看>>
ASP.NET WebApi 基于OAuth2.0实现Token签名认证
查看>>
283. Move Zeroes把零放在最后面
查看>>
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
查看>>
Python 数据类型
查看>>
centos下同时启动多个tomcat
查看>>
slab分配器
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>
【SVM】libsvm-python
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
Leetcode Balanced Binary Tree
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>