选多路选择器文档格式.docx
《选多路选择器文档格式.docx》由会员分享,可在线阅读,更多相关《选多路选择器文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
port(
a,b,c,d,s0,s1:
instd_logic。
y:
outstd_logic>
。
endentitymux41a。
architectureoneofmux41ais
begin
y<
=awhens0='
0'
ands1='
else
bwhens0='
1'
cwhens0='
d。
endarchitectureone。
备注
以上是when-else语句设计的4选1多路选择器的vhdl描述。
程序中应该注意的有以下几点
A.一:
实体的命名要和工程名相同,并且不能是中文的或者以数字开头;
B.二:
when-else语句具有最高赋值优先级;
b>
.when-else语句设计的4选1多路选择器的RTL图
图<
1)when-else语句设计的4选1多路选择器的RTL图
c>
.when-else语句设计的4选1多路选择器的时序仿真波形图
2)when-else语句设计的4选1多路选择器的时序仿真波形图
d>
.when-else语句设计的4选1多路选择器功能仿真波形图
3)when-else语句设计的4选1多路选择器功能仿真波形图
2.if-then语句设计的4选1多路选择器
entitymux41bis
endentitymux41b。
architectureoneofmux41bis
process(a,b,c,d,s0,s1>
begin
ifs0='
theny<
=a。
endif。
=b。
=c。
ifs0='
=d。
endprocess。
备注:
以上是if—then语句设计的4选1多路选择器的vhdl描述。
值得注意以下几点:
A.程序开头应该包含std_logic_1164.all这个程序库包添加进去<
由于在定义端口是端口号的类型为std_logic);
p1EanqFDPw
B.进程语句应该将能够导致本进程启动的信号加到进程后的敏感信号表中,这能才能使得进程更加具有一般意义;
C.每一条的if-then语句后都应该以endif结束;
.if-then语句设计的4选1多路选择器的RTL图
4)if-then语句设计的4选1多路选择器的RTL图
`
.if-then语句设计的4选1多路选择器的时序仿真波形图
5)if-then语句设计的4选1多路选择器的时序仿真波形图
.if-then语句设计的4选1多路选择器的功能仿真波形图
6)if-then语句设计的4选1多路选择器的功能仿真波形图
3.case语句设计的4选1多路选择器
.利用case语句的vhdl程序
entitymux41dis
y:
endentitymux41d。
architectureoneofmux41dis
signals:
std_logic_vector(1downto0>
s<
=s0&
s1。
process(s>
casesis
when"
00"
=>
10"
01"
when"
11"
whenothers=>
null。
endcase。
endprocess。
.case语句设计的4选1多路选择器的RTL图
7)case语句设计的4选1多路选择器的RTL图
.case语句设计的4选1多路选择器的时序仿真图
8)case语句设计的4选1多路选择器的时序仿真图
.case语句设计的4选1多路选择器的功能仿真图
9)case语句设计的4选1多路选择器的功能仿真图
实验总结
一、通过上面的三种不同vhdl语言的描述的4选1多路选择器的仿真结果可以看出,在相同的输入信号的条件下,实验的结果是相同的。
DXDiTa9E3d
二、对比与功能仿真与时序仿真,我们可以看出功能仿真是一种理想的实验结果,而时序仿真却存在这毛刺现象。
这就是逻辑电路存在的竞争冒险等原因引起的毛刺现象。
RTCrpUDGiT
三、对比三种不同vhdl语言的描述,其RTl图也存在这不同。
由于if—then采用了进程语句,所以RTl图与when—else语句描述时的RTl图有逻辑上的一点不同,但是大致框架相似。
而case语句描述的4选1多路选择器的RTL图就存在这很大的不同。
5PCzVD7HxA
四、单从RTL视图来看,二者综合后的结果是有明显区别的。
If…else趋向于有优先级的结构,而case则是并行的结构。
jLBHrnAILg
但是我们可以从以下两个方面来对比if-then描述和case描述;
◆它们所占用的资源
Case结构的资源占用
Totallogicelements2/10,570(<
1%>
--Combinationalwithnoregister2
--Registeronly0
--Combinationalwitharegister0
LogicelementusagebynumberofLUTinputs
--4inputfunctions2
--3inputfunctions0
--2inputfunctions0
--1inputfunctions0
--0inputfunctions0
Logicelementsbymode
--normalmode2
--arithmeticmode0
--qfbkmode0
--registercascademode0
--synchronousclear/loadmode0
--asynchronousclear/loadmode0
Totalregisters0/12,506(0%>
I/Opins7/336(2%>
Maximumfan-outnodes0
Maximumfan-out2
Totalfan-out9
Averagefan-out0.90
If-then结构的资源占用
xHAQX74J0X
从上面可以看出,二者资源占用的情况基本是完全一样。
◆再看他们的TechnologyMapViewer
If-then结构的TechnologyMapViewer
10)If-then结构的TechnologyMapViewer
Case结构的TechnologyMapViewer
11)Case结构的TechnologyMapViewer
上面两者完全一致,所以我们可以看出,虽然RTL图两者是不同的,但是他们的实现都是并行的,而且完全一致。
LDAYtRyKfE
通过查阅相关资料知道,这样的结果是由于软件升级的同时,if-then和case语句机构的优化也随着软件升级,已经不再简单的交给用户的代码来决定,而是默认优化了。
Zzz6ZB2Ltk
<
本实验的结果是本人在quartusII9.1上运行得出的结果。
)
申明:
所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。