天津大学电子信息工程学院戴鹏版权所有,翻录必究!Modelsim详细使用方法很多的modelsim教程中都讲得很丰富,但忽视了对整个仿真过程的清晰解读,而且都是拿counter范例举例子,有些小白就不会迁移了。这里我们着眼于能顺利的跑通一个自己写的程序,一步一步的讲解,如果你是一个初学者,这再适合你不过了,虽然貌似字写得比较多,那是因为写得相当的详细,一看就会啦O(∩_∩)O~一、建立工程1、在建立工程(project)前,先建立一个工作库(library),一般将这个library命名为work。尤其是第一次运行modelsim时,是没有这个“work”的。但我们的project一般都是在这个work下面工作的,所以有必要先建立这个work。Filenewlibrary点击library后会弹出一个对话框,问是否要创建work,点击OK。就能看见work.天津大学电子信息工程学院戴鹏版权所有,翻录必究!2、如果在library中有work,就不必执行上一步骤了,直接新建工程。Filenewproject会弹出在ProjectName中写入工程的名字,这里我们写一个二分频器,所以命名half_clk,然后点击OK。会出现天津大学电子信息工程学院戴鹏版权所有,翻录必究!由于我们是要仿一个自己写的程序,所以这里我们选择CreateNewFile。在FileName中写入文件名(这里的filename和刚刚建立的projectname可以一致也可以不一致)。注意Addfileastype要选择成Verilog(默认的是VHDL),然后OK。发现屏幕中间的那个对话框没有自己消失,我们需要手动关闭它,点close。并且在project中出现了一个half_clk.V的文件,这个就是我们刚刚新建的那个file。这样工程就建立完毕了。二、写代码:1、写主程序:双击half_clk.v文件会出现程序编辑区,在这个区间里写好自己的程序,这里我们写一个简单的二分频的代码:modulehalf_clk_dai(clk_in,rst,clk_out);inputclk_in;inputrst;天津大学电子信息工程学院戴鹏版权所有,翻录必究!outputclk_out;regclk_out;always@(posedgeclk_inornegedgerst)beginif(!rst)clk_out=0;elseclk_out=~clk_out;endendmodule写完代码后,不能马上就编译,要先保存,否则,编译无效。我们会看到“保存”的图标是两色的,而且half_clk.v后的“?”还存在,这说明你没有保存文件,这时,只需要点击保存,就会发现“保存”的图标变成了阴影,这样编译才有效,而就是这么不起眼但至关重要的一步“保存”,往往被很多初学者忽视,最终怀疑程序和天津大学电子信息工程学院戴鹏版权所有,翻录必究!软件问题。其实只是没保存。2、写测试程序(testbench):每一个主程序(实现我们需要的某种功能的程序),都要配套的编写一个测试程序,为什么?这里不打算细说,testbench是给主程序提供时钟和信号激励,使其正常工作,产生波形图,具体请参看verilog教课书。在half_clk.v下方的空白区域内右键,选择AddtoProjectNewFile出现下框,写入测试程序的名字half_clk_tb,tb是testbench的意思,注意选verilog,Ok。这样就把half_clk_tb.v加载到了project中,双击half_clk_tb.v在右边的程序编辑区中编写代码:`timescale1ns/1ns天津大学电子信息工程学院戴鹏版权所有,翻录必究!modulehalf_clk_top;regclk_in;regrst;initialbeginclk_in=1;rst=1;#1000rst=0;#1000rst=1;endalways#200clk_in=~clk_in;half_clk_daidai1(.clk_in(clk_in),.rst(rst),.clk_out(clk_out));endmodule三、编译代码在half_clk.v的文件上点右键,选择Compile,至于是CompileAll还是CompileSelected都可以,就看自己选择了。然后点击。天津大学电子信息工程学院戴鹏版权所有,翻录必究!编译成功后,half_clk.v和half_clk_tb.v后面的?变成了对勾,并且在最下方的Transcript栏中出现了successful字样,说明编译成功,否则会报错,就要回到程序中修改,只有编译成功后,才能往后面进行。四、仿真在屏幕左下角的位置有一个library和project的切换窗口,点击library,再点击work前的“+”号,将其展开,会看到两个文件,文件名是我们刚刚写的half_clk.v和half_clk_tb.v两个文件中的module名。仿真不用两个文件都simulate,只需simulate测试文件即可,我们选择half_clk_top右键,选择simulate。天津大学电子信息工程学院戴鹏版权所有,翻录必究!之后会出现objects框:按住Ctrl键选中clk_in,clk_out,rst三个信号,右键选择AddToWaveSelectedSignals天津大学电子信息工程学院戴鹏版权所有,翻录必究!这样,看波形的窗口就会出现,将红色圈圈中的仿真时间步改成5ms,然后按旁边的运行按键,波形就出现了。按住ctrl滚动鼠标滑轮可以缩放波形。看下面的波形可观察,在rst复位并置高之后,clk_out就出现了,并且周期是clk_in的两倍,也就是输出频率为输入频率的一半,达到了二分频的效果。天津大学电子信息工程学院戴鹏版权所有,翻录必究!五、停止仿真当modelsim在仿真中的时候,修改程序、编译等都是无效的,也不能强行关闭软件,这是就需要手动停止仿真,以便进行其他操作。选择菜单栏中的simulateEndSimulateion即可。天津大学电子信息工程学院戴鹏版权所有,翻录必究!总结:建立工程编写主程序和测试程序编译仿真观察波形。写了很多,但是应该讲得很详细了吧,希望对大家的学习有所帮助。