|  | 
 
| 
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  多路选择器(又称为数据选择器)①功能# F' o" V7 l; w$ |4 L' D
在选择变量控制下,从多路输入数据中选中某一路数据送至输出端。对于一个具有2n个输入和1个输出的多路选择器,有n个选择变量。6 y! B' H+ i! `$ T" v' e4 z4 w0 j  b
②典型芯片
2 ~$ g( I6 p: ?0 \0 u$ u典型中规模多路选择器有双4路数据选择器74153,其引脚排列图和逻辑符号如图1(a)、(b)所示。2 c. R& C7 v! k% w* e
- j: q+ Y/ }# S  l; E8 ?0 C
![]() 3 \5 q# Q6 h- s/ n; N" ^$ t" P+ q$ B; z- b
数据选择器74153芯片含两个4路数据选择器,每个选择器接收4路数据输入,产生一个输出,两个4路数据选择器共用两个选择变量。芯片有16条引线,其中1D0~1D3,2D0~2D3为8条数据输入线,A1和A0为选择输入线,1Y、2Y为2条输出线,1G、2G为使能控制端,另外有1条电源线和1条地线。( _. J% y. l; e, [' m# r. _6 }
9 O7 h. C7 s- n8 x9 n1 }: q; j4路数据选择器的输出函数表达式为+ Y) ~0 p0 C& p  n4 q! ]
  S! a  F  G, R$ n; P) W; P ![]() / k9 W+ l& Z0 C8 ~: L* }
  }* {; k- y& O7 l4 F) j  W式中,mi为选择变量构成的最小项。, D5 U/ _$ @0 G/ ~) i* o9 N
③应用
! b" G# F% C' L多路选择器除完成对多路数据进行选择的基本功能外,还可用来实现数据的并-串转换、序列信号产生以及实现各种逻辑函数功能。
  N. b4 P" j; ]
