matlab和modelsim联合仿真(一)_第1页
matlab和modelsim联合仿真(一)_第2页
matlab和modelsim联合仿真(一)_第3页
matlab和modelsim联合仿真(一)_第4页
matlab和modelsim联合仿真(一)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于VerilogHDL语言的FPGA设计课程作业学院:电子工程学院专业班级:集电 11级3班姓名:朱潮勇学号: 05116079作业题目:Matlab和modelsim联合仿真(一)完成日期:2013年11月20日一、设计要求2二、规范说明2三、顶层设计结构图 2四、模块详细设计31功能说明32端口定义33设计激励代码34 matlab 代码55仿真结果6五、结论和问题: 8六、补充: 错误!未定义书签。一、设计要求虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足。而进行数字信号处理是Matlab的强项,不但

2、有大量的关于数字信号处理的函数,而且图形显示功能也很强大, 所以在做数字信号处理算法的 FPGA佥证的时候借助 Matlab会大大加快算法验证的速度。关于matlab与modelsim联合仿真有两种,一是以matlab或者modelsim分别产生数据,保存为文本的形式在给modelsim或matlab来调用。这是一种间接的联合仿真的方式。二是用matlab的link for modelsim的功能,将两者联合。后者的联合仿真功能更加强大。此次实验将进行第一种联合仿真。分为两个例子。第一个例子说明如何用Matlab产生的数据用作 Modelsim仿真。第二个例子说明如何用 modelsim产生数

3、据用作 matlab进行分 析。、规范说明1. Matlab 产生数据用作Modelsim仿真首先利用matlab产生一个周期256点8bit的正弦波数据,然后以16进制形式写入sin.txt 文件,然后将产生的sin .txt 文件复制到 Modelsim的工程下,在 Verilog 文件中 先定义一个8bit X 256数组,然后通过$readmemh命令,将文件中的数据读入2. Matlab 对Modelsim仿真生成的数据进行分析Matlab对Modelsim仿真生成数据的处理也是通过文件读写实现的。即通过 Verilog语句,将仿真过程中的某个信号写入文件,然后在Matlab中在把这

4、个文件的数据读出来,就可以在Matlab中进行分析了。三、顶层设计结构图Si n.txt正弦波形MatlabModelsim matdata2mod直线波形Data out.txtModelsim moddata2mat . Matlab四、模块详细设计1功能说明第一个例子用 Matlab产生的正弦波数据 sin .txt用作Modelsim的matdata2mod模块仿真。第二个例子用 modelsim的moddata2mat模块产生直线数据 data_out.txt 用作matlab进行 分析。2端口定义信号名称信号类型详细说明clk 1 位输入时钟,10MHz 50%占空比。rst 1

5、位输入同步复位,咼有效。data_mem 8bit X 256输入存储器data_out 8 位输出数据在时钟clk上降沿变化。i8位双向数据在时钟clk上升沿变化。w_file32 位输出文件的句柄3 verilog设计激励代码代码一:matlab产生正弦波数据用作 modelsim调用module matdata2mod;reg 7:0 data_mem0:255; / 定义一个 8bit X 256 的数组reg clk;reg rst;reg 7:0 data_out,i;in itialbegin$readmemh("si n. txt",data_mem); /

6、 将 sin .txt中的数据读入存储器 data_memendalways (posedge elk)beginif(rst)begindata_out <= 8'dO;i <= 8'dO;endelsebegindata_out <= (128+data_memi); /将存储器中的数据输出 i <= i + 8'd1;endendin itial$monitor($time, "data_out = %d",data_out);in itialbeginrst = 1;#100 rst = 0;endin itialbe

7、ginclk = 0;forever#10 clk = clk;endEn dmodule代码二:产生 0 255的数组module moddata2mat;in teger w_file;reg 7:0 i;reg 7:0 data_out;in itialw_file = $fope n("data_out.txt");always (i)begin$fdisplay(w_file,"%h",data_out);if(i = 8'd255)/ 共写入 256 个数据$stop;end in itialbegini=0;data_out = 1

8、28;forever #100begini = i+1;data_out = data_out + 1;endend en dmodule4 matlab 代码一:用matlab产生正弦波数据N = 256;n = 1:256;x = fix(128 + (2A7 - 1) * sin( 2*pi* n/N); fid = fope n( 'si n. txt','wt');fprin tf(fid,'%xn',x);fclose(fid);二:调用modelsim产生的数据,并画图显示fid = fope n('data_out.txt

9、',丫');for i = 1 : 256;这句话的意思是从fid所指的文件以16进制方式读出一num(i) = fscan f(fid, '%x', 1);% 个数据。endfclose(fid);plot (nu m);5仿真结果用matlab产生正弦波数据sin .txt 如图5 Editor - D:latlabTlvflrkfprintf_ttxtFile Edi t Text Cell Tcls Deug 氐 sktop TfiHelp37e438e639e?40e94ieb42ec43ee44fO45fl45f24Tf448f5在modelsim下

10、调用matlab产生的正弦波数据 sin .txt 如图占&一±也整址算*-蒐”即! “订U1 L11L1LD1H>:OX>* .Uixku2n«4>d创曲弟Oj算Q囊致幽| EL" I一一在 modelsim 下产生直线数据 data out.txt 如图data_out -记事本文件(F) 扁辑(E)惜式(0重看(V) 軽助(H)01234 5 67 8 9 a b c d efol234568 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8- 9 9 9 9 _9 9 9在matlab下调用 modelsim产生的直线数

11、据 data_out.txt 如图五、结论和问题:通过本次实验掌握了matlab和modelsim联合仿真(一)。也就是两者分别产生数据文件给另一方调用。这样可以很好的利用matlab强大的数字信号处理能力和图形显示功能。同时也体现了 modelsim的底层硬件电路六、补充通过Verilog将数据写入文件有多种方法,上面用的是$fdisplay这个系统函数,当然还有$fmonitor和$fwrite 等几个命令,下面简单说一下这几个命令的不同。$fdisplay这个命令需要有触发条件,才会把数据写入文件,例如,上例的触发条件就是always(i),当i变化的时候才写入。每写入一次数据会自动增加一个换行符。$fmon itor这个命令不需要触发条件,只要有变化就可以将数据写入文件。例如可以通过以下语句in itial $fmo ni tor(w_file,"%h",data_out);这样可以将整个仿真过程产生的data_out数据都写入文件中。$fwrite这个命令和$fdisplay 基本相同,也是需要触发条件才会写入,不同的是每写入一个数据不会自动添加换行符。例如可以通过以下语句:always (posedge clk)begin$f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论