在用ModelSimdsp仿真器使用dsp时提示\...

Xilinx ISE 10x 调用Modelsim SE 65仿真的若干问题及其解决方法
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Xilinx ISE 10x 调用Modelsim SE 65仿真的若干问题及其解决方法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口热搜TAGS:
通过文件读写方式实现Matlab和Modelsim的联合仿真
????虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足。而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处理的函数,而且图形显示功能也很强大,所以在做数字信号处理算法的FPGA验证的时候借助Matlab会大大加快算法验证的速度。关于Matlab和Modelsim联合仿真,我从网上看到两种方法,一种是通过Link for Modelsim建立Matlab和Modelsim的联合仿真接口;另一种就是通过文件读写的方式实现Matlab和Modelsim的联合仿真。我没有仔细研究过第一种方法,我大概看了一下,感觉过程比较复杂,不过功能肯定也很强大,网上有一篇关于Link for Modelsim的文章/Upload//9e8d0364-20ed-d1fc50783a7.rar" target=_blank>,有兴趣的朋友可以去看一看。关于第二种方法,只是通过几个文件读写函数就可以实现了,而且基本可以满足当前仿真的要求,所以这里主要讨论一下我所使用的这种方法,希望能够抛砖引玉吧,因为我也只能算个初学者而已。1. Matlab产生数据用作Modelsim仿真在FPGA进行算法验证的时候,经常需要输入仿真数据,这些数据可以用FPGA产生,但是如果数据产生过程很复杂的话,需要耗费很大的精力,并且产生的数据的准确性也不能保证。例如,如果要验证一个通信接收机的相关算法,那么我们就需要先产生发送数据,也就是说得先做一个发射机,如果这个过程也由FPGA实现的话,也是一个很复杂的过程。这时候我们就可以借助Matlab,利用Matlab内部自带的各种函数,产生需要的信号,再经过定点化,就作为FPGA接收模块的输入信号了。这样做无疑会节约很多时间和精力。下面用一个简单的例子说明如何用Matlab产生的数据用作Modelsim仿真。首先利用matlab产生一个周期256点8bit的正弦波数据,然后以16进制形式写入sin.txt文件N = 256;n = 1:256;x = fix(128 + (2^7 - 1) * sin(2*pi*n/N));fid = fopen('sin.txt','wt');fprintf(fid,'%x\n',x);fclose(fid);下图是截取的产生的数据文件的内容然后将产生的sin.txt文件复制到Modelsim的工程下,在Verilog文件中先定义一个8bit X 256数组,然后通过$readmemh命令,将文件中的数据读入,相关的Verilog代码如下:reg [7:0] data_mem[0:255]; //定义一个8bit X 256的数组initialbegin$readmemh("sin.txt",data_mem); //将sin.txt中的数据读入存储器data_memend关于$readmemh的用法可以参见Verilog的参考书,这里就不详细说了。后面就可以用data_mem作为你的测试数据了。例如可以通过以下代码,将data_mem的数据送给data_out:always @(posedge clk)beginif(rst)begindata_outiendelsebegindata_out 将存储器中的数据输出iendend这样利用data_out就可以输出一个正弦波波形,下图是Molesim仿真产生的正弦波波形:2. Matlab对Modelsim仿真生成的数据进行分析Matlab对Modelsim仿真生成数据的处理也是通过文件读写实现的。即通过Verilog语句,将仿真过程中的某个信号写入文件,然后在Matlab中在把这个文件的数据读出来,就可以在Matlab中进行分析了。下图也通过一个简单的例子,说明一下整个过程。以下的Verilog语句实现将信号data_out的数据写入data_out.txt文件integer w_initial w_file = $fopen("data_out.txt");always @(i)begin$fdisplay(w_file,"%h",data_out);if(i == 8'd255)//共写入256个数据$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进制方式读出一个数据。endfclose(fid);plot(num);当利用fscanf函数时要注意两点,第一:保证读取的数据格式和文件中保存的数据格式是相同的,例如这里文件中保存的格式是十六进制,所以读取的时候也应该以十六进制的形式读出。第二:要保证文件中数据的个数和设定的读取的数目(这里是256)保持一致。例如,要将生成文件data_out.txt中多余的换行符去掉(一般最后会多出一行),否则Matlab会将空的行也当做一个数据,从而两个数目不一致,导致Matlab报错。下图是Matlab将data_out.txt中的数据读出,并显示出的波形:当然,有了Matlab这个强大的工具,也就可以很方便的看信号的频谱等信息了。另外在说一点,就是关于通过Verilog将数据写入文件有多种方法,上面用的是$fdisplay这个系统函数,当然还有$fmonitor和$fwrite等几个命令,下面简单说一下这几个命令的不同。$fdisplay这个命令需要有触发条件,才会把数据写入文件,例如,上例的触发条件就是always(i),当i变化的时候才写入。每写入一次数据会自动增加一个换行符。$fmonitor这个命令不需要触发条件,只要有变化就可以将数据写入文件。例如可以通过以下语句:initial $fmonitor(w_file,"%h",data_out);这样可以将整个仿真过程产生的data_out数据都写入文件中。$fwrite这个命令和$fdisplay基本相同,也是需要触发条件才会写入,不同的是每写入一个数据不会自动添加换行符。例如可以通过以下语句:always @(posedge clk)begin$fwrite(w_file,"%h\n",data_out);end关于这几个命令的详细介绍,大家可以参考Verilog的相关数据。简单总结一下上面用到的几个函数:关于Matlab的函数有:fopen, fscanf,fclose。关于Modelsim的函数有:$fopen, $fclose,$readmemh,$readmemb,$fmonitor,$fdisplay,$fwrite。上面就是我关于Matlab和Modesim进行联合仿真的一些心得,如果大家还有其他更好的方法,希望不吝赐教啊!下面是相关的代码,包括Matlab的代码和Verilog的代码。
有[ 8 ]名读者喜欢此文阅读(5031)评论(4)收藏I打印I
推荐到小组I
转发到我的博客(0)对不起,您还没有登录,请先登录或注册上一篇:关于Cyclone III器件的工作频率下一篇:如何保证FPGA设计对同一系列不同器件的兼容最近到访博主sfiremypostx。谢谢你的提醒,我改天把如何把SignalTap II获取的数据用Matlab进行分析总结一下,再和大家分享。网友:
coyoo踩(0)赞(0)
快速回复对不起,您还没有登录,请先登录或注册
引用回复(0)对不起,您还没有登录,请先登录或注册 10:55评论:不错啊!请问有没有可能将仿真后的波形文件转换成matlab可识别的方式来进行分析呢?我这个问题的实际意义是这样的,比如要做信号分析,具体比如FFT,进行时序仿真,或者通过SignalTapII抓到了输出波形,这时候一般需要分析频谱,虽然Altera以及Mentor的仿真工具支持模拟显示,但是毕竟没有matalb方便,是否可以通过matlab分析这些波形数据?谢谢期待哦!!!!!--- 现有 4 个主题,共 1 页 ---我来评论 - 通过文件读写方式实现Matlab和Modelsim的联合仿真昵称:福建省的游客(您将以游客身份发表,请登录 | 注册)评论:你还可以输入1000字验证码:分享:关闭转发到我的博客评论 @轩文's Blog 的“通过文件读写方式实现Matlab和Modelsim的联合仿真”????虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足。而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处理的函数,而且图形显示功能也很强大,所以在做数字信号处理算法的FPGA验证的时候借助Matl...你还可以输入30000字同时评论给 FallingBUPT关闭快速回复你还可以输入1000字关闭引用回复引用评论你还可以输入1000字
文章热词:如何打开dsp文件
延伸阅读:
PIC单片机是一种用来开发去控制外围设备的集成电路(IC)。Periphe联合仿真,Matlab、Modelsim和Simulink使用【转】
Link for ModelSim@
——联合仿真并且使用ModelSim验证VHDL以及Verilog语言
Link for ModelSim@是一个把MATLAB/Simulink和针对FPGA
和ASIC的硬件设计流程无缝连结起来的联合仿真的接口扩展模块。
它提供一个快速的双向连接将MATLAB/Simulink和硬件描述语言仿真器ModelsSim连接起来,使二者之间直接的联合仿真成为可能,并且更高效的在MATLAB/Simulink中验证ModelSim中的寄存器传输级(RTL)模型。
传统的Simulink系统级设计和其仿真环境支持M语言,C/C++以及Simulink模块。而通过添加硬件描述语言(HDL)到MATLAB/Simulink中,扩展了MATLAB/Simulink的并行运行能力、直接性以及混合语言编程的能力。这使得Link
for ModelSim模块缩小了算法和系统设计同硬件实现之间的巨大鸿沟。
ModelSim与MATLAB和Simulink的连接是双向的,可进行联合仿真,验证,可视化;&
支持ModelSim的PE和SE版本。&
支持MATLAB/Simulink和ModelSim之间的用户可选通信模式。&
提供共享存储器获得更快的系统性能,同时提供TCP/IP
Socket字加强多样性。&
提供联合仿真的Simulink模块的库文件。&
可以把输出测试结果转成VCD(value change dump)文件格式。&
支持多个并行的ModelSim实例以及支持在Simulink和MATLAB函数中的多个硬件描述实体。&
提供在MATLAB环境下与硬件描述语言交互式或批处理模式来进行联合仿真、调试、测试、以及验证工作。
 函数和模块应用:&
