|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
多路选择器(又称为数据选择器)①功能
% O4 X0 C& a6 G w' @在选择变量控制下,从多路输入数据中选中某一路数据送至输出端。对于一个具有2n个输入和1个输出的多路选择器,有n个选择变量。, Q% A8 v7 ^7 @6 t- j+ }
②典型芯片
) d3 e+ |6 w/ X' L+ {( B典型中规模多路选择器有双4路数据选择器74153,其引脚排列图和逻辑符号如图1(a)、(b)所示。
9 C+ ~4 n3 V% `' S9 C7 h# C m5 T8 F1 Q
1 _/ d7 q+ h9 u( m5 o
! H* m/ J! m( [, Z" H2 y* ~2 k
数据选择器74153芯片含两个4路数据选择器,每个选择器接收4路数据输入,产生一个输出,两个4路数据选择器共用两个选择变量。芯片有16条引线,其中1D0~1D3,2D0~2D3为8条数据输入线,A1和A0为选择输入线,1Y、2Y为2条输出线,1G、2G为使能控制端,另外有1条电源线和1条地线。+ t* Q! T9 I. n: Z& H0 N% C o
" j. u9 S: @, @1 g4路数据选择器的输出函数表达式为) q1 o5 f; S6 W4 w2 g; r/ V
" M) B0 v y; R" Y B4 ?% H
! T4 f' f" q q, k J
8 O+ j* t m( E) _- k/ S0 H式中,mi为选择变量构成的最小项。
5 O1 q, U8 |1 l: g4 d③应用. ~+ \& o9 Z9 d9 m
多路选择器除完成对多路数据进行选择的基本功能外,还可用来实现数据的并-串转换、序列信号产生以及实现各种逻辑函数功能。
* L$ ?- X) Z9 j3 h& h' n7 f. o' R' l! h
例如采用4路选择器74153实现如下逻辑函数的功能" M& H6 o+ r" z [1 [1 {" @) `4 |
8 c% M. G. J+ S2 ~* E) M4 ~; q @
6 b2 B3 E$ c( F6 n' }
% t, \8 ^: r3 A+ C. F4 v) y
解给定函数为一个3变量函数,由于4路选择器具有2个选择控制变量,所以用来实现3变量函数功能时,应该首先从函数的3个变量中任选2个作为选择控制变量,然后再确定选择器的数据输入。假定选A、B与选择控制端A1、A0相连,则可将函数F的表达式表示成如下形式:2 O4 B i! V+ |6 x: u7 q0 r
4 N. f& Q8 N. O$ F+ j4 [5 n, W
* V0 J9 C- z* |4 X3 G7 p0 F7 l5 e9 u J; r0 c3 i% Q+ G' ]
显然,要使4路选择器的输出Y与函数F相等,只需:。据此,可画出逻辑电路如图2所示。类似地,也可以选择A、C或B、C作为选择控制变量,选择控制变量不同,数据输入也不同。0 {# X* s$ }) ~9 h5 X W* N! { H8 v8 U; `
+ W8 O8 x! R3 \' M3 ~! J! S3 H' [# R
4选1数据选择器的设计1、设计背景和设计方案
8 w C; x6 P6 F+ y7 \. m设计背景:0 v3 r; C$ W$ R# y- x9 K
! ^3 r6 P. S' [1 L8 O该设计是以数字电子技术为基础,实现数据从四位数据中按照输入的信号选中一个数,来实现所期望的逻辑功能。
* A {! v2 j' a0 e) g5 u
& r+ y" s) t- |% j+ x设计方案:; t+ ]# L9 T- k4 k1 M
& G+ u' c* A9 Y* y6 `. b. c1 N4 X8 @
用拨码开关作四位数据及两位控制端的输入,LED作输出,通过拨码开关组成控制输入端s1和s0不同组合,观察LED与数据输入端a,b,c,d的关系,验证四选一数据选择器设计的正确性。使用逻辑门电路与、或、非的组合来表达4选1数据选择器,通过控制输入的信号来控制输出的信号值。
6 x7 d3 e( c/ }2 Q( h) ]' [5 b7 j/ t$ H
其逻辑电路如下图:1 c8 K0 M) D& K6 ]
! J0 j" p8 B- k. u1 T
( @! H( b. ^5 _+ {- `
% q9 e# B0 D+ k0 v3 g
其示意框图如下:
3 I0 ?+ \7 w8 [/ r
# g$ N0 B S( f) x4 [其中输入数据端口为DO、D1、D2、D3,A、A为控制信号,Y为输出。
, c. s e' ~4 m5 E
) j. D# J* I- ?7 C) [. J7 A+ C3 `令AA‘=“OO”时,输出Y=D0;4 `) L3 W8 _4 {+ g# Z3 Y
) I0 w. m7 U" c' r. j
令AA’=“01”时,输出Y=D1;% Z" F, X1 A2 J8 P6 h- i
8 K/ @4 D" Q* a& l, |: U5 E) H令AA‘=“10”时,输出Y=D2;
q& C3 ~2 Q) J' J3 J. i7 V4 Z( h7 F. m5 I( X( T U8 p
令AA’=“11”时,输出Y=D3;
* |% f) m% q$ F1 S+ I/ N3 J& S2 i7 E! E6 O3 k ^+ J! L
- z4 r8 |" }2 i) R0 \4 u6 y
, x, t1 [, [: H6 W1 o真值表如下:* p$ o$ A# S' U) T
; [1 d1 {) K& i, J5 i
$ ?3 m' b) y7 f ~
# b8 a8 K; k0 V' t/ c; s! l2、方案实施
! V! s, K" F- w' v(1)设计思路; D ?% M0 E5 b; z# N2 A3 O
( b9 w: X: m* J9 I8 T
4 O% R0 S5 e R1 M# P% r
; t# i0 c/ V$ w0 a; A( U& N四选一多路选择器设计时,定义输入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。这样即可实现四选一数据选择的功能。" ~# b7 `0 Q; P* X. F" h
J$ z5 O$ s" g程序* a0 K" d" u2 {3 n5 j& }5 j
4 w& @: M, ^8 }( M% A& ]4 ILIBRARY正EE:
* n3 D+ `3 Q2 p8 Q" ]$ c
/ u; z6 i. B! F8 B; }USE
e3 Q6 _$ |( Q4 L! b# }! G1 ?) b! |- L, z6 P8 l8 n
IEEE.STD_LOGIC_1164.ALL:
! r3 T( o7 w+ W; t2 Y: i8 \- \
. B2 c7 M7 y- R# JENtiTYmux41is" w! ?6 W% T- _% g
! p' Q/ s: x2 W. F6 ~( C aPORT(a,b.c.d:NSTD_LOGIC:
) a5 f7 G& D4 u0 r' X! l1 x' _/ _
C6 _: D1 [2 j' H0 P* YINSTD_LOGIC_VECTOR(1# r! K' p" ^* f6 f2 C) K
' g& P: Z. U0 E. M3 L+ h; w( B6 ~DOWNTO0):
/ j) }9 s/ R0 a% \+ g) c
$ t- R. j- x- O. p* xSTD_LOGIC):* u S+ }. t, G. v2 B) l* ~4 R6 E
7 W+ p K. {5 I; iOUT
O, @; B6 L _ g" z5 u" C) w: S9 ^+ d, y) @! w
END
+ S$ o' x U5 C5 ?" w' y8 s, K
' Q. P5 e/ C2 Ymux41:3 @% e7 N, n @" n- n0 A
. A4 F4 E, m/ l3 ]. u
IS
# b+ u1 m% Q6 ?) q$ Z) o n3 v" V' R$ f/ K) Q3 R
ARCHITECTUREoneOF
& r. i1 }' ?( ^/ V7 q8 c+ s
6 k5 {/ a$ C7 [mux417 R& N3 C. f0 B }$ {0 y3 w
" d' x" F; c% i% a" v$ ]6 [
BEGIN4 x, l7 P7 E. C% g7 v9 r
; M0 Y* S8 E; Y& c! B
PROCESS(s,a.b.c.d)
9 z5 `5 E& m: b9 ^5 S3 ^4 ~
) [% e! k% n) h, V4 g/ U( _BEGIN! `+ y: l+ Y- \' j. c* m
, Q/ U5 ~; g4 @7 m$ \2 J
IS- h2 t& X/ Q/ Z! e' q: V
) l; I* f+ A+ U) }' B) F) o& k7 d
CASES
9 r/ C7 ~3 ~% Q) P2 J' B6 U
) ]2 m! {- o& x& |( r, T5 xWHEN“00”=》z《=a:: G& Z( ~# |0 l M( E
, B" B7 ]) t9 `& [
WHEN“01”=》z《=b:
; |/ F& `& t8 d2 Q7 p1 x/ a/ ~: l; Y4 M4 W+ Q
WHEN“10”=》z《=c:
( @* P$ o( }3 N! S9 n( U; g# R& O8 K$ m
WHEN“11”=》z《=d:
. Y& w0 s, V8 |0 M
' n, o. D7 l+ H8 t' @WHENOTHERS=》z《-=null:9 | z1 {/ y/ {& T2 }. O/ d' Y
) C/ A4 c3 E3 u+ P; J$ t
END' j" ]7 n4 l# M5 `( |
) K) b6 R& A8 D8 u& d( B
CASE;
! K$ Q( d7 e/ f
9 P5 t+ _& r7 f3 K4 L+ k$ vENDPROCESS:1 D& v( }3 t2 o W' K% ~
9 a, I ~3 [7 M! c1 _
END6 I A( B4 \7 w' ]2 O$ z
$ i @# n+ F$ R- h% o
one;. S1 `: c( g. d6 m- T0 q
/ F4 S2 F/ ` e2 i# j2 P
运行结果
* k; v0 c" ^/ u0 E5 h$ Z& D1 E7 L+ }
# P3 e. a8 {7 s! D当输入信号“OO”时,输出信号z的值为‘a’:- x7 D* w% q+ r/ `9 Z- h
_$ X. i% w' K* ^2 n7 D# G
当输入信号“01”时,输出信号z的值为‘b’; _4 a! }3 f2 J8 u
/ p0 m, ^ f' t0 J! s2 R
当输入信号“10”时,输出信号z的值为‘c’:
# w# b) |% q8 b: o9 m8 q. O/ x. J* E6 V2 F( c$ o. b
当输入信号“11”时,输出信号z的值为‘d’:
* p" M$ \, ]& Q8 V* u
( w6 v! U- S4 E! v4 q, `3 s) g波形仿真及描述- A- H. c0 a3 r/ [$ ^
- S* x4 S/ P- c2 U9 a! T. G
输入:
3 F+ m1 N+ k }+ g! U6 e" Q S7 {8 N( |
* Q2 a3 d6 y4 p g+ N7 c6 o的波形周期为10ns,b的波形周期为5ns,c的波形周期为15ns,d的波形周期为8nsos[1]的波形周期为5ns.s的波形周期为10ns。! ?1 x1 ]% ]1 G4 O% m
) W8 t3 w: l1 E( |( B" N
& v1 ]$ B3 ~) Q9 v5 i
- R2 H9 {9 {- Q(2)设计思路 }3 I6 J* K0 |* O/ R; k' z! t
6 T: `3 ]% U' ]: e0 A' I$ O
" Q7 N( F( S% p' ?% T
- L" X# K& d9 h8 A3 {: h) v定义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。
' N$ T Y+ O5 O8 C5 q; k" A' e7 f; z- L4 f
程序
% l7 y9 y2 r. P7 Y+ F
2 @5 J+ \' v# t- s aUSE 正EE.STD LOGIC 1164.ALL;
& N7 b& i: o% d. A- |
. H! M8 a4 ~( W( ~. I- `ENTITY mus41
5 N7 p6 p! \6 W/ S" E* m3 ~3 j0 H
! a7 G" e5 h. D$ F4 yIS+ F6 z/ a' M |4 X! L
7 L, x5 N) a# f3 ]1 q, ~' ?(i0ji1,i2,i3,a,b :N STD_LOGIC;
8 _& H5 a! l, n3 w$ ~* a
9 |+ c! s" U& D; jPORT
$ J1 y( D# n6 m3 O$ _5 N) y9 |; x; ~$ z8 w# y6 A4 b
:OUT
{$ L: \1 v% ^( V
4 v) H9 W! ~, c _5 U3 i0 a! s. ?STD_LOGIC );
! x7 ~$ ~4 C! F( I t9 h) Q3 ~6 l
ENS mux4;6 H4 E C- B* I0 Q) w2 v6 k- e' i
2 T/ |; X5 B& l# M# }/ k- a8 {
OF
; v2 C6 b' B$ H" t
9 S3 E- ^/ k% x+ q! zmux4 IS
3 l! Q$ u3 Q7 F% a( B Y! q6 V
. t4 v# D$ ]+ B5 G& hARCH ITE CT URE b_mux4' f+ k) B( W/ L% V6 R, V! v) G
2 a4 l0 R a; |# x, J7 RBE G N& V( d) Z( G0 h. }- [+ L
$ s2 p6 H6 k% H. z
Process (i0,il,i2,i3,a,)
- ?' T' g/ N( G* G$ u1 m" Y1 q. s6 A
+ ^2 \0 B' Y. I' PVariable
0 y, [$ [3 z8 {( S8 j# @& S8 A
8 r. P* Q+ b( F# w. ~0;
, b! A3 E% e: V- W8 S
: k# N0 a8 v+ Y+ [' fdownto! U% @; V" P4 K, {7 C& Q
4 i* k* V/ Q; m3 g0 e* g% Qmusval
' _# n; T/ d' r/ _. Z4 n6 o
# x; z( U/ c' \:integer rang
/ }$ t) h8 [, P2 i% |4 @
3 X( R$ D# t* i5 qBegin. G, i# `; L. D# Q' G0 P/ S0 r
9 t/ ^& `; e$ Km uxv al :=0;
L/ c( ^& k" j7 v+ G7 B, F5 Q# v; N7 V
if (a=‘l’)
7 O2 K- M& b- K# O4 X0 k- n& i4 `$ N$ }2 N7 D
musval:muxval+ l; end if;% \9 S3 }% p# F9 \" X1 g
( \( M' ? x( [- N* [then
! B+ W: [8 l: Z7 V& ?9 k& }
; H" ^# ^2 N3 C3 h# K# @* Y+ rif (b=‘I’) then) s# g) ~1 t5 ~" u' n2 ]! \
4 Z% n# j( C+ Q. _! mmuxval :muxwal + 2; end+ x# m- `" I/ ?# G
/ C7 E/ j1 T- w# c4 tif;" J4 h2 \' p! \1 D: S. f+ W0 E
! t( X7 M1 ?; {3 L( i/ U
is
. e$ o% a% T5 _* N1 \! b( p5 P1 g; S7 f/ Y' a
muxval
! O' _; k" M; A2 O' [, e
9 s) J2 o1 f* q' j; o/ ^" {case
) D8 W8 l$ _( Z6 i. e6 @5 ~0 s& G) Q/ l! M
w hen 0= 》 q 《= i0;
& x! E. A; C# F2 I. o9 A* r. ?: h2 ?7 `4 P6 G# i5 ?( t
when l= 》 q 《= il;% g1 k, z5 E9 X* Z0 N ?2 N
7 Z2 Q1 q: l& _% y, ~1 `when2=》q《=2;
' h e! _) h7 v* B: F5 `% ]
. p+ D& S: F$ }* `7 I0 swhen3=》q《=i3;: e7 j: u5 O& H \$ O# T
H5 O# i/ z# Q; m
others= 》null;, _4 M" @7 ~) Q2 f2 W
# k5 ~& _" Q# `4 V! _1 IWhen
' X# [( s! ~6 a+ O& Q' {- M5 a
5 T) d: h" D/ t5 o2 x% I. T& _end
1 o B* u. E- J! L1 C2 S& H0 |2 I% x0 h2 s7 u0 z3 ], `
ca se;
& D* ~4 G, b. ^! b1 R" W! |' J/ `6 T2 L& P' T
end process;; ]$ C) R* w* I; \' w
% X5 D; Q, c W, L
END b_mux4;+ @& x4 Q: v& g z
, p/ G) Q7 F, {4 g- Q运行结果
G. S- C5 E# v4 A0 p4 A: L$ v7 O
' k' r. h) e- a: d) V5 m/ ~当输入信号“OO”时,输出信号z的值为‘i0’:
4 S$ x' A3 S6 ]7 J3 H$ h L9 t( e8 C0 T; |! w$ y+ S7 [( f
当输入信号“01”时,输出信号z的值为‘i1’:
* ]- f9 d+ V# v) T$ [0 Z# D# q! {% v% N
当输入信号“10”时,输出信号z的值为‘i2’:
9 W: n. C K" {1 y/ p! C( L, e) |& |- o# N7 G; j
当输入信号“11”时,输出信号z的值为‘i3’;
( s; X* E$ j& a4 u7 G
2 P( ?4 |% m0 a4 S$ I [波形仿真及描述1 ?# t7 ] Q" @- a
' I! e4 H8 G% n, }' a
a的波形周期为20ns,b 的波形周期为15ns,c 的波形周期为20ns,d 的波形周期为15ns,s的波形周期为8ns,s的波形周期为16ns。
; r4 t7 J/ L; \* A; v6 K, V
/ c# \. S8 i* L. j: z输出! x+ S2 l8 B! A; y$ T
% L$ c$ _+ k, G/ ?! w
|
|