Title: HDL???
1?????????
?8?
?????????????(??2) HDL???
?? ?? ?? ?
2R?????????????????????
ALU??
3
MemtoReg
?? reg1
?? reg1
????
????
??
MemWrite
?? reg2
ALUSrc
ALU
ALU??
M U X
?? reg2
?? ???
??? ???
M U X
?? reg
????
?? ???
?? ???
RegWrite
?? ??
MemRead
32
16
3???????????
??
4
?? ???
??????
PC
ALU??
3
MemtoReg
?? reg1
?? reg1
????
????
MemWrite
??
?? reg2
ALUSrc
ALU
ALU??
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
????
?? ???
?? ???
RegWrite
?? ??
MemRead
32
16
4MIPS????????????????
PCSrc
M U X
??
4
??
2??? ?? ???
?? ???
??????
PC
ALU??
3
MemtoReg
?? reg1
?? reg1
????
????
MemWrite
??
ALUSrc
?? reg2
ALU
ALU??
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
????
?? ???
?? ???
RegWrite
?? ??
MemRead
32
16
?????????????
5ALU???
op rs rt rd shamt funct
6???
5???
5???
6???
5???
5???
????? op?????ALUop(2???)???
ALU op(2???) 00(load,store),01beq,
10?????funct???(6???)
??????
a
???????? ?????
0
??
??
1
b
2
0
1
3
???
???
???? ???
??????? ??
???????1???ALU
6ALU??????
ALU????????
???? ??? ALUOp ???? ????? ?????? ALU?? ???
lw 00 load word XXXXXX add 010
sw 00 store word XXXXXX add 010
branch equal 01 branch equal XXXXXX subtract 110
R?? 10 add 100000 add 010
R?? 10 subtract 100010 subtract 110
R?? 10 AND 100100 and 000
R?? 10 OR 100101 or 001
R?? 10 set on less than 101010 set on less than 111
7ALU??????
ALU??????????
ALU???? ??
000 AND
001 OR
010 ??
110 ??
111 Set on less than
X dont care
8??????????
0 rs rt rd shamt funct
R??
31-26 25-21 20-16 15-11 10-6 5-0
???/???
35/ 43 rs rt address
31-26 25-21 20-16 15-0
??
4 rs rt address
31-26 25-21 20-16 15-0
- ???????(opecode) 31-26
- ???????? rs?rt(25-21), (20-16)
- ???/??????????? 25-21
- Beq???????15-0
- Dest(?????)?20-16(???),15-11(rd)
9????????ALU????????????
PCSrc
M U X
0
??
4
??
2??? ?? ???
1
?? ???
??????
PC
RegWrite
?? 2521
MemtoReg
?? reg1
?? reg1
????
????
?? 2016
MemWrite
ALUSrc
?? reg2
??310
ALU
0
ALU??
M U X
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
0
????
0
ALU??
1
?? ???
1
3
?? 1511
1
?? ???
?? ??
RegDst
?? 150
MemRead
32
16
ALU ??
?? 50
ALUOp
10???????????????
??
M U X
4
0
RegDst
??
Branch
??
MemRead
?? 3126
2??? ?? ???
1
MemtoReg
ALUOp
?? ???
??????
MemWrite
PC
AND
ALUSrc
RegWrite
?? 2521
?? reg1
?? reg1
????
????
?? 2016
?? reg2
??310
1
ALU
ALU??
M U X
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
0
????
0
ALU??
1
?? ???
0
3
?? 1511
1
?? ???
?? ??
?? 150
32
16
ALU ??
?? 50
11??????????
??? ???????????? ????????????
RegDst ?????????????????????????rt?????(???1511)?????? ?????????????????????????rd?????(???2016)??????
RegWrite ?? ???????????????
ALUSrc ALU??2?????? ??????????2?? ALU??2???????????16??? ????????????
PCSrc PC4???????????PC? ??????????????PC?
MemRead ?? ??????????????????? ??????????
MemWrite ?? ???????????????????? ????????????
MemtoReg ????????????? ??????ALU?????? ??????????????????? ????????????
????????????
??? Reg Dst ALU Src Memto Reg Reg Write Mem Read Mem Write Branch ALUOp1 ALUOp2
R?? 1 0 0 1 0 0 0 1 0
lw 0 1 1 1 1 0 0 0 0
sw X 1 X 0 0 1 0 0 0
beq X 0 X 0 0 0 1 0 1
Branch ??????????????????????ALU?????????????PCS
rc?
12RegDst
0 rs rt rd shamt funct
R??
31-26 25-21 20-16 15-11 10-6 5-0
???/???
35/ 43 rs rt address
31-26 25-21 20-16 15-0
??
4 rs rt address
31-26 25-21 20-16 15-0
?? ???
??????
?? 2521
?? reg1
?? reg1
????
?? 2016
?? reg2
M U X
?? reg2
?? reg
??310
0
1
?? ???
?? 1511
RegDst
?? 150
16
13RegWrite
0 rs rt rd shamt funct
R??
31-26 25-21 20-16 15-11 10-6 5-0
???/???
35/ 43 rs rt address
31-26 25-21 20-16 15-0
??
4 rs rt address
31-26 25-21 20-16 15-0
?? ???
RegWrite
??????
?? 2521
?? reg1
?? reg1
????
rd ?????????? ????????
?? 2016
?? reg2
M U X
?? reg2
?? reg
??310
0
1
?? ???
?? 1511
RegDst
?? 150
16
14ALUSrc
0 rs rt rd shamt funct
R??
31-26 25-21 20-16 15-11 10-6 5-0
???/???
35/ 43 rs rt address
31-26 25-21 20-16 15-0
??
4 rs rt address
31-26 25-21 20-16 15-0
?? ???
RegWrite
??????
?? 2521
?? reg1
?? reg1
????
ALUSrc
?? 2016
?? reg2
ALU??
ALU
M U X
0
M U X
?? reg2
?? reg
??310
0
ALU??
1
R?????? ?????? ??????
3
?? ???
1
?? 1511
?? ??
RegDst
?? 150
16
15MIPS????? I
?? ?? ?? ? ?? ??
???? add R add s0,s1,s2 s0s1s2 3?????, ????
????? load word I lw s1,100(s2) s1???s2100 ????????????
???? branch on equal I beq s1,s2,L if(s1s2)go to L ????????
???? set on less than R slt s1,s2,s3 if(s2lts3) s11 else s10 ?????????? beq?bne????
??? ?? jump J j 10000 go to 10000 ????????????
??? ?? jump register R jr t1 go to s1 switch????
16MIPS????? II
R??(????)
op rs rt rd shamt funct
op rs rt address
I??
J??
op address
??? Reg Dst ALU Src Memto Reg Reg Write Mem Read Mem Write Branch ALUOp1 ALUOp2
R?? 1 0 0 1 0 0 0 1 0
lw 0 1 1 1 1 0 0 0 0
sw X 1 X 0 0 1 0 0 0
beq X 0 X 0 0 0 1 0 1
17R??????????????
?????????????PC?????
18R?????2?????????
??
M U X
4
0
RegDst
??
Branch
??
MemRead
?? 3126
2??? ?? ???
1
MemtoReg
ALUOp
?? ???
??????
MemWrite
PC
AND
ALUSrc
RegWrite
?? 2521
?? reg1
?? reg1
????
????
?? 2016
?? reg2
??310
1
ALU
ALU??
M U X
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
0
????
0
ALU??
1
?? ???
0
3
?? 1511
1
?? ???
?? ??
?? 150
32
16
ALU ??
?? 50
???????????2?????????????
19R?????3?????????
??
M U X
4
0
RegDst
??
Branch
??
MemRead
?? 3126
2??? ?? ???
1
MemtoReg
ALUOp
?? ???
??????
MemWrite
PC
AND
ALUSrc
RegWrite
?? 2521
?? reg1
?? reg1
????
????
?? 2016
?? reg2
??310
ALU
1
ALU??
M U X
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
0
????
0
1
?? ???
0
3
?? 1511
1
?? ???
?? ??
?? 150
32
16
ALU ??
?? 50
???????????ALU??
20R??????????????
??
M U X
4
0
RegDst
??
Branch
??
MemRead
?? 3126
2??? ?? ???
1
MemtoReg
ALUOp
?? ???
??????
MemWrite
PC
AND
ALUSrc
RegWrite
?? 2521
?? reg1
?? reg1
????
????
?? 2016
?? reg2
??310
1
ALU
ALU??
M U X
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
0
????
0
1
?? ???
0
3
?? 1511
1
?? ???
?? ??
?? 150
32
16
ALU ??
?? 50
??????
21????????????
??
M U X
4
0
RegDst
??
Branch
??
MemRead
?? 3126
2??? ?? ???
1
MemtoReg
ALUOp
?? ???
??????
MemWrite
PC
AND
ALUSrc
RegWrite
?? 2521
?? reg1
?? reg1
????
????
?? 2016
?? reg2
??310
1
ALU
ALU??
M U X
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
0
????
0
1
?? ???
0
3
?? 1511
1
?? ???
?? ??
?? 150
32
16
ALU ??
?? 50
22Branch-on-equal?????????
??
M U X
4
0
RegDst
??
Branch
??
MemRead
?? 3126
2??? ?? ???
1
MemtoReg
ALUOp
?? ???
??????
MemWrite
PC
AND
ALUSrc
RegWrite
?? 2521
?? reg1
?? reg1
????
????
?? 2016
?? reg2
??310
1
ALU
ALU??
M U X
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
0
????
0
1
?? ???
0
3
?? 1511
1
?? ???
?? ??
?? 150
32
16
ALU ??
?? 50
23??????????
??? 10???? ??????? 2??????????? 2??????????? 2??????????? 2??????????? 2??????????? 2???????????
??? 10???? ??????? Op5 Op4 Op3 Op2 Op1 Op0
R?? 010 0 0 0 0 0 0
lw 3510 1 0 0 0 1 1
sw 4310 1 0 1 0 1 1
beq 410 0 0 0 1 0 0
?????????
R?? R?? R?? lw sw beq
?? Op5 0 1 0 0
?? Op4 0 0 0 0
?? Op3 0 0 1 0
?? Op2 0 0 0 1
?? Op1 0 1 1 0
?? Op0 0 1 1 0
?? RegDst 1 0 X X
?? ALUSrc 0 1 1 0
?? MemtoReg 0 1 X X
?? RegWrite 1 1 0 0
?? MemRead 0 1 0 0
?? MemWrite 0 0 1 0
?? Branch 0 0 0 1
?? ALUOp1 1 0 0 0
?? ALUOp0 0 0 0 1
24?????????
??????????27-0
2??? ?? ???
??????????31-28 27-0
??25-0
26
28
PC431-28
1
M U X
M U X
4
??
0
RegDst
Jump
??
Branch
??
MemRead
2??? ?? ???
?? 3126
0
1
MemtoReg
ALUOp
?? ???
??????
MemWrite
PC
AND
ALUSrc
RegWrite
?? 2521
?? 2521
?? reg1
?? reg1
????
????
?? 2016
?? reg2
??310
ALU
1
ALU??
M U X
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
0
????
0
ALU??
1
?? ???
0
3
?? 1511
1
?? ???
?? ??
?? 150
32
16
ALU ??
?? 50
25????????
- ?????,??????????
- ??????????????
- ????????????.
- ??????????????????
- ???????????
- ???????????
- ?????????
- ??????
- ??????????
26Hardware Description Language(HDL)
- LSI?????????????????????
- 1960??,???????????????.Design Description
Language (DDL) - ? ???,???????????????????????.
- 1980??,LSI??????????????????
- ???????,????,RTL??????
- ??????????,?????
- ??????????,
- ?)Hierarchical Hardware Design Language(H2DL) ??
- Verilog-HDL, VHDL
- 90??,???EDA??????????.2???????.
??????????,???????????????.
27????????(Verilog)
- ??????????,??????????????.
- module LSI_A (in1, in2, in3, ,
- out1,out2,out3,,)
- input in1,in2,in3, ,
- output out1,out2,out3,,
- ??????????
- endmodule
28?????????????
- module AND2 (in1, in2, out)
- input in1,in2
- output out
- wire in1, in2, out
- //------------------------------------------------
---// - and u1 ( out, in1, in2 ) //
???? - //------------------------------------------------
---// - assign out in1 in2 //Register
Transfer Level ?? - //------------------------------------------------
---// - reg out
- always _at_(in1, in2) //Behavior (??) ??
- out in1 in2
- //------------------------------------------------
---// - endmodule
294bit ?????
- module adder4( in1, in2, sum, zero)
- endmodule
input 30 in1, in2 output 40
sum output zero reg 40
sum assign zero (sum 0)? 1 0
initial sum 0 always
_at_(in1 or in2) // in1???in2??????
sum in1 in2
30Half Adder
module half_adder (iX, iY, oS,
oC) endmodule
input iX, iY // ???1????? output oS, oC //
Sum, Carry,???1????? assign oS iX iY //
iX xor iY ? oS??? assign oC iX iY // iX
and iY ? oC???
harf_adder
iX
oS
oC
iY
31Full Adder
module full_adder (iX, iY, iC, oS,
oC) endmodule
input iX, iY // ???1????? input iC //
Carry ?? output oS, oC // Sum,
Carry,???1????? assign oS 0 //
???????????? assign oC 0
full_adder
iX
oS
iY
oC
iC
32Half Adder??????????Full Adder
module full_adder (iX, iY, iC, oS,
oC) endmodule
input iX, iY // ???1????? input iC //
Carry ?? output oS, oC // Sum,
Carry,???1????? wire s1, c1, c2 half_adder
u1 (.iX(iX), .iY(iY), .oS(s1), .oC(c1)) half_adde
r u2 (.iX(s1), .iY(iC), .oS(oS), .oC(c2)) assign
oC c1 c2 // c1 or c2
full_adder
oS
iC
c2
s1
iX
oC
c1
iY
334bit adder ????
module adder4( in1, in2, sum, zero) e
ndmodule
input 30 in1, in2 output 40
s output zero reg 40
s wire c0, c1, c2
Full adder?????????, 4???????????. ? in11 //
in1?1???????
half_adder u1( .iX(in10), .iY(in20), .oC(c0),
.oS(s0)) full_adder u2 ( .iX( ), .iY( ),
.iC( ), .oC( ), .oS( )) full_adder u3 (
.iX( ), .iY( ), .iC( ), .oC( ), .oS(
)) full_adder u4 ( .iX( ), .iY( ), .iC( ),
.oC( ), .oS( ))
nor u5 ( zero, s0, s1, s2, s3,
s4 ) // zero s0 nor
s1 nor s2 nor s3 nor s4
34?????????
module mult4to1( in1, in2, in3, in4, sel,
out) endmodule
input 310 in1, in2, in3, in4 // 32bit
??4? input 10 sel // ?????? output reg
310 out // 32bit ??
always _at_ (in1, in2, in3, in4, sel) case
(sel) // 4?1??????? 0 out lt in1 1 out lt
in2 2 out lt in3 default out lt in4 //
02????????? endcase
35????? ????
- ???,?????????MIPS?????????????????ALU???.
- ??ALU?Verilog HDL????????.
- ??????????????????.
??? (ALU??) ??
000 AND
001 OR
010 ??
110 ??
111 SLT
???,?????????????????,??????????.
36????? ????
- ???????,MIPS???????????,?????Verilog
HDL???????.?????. - ??????(??,??????)
- ?????????????????
- ????????????,????????????????????
- ??????????????????????
- ???????????,Verilog??????????????,????????????????
???? - ??????????????????????????,???????????????????????
? - ???2012?1?12?
37???????????????
??
M U X
4
0
RegDst
??
Branch
??
MemRead
?? 3126
2??? ?? ???
1
MemtoReg
ALUOp
?? ???
??????
MemWrite
PC
AND
ALUSrc
RegWrite
?? 2521
?? reg1
?? reg1
????
????
?? 2016
?? reg2
??310
1
ALU
ALU??
M U X
M U X
?? reg2
??? ???
?? ???
M U X
?? reg
0
????
0
ALU??
1
?? ???
0
3
?? 1511
1
?? ???
?? ??
?? 150
32
16
ALU ??
?? 50