对于前仿真,如何保证设计的结果是正确的呢? 1:首先利用MATLAB产生测试向量。matlab必须产生定点的二进制
补码字符串,这样才可以将数据写入到外面的
文件中供modelsim读取。所以这里要利用matlab的定点设计函数fix,以及几个转换函数,比如说,dec2num等等。matlab中好像没有将有
符号数转化基昌为补码的,在这里我们可以利用有符岁丛号数补码的计算方法来自行编写一个int2sign.m 2:接下来就是将产生的定点测试向量(N位二进制补码,N为设计的滤波器的输入位宽),利用matlab的文件读取功能存放在外部.txt文件中。modelsim中读取该文件的数据,存放在存储单元中,供仿真测试。 3:下面就会得到modelsim中的仿真结果。前面提到过,滤波器的乎锋樱设计输出是M位有符号数,所以从modelsim输出端口中得到的是M位二进制0、1,modelsim中对内部变量的读写只单纯的读写二进制或者代表的无符号实数。所以现在再次利用matlab,将从modelsim中读出的无符号数转换为其实质的有符号数,转换方法还是遵循前面一篇中第2点提到的那个补码产生原理。 4:接下来,我们就可以对比分析了。还要注意一点就是,modelsim或者ISE中式没有小数概念的。所以之前设计时对输入数据我们是将其扩大了2^f倍,其中f是小数位数。对系数也是进行同样的放大。1,将modelsim仿真结果写入.txt文件,integer fidinitialfid = $fopen("dataout.txt","岁基w")reg [6:0] cntalways@(posedge clk or negedge rst)if(!rst) cnt <= 7'b0else if(cnt==7'd100) $fclose(fid)else begin cnt <= cnt + 1'b1$fwrite(fid,"%b",out)end 其中,out为所设计模块处橘让理后的输出,以二进制的形式存储到txt文件中。2.在matlab中读取数圆雀局据,进行分析。if(data_bin(i1) == 49)||(data_bin(i1) == 48)breakendend这么多语句,先计算长度文件的长度,再将数据读出,主要是因为数据文件中,开头那一部分可能都是x值,要先去掉这些无效的值。我知道的两个方笑郑法:
1.将仿真出来碰桥颂的vwf转化成 matlab可以读取的 数据文消腊件读到matlab中查看结果,可以把vwf另存为tbl文件,这个文件的格式很简单(功能仿真时),在matlab中编个简单的程序就可读出仿真结果,以前我这样干过,反过来也可以在matlab中生成tbl然后转化成 vwf文件作为输入
2. 将设计编译导出成verilog 文件在 matlab中用matlab的modelsim联合仿真实现,我只会用matlab中进行verilog仿真,全过程没做过
评论列表(0条)