生成VCD格式的文件;&
联合仿真硬件(HDL)器件&
提供同ModelSim软件的HDL模型输入接口功能&
提供读取ModelSim里的HDL模型输出的功能&
可配置ModelSim以联合使用MATLAB和Simulink&
通过Link for ModelSim启动ModelSim&
载入VHDL模型实体(entity)的例子以联合使用MATLAB&
载入VHDL模型实体(entity)的例子以联合使用Simulink&
对Verilog代码进行打包封装
  函数和模块支持联合仿真以及对VHDL和Verilog语言设计验证,以此将MATLAB
、Simulink、ModelSim联合起来进行仿真。  
                
 强大功能:& 
  Link for
ModelSim使用客户端/服务器体系来提供MATLAB/Simulink和ModelSim之间的接口。可以在一个单独的MATLAB环境或Simulink模型下提供与多个HDL实体和ModelSim的接口。&
                &
   使用Link for
ModelSim,工程师可以建立一个有效的环境来进行联合仿真、器件建模、以及分析和可视化。可进行如下的实例开发:&
在MATLAB或Simulink中针对HDL实体开发软件测试程序&
在Simulink中对包含在大规模系统模型中的HDL模型进行开发和仿真&
生成测试向量进行测试、调试,以及同MATLAB/Simulink下的规范原型进行HDL代码的验证&
在MATLAB/Simulink下对HDL行为级建模&
在MATLAB/Simulink下对HDL的实现进行验证、分析、可视化Link for
ModelSim中MATLAB与ModelSim接口和Simulink与ModelSim接口是独立的。用户可以单独使用一个接口或同时使用两个。
ModelSim和MATLAB的接口&  
  使用Link for
