|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
多路选择器(又称为数据选择器)①功能9 x# @. X+ j7 c
在选择变量控制下,从多路输入数据中选中某一路数据送至输出端。对于一个具有2n个输入和1个输出的多路选择器,有n个选择变量。8 K( k* k5 u# ~, {* T
②典型芯片3 ^0 P4 f0 G; c9 k6 }3 B
典型中规模多路选择器有双4路数据选择器74153,其引脚排列图和逻辑符号如图1(a)、(b)所示。; W: u3 }' t% j3 x$ r
8 |9 h" D" J: `( o2 q# O7 D! f
/ z ~7 i9 ^/ i7 o1 @+ Z1 l5 z9 ~- B
7 d+ V5 K* f4 ~) e% K" l- p数据选择器74153芯片含两个4路数据选择器,每个选择器接收4路数据输入,产生一个输出,两个4路数据选择器共用两个选择变量。芯片有16条引线,其中1D0~1D3,2D0~2D3为8条数据输入线,A1和A0为选择输入线,1Y、2Y为2条输出线,1G、2G为使能控制端,另外有1条电源线和1条地线。) z7 S& o7 q5 v% F; |
& r ?& w; Y) w3 j5 `5 Q* Y1 Z4路数据选择器的输出函数表达式为
# F( p5 z! u7 T# [; j9 a( O" y" h, P
7 |5 m! b1 z6 `6 s# T
/ m. k) v' g3 ^' s$ J7 Z% F0 @
式中,mi为选择变量构成的最小项。
8 s. M. V/ I F! }& n: G③应用
8 `/ J/ K* A# m, H多路选择器除完成对多路数据进行选择的基本功能外,还可用来实现数据的并-串转换、序列信号产生以及实现各种逻辑函数功能。$ K" U" m# J9 ?# H
; d! r$ b* }6 M; J3 u0 Q6 d7 k例如采用4路选择器74153实现如下逻辑函数的功能
6 {- a' G+ b. y# Q, X" m8 X
. t Z/ W1 R& D. f% Q1 M- _ 8 N7 P! t6 \4 F/ `4 Q) p
" K) h; w& W; m; v7 o: q0 {解给定函数为一个3变量函数,由于4路选择器具有2个选择控制变量,所以用来实现3变量函数功能时,应该首先从函数的3个变量中任选2个作为选择控制变量,然后再确定选择器的数据输入。假定选A、B与选择控制端A1、A0相连,则可将函数F的表达式表示成如下形式:
6 U C* I7 H* u% P7 S5 M# M8 M8 ]% q! X+ [
$ Q& S* \1 Q/ s: D' ~1 H9 M' D
4 e9 w4 V0 X* u1 x显然,要使4路选择器的输出Y与函数F相等,只需:。据此,可画出逻辑电路如图2所示。类似地,也可以选择A、C或B、C作为选择控制变量,选择控制变量不同,数据输入也不同。
& T" B' I8 q% I; t9 ~4 p
+ ?# {) j/ u O 5 g) N9 A+ q% e+ c5 [
4选1数据选择器的设计1、设计背景和设计方案
1 f% E( f! [" E: V& w设计背景:
" O+ `0 _& V+ d/ c4 { N0 i
: D, a2 X1 w& i' v; C该设计是以数字电子技术为基础,实现数据从四位数据中按照输入的信号选中一个数,来实现所期望的逻辑功能。% \( ?/ Z/ a; W o K0 M7 F# H# I
& `) ~9 a. V1 P' w
设计方案:1 S5 i+ C& r' @, Y0 {1 t4 _
" X# H) G7 H* _' `3 V4 {3 K
用拨码开关作四位数据及两位控制端的输入,LED作输出,通过拨码开关组成控制输入端s1和s0不同组合,观察LED与数据输入端a,b,c,d的关系,验证四选一数据选择器设计的正确性。使用逻辑门电路与、或、非的组合来表达4选1数据选择器,通过控制输入的信号来控制输出的信号值。
% T, K3 p5 y: S" b# i e: W
7 P+ c8 N+ | R* [/ H+ K其逻辑电路如下图:; F6 Y: j0 @0 Z5 Y
% S* o+ `, Y4 |0 z- ~, \
! c, f+ T; Z" N" V8 n3 y! T/ x; T
) s! |/ [& u8 V6 x( x其示意框图如下:- r8 e6 u. W" Z8 q- l
6 i2 w5 T A6 e
其中输入数据端口为DO、D1、D2、D3,A、A为控制信号,Y为输出。4 y# k$ c# u2 G8 R; M5 D5 l' ]
_8 O/ a3 u( W" r. I& `0 S- D
令AA‘=“OO”时,输出Y=D0;
2 e& o1 q4 a* C9 ^2 R) N& k
5 i; K& A" U9 ~- i令AA’=“01”时,输出Y=D1;2 f; L8 \4 e& u3 m( K9 e+ N
& j( n* h/ Q* k% P. a令AA‘=“10”时,输出Y=D2;* E. M; V7 N+ @0 Y2 F8 j5 E2 _
) w1 }# e6 p; |! @ R令AA’=“11”时,输出Y=D3;- `% ?# x) z/ h- H
5 N6 U; D3 u S4 F4 E( Z5 n
# @4 y2 I( R& S
2 |2 f. ]. J* m2 a) w7 B! N+ `真值表如下:
' m/ |# w3 v: L; `) J& D- E% z2 j* f* z4 R+ L" h& v# n, \
& O$ K5 Z1 X8 F! [- j( `& `' t ( x% E6 @# s9 K9 H* M: _
2、方案实施* m9 ]' r" O- k8 h# t% r
(1)设计思路
7 j! k& r2 L4 [; v( |2 d) p- |0 L1 g8 [% i" H
- U% B1 ~: c, M# g( t3 q$ d! Y ]' k& b B- K
四选一多路选择器设计时,定义输入s为标准以内漏记为SIDLOGIC输出的信号Z的数据类型定义为2位标准逻辑矢量位STD_LOGIC_VECTOR(1DOWNTO0)。使用LBRATY语句和USE语句,来打开IEEE库的程序包STDLOGIC_1164.ALL。当输入信号时,程序按照输入的指令来选择输出,例如输入信号为“OO”时,将a的值给z,进而输出z的值,输入信号为“11”是,将a的值给z,进而输出z的值。若输入信号是已经定义的四个信号之外的值时(即当正条件语句不满足时),输出值为x,并将x的值给输出信号Z。这样即可实现四选一数据选择的功能。
/ m& K. ?3 {* i1 H5 I3 O f5 C0 x- c. X' ^
程序* J: O1 n# R7 {
s/ w, k4 n# N1 W+ k pLIBRARY正EE:8 n, x4 v ?; {& Q4 r, `& t
3 q' F* q( ?5 |0 ~7 \- e
USE2 j: r1 G7 L+ W" E4 c7 U
; V4 }& N" f( P) i# _, w
IEEE.STD_LOGIC_1164.ALL:* ~3 I, T) j/ W8 a+ w* ?* W4 W
9 F. d( I5 e$ t% l8 NENtiTYmux41is. |0 T/ D0 F: q4 Q$ a! J
8 Z) ^8 S2 i8 FPORT(a,b.c.d:NSTD_LOGIC:
( Z: \4 m, [( ]3 X2 z+ C0 V/ x) o% S; { S6 p% c9 g' i" R1 a
INSTD_LOGIC_VECTOR(1
0 t( A- j" ~: k$ s6 O. z5 V! Q+ O; E3 N7 p% W2 o) b+ P
DOWNTO0):
9 p! h/ U! T& g2 C
. H- w" S! a+ p+ X* q+ V! HSTD_LOGIC):
* [! _9 U r. l8 w
2 O! O+ c1 ]0 `/ U7 t8 N h3 NOUT
$ I! ^! z! C N5 c
3 r0 _, f( N9 U; X% j6 `END, M7 b, a8 b4 x$ a7 O7 G( d
# Q: V( n% M9 q6 F& ]mux41:, B$ Z+ l2 Z" y: }/ w
5 j; {8 o2 t) [5 H# F9 mIS* V6 n) }- ~+ b( G8 W8 l3 c" Z
8 X% U" a- J! @- o+ ~+ u
ARCHITECTUREoneOF' A U; A5 |! N, s
: U& j5 i; W) Lmux41
9 @; v0 ?* {3 e4 {" n& ~% @1 m5 s+ R
BEGIN% A4 ]1 N; b/ d- ^- L
/ F+ q* |: n9 bPROCESS(s,a.b.c.d)* y; L& X: {' o) E) [6 i
5 y( D( n1 c# t7 ]# iBEGIN; O1 l6 V6 r* L( s: r1 d# |2 ^/ y
0 p& z' ~3 F( V- W) a0 TIS
. e% V! l2 e" {9 n# X% e$ n: G) A7 x( l$ C
CASES g" A# J: g/ J' P. B1 X
9 n) x' a) |' x! O0 B6 T( W
WHEN“00”=》z《=a:
- l' K8 ~1 @# ?5 D, I" U9 j5 F/ I) K5 d: p
WHEN“01”=》z《=b:
7 }2 `2 ~2 U9 c7 h2 B7 U' H/ E" G7 g0 m* k9 q. ^( c
WHEN“10”=》z《=c:
) f& o1 n8 P$ a0 m0 u" J: X( w# C; c7 f8 p5 ~. ^" D
WHEN“11”=》z《=d:
$ T, f$ L* o) ]6 a( D5 E) O. f& M8 s$ F) l6 D
WHENOTHERS=》z《-=null:
5 N: Z* a7 W0 @, {4 I! Q' {- m1 ~' }( H; V7 ?
END
8 Y' ?% T) F( n5 }* R* q2 L3 V1 u- p% p) @: M
CASE;
$ k! ^" z; Z$ K- ?7 Y1 v' j
r; M$ E/ h7 E' ?$ zENDPROCESS:( u" |3 H: u1 ?! Z% G8 r
- l' u1 s u, p8 PEND
6 _- G% h% _+ _; Q U
. _1 G6 [' F. E8 k5 w& sone;
8 }5 \, {+ [+ C0 s3 z+ Q8 k3 R1 _7 Y" u9 ~! p3 K9 k& D
运行结果( ?+ ] d( t% x% W7 J
! F4 J, ^4 W7 V: t% q当输入信号“OO”时,输出信号z的值为‘a’:
/ q2 ]: T& h6 u) g
|. S( [. Q* n, O当输入信号“01”时,输出信号z的值为‘b’; |, @ d" h' Y" D% `9 f1 Y1 g
+ e) o; V j0 u$ i3 C7 @
当输入信号“10”时,输出信号z的值为‘c’:
% i% A: n; l6 X( V. H' ^
Y) j* }3 |8 {- [: S当输入信号“11”时,输出信号z的值为‘d’:' h! Z" f6 B0 N7 ?) ^& x; \2 _
4 V5 _# @3 Z! D' v/ U: p波形仿真及描述! @2 Z2 Z% I' G# P& [5 G! A
+ R/ C0 Q; o; ?9 b6 ?% K4 o- S
输入:# a' t: ~* Q# Q1 r2 ~! Q5 Y
( }: R; |. m j* s" ~
的波形周期为10ns,b的波形周期为5ns,c的波形周期为15ns,d的波形周期为8nsos[1]的波形周期为5ns.s的波形周期为10ns。* v6 v: w1 _. l& @- ~
) d) j, f r7 q) ]5 z: ?& b
7 c/ t& _6 J. o" h3 C9 p6 Z- e9 d6 ?7 f6 P, o! m
(2)设计思路
% g# k+ X8 K/ @1 O& b W. ]% C1 b) J5 {9 t( y
% n ^- f+ W1 c& _- @- }
& w2 V- u' N8 n2 L h& c* w定义6个输入信号,一个输出信号,当控制信号A=‘1’时,muxval 的值加1,即muxval=muxva1+1当控制信号 B= ‘1’时muxval的值加2,即muxval-muxval+2。当输入值为‘i0’时,输出q的值为0,当输入的值为“i1’时,输出q的值为1,当输入值为‘i2’时,输出q的值为2,当输入值为‘i3’时,输出q的值为3。, D4 f7 Z) w, R0 ^. p5 u9 M5 |. }
0 j# l1 @, T6 @/ V5 w, }2 [; j程序
8 b) C+ l1 @6 w7 z* B$ B6 O/ s) j" m& V. A: J/ k S
USE 正EE.STD LOGIC 1164.ALL;8 A' g" J8 B3 X3 F$ j- p( C9 t i0 u2 r
) m4 y, }' Y6 m3 U
ENTITY mus41
( F. b! [$ u1 E: C" a( T( @; k
IS
3 X/ b; ]& q/ J* J1 `0 e8 j
7 z0 ?5 \/ @! h; r8 {" `( N(i0ji1,i2,i3,a,b :N STD_LOGIC;, q, l4 p: W2 U% t! v- {% Y" j/ ~1 T
' B5 `4 V1 ?# w% A1 g9 T: ~
PORT! ?# A( Q, b; ^
# v, T* L8 |7 D
:OUT, O5 k P8 h9 `6 c( d
/ h! l Z) ?& [* Q/ G- ASTD_LOGIC );4 z- p, H' j- Y0 C7 p, }/ D
b; {+ n) g7 yENS mux4;
4 [) E5 q4 {/ M' D
" j. ^( [: U4 r3 b+ O yOF5 V7 G5 b9 b. u$ K
# j* W# _* {: z+ ^. F& p. [
mux4 IS
0 x8 l: e7 q; |4 J4 E3 f* p4 F3 P6 d& ]4 V8 p n) }# ]' M1 |$ f6 V
ARCH ITE CT URE b_mux4
! D' \, h4 X+ q5 i6 a
; ^) U. k1 J1 RBE G N
. v j4 }0 g; k$ A; i# o* I: p( c1 a
: ~$ u v* T- p3 ^2 ^, E: t$ I" V* KProcess (i0,il,i2,i3,a,)
- ]! y' u$ \9 W* |# T, ]8 z9 g- y! w0 H4 n3 l; `' }, \1 w5 v3 j0 X
Variable" U1 t4 V( R0 |+ J6 }
$ |0 R0 s3 w5 t6 V" n0;& W3 ]/ `* y5 C
; z- o, Y; n4 N5 x
downto
+ R+ J# I% R/ w: m3 Z% {
% x5 K( |$ \' ]1 d" ~; lmusval1 H. ?$ i, U9 v/ C* Z& z) t1 f
- m8 N" N( z1 H0 |:integer rang
2 `# k5 @ c) }! @1 J: u
3 U; P w% t+ ?$ S& a9 _Begin0 i H" a% N8 i8 D
. |( T" P, E# _) t3 B: A$ i
m uxv al :=0;7 ]* d7 U) |6 ^
5 Q- p- b: }" c; d$ S- ? C) zif (a=‘l’)( E4 J/ ?6 s, z7 b( n
; c( ]: \! z- U
musval:muxval+ l; end if;. B" h$ ^5 B: g
3 ] R& Z3 X. h% G) ~% R+ ^0 v1 W1 |6 p
then
9 {# d( X6 l% C/ V) k9 s4 z8 o9 F$ c/ b* f5 e4 Y) v2 h' q
if (b=‘I’) then
2 f/ u9 F8 T' M$ N5 `
' `6 i5 c. A9 C# Emuxval :muxwal + 2; end$ A; Q! Q2 y5 C2 }
5 [6 ~& X; W; B- d
if;
7 j6 X; B. t4 F+ Y# Q% R9 a0 B- h8 K! E( W+ C( |9 I3 I
is
6 s! U+ B% M4 o: G! b: x
- \; c8 n q$ Zmuxval
- h+ I4 i" Z7 v+ `
- l* S$ z$ W) Z1 Fcase+ B, ?% Y+ K. m' \& c" u
0 F" w' q* |0 B9 a" A6 Q# F
w hen 0= 》 q 《= i0;
9 L2 @% P y; p1 c& N8 \! Y* H0 w9 f# t2 x3 G( I
when l= 》 q 《= il;! o0 y, k" A z1 C. J- i
2 i$ J Y" ?3 R
when2=》q《=2;. ~* Z: r+ h* R/ N* a* Q9 y
. o0 b2 z+ g/ ?3 p( T7 Wwhen3=》q《=i3;
3 {0 ~+ D9 O* F! V7 Y0 I% b b( E. R# O" n! z, a' N
others= 》null;8 m% ?( f. C& w0 ~- \, F2 O) q
7 x: f0 g1 F8 N4 [2 m5 QWhen) T7 D+ Q0 W4 u/ j. `
1 a9 s* q: h: _3 s* P
end. y! E4 d4 s- h( b7 x5 L7 @
8 K1 s0 t6 y- K6 g- v
ca se;, o) z- D/ M; s
8 Y) \/ b0 X$ \8 f; {* h( i
end process;
% O* }6 ^0 |+ ~3 D/ }4 |
0 v' U! K1 b& t' Q& m9 ~) ]END b_mux4;
4 X% }& d! A3 w/ K( W: {
" y9 I3 B) {! e2 K( K# G运行结果) M3 q8 j, C+ d* H) Y
& N. y5 k0 n9 A* e% A o5 i9 r4 s当输入信号“OO”时,输出信号z的值为‘i0’:9 a, a* Q, i$ r% \! X
8 [; c7 n" J% Z/ Z& K& A3 y当输入信号“01”时,输出信号z的值为‘i1’:
& O& \! [* {! b
' k8 K( M* Y _6 ], _7 z" V0 z当输入信号“10”时,输出信号z的值为‘i2’:
( S: r' f' w2 v: U& Y# M, H" E9 b
+ m0 v, o$ t' X1 a7 J+ z当输入信号“11”时,输出信号z的值为‘i3’;+ U# a+ N5 A; J' r
, q* r% F, v% w) }0 o. a波形仿真及描述
s1 Z' w3 k. n8 C7 @7 l
, _3 R* G' d# G& O* Ga的波形周期为20ns,b 的波形周期为15ns,c 的波形周期为20ns,d 的波形周期为15ns,s的波形周期为8ns,s的波形周期为16ns。
9 u' K$ m' T: M6 a
+ l1 e$ \" k; O: f/ A输出! ]" \$ r- q9 |/ U
* M; ^1 G( i* M/ ?
: \- U% ?( B9 x; t2 L2 K9 I J% _ |
|