(完整word版)link-for-modelsim-的简易用法.doc

上传人:公**** 文档编号:544444473 上传时间:2023-07-01 格式:DOC 页数:3 大小:47.04KB
返回 下载 相关 举报
(完整word版)link-for-modelsim-的简易用法.doc_第1页
第1页 / 共3页
(完整word版)link-for-modelsim-的简易用法.doc_第2页
第2页 / 共3页
(完整word版)link-for-modelsim-的简易用法.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《(完整word版)link-for-modelsim-的简易用法.doc》由会员分享,可在线阅读,更多相关《(完整word版)link-for-modelsim-的简易用法.doc(3页珍藏版)》请在金锄头文库上搜索。

1、(完整word版)link_for_modelsim_的简易用法 本内容涉及到一些matlab与modelsim连接的方法。首先说说我对于link for modelsim 的理解。首先matlab对于数据处理的方面有无可比拟的优越性,而modelsim应用于verilog语言和VHDL语言的仿真。有时候会遇到这样一些情况:我们仿真的输入数据很是复杂,比如是一个加入了杂散的高频的信号,我们用Verilog语言编写test bench 的话则很是复杂,但是用matlab产生的话就相对简单了许多。基于这种想法我在matlab帮助文件中输入link for modelsim,得到了一些启示。在这里与

2、大家分享一下1、 软件的下载于匹配 下载好的完整的matlab中有link for modelsim的功能的。对于匹配问题,开始我的matlab是2010a,modelsim是modelsim SE 6.4。结果运行的时候出现版本不匹配的错误。我又按照要求下载了modelsim SE 6.5结果可以用的.怎么确定你的matlab对应的modelsim版本,首先你在你的matlab中输入,demo然后在搜索框中输入link for modelsim.有这样的一个NOTE。.如果modelsim不匹配的话建议在官网上下载一个,然后找一个破解文件就可以了.2、 新建一个文件夹用来存放matlab函数

3、和modelsim工程。文件夹的目录中不要有汉字.把写好的matlab函数保存到已经建立的文件夹中,在这里我写的一个小程序,函数名为add1。m。3、 建立一个连接端口。首先打开你的matlab软件,输入hdldaemon(status),因为连接点还没有建立,matlab显示HDLDaemon is NOT running。我们用hdldaemon(socket, 0),这个命令来建立一个连接。运行后显示HDLDaemon socket server is running on port 2325 with 0 connections。表示连接点已经建立端口号为2325,但是还没有和mode

4、lsim连接.要记住2325这个数字,后面的命令中还要用到的。4、 在modelsim中输入vsim命令来打开你的modelsim.建立你的modelsim工程并保存在步骤2中的文件夹中。在这里我的verilog程序为add1.v.5、 建立matlab和modelsim的连接。在modelsim的命令行中输入vsimmatlab modsimrand,其中modsimrand为你要仿真的块,在此实验中为add1,此时modelsim命令行窗口中会显示如下的信息。 接着输入以下的命令:matlabtb add1 -mfunc add1 rising /add1/clk socket 2325这

5、里的 第一个add1 表示你的modelsim文件的实体名上面说过了,我的函数名为add1-mfunc add1 表示matlab函数的名为add1 我的matlab函数名同样为add1-rising/add1/clk 那么这个又是表示什么意思呢,这个表示在modelsim的实体的clk信号为上升沿的时候来调用我的matlab函数。-socket 2325 这个表示连接到我们在第三步中建立的端口。此时你在matlab中输入hdldaemon(status),就会显示已经连接。6、 设置verilog文件中的clk,rst 在modelsim中输入命令 force /add1/clk 0 0,1

6、 5 ns -repeat 10 ns表示零刻度出clk的值为0,一刻度出的值为5ns,每10ns重复 force /add1/rst 1 0, 0 50 ns同上 view wave 显示波形 add wave *加入输入输出 run 10000ns运行程序此时你就会在你的modelsim的窗口中看到图形了.下面介绍一下matlab及modelsim的文件的编写。function iport,tnext = add1(oport, tnow, portinfo)%UNTITLED Summary of this function goes here Detailed explanation

7、goes heretnext=;iport = struct();persistent x;if isempty(x) x=0;else x=x+0.01;end%y=sin(x);y=round(sin(x)100);iport.addin=dec2mvl(y,16);end这个函数的功能是将每隔0。01rad的sin的值输出作为verliog模块的输入。第一行的函数定义比较有讲究function iport,tnext = add1(oport, tnow, portinfo)oprt对应modelsim模块的输出。tnow这一时刻调用函数的时间。Portinfo第一次函数调用时传达的参数

8、Tnext下一次调用matlab函数的时间Iport对应modelsim模块的输入如果做一些简单的函数调用的话用不到tnow和tnext,我们可以用modelsim中rising/add1/clk这部分的设置来进行matlab函数调用.其中portinfo也很少用,看看matlab中的link for modelsim文件。tnext=;iport = struct();对输出的两个参数进行初始化,大家应该注意到初始化iport的时候用的是struct()这个类似于C中的结构体。比如,你的verilog模块中有很多的输入iport。addin就表示名为addin的输入。这样就可以对你单个的输入

9、进行控制。persistent x;要把x定义为静态变量,因为你要很多次调用函数。对于静态变量的初始化使用if isempty(x) x=0;else x=x+0。01;end不晓得能看明白不iport。addin=dec2mvl(y,16);这个也很重要,涉及到数据类型的转换,我们要把数据按一定的位数输出。这里我们把y作为16位输出的。下面看一下verilog函数module add1(clk,rst,addin,addout); input clk,rst; input 15:0 addin; output15:0 addout; reg 15:0add1; always(posedge clk) begin if(rst) begin add1=0; end else begin add1=addin+1; end end assign addout=add1;endmodule这个模块是把输入的addin+1,作为输出.简单的模块。好了,以上是简单的介绍,基于输入很复杂的小应用。如果想更深的研究的话建议看Matlab帮助,很详细的。Demo link for matlab,全是英文看了三四天了,才有点收获.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号