ModelSim后,工程师可以使用MATLAB和它提供的工具箱,比如设计和仿真信号处理,或者其它的数值计算算法。
工程师还可以用HDL来取代算法和系统设计中的器件模型,并直接完成HDL器件和MATLAB中剩余算法的联合仿真。&
ModelSim和Simulink的接口&
  工程师可以通过Simulink和相关的Blockset创建关于信号处理方面或者通信系统方面的系统级设计。工程师也可以把HDL器件合并到设计中或者用HDL模块来取代相应的子系统。
将MATLAB中获得的测试基准代码输出到VHDL实体中,并把ModelSim的输出送入到MATLAB函数中。并借此来创建软件测试基准来验证工程师的HDL实现。ModelSim中联合仿真模
块的参数对话框可以让工程师很容易的设置输入输出端口、二者连接的属性、时钟以及TCL命令。&
                &
ModelSim还提供一个模块来生成VCD的文件格式,可以用来:&
  用户可以对产生的代码进行手工优化,也可以在Simulink里使用预先优化好的模块来搭建模型,这样在产生代码时,会调用库里经过优化的汇编代码实现这些模块,达到优化效果。C62x和C64x的优化库支持位对齐(bit
true)仿真。&
观察在HDL仿真环境下的Simulink仿真波形&
使用相同或不同的仿真环境来比较多个不同仿真运行的结果。&
提供到后仿真分析工具的输入端口。
对于滤波器的应用实例,联合仿真以及软件测试基准是作为其设计实现的一部分,相当于在ModelSim中运行VHDL代码&
支持Verilog语言
  Link for ModelSim本身就提供对VHDL语言的联合仿真的支持。同时工程师还可以通过在VHDL
wrapper中自动封装Verilog代码,
使得其可以支持Verilog语言的联合仿真。于是Verilog代码相当于直接在ModelSim前端就执行完毕,而忽略其性能影响。Verilog代码和MATLAB的连接可以通过VHDL
wrapper和Link for
ModelSim来实现,这就使工程师可以使用Verilog硬件描述设计来完成和MATLAB之间联合仿真、软件测试基准、验证以及可视化。&
                &
  Manchester接收器的联合仿真和软件测试基准的实例。&
与Xilinx System Generator 以及Altera DSP
Builder的统一
  Link for ModelSim可以和Xilinx System Generator或Altera DSP
Builder协同工作。这意味着可以使用Xilinx System Generator 以及Altera DSP
Builder来完成部分系统设计。因此可以在一个完整的环境下进行MATLAB、 C/C++、Simulink
blocks、自己设计的HDL实体、以及Xilinx System Generator 所提供的模块或Altera DSP
Builder blocks所提供模块的联合仿真。
 需要的产品:&
  使用Link for ModelSim需要以下的产品:&
MathWorks产品:
针对只使用同MATLAB联合仿真功能需要&
推荐 Fixed-Point Toolbox&
针对使用MATLAB和SIMULINK联合仿真功能需要&
Simulink Fixed-point
第三方产品:
Code Composer& Studio Development Tools
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 dsp仿真器使用 的文章

 

随机推荐