Académique Documents
Professionnel Documents
Culture Documents
Gii thiu
Thit k mt b MIPS 32-bit Single cycle CPU n gin Cc lnh m CPU c thc hin l LW, SW, J, BNE,BNEZ, XOR,XORI, ADD, SUB, SLT,v JR Chng ta s dng 2 project trc l Register(lab1) v ALU(lab2) + mt s khi cn thit =>CPU c th thc hin c cng vic ca mnh
- Mi lnh s c bt u khi c xung dng sn ln (hoc xung) ca 1 xung clock v kt thc cng bng 1 sn ln (hoc xung) ca xung clock tip theo
State element 1
Combinational logic
State element 2
clock
1. Phn tch cc kin trc tp lnh 2. Chn cc thnh phn datapath cn thit cho mi lnh 3. Nhm cc thnh phn datapath li 4. Xc nh nhng tn hiu iu khin cn thit 5. Nhm cc cng iu khin logic li 6. Kim tra thit k
www.wondershare.com
Cu trc n gin ch gm
Khi lnh arithmetic-logic : add, sub, xor, slt Khi lnh b nh: lw, sw Khi lnh r nhnh: bnq, j
6 bits
op
5 bits
rs
5 bits
rt
5 bits
rd
5 bits
shamt
6 bits
funct R-Format
6 bits
op
5 bits
rs
5 bits
rt
16 bits
offset I-Format
6 bits
op
26 bits
address J-Format
Thanh ghi PC dng cung cp a ch lnh ly lnh t memory ng thi tng PC ln 3 khi dng Store/Fetch Instruction , v tng thanh ghi PC ln l :
a. Instruction memory
b. Program counter
c. Adder
Nhng lnh trong MIPs c chiu di l 4byte ( 1word), v th thanh ghi PC s c tng ln 4 a vo a ch c lnh tip theo T 3 khi ny ta xy dng c datapath nh sau :
Tng quan v cc khi : - Thanh ghi PC : //reg [31:0]PC; wire [31:0] PC, PCin; wire [31:0] PC4; // PC4 = PC+4 wire [31:0] instruction; // PC4 = PC + 4 Add Add1(PC,32'b100,PC4); // InstructionMem InstructionMem InstructionMem1(instruction, PC); // PC Block PC_Reg(PC,PCin,reset,clk);
Addbit:Addbit30
a a y b cou cin cin b
Addbit:Addbit31
Addbit:Addbit1
y cou
Y[31..0]
Thi hnh :
Instruction <- MEM[PC] PC <- PC + 4
ADD
4
PC
ADDR
Memory
RD
Instruction
Nhng lnh ton hc ca cc Register vi nhau dng khun dng lnh R-type - op l trng opcode ca lnh, fuc th dnh cho nhng lnh ton hc c bit - rs,rt,v rd l thanh ghi ngun v ch
31 R-type: op 25 rs 20 rt 15 rd 10 shamt 5 funct 0
Chng ta s dng 2 khi l Register v ALU thc hin nhng lnh kiu R
5 Register numbers 5 5 Read register 1 Read register 2 Registers Write register Write data 3 Read data 1 Data Read data 2 Zero ALU ALU result ALU control
Data
Instruction op rs
5
rt
5
rd
5
shamt funct
Operation
3
RN1
RN2
Register File
WD
WN RD1
ALU
Zero
RD2 RegWrite
c gi tr cha trong thanh ghi rs ( chn thanh ghi c c bng RN1). c gi tr cha trong thanh ghi rt ( chn thanh ghi c c bng RN2). ALU thc hin cc php Add,Sub,Xor,Slt gia hai thanh ghi RN1 v RN2 Kt qu ng ra ca ALU s c lu vo trong thanh ghi rd( chn thanh ghi WN) khi c tn hiu RegWrite
B Alu :
ALU ALU1(ReadData1, //BusA of ALU BusB, ALUcontrolOut, ALU2Out, ZeroFlag, OverflowFlag, CarryFlag, NegativeFlag);
Ta xy dng c datapath
RegWrite ALU control overflow zero
Address ALU Data Memory Read Data Write Data
MemWrite
Instruction
Read Addr 1 Register Read Data 1 Read Addr 2 File Write Addr Read Write Data Data 2
Sign 16 Extend
MemRead
32
Data memory : dataMem DataMem1(DataMemOut, //data ALU2Out, //address ReadData2, //writedata MemWrite, //writeenable MemRead, //readenable clk);
Lw rt, offset(rs)
Thi hnh :
sw rt, offset(rs)
MEM[R[rs] + sign_extend(offset)] <- R[rt]
Jump address
28
PC
Read Address
Instruction
Thi hnh :
Instruction [31:26]
Main Control
u vo ca b Main Control l 6 bit trng opcode ca cu lnh, u ra ca n l 7 tn hiu iu khin 1 bit v tn hiu iu khin b Aluop 2 bit. Cc tn hiu iu khin 1 bit : (Control Signal )
nh hng khi mc 0 Ch ra thanh ghi ch vi vic Write Register t trng rt [20:16] Khng nh hng a ton hng th 2 u vo ca b ALU l t u ra ca file thanh ghi th 2 ( Read data 2 ) Khng nh hng
nh hng khi mc 1 Ch ra thanh ghi ch vi vic Write Register t trng rd [15:11] Cho php ghi d liu t u vo Writedata vo thanh ghi u vo WriteRegister Ton hng th 2 ca b ALU c ly t b Sign-Extend, ( 16 bit thp c ly t Instruction [0:15] ) Ni dung ca b nh d liu c ch nh bi u vo address s c a ra u ra Read address Ni dung ca b nh d liu c ch nh bi u vo address c thay th bi gi tr ca u vo Write data u vo Write data ca b Register s c ly t Data memory
MemRead
MemWrite
Khng nh hng
MemtoReg
Tn hiu iu khin Aluop : ( 2 bit ) Dng iu khin b ALU Control iu khin : 00 : dng ton hc add khi s dng lnh LW/SW 01 : dng ton hc sub khi s dng lnh Branch ( bne) 10 : dng cho cc lnh kiu R
Memto- Reg Mem Mem Instruction RegDst ALUSrc Reg Write Read Write Branch ALUOp1 ALUp0 Jump R-format 1 0 0 1 0 0 0 1 0 0 lw 0 1 1 1 1 0 0 0 0 0 sw X 1 X 0 0 1 0 0 0 0 bne X 0 X 0 0 0 1 0 1 0 j X X X X X X X X X 1
format 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0
Output
Inputs
Main Control :
Control Control1(instruction[31:26],//Opcode RegDst, Jump, Branch, MemRead, MemtoReg, ALUOp, MemWrite, ALUSrc, RegWrite );
Hot ng ca lnh Branch ( bne ) So snh phn t c t file thanh ghi xem th c khng bng nhau hay ko ( a ra Zero ca b ALU) Tnh ton a ch ca lnh sau khi branch:
destination address = (PC + 4) + (4 * offset)
Ngoi vic tnh ton a ch nhy,cn quan tm n iu kin khng bng nhau ca hai thanh ghi.Nu iu kin l ng th lnh tip theo l lnh ti a ch r nhnh,nu khng th thc hin lnh ngay sau n
=> Do Datapath thc hin hai cng vic: so snh 2 thanh ghi v tnh ton a ch ch ca lnh
-
tnh ton lnh nhy,datapath phi c mt n v m rng du v mt b cng. so snh chng ta s dng tp thanh ghi ly hai gi tr ca hai ton t thanh ghi. Thm vo vic so snh c thc hin bng ALU.Nu hai tn hiu khng bng nhau th tn hiu ZERO=0
Ta xy dng c datapath
ALU control
PC Read Addr 1 Register Read Data 1 Read Addr 2 File Write Addr Read Write Data Data 2
Instruction
Sign 16 Extend
32
Thi hnh :
*i vi lnh xori:
-i vi lnh ny ta cng khng cn thay i datapath,n c khun dng ca lnh I-type. *Bng tn hiu iu khin:
*i vi lnh JR:
-Nhy n v tr m v tr c lu trong thanh ghi $Rs (Rs cha v tr cn nhy n).Jr thuc khun dng R-type. -Lnh JR s lm cho datapath c s thay i: Thm 1 b mux2x32to32 gi l MuxJreg,tn hiu iu khin gi l jreg c ly t u ra ca ALUcontrol. u vo th nht l u ra ca MuxJump,u vo cn li l ReadData1 ($Rs) Bnh thng jreg =0,ch khi c lnh JR th jreg=1 th #Pcin=[Rs].
T ALU control ca b ALU ca project 2 ALU CONTROL LINES 00 01 10 11 FUNCTION Add Xor Sub SLT
ALUOp0
0 1
0 0
X 1
X 0
X 0
X 0
X 0
X 0
0 0
0 0
1
0 1 1
0
1 0 0
1
X 1 1
0
X 0 0
0
X 0 1
1
X 0 0
1
X 1 1
0
X 0 0
0
1 1 1
1
0 0 1
module ALUcontrol_Block(ALUOp,Function,ALUcontrol,jreg); input [1:0] ALUOp; input [5:0] Function; output [1:0] ALUcontrol; // 2 dau cho vao ALU , output jreg; //1 la jreg
Dch tri 2 bit - Thm 2 bit 0 vo cui - Hm : shift_left_2 shift_left_2_jump({6'b0,instruction[25:0]}, //In32 ~ 26-bit offset of jump instruction JumpAddress); //Out32 ~ 28-bit after shifting left 2 bits
module
shift_left_2(In32, Out32); input [31:0] In32; output [31:0] Out32; assign Out32 = {In32[29:0],2'b00}; endmodule
Nu l ton hng dng th ta thm 16 bit 0 Nu l ton hng m th ta thm 16 bit 1 Hm : // sign_extend wire [31:0] Sign_extend_Out; sign_extend sign_extend_1(instruction[15:0],Sign_extend_Out); module sign_extend(In16,Out32); input [15:0] In16; output [31:0] Out32; assign Out32 = {{16{In16[15]}},In16}; endmodule
thc hin c lnh loi R v cc lnh loi I ta thm 4 b mux: chn gi tr vo ALU s l gi tr t thanh ghi(resad data 2) hay gi tr hng (offset/immediate) .
chn gi tr c a v khi REGISTER FILE s l gi tr ca ng ra ALU hay gi tr c t b nh. chn a ch thanh ghi ch s l bit th 20-16 (lnh loai I) hay bit th 15-11 ( lnh loi R).
www.themegallery.com
Mux5b :
mux2x32to32 mux2x32to32_2(ALU2Out, //DataIn0 DataMemOut, //DataIn1 MemtoReg, //Sel WriteData); //DataOut mux2x32to32 muxBranch(PC4, //DataIn0 ALUBranchOut, //DataIn1 BranchSel, //Sel MuxBranchOut); //DataOut mux2x32to32 muxJump(MuxBranchOut, //DataIn0 {PC4[31:28],JumpAddress[27:0]},//DataIn1 Jump, //Sel PCin); //DataOut
// ALU control wire jreg; // mux dung cho lenh JR mux2x32to32 muxJr(MuxJumpOut, ReadData1, jreg, PCin);
/*0 4 8 12 16 20 24 28
lw $1,0($0) //[$1]=1 lw $2,4($0) //[$2]=2 lw $3,8($0) //[$3]=3 lw $4,12($0) //[$4]=48 add $5,$0,$1 //[$5]=0+1=1 sub $6,$4,$3 //[$6]=48-3=45 slt $8,$1,$2 //[$8]=1 xori $10,$1,2 //[$10]=3
Company Logo
www.themegallery.com
32 sw $4,16($0) 36 jr $4 // nhay den vi tri dc luu tru trong $4 ,[$4]=48==>> nhay den lenh bne $1,$2,label_1 . 40 add $11,$0,$1 //[$11]=0+1=1 44 bne $1,$2,label_1 48 add $10,$3,$4 //[$10]=3+48=51 52 label_1: lw $9,16($0) //[$9]=48 56 add $10,$2,$4 //[$10]=2+48=50
Company Logo www.themegallery.com