Professional Documents
Culture Documents
4. Resource sharing
FF
FF
00/00 01
01/01
idle opt1
00
00 11 10
11
10/10
err opt2
01,10,11/11 11
You should be able to translate this state graph into a state table
P1 P2
Q D
Clk
FSM2
• This is going to work just fine from the computational & logic
perspective (perfect for simulation), but there is a BIG problem
with this approach if it targets physical circuit implementation!
. Ask yourself a question: what will happen if the operands are using
words of say 256 bits?
. Critical path will be VERY deep, thus the propagation delay is
going to be HUGE and the circuit is going to be SLOW
. Above approach is ok for simulation, but not good for
implementation (no practical circuit will use this method)
• We should be able to do (much) better than this ...
ELEC-H-409 Th04 27/51
2. Full combinatorial (1/3)
• You could consider addition as a fully combinatorial problem
• Input words are concatenated and considered to be one unique
input to the system
• Example for 2 operands of 2 bits a1 a0 b1 b0 c2 c1 c0
each; we have 3 bits of output, 0 0 0 0 0 0 0
0 0 0 1 0 0 1
each being implemented using 0 0 1 0 0 1 0
independent combinatorial circuit 0 0 1 1 0 1 1
0 1 0 0 0 0 1
• Computation of the carry bit is 0 1 0 1 0 1 0
“embedded” into the combinatorial 0 1 1 0 0 1 1
0 1 1 1 1 0 0
problem 1 0 0 0 0 1 0
1 0 0 1 0 1 1
• Note that in the table the line 1 0 1 0 1 0 0
(10)2 + (11)2 = (101)2 1 0 1 1 1 0 1
1 1 0 0 0 1 1
corresponds to: 1 1 0 1 1 0 0
(2)10 + (3)10 = (5)10 1 1 1 0 1 0 1
1 1 1 1 1 1 0
c2 = a1 b1 + a1 a0 b0 + a0 b1 b0
c1 = a1 b01 b00 + a1 a00 b01 + a01 a00 b1 + a01 b1 b00 + a01 a0 b01 b0 + a1 a0 b1 b0
c0 = a0 b00 + a00 b0
15 14 13 12 1 1 10 9 8 7 6 5 4 3 2 1 0
15:12 14:12 11:8 10:8 7:4 6:4 3:0 2:0 l (Logic Levels)
15:8 13:8 7:0 5:0
15:8 14:8 13:8 12:8 Brent-
Kung
Ladner- 15:8 13:0 11:0 9:0
15:014:013:012:011:010:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0 Fischer 3 (7)
Ladner-
Fischer 15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0
f (Fanout)
Sklansky 2 (6) (a) Brent-Kung
Area
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
3 (9)
1 (5)
2 (5) 15:14 13:12 11:10 9:8 7:6 5:4 3:2 1:0
New
15:14 14:13 13:12 12:11 11:10 10:9 9:8 8:7 7:6 6:5 5:4 4:3 3:2 2:1 1:0
Knowles
(1,1,1)
15:12 14:11 13:10 12:9 11:8 10:7 9:6 8:5 7:4 6:3 5:2 4:1 3:0 2:0
[4,2,1,1] 11:0
15:12 14:11 13:10 12:9 11:8 10:7 9:6 8:5 7:4 6:3 5:2 4:1 3:0 2:0
15:8 13:6 11:4 9:2 7:0 5:0
15:8 14:7 13:6 12:5 11:4 10:3 9:2 8:1 7:0 6:0 5:0 4:0
t (Wire Tracks)
15:0 14:0 13:0 12:0 11:010:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0
Routing 15:014:013:0 12:011:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0
• Example:
1 procedure procedure_name (parameter_list) is -- no return value
2 declarations
3 begin
4 -- sequential statements go here
5 ...
6 end procedure_name;
1 function function_name (parameter_list) return type is -- with return value
2 declarations
3 begin
4 -- sequential statements go here
5 ...
6 end function_name;
• This is the same as when implementing any VHDL module
WORK
MyLib
IEEE