通过文件读写方式实现Matlab和Modelsim的联合仿真的经验总结.doc

通过文件读写方式实现Matlab和Modelsim的联合仿真的经验总结.doc

ID:28149985

大小:28.00 KB

页数:7页

时间:2018-12-08

通过文件读写方式实现Matlab和Modelsim的联合仿真的经验总结.doc_第1页
通过文件读写方式实现Matlab和Modelsim的联合仿真的经验总结.doc_第2页
通过文件读写方式实现Matlab和Modelsim的联合仿真的经验总结.doc_第3页
通过文件读写方式实现Matlab和Modelsim的联合仿真的经验总结.doc_第4页
通过文件读写方式实现Matlab和Modelsim的联合仿真的经验总结.doc_第5页
资源描述:

《通过文件读写方式实现Matlab和Modelsim的联合仿真的经验总结.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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

2、lab和Modelsim的联合仿真。我没有仔细研究过第一种方法,我大概看了一下,感觉过程比较复杂,不过功能肯定也很强大,网上有一篇关于LinkforModelsim的文章”target=_blank>,有兴趣的朋友可以去看一看。关于第二种方法,只是通过几个文件读写函数就可以实现了,而且基本可以满足当前仿真的要求,所以这里主要讨论一下我所使用的这种方法,希望能够抛砖引玉吧,因为我也只能算个初学者而已。1.Matlab产生数据用作Modelsim仿真  在FPGA进行算法验证的时候,经常需要输入仿真数据,这些数据可以用FPGA产生,但是如果数据产生过程很复杂的话,需要耗费很大的精力,并且

3、产生的数据的准确性也不能保证。例如,如果要验证一个通信接收机的相关算法,那么我们就需要先产生发送数据,也就是说得先做一个发射机,如果这个过程也由FPGA实现的话,也是一个很复杂的过程。这时候我们就可以借助Matlab,利用Matlab内部自带的各种函数,产生需要的信号,再经过定点化,就作为FPGA接收模块的输入信号了。这样做无疑会节约很多时间和精力。下面用一个简单的例子说明如何用Matlab产生的数据用作Modelsim仿真。首先利用matlab产生一个周期256点8bit的正弦波数据,然后以16进制形式写入sin.txt文件N=256;n=1:256;x=fix(128+(2-1

4、)*sin(2*pi*n/N));fid=fopen(‘sin.txt’,’wt’);fprintf(fid,’%x’,x);fclose(fid);下图是截取的产生的数据文件的内容[[wysiwyg_imageupload:33:]]然后将产生的sin.txt文件复制到Modelsim的工程下,在Verilog文件中先定义一个8bitX256数组,然后通过$readmemh命令,将文件中的数据读入,相关的Verilog代码如下:reg[7:0]data_mem[0:255];//定义一个8bitX256的数组iniTIalbegin$readmemh(“sin.txt”,dat

5、a_mem);//将sin.txt中的数据读入存储器data_memend关于$readmemh的用法可以参见Verilog的参考书,这里就不详细说了。后面就可以用data_mem作为你的测试数据了。例如可以通过以下代码,将data_mem的数据送给data_out:always@(posedgeclk)beginif(rst)begindata_out<=8’d0;i<=8’d0;endelsebegindata_out<=data_mem[i];//将存储器中的数据输出i<=i+8’d1;endend这样利用data_out就可以输出一个正弦波波形,下图是Molesim仿真产生的

6、正弦波波形:2.Matlab对Modelsim仿真生成的数据进行分析  Matlab对Modelsim仿真生成数据的处理也是通过文件读写实现的。即通过Verilog语句,将仿真过程中的某个信号写入文件,然后在Matlab中在把这个文件的数据读出来,就可以在Matlab中进行分析了。下图也通过一个简单的例子,说明一下整个过程。以下的Verilog语句实现将信号data_out的数据写入data_out.txt文件integerw_file;iniTIalw_file=$fopen(“data_out.txt”);always@(i)begin$fdisplay(w_file,”%h”,

7、data_out);if(i==8’d255)//共写入256个数据$stop;end下图是截取的data_out.txt的部分内容:[[wysiwyg_imageupload:34:]]然后就可以编一小段Matlab的程序将data_out.txt中的数据读取进行分析了。下面一段Matlab的程序是将数据读取,并通过图形显示出数据的波形。fid=fopen(‘data_out.txt’,’r’);fori=1:256;num(i)=fscanf(fid,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。