作者:立案whan_597 | 来源:互联网 | 2023-06-21 16:18
首先,要安装matlab和modelsim,这个是不用说的了。
然后要在matlab里对modelsim进行配置,在命令窗口中输入configuremodelsim,根据提示一步一步进行即可。
然后在matlab的File/Set Path菜单中加入Modelsim所在的路径。
把matlab的当前路径切换到modelsim的可执行文件所在的目录,在命令窗口中输入
vsim('socketsimulink',4449)
则modelsim软件被启动,在modelsim中创建一个inverter.v文件:
module inverter(sin,sout,clk);
input [7:0] sin;
output [7:0] sout;
input clk;
reg [7:0] sout;
always @(posedge clk)
begin
sout<=~sin;
end
endmodule
这个程序很简单,就是个取反逻辑。
在modelsim的命令窗口输入:
vlib work
vmap work work
vlog inverter.v
如果有出错信息,注意检查modelsim的工作路径与文件的路径是否一致,代码是否有输入错误。
如果编译没有错误,就在命令窗口继续输入:
vsimulink work.inverter
现在modelsim的仿真已经运行起来了,但是这个仿真没有测试向量输入,实际上,modelsim是作为一个服务器,等待着simulink发送输入信号,并把输出信号返回给simulink。
所以我们现在回到matlab,在命令窗口输入simulink,进入simulink环境。
建立一个新的模型文件,在文件窗口内,建立如下的模型:

模型由三个模块组成:最左侧的是一个信号源,最右侧的是一个示波器,中间就是simulink和modelsim的桥梁--HDL Cosimulation模块。
Counter Free-Running的参数设置如下:
Number of Bits:8
Sample time:1
这表示信号源输出一个8位二进制数,采样周期为1秒,每个1秒输出值加1。
示波器参数不需要设置,比较复杂的是HDL Cosimulation模块的参数设置,为了描述简单,我这里直接给出参数设置的图片,具体参数的解释在下一篇里讲。
(1)Ports参数

(2)Clocks参数

(3)Timescales参数

(4)Connection参数

(5)Tcl参数

设置好模块参数后,再设置仿真的配置参数如下:

下面就可以点击仿真按钮,如果没有错误的话,双击示波器模块,就可以看到输出信号波形,和输入信号相比,两者在数值上正好是二进制的取反。
好,一个simulink和modelsim仿真的完整过程就实现了,有时间再仔细讨论具体的参数。