ijjLiMfi-
ubrio
SHODajTEtHiUiWi
■>.Amwiftsmjt
ubnrr
SHOQa_TKHLllr™iei5tnJ4!
librae
iHCDBLJTECW.'sid
UbriTF
爭HOT&_TECHh皿時Esii:
■Jlli.ivwpwfi
Lih-orp
ijk/rintaf
ubrzo
sHODB-JTEtHi'-iWtoq
2、如果在library中有work,就不必执行上一步骤了,直接新建工程。
Filenewproject
MlArirSriI|'L-
RjMM-fl**
Hjmnl*
■4m
口Tiwwryt1二匸H***
±++KBTnLrjJfC31.1■:
_Enl7/1-rLFl■J711rdTfltSel-SLTlL1L1.
★
・UUiKklAl£
T
t*™
KI■
会弹出
立CreatePrqj亡tt
会出现
MAddftem^totheProject
Clickontheicontoadditemsofthattype:
□□
CreateNev:
FileAddExistingFile
CreateSimulation
CreateNev;Folder
Close
CreateNewFile。
由于我们是要仿一个自己写的程序,所以这里我们选择
在FileName中写入文件名(这里的filename和刚刚建立的projectname可以一致也可以不一致)。
注意Addfileastype要选择成Verilog(默认的是VHDL),然后0K。
发现屏幕中间的那个对话框没有自己消失,我们需要手动关闭它,点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)begin
if(!
rst)
clk_out<=0;
else
clk_out<=~clk_out;
end
写完代码后,不能马上就编译,要先保存,否则,编译无效。
我们会看到“保存”的图标是两色的,而且half_clk.v后的“?
”还存在,这说明你没有保存文件,
软件问题。
其实只是没保存。
2、写测试程序(testbench):
每一个主程序(实现我们需要的某种功能的程序),都要
配套的编写一个测试程序,为什么?
这里不打算细说,testbench是给主程序提供时钟和
信号激励,使其正常工作,产生波形图,具体请参看verilog教课书。
在half_clk.v下方的空白区域内右键,选择AddtoProjectNewFile
pModelSimSE.PLUS
FileEditViewCompileSimulateAddPrcjectT^olsLayoutWindowHelp
出现下框,写入测试程序的名字half_clk_tb,tb是testbench的意思,注意选verilog,
Ok。
这样就把half_clk_tb.v加载到了project中,双击half_clk_tb.v在右边的程序编辑区中编写代码:
timescale1ns/1ns
modulehalf_clk_top;
regclk_in;
regrst;
initial
begin
clk_in=1;
rst=1;
#1000
rst=0;
#1000
rst=1;
end
always#200clk_in=~clk_in;
half_clk_daidai1(
.clk_in(clk_in),
.rst(rst),
.clk_out(clk_out));
endmodule
二、编译代码
编译成功后,half_clk.v和half_clk_tb.v后面的?
变成了对勾,并且在最下方的Transcript
栏中出现了successful字样,说明编译成功,否则会报错,就要回到程序中修改,只有编译成功后,才能往后面进行。
四、仿真
在屏幕左下角的位置有一个library和project的切换窗口,点击library,再点击work
前的“+”号,将其展开,会看到两个文件,文件名是我们刚刚写的half_clk.v和
half_clk_tb.v两个文件中的module名。
仿真不用两个文件都simulate,只需simulate测试文件即可,我们选择halfclktop右键,选择simulate。
FileEditView匚ompileSimuhteAddLibraryTcqIsLayoutWin,
MModelsimSEPLUS6.Sa
Hfi-D
rtri)&^modaltftdh_6.5a/asmples/lialfj
Lnr
p|帥EQ
Sknuldtt
-血gk
holfdkddi
SsPTtldHravlTFujtUpiTiiza:
jrfsmelate酗rh^ull门贰哗tawSiriLllatewthCcrverzge
Jo,Litiery二:
:
+J1xl
TyppIPHth
Lbidrywork
Moduh匸」rrydu'l
Lrimescalelns/lr
wdult;1;Jifelkt
J-
上•血mdAvtr二血rrttiCKm±JlmfcPAt血ntiUPF-di岳tMvznliDK上血”M”M:
ih
IS?
AmorlFlqiT
Od
5tJd«vw
Edit
RefreshRCCOfTipilCOptM^ilE*Updst^
0
9
10
12
13
H
r^c亡in;
-
re7T3t?
initial
"弋q二匸
邛t二;
#2000000
ESt=0;
&nd
-t2OC0C'k
■Jtwrlbg
he/.
8
..
hej]rj:
icSuit:
dQLSfdry韭可ujGil
PtTrtnKnpt
・「・丄,
13[[yjhalLcItv冷同h*_tJ5”¥*f
ICoupil^afbalf—dJ.k—tb.pwasaucce99ful.t2csrapila^^0failedwizhnooxzer^*
之后会出现objects框:
按住Ctrl键选中
clk_in,clk_out,rst三个信号,右键选择
AddToWaveSelectedSignals
这样,看波形的窗口就会出现,将红色圈圈中的仿真时间步改成
5ms,然后按旁边的运
行按键,
波形就出现了。
按住
Ctrl滚动鼠标滑轮可以缩放波
形。
看下面的波形可观察,在rst复位并置高之后,clk_out就出现了,并且周期是clk_in的两倍,也就是输出频率为输入频率的一半,达到了二分频的效果。
■常吉羁—'“”*尹斗I
讀vrmy―]haH_£it_tb.r-'prjhalf」ik.v
五、停止仿真
当modelsim在仿真中的时候,修改程序、编译等都是无效的,也不能强行关闭软件,这是就需要手动停止仿真,以便进行其他操作。
选择菜单栏中的simulateEnd
Simulateion即可。
总结:
建立工程编写主程序和测试程序编译仿真观察波形。
写了很多,但是应该讲得很详细了吧,希望对大家的学习有所帮助。