2 D, w9 i- m7 k; }" O& h8 ~例如采用4路选择器74153实现如下逻辑函数的功能* p! j( g, u% M# Z- x( k, ^, N6 i
1 b. m; {& _) q6 k7 e* e ![]() , `) v+ p* @# w+ n6 L' K
% O0 `) Y  p; ~解给定函数为一个3变量函数,由于4路选择器具有2个选择控制变量,所以用来实现3变量函数功能时,应该首先从函数的3个变量中任选2个作为选择控制变量,然后再确定选择器的数据输入。假定选A、B与选择控制端A1、A0相连,则可将函数F的表达式表示成如下形式:0 k# J' Z. z  o% H
* O; P7 @# O- k% N* V) O9 Y1 i ![]() 8 D& g1 g8 {6 Y/ R6 s9 b3 I- D
* V/ o  a, ]0 d9 {: o显然,要使4路选择器的输出Y与函数F相等,只需:。据此,可画出逻辑电路如图2所示。类似地,也可以选择A、C或B、C作为选择控制变量,选择控制变量不同,数据输入也不同。
$ r/ G' ^* m4 e8 k0 s8 v) F, j
: N" k7 r1 Y# I- C8 e) c ![]() " \& |* I. Q1 s
4选1数据选择器的设计1、设计背景和设计方案/ w: I% a2 d  T# m% ], x0 U
设计背景:; ]/ N+ K9 x: m6 l1 w+ H2 V) }
2 o; y$ ]0 m! \; z6 ^* X
该设计是以数字电子技术为基础,实现数据从四位数据中按照输入的信号选中一个数,来实现所期望的逻辑功能。6 L& a% {- Z5 T9 N; x
7 r0 L" F3 r3 p+ z( c$ B0 t0 {5 m设计方案:+ F  U5 l0 j5 t. ?- s
7 R& |9 }' H; Z6 @& h' O$ t
用拨码开关作四位数据及两位控制端的输入,LED作输出,通过拨码开关组成控制输入端s1和s0不同组合,观察LED与数据输入端a,b,c,d的关系,验证四选一数据选择器设计的正确性。使用逻辑门电路与、或、非的组合来表达4选1数据选择器,通过控制输入的信号来控制输出的信号值。
8 Q4 [1 k# e& s" ]; N9 T
2 O- w# w6 c; a( h4 T其逻辑电路如下图:
+ i' X7 N6 v; X8 A1 j/ R. T6 a8 d8 H0 M+ o- } ![]() 1 k7 c4 |5 b* X3 C0 N3 C  ^
& z4 D% n: B, L其示意框图如下:
4 \6 v$ Y: `& c8 Y& A9 b& Z7 O9 O- w9 k0 Z8 F4 [0 Y% Z5 h# Y. f
其中输入数据端口为DO、D1、D2、D3,A、A为控制信号,Y为输出。0 b" h% u9 Z; g8 p/ b" p. e3 Y5 n4 g
( I+ l9 }) z$ C( w% u* d令AA‘=“OO”时,输出Y=D0;/ Y* j% x9 E* ?' U1 V1 q
5 T3 c! s. u  x9 P' y3 R$ n
令AA’=“01”时,输出Y=D1;
* S1 v% w, S+ s% n4 Q- S5 T+ ?3 e* |# P5 w9 Y1 b
令AA‘=“10”时,输出Y=D2;1 d2 ~) X3 v0 \
! j) f3 V( \5 ~( `
令AA’=“11”时,输出Y=D3;! U- f- U& U* |. n8 O) Q
, _8 Y( X3 F; ^* b/ h3 W ![]() - ?3 R% B: K9 L
3 N9 Y% Y; g5 h* m7 v( x真值表如下:
- L# r, U- m: O
+ J; o! S) h7 ~2 d! {5 o ![]() 2 U" }  X; @% B ![]() : w0 Z3 T, p7 a7 y7 l% C2、方案实施2 J5 _/ |+ @3 y/ \- n
(1)设计思路# Z& h" z9 n" P3 n7 K0 t
, o8 d9 `: k! U ![]() 6 V2 k: p) h1 }! C" Z) L2 q
9 T+ L/ F; \+ v% C0 ]四选一多路选择器设计时,定义输入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。这样即可实现四选一数据选择的功能。
3 f, T" Y  R. V8 e3 {& k8 |6 q7 j$ S% H
程序% H* q1 {4 O6 l$ j
+ A6 @/ E, P" ]9 h8 L" Z, h+ ?- L
LIBRARY正EE:
# A$ p1 O6 p. g5 Q
1 [6 u* C6 j0 E0 [3 ZUSE0 [$ T7 M7 k$ g5 n
( j3 t  C  T" m- ~( dIEEE.STD_LOGIC_1164.ALL:6 s8 p3 f5 F/ D5 h
: a8 x. Y( v, q4 e% Y0 h
ENtiTYmux41is
( _7 r  P( i1 s" I; b7 }4 a% j+ ^3 h
PORT(a,b.c.d:NSTD_LOGIC:4 C! O1 u$ Z( N4 i
+ W9 S2 m* {3 B( ]
INSTD_LOGIC_VECTOR(1
# {# t- [1 O' J4 T& a+ Z8 ~( N
+ y1 J; l- O5 T* B3 VDOWNTO0):
; d- I/ W8 S3 u; R6 a$ e
! k! {; N# W" E! e8 G. }STD_LOGIC):7 Y& d& Q$ J% G6 ]) U$ D$ T* F
8 D5 w4 {/ h2 a3 ]% s% Z7 q8 dOUT
7 Q6 z0 h8 N7 H% i- \3 @
! v% @& k9 c; j7 s6 J# UEND
" z3 t. Q4 I% t9 h, n$ _$ E) O" N5 z) d# H
mux41:
  V3 _3 h6 M% A5 B7 }6 A0 m( u+ @: P% a2 `' I
IS' w* _9 H$ a: ~1 H
0 g9 r: a! }6 H6 \& I$ _- HARCHITECTUREoneOF% {- }, z/ q8 Z2 E( I5 ]- @/ w
4 T. R6 m" s% B# bmux41
! E3 e4 i  _; y# N$ }
& {/ T3 P/ L) ]$ A( \% qBEGIN
1 ?( |5 A5 ]) W  L. Z$ d& T( v9 W$ s9 z( h( M
PROCESS(s,a.b.c.d)6 ^" F; w4 P/ m5 L+ f) f. i
4 n' Q" |# c1 V* {4 ~
BEGIN1 l' k+ s0 C1 ?$ C( f  R
  G+ ]" [0 l2 d3 V: w3 T! k1 v. M
IS1 q  _/ C# [5 |( [& L3 }
: \& |" g! ]3 ~' gCASES6 e) a5 l. f. d: h9 P
( M8 |7 D+ B4 c0 Y7 P. u  V
WHEN“00”=》z《=a:, z9 t( Z! {4 j
4 Q" y8 x, e$ ~/ o3 ?( c
WHEN“01”=》z《=b:
$ B9 q4 a5 E' `, k6 X4 K* j9 Y2 w$ l( y
WHEN“10”=》z《=c:
! v2 U' B6 X9 q" R
5 {8 C- T& v' A1 tWHEN“11”=》z《=d:
* U$ ?/ x4 h$ v4 e
0 m: k) D- R  }+ t# bWHENOTHERS=》z《-=null:6 U9 R( Q" ?6 r: W
$ n% I7 ]# a2 D) kEND5 F; Y2 z7 p( e9 u+ I
( f9 m; `# j% ]2 j, JCASE;3 _. O' |) y. T" m
; w2 B, B7 O" F3 [; cENDPROCESS:: x3 a6 ^. ^# S
! N/ `7 v1 l* ZEND1 b: ~& n% a* J+ M# G- x
- I% ?3 i$ Z9 |7 Z/ ]2 [% }one;. S# ^& `% L# V& W" l
: |, _% {) `  ~' f2 x运行结果: K  Y5 o% b. _1 Q0 b
' {: V) _! n) Y, J+ p当输入信号“OO”时,输出信号z的值为‘a’:) z0 B9 p+ \! s9 s
: o' U! R4 z% I+ E4 }4 ^+ X" f6 v
当输入信号“01”时,输出信号z的值为‘b’;1 ?$ Q# A! c; K7 V
7 k4 O/ O' R1 u- A1 k
当输入信号“10”时,输出信号z的值为‘c’:
8 _4 F( Z/ m* k# y! o
8 U+ V. b5 [% l2 E+ i7 Y当输入信号“11”时,输出信号z的值为‘d’:
6 ]. _# H" O' J. r9 X
, d! ?1 s+ e. i) r- H  o( a! K波形仿真及描述4 d/ V  x( q/ s& U0 k2 j0 [5 M
" I- D3 U" }: P% L
输入:, C4 p$ z, R8 Z6 Y1 ^
/ E/ U3 @/ }* @( Q6 y' @; I
的波形周期为10ns,b的波形周期为5ns,c的波形周期为15ns,d的波形周期为8nsos[1]的波形周期为5ns.s的波形周期为10ns。7 g$ p: B9 j0 ~6 F. v2 S  L: ^2 F
. V4 o( D# f6 V ![]() " c+ v) _* o# N0 [7 Q0 w
' [/ ~# O6 T; G- h, E0 ~2 V% P(2)设计思路& e- @3 C4 C+ |( [% }
2 u9 ]3 a. p3 e. T8 X- Y8 I0 Y% A' W ![]() 1 n; k' N# t4 P
3 G, X% _3 r! q定义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。7 f5 Y7 ]# \6 |$ I. |! m
4 O: A6 R: k0 e
程序! A6 P( x  u2 O# e8 }8 k
0 D# Z% W) O& Z
USE 正EE.STD LOGIC 1164.ALL;
; n1 N& Z% V2 w4 R9 @7 b  g9 L) d' M+ S  h" i0 V  V2 p
ENTITY mus418 h* d, u% l" A( v+ K* T
$ o1 {) x) Y# O$ AIS$ U! ]( {; t' b( w: M8 ?
3 M0 ~4 v# ^7 m6 s2 G: a# _- H(i0ji1,i2,i3,a,b :N STD_LOGIC;# n, l# q4 H/ g+ |
/ J4 w& U1 U9 b% N; m6 v* d& m" r
PORT7 x8 q. d7 \% W
. e, _2 \! Q; M4 @:OUT
! x# O& B) @8 x; U6 |' x
4 C5 h' _  X4 l* U. l, s) C  o! VSTD_LOGIC );
* Z3 g1 C+ t8 u4 q* b" ?
, t; \  W: H+ T$ H. MENS mux4;
5 ]/ Z1 s3 I$ G6 p) K' I8 W- `" m) f8 E7 E: \7 [
OF" g9 g6 K; U# I5 F% u& F# |
  }. T/ J+ ~9 `0 z3 I
mux4 IS5 `0 g8 O( j& A0 ^# K
% g1 R$ ^; j) s, U
ARCH ITE CT URE b_mux48 n' K, C: Q+ O7 q0 V/ b5 Z
  _( L  b& a/ ~- h4 D5 G1 ABE G N8 t& g* f8 t7 H/ s3 V, B
/ x- N+ f; G# ?- E8 b7 D) a
Process (i0,il,i2,i3,a,)$ ]! I: M' ^5 ~$ z
$ Y. u2 z+ N. o- @$ IVariable- V6 j$ h' n/ z# }' i  d
1 W, s1 {) u/ F# u5 ~0;
0 y: H% s' w( s1 h/ U, d7 l- s$ c9 k$ l- R
downto5 }/ l  Q  g  y: I5 d3 P
: A; P6 }1 {2 p" d
musval# S6 h" t- U/ r/ ?
: ^4 m* @( V! }( K& \6 c:integer rang
( c' d' Y: [: `' B4 N! P: P, x2 B% R2 x) v" J3 e7 S' @) h* B
Begin
; L+ k2 l  }: i# S" a) H5 l  C! A+ K# e3 w
m uxv al :=0;
; S/ y& n5 {/ H$ E  r7 D' O7 h  {. e, e3 H; P1 u& f; }
if (a=‘l’)
+ X  D, P; \& p" L, i* I8 `9 U/ a
9 Z# [4 l( T% p& F" gmusval:muxval+ l; end if;4 m$ s$ A# N: v' a7 z
5 D/ a5 ~- Z, U" s( o5 M5 ethen
; |2 @+ I1 l' m1 Q: D
' i8 o0 @; G% R4 rif (b=‘I’) then4 t1 B1 Z, v6 x1 f* n' W- L2 o: G
6 R0 C! V" E* F: U$ y! x, Z/ V
muxval :muxwal + 2; end' M2 L4 N& g$ i+ y* X0 C: B
$ R# e0 g/ i: g) `- Rif;$ A& |% p% C+ G
* D" D0 Z7 e9 I, v+ Cis5 e* A  C$ u+ Z! p! t
9 R% Z% I0 r9 q& q3 fmuxval1 Q, d. _0 @2 \
4 Z1 S# p! J2 x' g' ?4 g' e$ O, W
case
, a) N" q6 Z9 b2 W: R; k$ c4 a$ Y  Y6 w+ K3 `! @
w hen 0= 》 q 《= i0;
5 N" g* Q" z2 i' s9 j* j( n8 H  g8 t3 e1 ^7 X8 _5 e
when l= 》 q 《= il;
3 q7 S! F$ d( P' N
  v6 o, T- O/ ]/ ~when2=》q《=2;8 y$ T8 o' r3 O& m
' d- P5 n; B, r' wwhen3=》q《=i3;/ w& Z8 b9 R6 D9 V5 @8 D  s9 A& r6 i
$ X4 y$ k8 A7 {7 d& c  eothers= 》null;
1 X9 ?0 L! [& R* i& ~  g" s  b8 X6 h
" M3 T3 r# f2 f8 b" NWhen
- K  n/ z2 X: H: V4 @7 o
# H# _# M8 O6 [4 kend* B5 Z) R5 H2 j; ^9 \8 H4 R
8 b' T+ a! @, [$ Y  H. O. M2 Pca se;
' P1 H# u; h% l: F9 i; O0 S
% J6 ?" A6 ]. f+ B( n5 z4 Iend process;: [5 P( q2 B/ ]5 L  J
& |2 ]' p* N& J# L" ]8 V
END b_mux4;
9 Y$ U, ]( @2 t+ s5 A+ L" W7 N. Y/ S5 c7 q, l  G- N4 V
运行结果" B5 i' Y9 K) A. L# e
9 W) _' x/ g+ C  j- s5 n; |+ E
当输入信号“OO”时,输出信号z的值为‘i0’:
: n' z7 E" ?$ R% S
0 z8 @% F2 K! l6 q; [当输入信号“01”时,输出信号z的值为‘i1’:
. |3 L/ A: U1 X+ e- Q9 y' A, p2 r1 o/ B: a1 O
当输入信号“10”时,输出信号z的值为‘i2’:# e8 D6 m& @9 P3 L5 d9 a, U
+ }7 `7 h1 a0 k当输入信号“11”时,输出信号z的值为‘i3’;" a1 f# G, w# Z: S3 m  b& d
# W- T8 p/ C& E
波形仿真及描述
' W6 @+ N5 c' |# K2 }1 _1 y) h! Q" ^: o
a的波形周期为20ns,b 的波形周期为15ns,c 的波形周期为20ns,d 的波形周期为15ns,s的波形周期为8ns,s的波形周期为16ns。
2 w) l" i% v1 H7 r4 c9 i7 T! u& c
$ j% i3 \% r4 j2 d. E$ q输出& Y& t( D  G$ |% j7 ?
/ s6 B. X7 Y4 {  l9 x) L" w! y ![]() $ W% B3 X0 a, a | 
 |