|  | 
 
| 
多路选择器(又称为数据选择器)①功能
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  : s1 T! U; S# K: C; }: _: D在选择变量控制下,从多路输入数据中选中某一路数据送至输出端。对于一个具有2n个输入和1个输出的多路选择器,有n个选择变量。
 . ?8 s8 @0 E7 e7 l' o②典型芯片
 : T5 m  t7 B: f- h2 z0 o$ v' Q! N典型中规模多路选择器有双4路数据选择器74153,其引脚排列图和逻辑符号如图1(a)、(b)所示。
 . [% n3 r5 m" t( j, c1 W6 V! c6 j" D% w: M
 
 & S1 w* R! w0 ^" C
 ( C$ g: V: G' I: m- ]数据选择器74153芯片含两个4路数据选择器,每个选择器接收4路数据输入,产生一个输出,两个4路数据选择器共用两个选择变量。芯片有16条引线,其中1D0~1D3,2D0~2D3为8条数据输入线,A1和A0为选择输入线,1Y、2Y为2条输出线,1G、2G为使能控制端,另外有1条电源线和1条地线。
 ! ~* B1 S4 ^- ^5 g; N' R- W. O
 , P5 j! E/ I. H, e4路数据选择器的输出函数表达式为( v* D7 I- ?$ ~8 Q
 
 3 Y: }" |/ [0 d2 P8 s
 % t5 q; {: W( |: ~5 X1 D1 i" A# b0 J. x5 G1 H% _# x
 式中,mi为选择变量构成的最小项。
 ; O$ j0 o7 c6 r+ s③应用
 7 `6 R; j7 i$ q多路选择器除完成对多路数据进行选择的基本功能外,还可用来实现数据的并-串转换、序列信号产生以及实现各种逻辑函数功能。7 ]9 s# w3 u& _0 E4 ]% w# N$ w
 
 9 D3 h" g/ I3 |例如采用4路选择器74153实现如下逻辑函数的功能
 ( \! |' m" \, q  F" F
 # e2 o6 E) I1 K9 J7 k0 x
 1 o! M' |) J2 M+ c( O! k9 i8 \3 t  x2 Q9 P% y
 解给定函数为一个3变量函数,由于4路选择器具有2个选择控制变量,所以用来实现3变量函数功能时,应该首先从函数的3个变量中任选2个作为选择控制变量,然后再确定选择器的数据输入。假定选A、B与选择控制端A1、A0相连,则可将函数F的表达式表示成如下形式:
 # i/ w* a' i3 N- _, x7 s9 S) x. Z5 F: u5 l; h5 c
 
 0 O: a2 d) \$ N0 |. q! w( ^, _( Z
 ) y9 S8 \0 w9 S! ~% I- t显然,要使4路选择器的输出Y与函数F相等,只需:。据此,可画出逻辑电路如图2所示。类似地,也可以选择A、C或B、C作为选择控制变量,选择控制变量不同,数据输入也不同。9 p9 q/ c3 G- ?
 2 q/ z4 P' C4 {( y' s9 A9 `
 ( W9 r4 h0 O8 J- B
 4选1数据选择器的设计1、设计背景和设计方案* {& T+ ^7 x' u, I8 c; n5 T
 设计背景:9 g9 p# W$ p7 r9 }: ]! B3 ^
 
 1 @$ ]4 Q! j. e5 u该设计是以数字电子技术为基础,实现数据从四位数据中按照输入的信号选中一个数,来实现所期望的逻辑功能。
 - f) h& |0 X% T) ^, r) h- S8 F+ D, a  e8 r
 设计方案:9 D" g3 K: \* C2 n, o& J6 x* n
 * G4 K. d' J4 B( k8 S' O
 用拨码开关作四位数据及两位控制端的输入,LED作输出,通过拨码开关组成控制输入端s1和s0不同组合,观察LED与数据输入端a,b,c,d的关系,验证四选一数据选择器设计的正确性。使用逻辑门电路与、或、非的组合来表达4选1数据选择器,通过控制输入的信号来控制输出的信号值。
 & ]5 G8 _" ?1 b$ Z% [5 X4 y( u
 # s/ ^  {$ g( y8 l8 R( J# Z其逻辑电路如下图:6 N/ v1 u! T6 k$ O5 B- W+ G7 _
 2 g/ w9 y: a' ?
 
 3 y0 D( R+ Z. A- T! l( U2 S
 7 w% ?8 f& Q$ C9 {7 ?. r) H8 i其示意框图如下:* ?6 N4 b$ j9 k1 W/ C; Y
 
 " O" _/ v( f7 S5 ~5 ~8 c其中输入数据端口为DO、D1、D2、D3,A、A为控制信号,Y为输出。
 H! ?% U2 C  _5 J2 p8 O, m  f: I6 \6 m. ^% P
 令AA‘=“OO”时,输出Y=D0;: y* T& Z; n# n0 E, K8 v: h
 
 9 F$ r8 z4 Q7 g$ S3 J# b令AA’=“01”时,输出Y=D1;
 3 U; Z* y9 i! x  o
 - h* O0 w& d9 w9 W- O: {令AA‘=“10”时,输出Y=D2;
 . c4 ?( o9 u2 t3 E" D
 ; [4 E# Z! C  K0 T) F令AA’=“11”时,输出Y=D3;
 ' {+ L. U/ M5 H, r% p: J' `6 M! D
 2 T8 p0 B9 s0 b# Y( w3 k
 
 , T7 W& G, M+ p7 I真值表如下:
 $ t$ r1 h) n6 n' {7 C
 ; T0 M9 W; j3 Q* _' U) q4 o8 e& c5 [* Q+ v9 _3 C) o2 M
 
 & y+ X! a& U1 N! z+ @7 `2、方案实施- \, Q: N; f* }  b( A
 (1)设计思路4 @! G* }- M' Q4 ~; m5 _
 - A/ `0 C- G" J. D  g% p
 - W. z# s: S# v# U+ g
 
 + X1 P( P5 ^  k% G9 H四选一多路选择器设计时,定义输入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。这样即可实现四选一数据选择的功能。; X; g2 r1 O8 E$ q4 Z
 , f* `7 M5 R& b* ]6 ~; A" G/ t
 程序
 0 F0 b; l, L6 C* q
 " R' @" a- ^, D0 U/ \( ?% ^5 PLIBRARY正EE:
 * K7 [& w$ A, N6 M
 6 [; H+ b& ~# O0 Z3 G! K( t, hUSE
 $ W7 j! F/ J: z5 ^4 i# k/ f
 5 ]; ]0 O% A1 c/ [6 h  \IEEE.STD_LOGIC_1164.ALL:3 x1 C6 A0 T7 b0 `! ~( W
 # X% O& I; ^- l( R8 h
 ENtiTYmux41is/ Z3 K7 }  h, ^7 V& T6 d) M
 
 " A: d) [" ~1 R1 x. e1 MPORT(a,b.c.d:NSTD_LOGIC:- O1 P8 D& p! E6 `' f! T
 
 . V" _1 }6 N$ S' u5 q, OINSTD_LOGIC_VECTOR(1
 ( d7 H2 ]" f) L' Z8 D- ?7 T& [6 R: b
 1 G, o/ K5 L+ g, {  s$ e& f3 R' ADOWNTO0):: I, b; G+ ]' Y7 x9 q
 # D6 G1 K5 n! u, T
 STD_LOGIC):
 6 H/ _. H+ a5 ]- D' u
 7 E0 w, F; i6 M8 Q/ p  `OUT
 # j. R/ t5 m& N, S. c3 I- R" s+ Z4 [7 N4 z
 END
 / f  c+ c. w( M4 e" l* _
 : _: h7 Q/ W0 v' umux41:7 \& L6 J( m. {! q
 9 Z2 U: b: g. ^, K- n$ T; o
 IS# V# o0 h" K! x+ e9 u* I' O% _9 h8 [
 
 ; R. L7 ^# A& z2 ]( _" K2 ]7 LARCHITECTUREoneOF
 ; t- }' v! l" J/ I# l' ]. |8 }5 Z( z' Z5 x: T2 h
 mux41
 % U: J& A& g" m
 ) C9 s  E; V( c8 EBEGIN
 3 h$ u. e1 N" g0 R& q" S
 - \# n4 f$ e' X) ?  s; ?1 g  o3 NPROCESS(s,a.b.c.d)
 % z" L& B8 F: K) t5 H
 " {9 r- o+ J+ RBEGIN
 . q3 B8 l, h5 y
 : J) Y7 F, a4 L( M  V* ]2 e. WIS. t* x; G1 x+ C' `7 d) r4 g5 d
 ' N7 g' C) d& v* ^. w/ {8 E
 CASES) D; o3 \$ ~# E9 ~4 D/ }) L/ ~  a
 
 ; Q; h+ B- Q$ HWHEN“00”=》z《=a:7 R# j9 @7 l9 v2 p% w$ M3 Y
 
 / P2 ], J3 i3 r5 n+ {- I/ A3 oWHEN“01”=》z《=b:
 ( S- D3 f5 o( D: w9 X9 }
 & z7 g! j. n' }+ F  T( I- bWHEN“10”=》z《=c:3 C( L" T  E) G3 M, L  u
 
 5 s, Q, n: Z3 d1 j; F4 HWHEN“11”=》z《=d:
 9 n0 C0 e  u# ~2 c
 ; P7 I8 U6 w+ j2 hWHENOTHERS=》z《-=null:3 C/ Q7 f1 F$ P
 2 w' Q  O  e# {; }
 END
 , A5 }/ U6 B. j% E
 + Q& }3 X: p% n4 Z; F  J7 y, Z5 @CASE;
 M  b1 z  Z  U
 / e! s) K$ \9 ~8 S" z: y# _+ RENDPROCESS:( ^1 y) G1 j1 l
 ; w/ B* @& Z. S: m. @% k9 L( y
 END
 ; B) X1 }& q) ?. l* _2 C6 G$ Z8 Q7 m7 G
 one;$ J" R3 ]8 |7 L. e
 5 z) w: d" v( Q9 e4 o9 J2 h
 运行结果3 }0 i! H2 ~0 t2 p" N0 _
 
 3 a! m5 k  @' f0 n  M当输入信号“OO”时,输出信号z的值为‘a’:
 " S5 Z$ i+ h* Y- o6 K0 D
 . k  q! `/ ]+ j8 Z; D当输入信号“01”时,输出信号z的值为‘b’;
 3 Y; |9 ^- K: Q- o9 @! n& r+ a) _6 E2 @: c! R$ t
 当输入信号“10”时,输出信号z的值为‘c’:0 H/ U, g0 c8 t7 O
 
 % I' l& P. |$ l7 t& G9 i3 V6 T8 P当输入信号“11”时,输出信号z的值为‘d’:
 ' O( v2 `4 ?( c6 [+ O$ c1 t9 r. p8 a3 G
 波形仿真及描述
 * @$ L# s( K* D: L
 / A" N* b: [- S$ h8 ^输入:; m# x" L+ A# U6 F/ a, g' J$ `
 3 @) ]* \6 q0 B. `- t1 d$ ]- F
 的波形周期为10ns,b的波形周期为5ns,c的波形周期为15ns,d的波形周期为8nsos[1]的波形周期为5ns.s的波形周期为10ns。9 @. l# ?3 u: j" S, e; I
 
 4 N4 v; k3 \/ p: a) ^' _+ z
 + G* ~. {- I. v2 C3 D) e
 : _( [$ ?6 c9 A0 K3 _* V$ h(2)设计思路
 + N9 [* f- B& P' {& O1 \! c4 r8 g9 v4 k" \2 [
 1 Z; P, T# v+ g& o
 |% T* u; R0 O  z, E! h
 定义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。, F& {2 j1 h. w# m, K* j
 
 $ N2 a( u  U- G5 a# |程序0 C2 `# ^& v2 T& _# {5 g
 - {  a! d  l) L( o3 m. d
 USE 正EE.STD LOGIC 1164.ALL;6 g8 a, D8 j2 N$ D0 q
 
 : x" U  L$ m/ c9 l, I" ~9 n6 PENTITY mus41! F2 x0 I' ~2 a7 L9 w
 9 }" m) O2 t) I3 ]& c  r
 IS3 m% W" ]& S+ f1 |* `9 `
 
 5 b& s- X8 H" _2 G2 Y( j(i0ji1,i2,i3,a,b :N STD_LOGIC;) h) e+ f2 g3 v# s- A
 : y* b5 n+ s9 t% }
 PORT
 % d0 j+ \1 O3 ~) t0 r
 ) d( J0 b# I& e7 U' S) Z6 I# z6 k:OUT1 ?: b1 b( n; e1 a5 F, Q8 r! _
 ; O1 c6 P4 N: _* c& h
 STD_LOGIC );' l2 ^* |" t8 G# o& m
 
 0 T' }! N6 g% p. v$ }, n, y" RENS mux4;
 : w6 ]/ E+ l+ U3 u4 s3 |1 x3 o% Z3 Q  l0 o
 OF
 & F, F' O( y9 P% B4 Q6 Q& G% ]! {+ O2 u: r3 v$ G0 P
 mux4 IS3 {4 k2 b# \! u# W
 
 4 |1 v) v+ f4 S' ~) k, }( [* L+ I# BARCH ITE CT URE b_mux4
 ( F5 r1 g% l  e% l6 [% v# U7 k- h/ _( O1 w, d1 g
 BE G N
 $ q  C* d( I( c# M5 ]" H% j+ s* }8 z9 R+ g# i
 Process (i0,il,i2,i3,a,)
 8 t5 q; \- e2 @4 _2 Q
 ; J8 m- F. g/ d6 b# t' ^/ zVariable- z2 \  k% P9 n6 ~7 d
 z% w$ F: R$ h$ f
 0;
 5 _' o( E9 C# t- S8 C, `- M6 F8 ]; n( X, B
 downto
 + \5 |  W1 X5 Q+ o
 + E# {' ?/ O( I2 l9 \musval
 / D+ L4 v/ L& z# V4 ~) o7 b, f
 / q+ {6 `6 p5 a6 N5 d1 m) Q. o:integer rang
 1 i3 x; u: M8 u, M
 9 x  E: Q0 D9 j$ t& O7 zBegin( p% `$ l9 z) N3 k3 [& U) }
 x0 ]& y( H8 I
 m uxv al :=0;) f" Z5 `$ o, t" m( E
 9 c/ u, h$ c1 L$ h
 if (a=‘l’)+ X& y1 i% Q! _: W' B( J0 Q$ \
 ' @( ~7 C/ R* h3 s& I5 J( _5 c$ z
 musval:muxval+ l; end if;- U0 I  l; B. _! b& t' Q; e! M, m
 : K( E2 w8 g8 i3 {
 then* c! _2 w6 w0 @* N. u2 n4 t
 
 9 n& `3 m" W+ c; H! Xif (b=‘I’) then1 R# L, e9 Z/ R: H
 
 * w: h2 J2 k" X0 vmuxval :muxwal + 2; end$ d( Z  r$ w. E% J5 O
 . B  E8 F/ E7 M3 U, T1 X# F
 if;
 ' a- V" i# i- b) G3 E" X
 ; o) c8 C9 P9 Ais
 ! f9 T8 S/ t2 p1 H  Z0 [9 k- I4 e' z' Z
 muxval
 6 ^" ]/ j2 P9 A# \0 _/ x: Q7 {
 ' u) C2 c2 `! {case1 u" ]! `# `$ y$ G
 + W6 @* d/ Z9 N! V& @
 w hen 0= 》 q 《= i0;; v9 h3 N1 g/ c" j, }
 
 ' B2 g3 x: @) `when l= 》 q 《= il;) l0 P% T, F! G3 n( B, c. i
 ) g2 F/ S4 b; N; ^/ {9 X
 when2=》q《=2;% I5 `- O0 v! B6 O; f6 \$ n" `
 
 4 d5 k+ f  q( G' kwhen3=》q《=i3;% t* z, |: S8 b7 R8 P+ M# z$ w
 
 ' _: D/ s9 w# ?/ y" |) I1 Vothers= 》null;; m  k: k4 r; y5 q5 G  U# X9 m/ d
 
 1 r9 M( {+ h5 V4 o4 O0 y6 `When
 7 a) c3 q0 b  z# [& u" H
 9 k0 Y! g3 W7 X  k) O  O! send
 # u4 M7 s+ @2 S/ Z' h
 ) r) q4 g4 S3 f& Tca se;
 $ ~1 f( |% U4 w$ ]% b1 X
 ) I, |, p6 g0 Aend process;
 % }& q7 B; L' x' e8 H* C" {: B4 Z: I( c' k8 g
 END b_mux4;
 ) f/ \" p& f- M) w3 h. I8 C* _% P
 1 g' F6 E3 M9 f& ^: v6 I运行结果
 & Y& V; X; k  h+ m+ V+ a
 & L9 E. Y; c8 r' k; S4 z当输入信号“OO”时,输出信号z的值为‘i0’:' ~( r/ F" S, Z- X
 
 5 J6 h0 F4 s6 {$ D9 _, x* M0 U当输入信号“01”时,输出信号z的值为‘i1’:( h; {+ Q- \6 ]$ n9 n( v
 
 1 K. t# A. M9 O8 H当输入信号“10”时,输出信号z的值为‘i2’:( M; x  J3 O: l, f& t6 g
 
 ; @* \1 |" ~- H7 d$ ~当输入信号“11”时,输出信号z的值为‘i3’;
 ! \8 [7 Y) N0 d0 @1 }0 a" X% O& \3 _1 B$ H- i
 波形仿真及描述. b& F0 K; Q1 O% Y' p1 v
 9 c+ R6 f( G4 ]
 a的波形周期为20ns,b 的波形周期为15ns,c 的波形周期为20ns,d 的波形周期为15ns,s的波形周期为8ns,s的波形周期为16ns。) _/ T8 u- P! u
 & K+ L3 v: J0 O! I
 输出
 2 ^) \1 G: y0 k4 G4 r: Z3 x6 K) v
 D$ ?0 H1 S, q: A0 v
 | 
 |