Documente Academic
Documente Profesional
Documente Cultură
SHANTANU DUTT
Department of Electrical and Computer Science University of Illinois, Chicago Phone: (312) 355-1314; e-mail: dutt@eecs.uic.edu URL: http://www.eecs.uic.edu/~dutt
1
Muxes
FPGA
A
Out In=B Steering gate.
A When A=1, In is Steered to Out. [I.e., the T-gate conducts] Thus Out = B when A=1 A Out = AB In Out Symbolic for T-gate: A A is the control input (CI) T-gate conducts Normal CI connected to A Bubbled CI connected to A when A=1.
bubble CI normal CI
A 2:1 MUX. I0
Out Z Out
2:1 I1
MUX
I1
S
S Z
0 1
1 1
0 1 1 0
Z S 1 S 0 S
S Z 1 1 0 0 S Z 0 I0 1 I1
Z S 1 S 0
=S
Z S I 0 SI1 is the function
implemented by the above 2:1 MUX. Such a TT in general provides a decomposition of the final function Z into constituent functions I0 & I1
2:1 MUX : S
I1
I0 I1
2:1
MUX
S0
I0 I1 I2 I3
4:1
MUX
The same can be said about a 4:1 MUX: Input Ii is selected (Z=Ii) if S1S0 combination represents the number i in binary.
S1 S0
[If S1S0 = 00 (#0), Z = Io S1S0 = 01 (#1), Z = I1 S1S0 = 10 (#2), Z = I2 S1S0 = 11 (#3), Z = I3] S1 S0
0 0 1 1 0 1 0 1
Z
I0 I1 I2 I3
Z S1S 0 I 0 S1S 0 I1 S1S 0 I 2 S1S 0 I 3
I0
I1
2n
:1
I 2 n 1
Sn-1 S1 S0
In general for a 2n:1 MUX with control signals/inputs Sn-1 S1S0 & data inputs I0, , I 2 n 1, Z = Ii when Sn-1 S1S0 combination represents #i in binary.
8
I0 I1
2:1
MUX
Inputs selected are those w/ the same lsb or S0 values. So further selection needs to be based on the non-lsb bits.
S0
2:1
MUX
I2 I3
These inputs should have different lsb or S0 values, since their sel. is based on S0. All other bits should be equal.
2:1
MUX
S1
MSB
I0 I1 I2 I3
4:1
MUX
S0
S0 S1
9
When S0=0, I0, I2 get selected at the 1st level, i.e., Input w/ 0 in LSB. When S0=1, I1, I3 (LSB=1) get selected at the 1st level. If S0 = 0, I0, I2, become the 0th & 1st inputs to the next level. At the next level, the I/P order # is determined by the rest of the bits of their index after stripping off the LSB. Thus I0 I0 At level 2 I2 I1 0 0 1 0 (# 0) (# 2) strip away for the 2nd level inputs.
10
I0 I2 S0=0
01
I0 From level 1 I1
strip
Level 2
Z= I0 of level 2 (I0 of level 1), S1=0. = I1 of level 2 (I2 of level1) if S1=1. Z= I0 of Level 2 (I1 of Level1) if S1=0 = I1 of level 2 (I3 of level 1) if S1=1
I1 I3
11
Level 1
strip
I0 I1
2:1
MUX
S0=1
S1
11
Selected when S0 = 0
2:1
MUX
S0
I0
I1
I2
I0 I1 I2 I3 I4 I5 I6 I7
2:1
MUX
S0
I2
I1 I3 I5 4:1
MUX Z
8:1 MUX Z
I3
I4
I5
S2 S1 S0
These inputs should have different lsb or S0 values, since their sel. is based on S0 (all other remaining, i.e., unselected bit values should be the same). Similarly for other i/p pairs at 2:1 Muxes at this level.
2:1 MUX S0
I4
S2 S1
I6 I7
I6 I7
2:1
MUX
S0
Selected when S0 = 1
12
I0
2:1
MUX
S0
I0
Selected when S0 = 0, S1 = 1, S2=1
I1
I0 I1 I2 I3 I4 I5 I6 I7
I2
8:1 MUX Z
2:1
MUX
S0
I2
I3
I4
I2
2:1 MUX
I6
I6
S2 S1 S0
These inputs should have different lsb or S0 values, since their sel. is based on S0 (all other remaining, i.e., unselected bit values should be the same). Similarly for other i/p pairs at 2:1 Muxes at this level.
I5
I6 I7
2:1 MUX S0
I4
S2
2:1
MUX
I6
S0
Selected when S0 = 0, S1 = 1. These i/ps should differ in S2 These inputs should have different S1 values, since their sel. is based on S1 (all other remaining, i.e., unselected bit values should be the same). Similarly for other i/p pairs at 2:1 Muxes at this level. 13
I0 I4
I0 I1 I2 I3 I4 I5 I6 I7
2:1
MUX
S2
Ix
Selected when S0 = 0, S1 = 1, S2=1
I1
8:1 MUX Z
2:1
MUX
S2
Ix
I5 I2 I6
Ix
2:1 MUX
I6
Ix
S2 S1 S0
These inputs should have different lsb or S2 values, since their sel. is based on S2 (all other remaining, i.e., unselected bit values should be the same). Similarly for other i/p pairs at 2:1 Muxes at this level.
2:1 MUX S2
Ix
S1
I3 I7
2:1
MUX
Ix
S2
Selected when S2 = 1, S0 = 0. These i/ps should differ in S1 These inputs should have different S0 values, since their sel. is based on S0 (all other remaining, i.e., unselected bit values should be the same). Similarly for other i/p pairs at 2:1 Muxes at this level. 14
I0
2n:1 MUX
I 2 n 1
Sn-1 S0
2:1
S0
2n-1 :1 MUX
2:1
S0
Sn-1 S1
Design Strategy:
First select inputs based on S0, using 2n-1 2:1 Muxes; 2n-1 inputs get selected on 2n-1 lines The problem now reduces to that of a 2n-1:1 Mux Continue recursively (to a 2n-2:1, 2n-3:1, ., 4:1, 2:1 Mux design problems) until the final output is designed.
15
8:1 MUX
S2 S1 S0 B C
16
A 3-variable function can always be implemented by only an 8:1 MUX. Interestingly, a 3-var. function can also always be implemented by only a 4:1 MUX (assuming vars & their complements are avail.) Example f(A,B,C) = m(0,2,6,7) Select any 2 variables, say, A,B, for the 2 control inputs In a 3-var. K-map, group together squares into 2-squares in which the other variable C varies, but A,B remains AB constant. 00 01 11 10 C Form implicants 2-square 0 1 1 1 only within 2-squares and write out the 1 1 function
ABC
A BC
AB
f ( A B )C ( A B)C ( AB ) 0 ( AB ) 1
17
Connect either C, C , 1, 0 to the appropriate data input corresponding to the A,B combination they are ANDed with in the expression for f. Thus f ( A B )C ( A B)C ( AB ) 0 ( AB ) 1 Note that a 4:1 MUX implements the function
f ( A B ) I 0 ( A B ) I1 ( AB ) I 2 ( AB ) I 3 ;
18
C C 0 1
0 1 2 3
4:1 MUX
S1 S0 A B
A B 0 0 1 1 0 1 0 1
f
C C
0 1
ABC D
01 11 10
AB C
1
1 1 1
A BC
D D
A B CD
1 1 0 0 0
0 1 2 3 4 5 6 7
A B
-- In general, a 2i : 1 MUX, where i < n-1, can be used to implement an n-var. function f(An-1, ,A0) by choosing any i variables, say, Ai-1, , A0 ( This is just an example of i variables; you can choose any i of the n variables) as the control inputs of the MUX. However, for i < n-1, extra logic gates may be required.
Where gk ( An1, , Ai ) is a function of An-1,,Ai that ANDs with the kth product term of variables Ai-1, , A0 that represents the binary # k, 0 k 2i 1
21
2i:1 MUX
g 2i 1 ( An 1 , , Ai 1 )
I 2 i 1
Ai-1 A0
Where each gk may need extra logic gates for its implementation.
-- The trick is to choose the right i variables so that the total # of logic gates needed for the gks is minimum.
22
E.g.:
AB C
01 11 10
1 1 1
ABD
01 11 10
1
A BC
-- For i=2 (2 control variables from A,B,C,D for a 4:1 MUX), the K-map needs to be partitioned into groups of 4-squares, such that within each 4-square the 2 control variables are constant.
23
-- Note that PIs can only be formed within each 4-square, i.e., groups
of squares in which the control vars. are constant (constant areas). -- To min. # of gates, choose the 2 control vars such that the largest-size implicants & the smallest # of them can be formed in its set const. areas. -- A study of the 1s in the above K-map tells us that this is achieved by the set of 4-squares that are the columns of the K-map, i.e., for control variables A, B. -- Then, in each constant-area, form the SOP sub-expression for all the MTs in that area, just like in a full K-Map (i.e., for all PIs in each area determine and select all EPIs in that area, cover remaining MTs in tha area by the least-cost set of the remaining PIs). -- Grouping 1s only within the constant areas (4-squares in this ex.) we get over all constant areas, i.e., all combinations of A, B, the expression:
f ( A B )( D ) ( A B)(C ) ( AB )(C ) ( AB )( 0) D
0 1 2 3
Implementation: C No logic gates needed! C (NOTE: This will not 0 always be the case)
4:1 MUX
S 1 S0
24
A B
-- If we had chosen A,C as the control variables, then the 4-squares would have looked as follows
AB CD 00
00
AB C
01 11 10
ABC D
01 11 10
1
1 1 1
A BC
A CD
-- Grouping 1s only within the 4-squares, we get 4 terms A B C D , A CD , A BC , and AB C: all are essential (within their constant areas)
25
I0
I1
0 1
I2
I3
B
D B D
B 0
2 3
4:1 MUX
S1 S0 A C
-- Thus choosing A,C as control variables, results in 2 extra gates compared to choosing A, B.
26