




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、北京工業(yè)大學(xué) MIPC-CPU 設(shè)計(jì)課程MIPS-CPU設(shè)計(jì)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:32位單周期MIPS-CPU設(shè)計(jì)姓名學(xué)號(hào):劉 高 斯 11072205實(shí)驗(yàn)日期:2014年12月19日目錄前言 MIPS簡(jiǎn)介 - 3實(shí)驗(yàn)?zāi)康?- 3第一部分 VERILOG HDL 語(yǔ)言實(shí)現(xiàn)部分實(shí)驗(yàn)內(nèi)容 - 4試驗(yàn)環(huán)境 - 4模塊簡(jiǎn)介 - 4實(shí)驗(yàn)截圖 - 5實(shí)驗(yàn)感想 - 5實(shí)驗(yàn)代碼 - 6第二部分 LOGISIM 語(yǔ)言實(shí)現(xiàn)部分實(shí)驗(yàn)內(nèi)容 - 16實(shí)驗(yàn)環(huán)境 - 16模塊設(shè)計(jì) - 16試驗(yàn)感想 - 23前言一、MIPS簡(jiǎn)介MIPS是世界上很流行的一種RISC處理器。MIPS的意思“無(wú)內(nèi)部互鎖流水級(jí)的微處理器”(Microp
2、rocessor without interlocked piped stages),其機(jī)制是盡量利用軟件辦法避免流水線中的數(shù)據(jù)相關(guān)問(wèn)題。它最早是在80年代初期由斯坦福(Stanford)大學(xué)Hennessy教授領(lǐng)導(dǎo)的研究小組研制出來(lái)的。MIPS公司的R系列就是在此基礎(chǔ)上開(kāi)發(fā)的RISC工業(yè)產(chǎn)品的微處理器。這些系列產(chǎn)品為很多計(jì)算機(jī)公司采用構(gòu)成各種工作站和計(jì)算機(jī)系統(tǒng)。MIPS技術(shù)公司是美國(guó)著名的芯片設(shè)計(jì)公司,它采用精簡(jiǎn)指令系統(tǒng)計(jì)算結(jié)構(gòu)(RISC)來(lái)設(shè)計(jì)芯片。和英特爾采用的復(fù)雜指令系統(tǒng)計(jì)算結(jié)構(gòu)(CISC)相比,RISC具有設(shè)計(jì)更簡(jiǎn)單、設(shè)計(jì)周期更短等優(yōu)點(diǎn),并可以應(yīng)用更多先進(jìn)的技術(shù),開(kāi)發(fā)更快的下一代處理
3、器。MIPS是出現(xiàn)最早的商業(yè)RISC架構(gòu)芯片之一,新的架構(gòu)集成了所有原來(lái)MIPS指令集,并增加了許多更強(qiáng)大的功能。MIPS處理器是八十年代中期RISC CPU設(shè)計(jì)的一大熱點(diǎn)。MIPS是賣(mài)的最好的RISC CPU,可以從任何地方,如Sony, Nintendo的游戲機(jī),Cisco的路由器和SGI超級(jí)計(jì)算機(jī),看見(jiàn)MIPS產(chǎn)品在銷(xiāo)售。目前隨著RISC體系結(jié)構(gòu)遭到x86芯片的競(jìng)爭(zhēng),MIPS有可能是起初RISC CPU設(shè)計(jì)中唯一的一個(gè)在本世紀(jì)盈利的。和英特爾相比,MIPS的授權(quán)費(fèi)用比較低,也就為除英特爾外的大多數(shù)芯片廠商所采用。MIPS的系統(tǒng)結(jié)構(gòu)及設(shè)計(jì)理念比較先進(jìn),其指令系統(tǒng)經(jīng)過(guò)通用處理器指令體系MIP
4、S I、MIPS II、MIPS III、MIPS IV到MIPS V,嵌入式指令體系MIPS16、MIPS32到MIPS64的發(fā)展已經(jīng)十分成熟。在設(shè)計(jì)理念上MIPS強(qiáng)調(diào)軟硬件協(xié)同提高性能,同時(shí)簡(jiǎn)化硬件設(shè)計(jì)。2、 實(shí)驗(yàn)?zāi)康奈覀兺ㄟ^(guò)VERILOG HDL 語(yǔ)言和LOGISIM 語(yǔ)言分別用語(yǔ)句和圖形完成對(duì)32位MIPS-CPU的設(shè)計(jì),通過(guò)前8周的學(xué)習(xí)我們基本掌握了MIPS的概念和原理,認(rèn)識(shí)到RISC架構(gòu)的特征和優(yōu)缺點(diǎn)。通過(guò)過(guò)老師的講解,了解到每一條語(yǔ)句的從設(shè)計(jì)到硬件實(shí)現(xiàn)的全過(guò)程。通過(guò)本次實(shí)驗(yàn)我們要更加深入的理解硬件組成的結(jié)構(gòu),語(yǔ)句邏輯實(shí)現(xiàn)的原理。掌握硬件編程語(yǔ)言和硬件圖形語(yǔ)言編程的方法。透徹的理解
5、MIPS的特征和優(yōu)點(diǎn)。VERILOG HDL 語(yǔ)言實(shí)現(xiàn)部分實(shí)驗(yàn)內(nèi)容利用VERILOG設(shè)計(jì)一種32位單周期MIPS CPU。首先設(shè)計(jì)各個(gè)子模塊,并將已做好的各個(gè)模塊進(jìn)行模塊合并,實(shí)現(xiàn)單周期CPU的各項(xiàng)指令。實(shí)驗(yàn)環(huán)境Window Xp Quartus II各個(gè)子模塊的簡(jiǎn)單介紹此程序?qū)?shù)據(jù)通路(SingleDataLoad)設(shè)定為頂層模塊,下面的模塊包括:算術(shù)邏輯運(yùn)算單元(ALU)、數(shù)據(jù)存儲(chǔ)器(DataStore)、數(shù)據(jù)寄存器(Registers)、取指令部件(GetCode)、總控制器(Control),通過(guò)頂層模塊對(duì)各個(gè)子模塊的調(diào)用從而實(shí)現(xiàn)了整個(gè)單周期CPU。1) 數(shù)據(jù)通路(SingleData
6、Load):進(jìn)行數(shù)據(jù)的運(yùn)算、讀取以及存儲(chǔ)功能,通過(guò)總控制器產(chǎn)生的各個(gè)控制信號(hào),進(jìn)而實(shí)現(xiàn)對(duì)數(shù)據(jù)的各項(xiàng)操作。2) 算術(shù)邏輯運(yùn)算單元(ALU):數(shù)據(jù)通路調(diào)用此模塊,根據(jù)得到的控制信號(hào)對(duì)輸入數(shù)據(jù)進(jìn)行處理,處理功能有:addu、add、or、subu、sub、sltu、slt等。3) 數(shù)據(jù)存儲(chǔ)器(DataStore):當(dāng)WrEn控制信號(hào)為1時(shí),此時(shí)就將輸入數(shù)據(jù)存儲(chǔ)到此存儲(chǔ)器中,當(dāng)WrEn為0時(shí),則根據(jù)輸入的地址,找到地址對(duì)應(yīng)的單元將單元中的數(shù)據(jù)輸出。4) 數(shù)據(jù)寄存器(Registers):在此程序中功能和實(shí)現(xiàn)基本和數(shù)據(jù)存儲(chǔ)器相同,但在實(shí)際CPU當(dāng)中使用的邏輯器件及獲取數(shù)據(jù)的方式還是有所區(qū)別的。5) 取指
7、令部件(GetCode):指根據(jù)PC所提供的地址從指令寄存器中取出要執(zhí)行的指令,再根據(jù)各控制信號(hào),得出下一次要執(zhí)行的指令的地址。(總控制器(Control):總控制器通過(guò)從取指令部件獲得的指令,進(jìn)而產(chǎn)生各個(gè)控制信號(hào),并將控制信號(hào)返回個(gè)數(shù)據(jù)通路,就此實(shí)現(xiàn)各項(xiàng)功能。程序截圖及說(shuō)明上圖為執(zhí)行下列指令產(chǎn)生的圖像:Mem0<=6'b000100,5'b00001,5'b00010,5'b00000,5'b00000,6'b000001; /beq $1,$2,1Mem4<=6'b000000,5'b00001,5'b00
8、010,5'b00100,5'b00000,6'b101011; /sltu $4,$1,$2 Mem8<=6'b000010,5'b00000,5'b00000,5'b00000,5'b00000,6'b000010; /j 2當(dāng)$1、$2所指的寄存器的值相同時(shí),執(zhí)行上述指令,得到的圖如下:可以看出CPU跳過(guò)了第二條指令,直接執(zhí)行了第三條,而上圖執(zhí)行了第一條指令后接著執(zhí)行第二條,最后才執(zhí)行第三條指令,區(qū)別就在于第一幅圖表示的是$1、$2中的值不相等所執(zhí)行的情況,第二幅圖表示的是$1、$2中的值相等的情況,由此可以得
9、知測(cè)試正確。實(shí)驗(yàn)收獲及感想VERILOG 語(yǔ)句將二進(jìn)制元器件的原理整合到類(lèi)匯編語(yǔ)言上,通過(guò)這次實(shí)驗(yàn)我從理解上從這語(yǔ)言本身理解到邏輯與函數(shù)不分家的道理,每一條連線和與、非、或都是一個(gè)個(gè)對(duì)應(yīng)的函數(shù)。任一個(gè)復(fù)雜的CPU 都是從一條條簡(jiǎn)單的邏輯一條一條實(shí)現(xiàn)的。任何一條語(yǔ)句都是通過(guò)不同的函數(shù)和賦值分分合合直到被執(zhí)行完畢。實(shí)驗(yàn)代碼:數(shù)據(jù)通路(SingleDataLoad)module SingleDataLoad(clk,RegWr,RegDst,ExtOp,ALUSrc,Branch,Jump,MemtoReg,MemWr,ALUctr);input clk;/input31:0 Instruction
10、;output RegWr,RegDst,ExtOp,ALUSrc,Branch,Jump,MemtoReg,MemWr;output2:0 ALUctr;wire RegWr,RegDst,ExtOp,ALUSrc,Branch,Jump,MemtoReg,MemWr;wire2:0 ALUctr;wire 31:0 Instruction;wire 4:0 Rd,Rt,Rs;wire 5:0 op,func;wire4:0 Rx;wire P1,P2,Zero,Overflow;wire 31:0 busW,busA,busB,out1,dataout,busB1,busBo;wire 1
11、5:0 imm16;Control con(Instruction,RegWr,ExtOp,ALUSrc,ALUctr,Branch,Jump,RegDst,MemtoReg,MemWr);assign op=Instruction31:26;assign func=Instruction5:0;assign Rs=Instruction25:21;assign Rt=Instruction20:16;assign Rd=Instruction15:11;assign imm16=Instruction15:0;assign P1=P2&RegWr;MUX2 mux2(RegDst,R
12、t,Rd,Rx);assign busB1=16imm1615 & ExtOp,imm1615:0;MUX2TO1 mux1(ALUSrc,busB,busB1,busBo);Registers Reg(clk,busW,P1,Rx,Rs,Rt,busA,busB);ALU alu(busA,busBo,ALUctr,out1,Overflow,Zero);assign P2=!Overflow;DataStore datas(clk,busB,out14:0,MemWr,dataout);MUX2TO1 mux3(MemtoReg,out1,dataout,busW);GetCode
13、 get(Branch,Zero,Jump,clk,Instruction);endmodule module MUX2TO1(op,X,Y,Z);input op;input 31:0 X,Y;output31:0 Z;reg 31:0 Z;always(op)beginif(op=1)Z=Y;elseZ=X;endendmodulemodule MUX2(op,x,y,z);input op;input 4:0 x,y;output4:0 z;reg 4:0 z;always(op)beginif(op=1)z=y;elsez=x;endendmodule算數(shù)邏輯運(yùn)算單元(ALU)modu
14、le ALU(A,B,ALUctr,Result,Overflow,Zero); parameter n=32; input n-1:0 A,B; input 2:0 ALUctr; output n-1:0 Result; output Overflow,Zero; wire Zero,Overflow; wire n-1:0 Result; wire SUBctr,OVctr,SIGctr; wire 1:0 OPctr; wire n-1:0 H,M,N,Add_Result; wire K,G,I,Add_Sign,Add_Overflow,Add_carry; assign SUBc
15、tr=ALUctr2; assign OVctr=!ALUctr1 & ALUctr0; assign SIGctr=ALUctr0; assign OPctr1=ALUctr2 & ALUctr1; assign OPctr0=!ALUctr2 & ALUctr1 &!ALUctr0; assign H=BnSUBctr; assign M=A|B; Adderk nbit_add(SUBctr,A,H,Add_carry,Add_Sign,Add_Result,Zero); /,Add_Overflow assign Add_Overflow= An-1 &
16、amp; Hn-1 & !Add_Resultn-1 | !An-1 & !Hn-1 & Add_Resultn-1; assign K=SUBctr Add_carry; assign I=Add_Sign Add_Overflow; assign Overflow=OVctr & Add_Overflow; IMUX2to1 YN(K,I,SIGctr,G); IMUX2to1 yn(0,1,G,N); MUX3to1 nbit_Result(Add_Result,M,N,OPctr,Result);endmodulemodule Adderk (Cin,
17、X, Y,Add_carry,Add_sign,Add_result,Zero); /Add_Overflow, parameter k = 32; input k-1:0 X, Y; input Cin; output k-1:0 Add_result; output Add_carry,Add_sign,Zero; /,Add_Overflow reg k-1:0 Add_result; reg Add_carry,Zero,Add_sign; /,Add_Overflow always(X or Y or Cin) beginAdd_carry, Add_result = X + Y +
18、 Cin; if(Add_result=0)Zero=1;elseZero=0;if(Add_result31=1)Add_sign=1;elseAdd_sign=0; endendmodulemodule MUX3to1 (V,W,U,Selm,F); parameter k = 32; input k-1:0 V,W,U; input 1:0 Selm; output k-1:0 F; reg k-1:0 F; always (V or W or U or Selm) case(Selm) 2'b00: F <= V; 2'b01: F <= W; 2'
19、b10: F<=U; endcase endmodule module IMUX2to1 (V,W,SIGctr,Less); input31:0 V,W; input SIGctr; output31:0 Less; reg31:0 Less; always (V or W or SIGctr) if (SIGctr = 0) Less <= V; else Less <= W;Endmodule數(shù)據(jù)存儲(chǔ)器(DataStore):module DataStore(clk,DataIn,Adr,WrEn,Out);input 31:0 DataIn;input 4:0 Adr
20、;input WrEn,clk;output 31:0 Out;reg 31:0 Out;reg 31:0 Store 31:0;always(negedge clk)beginif(WrEn=1)StoreAdr=DataIn;endalways(Adr or WrEn)if(WrEn=0)Out=StoreAdr;endmodule數(shù)據(jù)寄存器(Registers):module Registers(clk,busW,wr,Rw,Ra,Rb,busA,busB);input 31:0 busW;input clk,wr;input 4:0 Rw,Ra,Rb;output 31:0 busA,
21、busB;reg 31:0 busA,busB;reg 31:0 Regist 31:0;always(negedge clk)beginRegist1=32'd25; Regist2=32'd25;if(wr=0)RegistRw=busW;endalways(Ra or Rb or wr)beginif(wr=1)beginbusA=RegistRa;busB=RegistRb;endendendmodule取指令部件(GetCode):module GetCode(Branch,Zero,Jump,clk,Instruction);input Zero,Branch,Ju
22、mp,clk;output31:0 Instruction;reg29:0 PC=25;wire29:0 M,M2;wire 4:0 addmem;wire K;reg reset=1;assign addmem=PC2:0,2'b00;wire29:0 O1,O2,O3,O4;wire15:0 imm16;instruct InsMem(addmem,Instruction);always(negedge clk)begin if (reset=1)beginPC <=0;reset<=0;end elsebegin PC <= O4;endendassign im
23、m16=Instruction15:0;assign M=PC;assign K=Zero & Branch;Adder adder1(M,1,O1);assign M1=14imm1615,imm1615:0;Adder adder2(O1,M1,O2);MUX2T1 mux1(K,O1,O2,O3);assign M2=M29:26,Instruction25:0;MUX2T1 mux2(Jump,O3,M2,O4);endmodulemodule Adder(M,N,O);input29:0 M;input29:0 N;output29:0 O;wire29:0 M,N,O;as
24、sign O=M+N;endmodule module MUX2T1(op,X,Y,Z);input op;input 29:0 X,Y;output29:0 Z;reg 29:0 Z;always(op)beginif(op=1)Z=Y;elseZ=X;endendmodulemodule instruct(addr,inst); input 4:0 addr; output 31:0 inst; reg 31:0 inst;/ Declare the RAM variable reg 31:0 Mem 31:0;/ write instruction: add 3<=(1)+(2),
25、sub 6<=(4)-(5),jump 0 always (*)begin/Mem0<=6'b000000,5'b00001,5'b00010,5'b00011,5'b00000,6'b100000; /add $3,$1,$2/ Mem4<=6'b000000,5'b00011,5'b00001,5'b00100,5'b00000,6'b100010; /sub $4,$3,$1/ Mem0<=6'b000000,5'b00001,5'b00010,
26、5'b00011,5'b00000,6'b101010; /slt $3,$1,$2/ Mem4<=6'b000000,5'b00011,5'b00001,5'b00100,5'b00000,6'b100011; /subu $4,$3,$1/ Mem0<=6'b000000,5'b00001,5'b00010,5'b00011,5'b00000,6'b101010; /slt $3,$1,$2/ Mem4<=6'b000000,5'b000
27、01,5'b00010,5'b00100,5'b00000,6'b101011; /sltu $4,$1,$2/Mem0<=6'b001101,5'b00001,5'b00011,5'b10000,5'b00000,6'b000101; /ori $3,$1,32773/ Mem4<=6'b001001,5'b00010,5'b00100,5'b00000,5'b00000,6'b001000; /addiu $4,$2, 8/ Mem4<=6
28、9;b001001,5'b00010,5'b00100,5'b11111,5'b11111,6'b111000; /addiu $4,$2, -8/ Mem0<=6'b101011,5'b00001,5'b00011,5'b00000,5'b00000,6'b000101; /sw $3,$1,5/ Mem4<=6'b100011,5'b00001,5'b00100,5'b00000,5'b00000,6'b000101; /lw $4,$1,5
29、Mem0<=6'b000100,5'b00001,5'b00010,5'b00000,5'b00000,6'b000001; /beq $1,$2,1 Mem4<=6'b000000,5'b00001,5'b00010,5'b00100,5'b00000,6'b101011; /sltu $4,$1,$2 Mem8<=6'b000010,5'b00000,5'b00000,5'b00000,5'b00000,6'b000010;/j
30、2end/ read always (addr)begininst <= Memaddr;endendmodule總控制器(Control):module Control(Instruction,RegWr,ExtOp,ALUSrc,ALUctr,Branch,Jump,RegDst,MemtoReg,MemWr);output RegWr,RegDst,ExtOp,ALUSrc,Branch,Jump,MemtoReg,MemWr;input31:0 Instruction;reg RegWr,RegDst,ExtOp,ALUSrc,Branch,Jump,clk,MemtoReg,M
31、emWr;output 2:0 ALUctr;reg 2:0 ALUctr;wire 5:0 op,func;assign op=Instruction31:26;assign func=Instruction5:0;parameter S0=6'b100000,S1=6'b100010,S2=6'b100011,S3=6'b101010,S4=6'b101011,S5=6'b001101,S6=6'b001001,S7=6'b100011,S8=6'b101011,S9=6'b000100,S10=6'b
32、000010;always(op or func)beginif(op=6'b000000)begincase(func)S0:beginBranch=0;Jump=0;RegDst=1;ALUSrc=0;ALUctr=3'b001;MemtoReg=0;RegWr=1;MemWr=0;endS1:beginBranch=0;Jump=0;RegDst=1;ALUSrc=0;ALUctr=3'b101;MemtoReg=0;RegWr=1;MemWr=0;endS2:beginBranch=0;Jump=0;RegDst=1;ALUSrc=0;ALUctr=3'b100;MemtoReg=0;RegWr=1;MemWr=0;endS3:beginBranch=0;Jump=0;RegDst=1;ALUSrc=0;ALUctr=3'b111;MemtoReg=0;RegWr=1;MemWr=0;endS4:be
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力干線遷移施工方案
- 新中式瓦工施工方案
- 文官街地鐵施工方案
- TSHPA 0006-2024 學(xué)校有害生物綜合管理指南
- 2025年度跨境電商貸款擔(dān)保合同
- 二零二五年度餐飲管理輔導(dǎo)合同
- 二零二五年度柜臺(tái)品牌授權(quán)與推廣合同
- 茶樓茶藝師勞動(dòng)合同2025年度與勞動(dòng)合同簽訂流程
- 二零二五年度影視演員網(wǎng)絡(luò)直播聘用協(xié)議
- 二零二五年度個(gè)體店面轉(zhuǎn)讓與市場(chǎng)準(zhǔn)入條件協(xié)議
- 山東省淄博市2023-2024學(xué)年高一下學(xué)期期末教學(xué)質(zhì)量檢測(cè)數(shù)學(xué)試題
- 數(shù)據(jù)中心容災(zāi)備份解決方案
- 七年級(jí)下冊(cè)第三單元名著導(dǎo)讀《駱駝祥子》公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)(公開(kāi)課公開(kāi)課一等獎(jiǎng)創(chuàng)新教案及作業(yè)設(shè)計(jì))
- 2025屆新高考生物精準(zhǔn)復(fù)習(xí)+提高農(nóng)作物產(chǎn)量
- 幾何圖形中求線段線段和面積等最值問(wèn)題 中考數(shù)學(xué)
- 真太陽(yáng)時(shí)調(diào)整
- TD/T 1037-2013 土地整治重大項(xiàng)目可行性研究報(bào)告編制規(guī)程(正式版)
- 2024年時(shí)政試題庫(kù)(奪分金卷)
- 2024年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案1套
- 工程項(xiàng)目移交方案
- 高級(jí)英語(yǔ)-第一冊(cè)-課后習(xí)題答案
評(píng)論
0/150
提交評(píng)論