Академический Документы
Профессиональный Документы
Культура Документы
Approach
Sequential Circuits
Arvind
Computer Science & Artificial Intelligence Lab.
Massachusetts Institute of Technology
Demux
A1 .. O A
. Mux .
An-1 On-1
OpSelect
- Add, Sub, ...
O0 - And, Or, Xor, Not, ...
..
Decoder
C
D
Q
Metastability
D D
Q ff Q
ff EN
C C
dangerous!
EN
C
EN
0
D D 1 Q
ff
Q C
En
C ff ff ff ff ff ff ff ff
Q Q Q Q Q Q Q Q
ReadSel1 ReadData1
Register
ReadSel2 ReadData2
file
WriteSel
WriteData
2R + 1W
RSel1
WSel C WData
RData1
register 0
WE RSel2
register 1
RData2
ReadSel1 ReadData1
Register
ReadSel2 ReadData2
file
WriteSel
WriteData 2R + 1W
WE
ReadSel ReadData
R/WSel Register R/WData
file
1R + 1R/W
add4
a3 m3
mi = (a[i]==0)? 0 : b;
add4
s0
f +1
s i (init 0)
<32
a[i]
a
>>
a
0 a[0],a[1],a[2],
&&
0
0 s1
<<
+1
<<
add
s1 s1 32:1 0
31 [30:0]
i a tp prod
s2 s2 s2 s2
31:0 0
== 32
done
result (high) result (low)
s1 = start_en
s2 = start_en | !done
February 15, 2012 http://csg.csail.mit.edu/6.S078 L3-17
Multiply Module
Int#(32)
Int#(32)
start
en
Multiply
rdy
module
implicit
conditions Int#(64)
result
rdy
interface Multiply;
method Action start (Int#(32) a, Int#(32) b);
method Int#(64) result();
endinterface
en
s1 &&
rdy
0
0 s1
<<
+1
<<
add
s1 s1 32:1 0
31 [30:0]
result
result i a tp prod
rdy s2 s2 s2 s2
31:0 0
s1 = start_en
s1 OR s2
s2 = start_en | !done
start
enab Int#(32),
Multiply
rdy
module
Int#(13), ...
implicit Tadd(n+n)
conditions Int#(64)
result
rdy
#(Numeric type n)
interface Multiply;
n n
method Action start (Int#(32) a, Int#(32) b);
TAdd#(n,n)
method Int#(64) result();
endinterface