|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
多路选择器(又称为数据选择器)①功能0 M* P3 x* |* i) \
在选择变量控制下,从多路输入数据中选中某一路数据送至输出端。对于一个具有2n个输入和1个输出的多路选择器,有n个选择变量。
- d, f t# y( T2 P D②典型芯片
/ a8 f t/ t J典型中规模多路选择器有双4路数据选择器74153,其引脚排列图和逻辑符号如图1(a)、(b)所示。5 x; d, _0 s- x
7 P. C& b) q" P& A
* d/ u5 V1 _2 ~/ F
0 [+ ?( y3 a* s% S; h S& s数据选择器74153芯片含两个4路数据选择器,每个选择器接收4路数据输入,产生一个输出,两个4路数据选择器共用两个选择变量。芯片有16条引线,其中1D0~1D3,2D0~2D3为8条数据输入线,A1和A0为选择输入线,1Y、2Y为2条输出线,1G、2G为使能控制端,另外有1条电源线和1条地线。- _2 Z! i7 G$ b
7 n) t1 X+ J8 v
4路数据选择器的输出函数表达式为
) p% q* S3 G' G- t! m4 P U/ a) H3 V
v. ?- l& u/ V% r' u U
* ]4 o) p( A% }8 L `3 w, C4 q7 e& F式中,mi为选择变量构成的最小项。
" n; p% q, o- [% i③应用
2 x [" p X4 c: |: ?6 I多路选择器除完成对多路数据进行选择的基本功能外,还可用来实现数据的并-串转换、序列信号产生以及实现各种逻辑函数功能。
6 \3 J1 c" v' D. v8 Y. k' R& _7 u* W
( ?% x8 u5 w* \例如采用4路选择器74153实现如下逻辑函数的功能3 ?& w0 U; [: q0 @# \' \+ ?" r( \
; @$ `/ e$ \) q0 R8 R( r4 Z. l! A% y! i& d
# I6 w/ q& d9 ?4 s
解给定函数为一个3变量函数,由于4路选择器具有2个选择控制变量,所以用来实现3变量函数功能时,应该首先从函数的3个变量中任选2个作为选择控制变量,然后再确定选择器的数据输入。假定选A、B与选择控制端A1、A0相连,则可将函数F的表达式表示成如下形式:/ [2 E6 t& m! I2 t1 ?( L/ y( ^- M
8 |7 S& c: X7 e% H4 F
. y. w6 _! A0 _3 y% D% n, U8 H% P* Q
$ r+ r# Q7 i) f( c
显然,要使4路选择器的输出Y与函数F相等,只需:。据此,可画出逻辑电路如图2所示。类似地,也可以选择A、C或B、C作为选择控制变量,选择控制变量不同,数据输入也不同。
( |/ A& b3 t; A" c/ `
: p1 ] {+ [$ B. q4 c% }/ q
2 D4 }1 u. x9 p) i3 I, W1 U7 x4选1数据选择器的设计1、设计背景和设计方案
! O) L; c: @ G5 t# W w0 V设计背景:+ o; ]! r$ y0 }4 b( C
7 }( e4 c1 _# J& I q9 U
该设计是以数字电子技术为基础,实现数据从四位数据中按照输入的信号选中一个数,来实现所期望的逻辑功能。7 S# l, s- J1 b1 E) S7 B
$ X4 Z6 _! x% C' j8 g
设计方案:7 J8 x' i( b x7 V0 m: t
1 l8 ^# q4 k5 H; @" |3 A
用拨码开关作四位数据及两位控制端的输入,LED作输出,通过拨码开关组成控制输入端s1和s0不同组合,观察LED与数据输入端a,b,c,d的关系,验证四选一数据选择器设计的正确性。使用逻辑门电路与、或、非的组合来表达4选1数据选择器,通过控制输入的信号来控制输出的信号值。
% o; G4 j# N0 [# A& P3 [
& F* x$ T O2 E% u, }其逻辑电路如下图:+ x& p9 R1 V$ |7 N, r( u4 Q
3 g3 F# [& a' F3 j( R/ m
: o: C+ J, @4 ~+ s6 T# h
# s3 U% j9 d6 ~! j% p( J7 D/ \其示意框图如下:! e; L, ~& Q& D, S
& j# F. H' C) z1 k4 b! T
其中输入数据端口为DO、D1、D2、D3,A、A为控制信号,Y为输出。
v; m! ], A$ U0 I
8 g8 C) }8 {" Z. h# T令AA‘=“OO”时,输出Y=D0;/ k A. U4 R [5 Z& ^2 D& D# H
) Q; _& t- t, M" L& H2 K令AA’=“01”时,输出Y=D1;; K4 ~2 a! d# {7 c
$ c% D) [4 ]0 n# [& O7 e6 i) h6 }
令AA‘=“10”时,输出Y=D2;5 F. r& j0 D% j: F
0 g6 A& p$ q' o6 @令AA’=“11”时,输出Y=D3;8 N2 b0 b& H3 m. ^4 E) r8 p0 w
4 v. g" Y" \& U3 w5 m
! h7 R1 d- D1 r
: V4 D. R6 E* o1 F真值表如下:
5 D7 d9 t4 x% b
4 y% O1 d# n. O9 L- C y- A( g3 V3 m1 \1 t& G5 { q2 g8 D Y
5 p% }3 |9 }$ S! k: ~
2、方案实施
+ x! Q Z! F, [0 `+ f& g; O(1)设计思路3 b2 C, A/ @8 Y
! x# w1 h a# z9 @! }( ]
! \! p1 @6 N4 ^: J( p/ T/ G' ^$ o+ S& @1 {# {
四选一多路选择器设计时,定义输入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。这样即可实现四选一数据选择的功能。/ ]4 P9 Z$ R3 [$ h
: n* N. _2 F" M0 g" t
程序
; ?# ?: A' n" H8 d2 F7 d5 `
6 Q* v2 ]% j! o; m: ^LIBRARY正EE:
o% n& l: N+ J F% c* Q7 h G0 O1 o; I: |0 U3 U
USE
9 S# q, J: h3 t+ t3 i5 P
( m- F" Y. w; n; |IEEE.STD_LOGIC_1164.ALL:
( \; g$ b' Y( E W. k, c+ J
1 f5 [5 J" r# SENtiTYmux41is& o* z( j# [+ x& J: h7 a U) i) i- f
) @# P3 Y+ `* Z
PORT(a,b.c.d:NSTD_LOGIC:
$ ]2 z1 R9 C, p8 w! ]" F- U+ U, H
' L, v/ C& \) ?' h6 zINSTD_LOGIC_VECTOR(1
& ?8 c4 W4 X# W6 C: J8 z# U4 W# ?9 Q; F1 p6 A& H/ P/ L
DOWNTO0):
( p8 @% H; G& E! U
1 K. y( ^( k& o% Z: t' w; a, x# eSTD_LOGIC):
& i: {" i y( H5 ?1 W/ @0 {5 K
6 T9 J f; \: x/ dOUT
5 ]7 y% T! N5 h# r- m
" Q- f- f, M: l2 REND
w p1 [% h/ P! |7 S: |! c/ _+ y! u8 S3 n% G- a
mux41:
: m1 k8 W& i9 [& f Y3 ^" o" e& h V x9 Y2 f0 p ]9 g
IS
4 v' Y6 T5 J3 p3 `! E* y# j, o5 l$ b$ T4 ?$ W6 N" \( M) S
ARCHITECTUREoneOF* p: T. ?0 F0 G' p1 k# W% ]: ?% A# r
; |1 r/ Y* g3 amux41
, ~5 |+ G; E# M1 v1 q3 X8 g) Y* ~: C9 l0 ~) D* ?% x6 B2 v
BEGIN- J# s* @* Z" H b7 o
3 c9 K5 |+ W- n5 ]1 M \
PROCESS(s,a.b.c.d)& R- u( ^/ G1 s( F4 V; [5 \
/ j) _- U, Q6 D) y% F
BEGIN$ C! J* ]$ _, a0 J1 T. D
]! ^8 Q# T+ X
IS
- R" s6 Y1 i2 ~/ f& p" i4 N/ f" q
( n" ~( k& H- b0 L, i- mCASES
. `$ E8 b. k; |' K q- Q8 A* x
& T# _1 c! q+ Q$ [WHEN“00”=》z《=a:) N4 \1 s" ? b8 V% S. v7 r* ^
1 Z' W2 {% e. b5 [$ B
WHEN“01”=》z《=b:) r6 q! F, @: Z" k: E2 x9 Q/ X
$ M7 }8 h: s; Q! R+ ?3 d
WHEN“10”=》z《=c:
# r- Q& A* m, `1 l& Q
' }$ _9 P) I; ^1 ]: @1 cWHEN“11”=》z《=d:* S- v4 K& F* m& D! q% X
5 s% \: [9 h* W" D1 K0 S" @0 Q& e0 z
WHENOTHERS=》z《-=null:
& e' _* q r# A9 \: ? i" R6 B
. J; \& A* n: R1 a; xEND
1 U; E9 T+ j( r9 h( X7 @/ v9 o& M8 P, D- h- y
CASE;' W! b; ]# s* N
3 R6 R3 O& ?- N. _; y: U' lENDPROCESS:
1 x% S9 @, i9 i z m% Y! i& O5 l
# p0 Y! L1 S$ pEND [$ f! g+ |, U6 Y% ~
0 u/ _" Q0 p& K6 Q2 X5 Zone;/ m* q, b/ l, r$ c6 S' ]
8 D3 J$ x$ V" k) T. D运行结果
7 ?) p/ H6 r6 [( I( d! @) A7 s
# Y; e' @# }3 y3 x( u" w6 j3 O J当输入信号“OO”时,输出信号z的值为‘a’:/ T+ j& \; M d5 Z9 V
0 \, {: h" q5 _) b当输入信号“01”时,输出信号z的值为‘b’;1 X. S4 q& h% c) M: L
9 F/ E8 c5 Q& C; F2 ~
当输入信号“10”时,输出信号z的值为‘c’:# ^: b" y' G: R3 K; t- O
; S2 |& A; a) |6 h2 D! u
当输入信号“11”时,输出信号z的值为‘d’:
& x) h" c( p* B' [' l5 Z
/ g- E0 E3 Q( o2 b1 } F$ F! i9 W波形仿真及描述
9 M. R5 }& f b0 N3 `* A9 O& @- H2 l3 @0 L: \ G' Q& W
输入:
* {, }: y! v: L* M8 f3 Z j: A) @. ?8 q* ~0 ]1 H4 T5 j
的波形周期为10ns,b的波形周期为5ns,c的波形周期为15ns,d的波形周期为8nsos[1]的波形周期为5ns.s的波形周期为10ns。
* Y$ X o0 h9 z8 N! Z
1 Y% O& }0 N- U+ e3 N: ]) Y
) R& I" o( J" _8 W2 ^5 H% J6 T
8 }9 y3 P3 V9 n% m9 x; \; O(2)设计思路2 x8 |( |* e* u9 c
/ G( L0 i |( W3 V2 d: S$ o, r
" n! t U) P Q3 U8 `. A
# J4 w" d0 H$ k9 \& W8 Z* M定义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。
Y3 E# y4 N8 s. M! e3 o5 I- A9 X _( h" l- r+ S
程序
" [3 y* c: o* u) v
9 O. j5 @, ]% l% Y% n: LUSE 正EE.STD LOGIC 1164.ALL;/ V2 C( O0 C9 {! N' [$ v
: ^& V% [; D- N5 y: k
ENTITY mus41/ X5 n8 D/ a a9 v* J) J
# S' r3 t, \2 Z' x; tIS
, e/ |$ z8 c+ D5 C; S2 u* l+ [. }
(i0ji1,i2,i3,a,b :N STD_LOGIC;% [/ G/ E$ J; Y, u
6 j, } u' X8 FPORT! q0 g" G/ A- u1 q5 e, Z% O
5 q3 L2 b( J3 W m
:OUT
1 N) ]0 f( b/ T1 S" V) k
! V3 b8 h$ v5 z9 I7 q# r$ _' Y8 bSTD_LOGIC );
, Y; a, p5 _+ v. J1 y9 ?, z* c8 M" y5 H, y# S
ENS mux4;# i) q" h3 A9 |) D) M O/ e6 e% ^
- V2 ~& H4 w2 B, x6 L
OF
9 Z0 w( G# |, r E) X7 t6 l5 l- D
2 ]) H% A. y1 k$ N" O+ V4 ]: ^* omux4 IS
4 `3 L- c. H8 X1 R6 i+ }' Y) l- P, o, W+ i. |0 D. t
ARCH ITE CT URE b_mux4
2 ^/ W. q- s+ {+ i9 O" V0 e+ n, Z5 v! G
BE G N
6 \9 d' C9 _8 t% M2 a6 F [0 V8 ^5 B# N, G+ h: c8 v
Process (i0,il,i2,i3,a,)
* C7 ?- J) L/ y9 W7 D% R3 l, k' J- ]2 Y) f. X6 _: X/ c/ a" `
Variable
! b) V' m8 K% I7 @6 T+ M1 i: P# b- P$ b- J, T) ^ S
0; Z: q0 D! F f
; w' {: M4 S( M: W$ q! ^
downto5 P) ]' D) {, ^0 e
$ c* ?* d! p4 m1 i G6 ^- q
musval# j! ^" [, j$ k4 _1 D
4 U5 b; `3 Q7 k) l; @' {4 {; I2 p
:integer rang# ~8 [5 A d" m2 n; S. }
0 n8 y9 Z- Q5 n. \* {! J3 l
Begin* y/ ~ c* d; w( [$ B6 i
# H" a9 Q, ?* R& Q6 n& e9 I% }m uxv al :=0;
O- [0 V4 [# w1 {4 I0 l" [0 t1 \8 ~/ Y8 K4 Y+ R- ^% n) r2 R
if (a=‘l’)2 F; Y* F/ ]: Q6 u
9 D2 ?$ `! T8 m* Ymusval:muxval+ l; end if;
( ^0 Z$ a+ P5 b$ ~# k
; r. v) y& N: N9 X8 [ \- m2 Uthen+ C7 H$ i4 o0 W4 h, J
0 G' k M" r1 @if (b=‘I’) then
, H9 b/ N: W/ X$ R" p) Z2 W
9 u, j" R! _; ^ z: d1 i/ L0 y) Rmuxval :muxwal + 2; end8 l6 [7 @; h0 m
" |5 V) ?7 }5 i- ]5 o% o% rif;! I3 d4 \8 o+ g/ U \. G8 |+ U
. @) a J8 J8 W
is: K% B1 v4 Q) K# Z) [0 j+ Q
; ? j' S& }- K- p$ d* e" H! ?muxval
& f* ~) n/ g+ g" z& a* r9 X
; V# |; W7 ^ N5 P) Ocase
' O" N A0 I9 V# j
# |2 `: q) n6 W& n* Hw hen 0= 》 q 《= i0;
5 {- w% \: T6 y* Q" y6 z% c/ f A2 D+ [+ X& S# B5 x* }
when l= 》 q 《= il;
- J9 b9 e s! p+ w4 c4 Q$ f
, ]% ? U' o2 S: X! I7 y: c! z9 ]when2=》q《=2;' k, E& U# {4 O
: ~8 a. o' ^: E/ S1 w, @3 O1 j4 ]
when3=》q《=i3;
/ X3 j8 K* d+ d7 T4 P1 s: F5 V" O" E2 l+ ~ ^
others= 》null;) O$ X6 W p+ v0 X2 y- h6 o" l
; b/ J. T1 W' J0 `
When
( i H/ r n7 q( y1 z; a
. e) a' j z0 D! h* o+ Kend1 r! u1 @" U5 Q2 ]7 ?: q. Q0 Q8 [
- q) ~. _0 f9 b* Z
ca se;
8 k5 a2 Z7 q7 B `4 c* B5 ?) l; c5 H3 |. m4 V" m3 H
end process;
4 a s" _1 f- T H# o5 P
* l2 i7 \( X0 nEND b_mux4;' P' s2 O- T/ P3 E3 a* r
- U9 ~3 U' l3 W
运行结果
3 v- E" J3 \( i) b D3 B
4 a1 k% S/ z* ^2 p当输入信号“OO”时,输出信号z的值为‘i0’: l. O$ n3 O, C$ \4 {; \
@( A$ T; C$ J& r9 t0 ]
当输入信号“01”时,输出信号z的值为‘i1’:
% \0 {4 L6 q* X$ V3 H
/ O( @1 X7 X8 v% P* v4 o* _当输入信号“10”时,输出信号z的值为‘i2’:
0 W$ R- j+ J' A6 L5 {6 h4 J7 k4 J, t3 u- G
当输入信号“11”时,输出信号z的值为‘i3’;, S. M$ X4 \7 G/ l$ [5 \" B/ P
# B1 x, n( r! l波形仿真及描述
4 H- V2 z4 t5 I6 S: G0 ^$ J2 |' Z
. _$ A9 a. ?; i% va的波形周期为20ns,b 的波形周期为15ns,c 的波形周期为20ns,d 的波形周期为15ns,s的波形周期为8ns,s的波形周期为16ns。& U1 x S4 m4 Z3 v
6 w5 k/ P! i3 [, b/ X. F2 C输出5 c3 E6 A% }9 S- V
- v/ s& b& k' I5 j |
|