VHDLQuartusII调用Modelsim进行仿真doc.docx
《VHDLQuartusII调用Modelsim进行仿真doc.docx》由会员分享,可在线阅读,更多相关《VHDLQuartusII调用Modelsim进行仿真doc.docx(33页珍藏版)》请在冰豆网上搜索。
VHDLQuartusII调用Modelsim进行仿真doc
VHDL——Quartus11(11.1版本调用Modelsim进行仿真
之前仿真一直是用QuartusII自带的“VectorWaveformFile但因其功能有限,在老师的推荐下接触了Modelsim,捣腾了一段时间之后总算有所收获了。
在查资料的过程中,发现好多二者联合的讲解都是用Verilog语言写的例子,而VHDL很少。
以下是我总结的用VHDL语言的具体步骤以及要注意的细节~~坎坷的路就略过了,直接展示成果。
例子是八位七段数码管的动态扫描显示’
一.用QuartusII进行VHDL语言编译
1.首先建立工程
File->NewprojectWizard(第三个图标
Introduction
T»wWUartfhctwOMt*■newpreyedpreAwurrprwfMrdj^rvgthei—
CfNewPteelWLurd
Directory,Ndok?
fopIeve!
tfitHy[1ol5J
Wwt•fwB^grtany»«ClDr簞2*WprqgKl?
Ur'^WwF
Mhag厚叫<™«电「申mjrdjQ口»
**#14**e*tw>a^4r-*l*rtirrgWp轉WTIM«*»«*"*«***B«C*r・Wenfliv*M»W**華«*
h^ru
R*c>Kt^lur^o,..
翻J*Qm・rtuiCt
jj
aOWClnryh
CtWaT*tfm
ngif-oftgwuwP
丨仰1g
—J
_JUM>
EnM>
CtfCtdljJ[Qpetp
填入所建工程的目录以及名称,注意稍后的源程序中实体名必须和这里的名称相同。
填好后单击finish撚后单击yes。
新建VHDL源程序文件
File->New->VHDLFile->OK
将程序写进去(这里只讲步骤,不讲源程序的写法
电|脚弧{}tstse代%处处»n创1鑼al=*二二im
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
□entityhexxis
日port(clk:
xnstd_logic;―时神信号输入
key:
instd_logic_vector(3downto0);■-四位信号若入
ag:
outstd^logic^vector(6downto0);―7段值号辕出
•sei:
outstd_logic_vector(2downto0));-■数码管送择
end;
1C
11
12
□architectureaofhexxis
曰begnn
□process(elk)
variableql:
stdlogicvector(2downto0):
■R000R;
1€
n
19
2C
21
曰曰卜曰
begin
ifelk*eventandclk«then
ifql-wlllHthen
ql:
"000”;
else
qls-ql*1!
*;
endif;
22sel<«ql;
endif;
24
电in
endprocess;细(}tFS/
®口创圖2Ir=we
7
8
9
10
libraryieee;
useieee.stdIoqIc1164.all;
useieee.5td_logic_unaignedeall:
Bentityhexxis
曰port(clk:
instd_logic;一时神(8号辐入
key:
mstdlogictor(3downto0);一Qfifll号输入sg:
oucstd_logic_vector(6downs0);-」段(B号•出selloutscd_logxc_vector(2downto0));■■数冯苣送择end;
11Barchitectuxeaofhexxis
12Qtegin
三曰卜曰
□process(cllc)
variableql:
std_lo^ic—vector(2downto0):
begin
ifelk'eventandclJc**!
*then
Ifql—ill-then
ql:
—000":
else
•000-
endif;
sel<*ql;
endif;
endprocess;
-HD—曰
5678
2222
••X•■“■八
注意:
程序中的实体名必须和之前建工程时所命名的文件名相同!
然后保存一下,
不用改动,直接单击保存。
2.编译
快捷键按钮在界面中上方的红色倒三角,显示编译成功之后关闭编译报告。
4.设备设置
具体的实验器件根据提供的实验板设定
Assignment->Device
l勺QuartosU32-bit-C:
/h
FfcView
RemoveAisicnmentt-..
importAss^ments,.”
ExportAssipHrfttnti...
cfe*
Lo^d-odcReqiww
AlT4<
D«mhPartiborrsVJmdow
禹It40
®
—曰曰.■ks67e111X
砂Opt8>W0
A|M«OjJjUuCQfrA.
押•禅冲|HtX"a«5r
3«0>«1
并十*,和Id
AL
nEnxBSM益mlMQ£M理ofikQL血DLtkrt
JUltOp
4"If1・・!
■>:
!
卵EEF
si
fiEtr
frHHtH
VIEXF
gMEK相
帕Kt|
Mr1!
1
tiecc
«ri
tIZEL
tti
4EEXE
tfi
VTEXE
iZl
5EHE'
»E£E
n
«HbdECNd9
Kiff
AC'I
twrbiE梵■拥
**W
uq邙陶PL«D^]
UTiEb«q
ST<——
1*W
I1TN-4M2■*
V+^fcK*旳
■*WIK%♦
"P«1MjmArjwB*jmiifanbfcij.
OJJTTgAl*WP*J®
0
■WnM&Mg*jHH凰<|p
*节¥artsdr.-rr-you罠rnTn"kirqrtkr切斗用灼”;
Dt^Ke&n忖
MaiatoSede^xess
Ndme
CoreVoltage
LE£
U«F1/0$
Hcmoruf
Embeddednwftlp4NEr9-Mt^h
EP2C.2OQZ4aca
L2V
lfl7152
142
23%1£
52
9>2C3誉弼总
L2V
332Ifi
322
阳第P
TO
L2V
球揮
322
48380
TO
EP2C33=-W^CB
LZV
33216
322
4Sj3TO
ffK3SHS-Ka
1•封
33216
322
鶴33乜
TO
epxj^^c6
L2V
33216
475
«3SC
TO
印2CE牛6Z2C7
1»
33216
4JS
4U8O
TO
ffxmTTCa
|l»
1)^16
|o
轉380
|ro
曲o只咖
L2V
畑&
475
TO
ffxjsm&ce
L2V
332U
«38<
TO
ePXUM&c?
12V
3超沾
«38O
70
Assignment->PinPlanner
Enftty
Cyctonff
姑卫OEcntEditor
mhein(
KHhoveAssi^-imente.r.
94dt-AIrrMXxtAssgmenfcs...
沙Quartkjs032bit•伫
PnPlftmer
W*xto*
Devtt…
ProjectNdv*oatcx
SettriQs...
twKx.vhd
illfi
CtH+5h»fi+A
ENportAss«nments...
在Location下的方格中填入对应的硬件引脚,也是根据实验板而定6.引脚分配好之后再次编译一下,使分配的引脚起作用。
调用Modelsim
1、设置仿真工具为Modelsim-altera
Tool->Options->EDAToolOptions,
在Modelsim-Altera后面的地址改为Modelsim-Altera.exe在你电脑中的位置,然后点击OK。
2、写TestBench文件,这里使用QuartusII生成的模板
Processing->start->StartTestBenchTemplateWriter,
UbOTVl«wSflup
P*t*trrrtfTfrt甜如
诞Tc*Kt
wtw:
qp«rw|
Fwti
MfeKfciSet&ngi
IWtoSennas#M«uq«
StmrewniCMri
Fanti
心TniEdlpra*nRnH
显示成功后关闭生成报告
这时会生成后缀为.vht的文件就是我们需要的,可以在这个实验开始时所建工
程名的文件夹下的simulation子文件夹下找到。
我们可以通过QuartusII左上角的
打开图标打开.vht文件,注意把文件类型更改成Allfiles或者下图所示的类型,否则会找不至叽然后在simulation文件夹下找到并打开它。
OH0AM%i@k
0如
RoftrCorrola^n
mhqa
團甩巾
9H”SFkwHFlo*BF4dn_JAnah-21Fittet
_JTm«JJAss^_JED*
FkyftStatus
QljartLSII1CT5KMT
Re^BBcr陽me
Top-levelEntilyHame
FaniY
Devce
FmgModeh
JTptai-oqtcdemcnls.
ToteicornbnatnndiFurKlMXtSi
Dettatediogrreg^terE
Total『egste^
Tatipro
Totalwnafpre
Totalrnemofybls
Ent?
edd&lMdbpliFcte-meits
TotriPLLs
SuccessfUSurW1320:
26:
曲20Mll.lBukj173IlAH/MUSJRJHerswibexx
hexx
CydoneII
护2CF5F&72Ca
13.3T216{
Uj33,216(^1%)
€,.33.216(<1%)
€
15/47^(5%)
鲁Qujrtu$0
T«tBenchTemplabtWitermi
□(^o0a「•盂
©
■#gg二•孑:
tnetY
$>cqt«n:
&x»€7xemZAS
Q/rM»UJ24t、Eoh
Re/WHNaRe
Tap^e»tJBWyNawe
◎RM|
0QX
A^ter«rd>y
7*►Corw*De»gn
7►ArWw
7►fwwr(AraaQaA)
7►■卄・ricwtepro^ffrvmgJ
“►TfwQurvlTnmg**<*vwi
✓►HUft刃e
®Pr^bfa(OpmPv«gr«nrwr)
SuocmbM3JJ13XH
li.iMdiniwwonsjM^^wH
FwtfvCrdonen
Omo>~X3SH72Ce
■ToW^gseMnwntt
ToWCQntFvOQHfiifKtmDemotedb9CfYQMnToOF^egvttrs
Taatatrw
Tot^
ToW«wwvbti
MxdcMKA^erdoreMsTo«nis
Z
13/».2M(<)%)il/»2W(G
1S/47S(3%>
DtfU0«>■电・
金mdr>3epxapttoa
Jc**n.pi
J
7•►:
»<*C>w
✓►Arwo&lrMm
✓►nrw^raAAMi
V►4,,,*.*-»v•v«.vW*
Y►**•<—Q
V•0Wtr
•R.Omi|C»viF*w)
ki—1—iJ
❺B•*««Ft»Mg«L»w
J
・uyzwfvo©►nr-&Ot:
e:
*p
必纭(TwaC2
IS2GKM.■•寸i:
D.;Z:
-F:
»|OCWPTO);piduxx.•*•:
IS:
C«AL”15TTU«:
CVTTTC«|fKWWTC:
)2BCCMCNWMxa
B«»TI
cir:
w7.•:
:
_rim”匚g>c.・di)ocww«m
Mlt0V?
9tSIMKVBCtWUEWT-m:
cc:
wcm«ocmro«>
»I
oFOVTMAT<
—Xl>ccacA«ct4ae4aa«t«xpart*«adaisra^a
9>B•>Oil.
k*T•>
Ml•>Mlr
M•»M
)f
Bmuc:
Fioafls
—vtiie^lcawieittieftt
gm
—<•••twteB*CMKA«MQyM>8
KMT/
dcriocusuutj
曰1PfcXUS
Ovptlseal9e&JAtlv&tylit
—•(
•・4»elar4itiaM
Bt32*
—wbfliMmuytct«*exyce&eeell«t
xini
donuoezssei««y«i
DCAXX•!
*=■;
Tjp«Mwxpe
VIifoizjy"11IfAM\U”Mfitee”,9*^a»»tal0
筍2To<>
■
|13M»
tM・CMM
模板已经给出了端口部分的代码、接口变量的声明和例化语句映射等
做的就是在其后的进程Process中填入需要的测试代码。
如下:
注意:
init
保存一下
3、将TestBench添加到工程中
/Settings・hexx
CAteQonr:
Gererai
Meifermes
"OprattnQSettnosandCondOonsvoitage
Temperiaire
▲CdflpAatonProcessSetuvEjrtyTnmgfa^ma*kKxcwcnt^Co&EDAToolSettngt
Oefipn仙y/SyWhe®
SFcnaalYcr^otentordtevd
"ArWyw&$Yn9csBSettngi
VHXIrout
YertoQQInput
DeiPFitterSct^ngsTrneQuestTrnrgM^rjerAssentter
SmwbtMM
Speo6ro^onsfargenerMngouq^utStsforuse»i窃ofwrEDAtook^
ELMnCWSXWnwrKianQS
Eprwdtfarou^puenefctVKX.
TrngcA:
lWus
MapfcQalpdwKteriOpsonefarPowerEstmibon
[QenerateYdeOanpeCX^p(VCD)fieKrptSor切aNeMWnwSrtmg^・・
、ZEWTertBench〔rmrrgsoffsiffft¥4XO3V,MwaV9»as"fMMIX&IM
TOCT&mastbendl」hcintlvhdlGrF
Uselestbendiff-slwl5fi-Hacfos
i
1
&
■
供name:
|
+
tL
iyB
1,o留
5¥ic
£VjWfl
lA4
8
Twt-
-CM」ft一「
Xz?
T农Faendi5債注ngi
createnevi-tesEbench-
EEbenchname:
Jaci—3
TgTi^Doddlen至ffrt4-】JUsebenchto3srp?
30smiabon-3A.»■-3.JW3WU*IKlAs^ndaborlpenod
»t3snKiaeronSEdiwectorsbmii-arr>csi
£ndsmJabon£“
Tesrbenchf«*namer
fK3rt
也出Open
s'fsj
点击Add后,一直单击0K到Setting界面全部关闭。
4、可以开始仿真了
Tools->RunsimulationTool->RTLSimulation,这时就会自动启动Modelsim软件
Qedttwamtbendi«nnQs.
T«thencfirww:
hex_vhd_tit
SirxMtionpenw
Testbenchfi«
FieNam#
Lbrary
Usebrstbendicoperform\*KXtnmavmJAbOA
•加i痂nulabon5恒al炉ctorstnMaresed
#NewTwr险世+t
tacW
Crutenewtestbenchs«Rings,
Utet«tt*nditopct旳mVH1柯nm/fbon
SmJswnpenod
1X】
Crai
如果之前的主程序以及TestBench没有错误了,就会出现下面的界面
軸n-mPJirrriwirwif
点击上面的红点(stop
UHHfn
■■1
fWgHL-Ihb^s-
i™-f—*rk
■;Ek*
n・
!
■"
WsHU;*
*:
kKk4*
MU上]
i
.rtn»
■tFW
■HtfS
rikSdWJ!
*a
■=?
皿
业R
[弘U«1“1:
:
»«Lu11'iftMirOH-
~f»fa*jZ|ITq4-■-t-,-"…
>r1j汎弋•Tl
«[;M
UHHfn
*ipn
MrAddiTgcri%Uwarf1WiM^v*>hsi
单击Run按钮(旁边的时间根据实际需要调整,并通过Ctrl+鼠标滚动或者界面上的加号按钮,可以将波形调整到如下容易察看的间距,另外如果感觉一串0和1的组合不容易看懂,可以右击通过下面的方式将二进制数改为十进制或者十六进制的形式。
最终的波形图如下:
经检验与实验目的相符合,是正确的。
另外,可以滚动
波形下方的游标来观察不同时刻的波形。
至此,QuartsII调用Modelsim已经圆满
完成了,剩下的就是将程序下载到硬件实验板上进行验证了。
注意:
1.工程名称
必须和主程序(.Vhd文件)中的实体名相同。
2.TestBench名称必须和TestBench
程序(.Vht文件)中的实体名相同。
3.所有在进程(process中用到的变量和信号都要进行初始化,否则会在仿真波形中得不到输出。
比如本例主程序中的变量
q1,Testbench程序中的clk和key。
4.生成的TestBench模板根据需要、习惯可以任意改动。