計算機組成原理試驗報告單周期cpu的設(shè)計與實現(xiàn)_第1頁
計算機組成原理試驗報告單周期cpu的設(shè)計與實現(xiàn)_第2頁
計算機組成原理試驗報告單周期cpu的設(shè)計與實現(xiàn)_第3頁
計算機組成原理試驗報告單周期cpu的設(shè)計與實現(xiàn)_第4頁
計算機組成原理試驗報告單周期cpu的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、電子科技大學(xué)計算機科學(xué)與工程學(xué)院標準實驗報告(實驗)課程名稱:計算機組成原理實驗電子科技大學(xué)教務(wù)處制表電子科技大學(xué)實 驗報告學(xué)生姓名: 鄲縣尼克楊學(xué)號:2014指導(dǎo)教師:陳虹實驗地點: 主樓A2-411實驗時間:12周-15周一、實驗室名稱:主樓A2-411二、實驗項目名稱:單周期CPU勺設(shè)計與實現(xiàn)。三、實驗學(xué)時:8學(xué)時四、實驗原理:(一)概述單周期(Single Cycle ) CP昵指CPl取出1條指令到執(zhí)行完該指令只需1個時鐘1個時鐘周期Clock I I1 I I I1 I1七4 Cd匕匕« Ad比。d七風(fēng)AdF 匕 Xv c1=1 V V11=1 V 111=1乙1try

2、r1日y 5周期一條指令的執(zhí)行過程包括:取指令T分析指令T取操作數(shù)T執(zhí)行指令T保存結(jié)果。對 丁單周期CPl說,這些執(zhí)行步驟均在一個時鐘周期內(nèi)完成。(二)單周期cpu總體電路本實驗所設(shè)計的單周期CPU勺總體電路結(jié)構(gòu)如下。(三)MIPS指令格式化MIPS指令系統(tǒng)結(jié)構(gòu)有 MIPS-32和MIPS-64兩種。本實驗的MIPS指令選用MIPS-32。以 下所說的MIPS指令均指MIPS-32。MIPS的指令格式為32位。下圖給出MIPS指令的3種格式。R型指令I(lǐng)型指令J型指令3126 nnp2-21 rc2-rt46i45rd¥r1&aa-5inc-01Q 4opCQcI sI LA

3、Oi ua rsa1 UHCn3126-ep221-rs2-rt-1615immediate031026t2opaddress本實驗只選取了 9條典型的MIPS指令來描述CPl輯電路的設(shè)計方法。下圖列出了本 實驗的所涉及到的9條MIPS指令。五、實驗?zāi)康?、掌握單周期CPU勺工作原理、實現(xiàn)方法及其組成部件的原理和設(shè)計方法,如控制器、運算器等。?2、認識和掌握指令與CPlffi關(guān)系、指令的執(zhí)行過程。?3、熟練使用硬件描述語言 Verilog、EDA工具軟件進行軟件設(shè)計與仿真,以培養(yǎng)學(xué)生 的分析和設(shè)計CPU勺能力。六、實驗內(nèi)容(一)擬定本實驗的指令系統(tǒng),指令應(yīng)包含 R型指令、I型指令和J型指令,指

4、令數(shù) 為9條。(二)CPU&功能模塊的設(shè)計與實現(xiàn)。(三)對設(shè)計的各個模塊的仿真測試。(四)整個CPU勺封裝與測試。七、實驗器材(設(shè)備、元器件):(一)安裝了 Xilinx ISE Design Suite 13.4 的 PC機一臺(二)FPG/ff發(fā)板:Anvyl Spartan6/XC6SLX45(三)計算機與FPGM發(fā)板通過JTAG(Joint Test Action Group )接口連接,其連 接方式如圖所示。八、實驗步驟一個CPU主要由ALU (運算器)、控制器、寄存器堆、取指部件及其它基本功能部件 等構(gòu)成。?在本實驗中基本功能部件主要有:32位2選1多路選擇器、5位2選1多

5、路選擇器、 32位寄存器堆、ALU等。(一) 新建工程(New Project )啟動 ISE Design Suite 13.4 軟件,然后選擇菜單 File tNewProject,彈出 NeWProject Wizard對話框,在對話框中輸入工程名 CPU并指定工作路徑 D:Single_Cycle_CPU。(二) 基本功能器件的設(shè)計與實現(xiàn)(1)多路選擇器的設(shè)計與實現(xiàn)a.5位2選1多路選擇器(MUX5_2_1的設(shè)計與實現(xiàn)在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇New Source命令,創(chuàng)建一個 Verilog Module 模塊,名稱為:MUX5_2_

6、1然后輸入其實現(xiàn) 代碼:modulEMUX5_2_1(input 4:0 A,INPUT 4:0 B,INPUT SEL,OUTPUT4:0 O);ASSIGN O = SEL ? B : A;ENDMODULE在ISE集成開發(fā)環(huán)境中,對模塊 MUX5_2_進行綜合(Synthesize ),綜合結(jié)果如圖所 示:在ISE集成開發(fā)環(huán)境中,對模塊 MUX5_2_進行仿真(Simulation )。輸入如下測式代 碼:modulEMUX5_2_1_T;/ I NPUTSREG 4:0 A;REG 4:0 B;REG SEL;/ OUTPUTSWIRE 4:0 C;/ I NSTANTIATE THE

7、 UNIT UNDERTEST (UUT)MUX5_2_1UUT (.A(A),.B(B),. SEL( SEL),.C(C);INITIAL BEGIN/ I NITIALIZE I NPUTSA = 0;B = 0;SEL = 0;/ VAIT 100 NS FOR GLOBAL RESET TO FINISH#100;A = 5' B10100;B = 0;SEL = 1;/ WAIT 100 NS FOR GLOBAL RESET TO FINISH#100;A = 1;B = 5' B10000;SEL = 0;/ WAIT 100 NS FOR GLOBAL RES

8、ET TO FINISH#100;A = 5' B00000;B = 5' B11000;SEL = 1;/ Add stimulus hereENDENDMODULE然后進行仿真,仿真結(jié)果如圖所示:b.32位2選1多路選擇器的設(shè)計與實現(xiàn)在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇New Source命令,創(chuàng)建一個 Verilog Module 模塊,名稱為:MUX32_2_1然后輸入其實現(xiàn)代碼:modulEMUX32_2_1(input 31:0A,INPUT 31:0B,INPUT SEL,output31:0 O);ASSIGN O=SEL

9、?B:A;ENDMODULE在ISE集成開發(fā)環(huán)境中,對模塊 MUX32_2_進行綜合(Synthesize )MUX32_2_1Arai.ci)FI 0(31 D)S航kAMUX32!B2 1所示:在ISE集成開發(fā)環(huán)境中,對模塊 MUX32_2_進行仿真(Simulation )測式代碼:modulEMUX32_2_1_T;/ I NPUTSREG 31:0 A;,綜合結(jié)果如圖首先輸入如下REG 31:0 B;REG SEL/ OUTPUTSWIRE 31:0 O;/ I NSTANTIATE THE UNIT UNDERTEST (UUT)MUX32_2_1uut (.A(A),.B(B),

10、.SEL(SEL),.O(O);INITIAL BEGINA=0;B=0;SEL=0;/ WAIT 100 NS FOR GLOBAL RESET TO FINISH#100;A=32' H00000001;B=32' H00000000;SEL=1;#100;A=32' H00000101;B=32' H00000010;SEL =0;/ Add stimulus hereENDENDMODULE然后進行仿真,仿真結(jié)果如圖所示:(2)符號擴展(Sign_Extender )的設(shè)計與實現(xiàn)在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇

11、New Source命令,創(chuàng)建一個 Verilog Module 模塊,名稱為:Sign_Extender ,然后輸入其實現(xiàn)代碼:moduleSign_ExtendeRINPUT 15:0 D,output31:0 o);ASSIGN O = (d15:15 = 1' b0) ? (16' b0, d15:0: 16' b1, d15:0;ENDMODULE在ISE集成開發(fā)環(huán)境中,對模塊 Sign_Extender進行綜合(Synthesize ),綜合結(jié)果 如圖所示。在ISE集成開發(fā)環(huán)境中,對模塊 MUX32_2_進行仿真(Simulation )。首先輸入如下 測式

12、代碼:MODULESIGN EXTENDERT;/ I NPUTSREG 15:0 D;/ OUTPUTSWIRE 31:0 O;/ I NSTANTIATE THE UNIT UNDERTEST (UUT)Sign_Extender uut(-d(d),. a。);INITIAL BEGIN/ I NITIALIZE I NPUTSD = 0;/ VAIT 100 NS FOR GLOBAL RESET TO FINISH#100;/ Add stimulus hereD = 16' H0011;#100;D = 16' H1011;ENDENDMODULE然后進行仿真,仿真

13、結(jié)果如圖所示:(3) 32位寄存器堆(RegFile )的設(shè)計與實現(xiàn)在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇New Source命令,創(chuàng)建一個 Verilog Module 模塊,名稱為:RegFile,然后輸入其實現(xiàn)代碼:moduleReGzile(input 4:0Rn1, Rn2, Wi,INPUT WRITE,input 31:0 VD,output31:0 a, B,input Clock);REG 31:0FEgistef1:31;ASSIGN A = (Rn1 = 0) ? 0 : REGISTERRN1;ASSIGN B = (Rn2 = 0

14、) ? 0 : RegistefR N2; always( POSEDGEXOCK BEGINif (WRite && W != 0)Registef(WN <= WD;ENDENDMODULE在ISE集成開發(fā)環(huán)境中,對模塊 RegFile進行綜合(Synthesize ),綜合結(jié)果如圖所示。在ISE集成開發(fā)環(huán)境中,對模塊 RegFile進行仿真(Simulation )。輸入如下測式代碼:moduleFEgfile_t;/ I NPUTSREG 4:0 Rn1;REG 4:0 RN2;REG 4:0 VNREG WRITE;REG 31:0VD;reg Clock/ O

15、UTPUTSWIRE 31:0 a;wire 31:0 B;/ I NSTANTIATE THE UNIT UNDERTEST (UUT)REGFILE UUT (.RNl(RNl),.RN2(Rn2),.Wn(Wj),.Write(WRite),.Wd(W),.A(A),.b(b),.ClocKClocK);INITIAL BEGIN/ I NITIALIZE I NPUTSRN1 = 0;RN2 = 0;W = 0;VRite = 0;W = 0;Clock = 0;/ VAIT 100 NS FOR GLOBAL RESET TO FINISH#100;RN1 = 5' B000

16、01;RN2 = 5' B00001;WN = 5' B00001;WRITE = 1;WD = 0;Clock = 0;#100;Clock = 1;#50;WD = 32' HBBBBBBBB;#50;Clock = 0;#100;Clock = 1;#100Clock = 0;/ Add stimulus hereendENDMODULE然后進行仿真,仿真結(jié)果如圖所示:(4)運算器(ALU設(shè)計與實現(xiàn)在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇New Source命令,創(chuàng)建一個 Verilog Module 模塊,名稱為:ALU然后輸

17、入其實現(xiàn)代碼: moduleALU(input 31:0 A, B,input 2:0 ALU_operationoutput31:0 Result;outputZero);assign FEsult = (ALU_operation= 3' B000) ? A + B :(ALU_operation= 3' B100) ? A - B :(ALU_operation= 3' B001) ? A & B :(ALU_operation= 3' b101) ? A | B :(ALU_operation= 3' b010) ? A A B :(AL

18、U_operation= 3' b110) ? B15:0,16' h0:32' hxxxxxxxxassign Zero = |Resultendmodule在ISE集成開發(fā)環(huán)境中,對模塊 ALU®行綜合(Synthesize ),綜合結(jié)果如圖所示在ISE集成開發(fā)環(huán)境中,對模塊 ALU進行仿真(Simulation )。輸入如下測式代碼:moduleALUJtb;/ I nputsreg 31:0a;reg 31:0B;reg 2:0 ALU_operation/ OUTPUTSwire 31:0 Result; wire zero/ I NSTANTIAT

19、E THE UNIT UNdERTeST (UUT)ALUuut (.A(A),.B(B),.ALU_operatio(ALU_operatioN,.resultresult,.Z erQZ erO);initial begin/ I NITIALIZE I NPUTSA = 0;B = 0;ALU_operation= 0;/ WAIT 100 ns for global reset to finish#100;A = 1;B = 1;ALU_qperation= 0;/ Add stimulus here#100A = 2;B = 2;ALU_operation= 4;#100A = 1;

20、B = 1;ALU&peration= 1;#100A = 1;B = 1;ALU_operation= 5;#100A = 1;B = 1;ALU_qperation= 2;ENDendmodule然后進行仿真,仿真結(jié)果如圖所示:(5)控制器(Controller )的設(shè)計與實現(xiàn)為了簡化設(shè)計,控制器由控制單元Control和控制單元ALUop組成,控制器結(jié)構(gòu)如下所示。a. Control的設(shè)計與實現(xiàn)在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇New Source命令,創(chuàng)建一個 Verilog Module 模塊,名稱為:Control ,然后輸入其實現(xiàn)

21、代 碼:moduleControLinput 5:0 OP,OUTPUTFEGDST,OUTPUTFEGWRITE,outputALU巍G outputMEmWRite,outputMEmFEac,outputMEmtOEgoutputbranchoutput1:0 ALUCtr);WIREI_RT=| OF;wire I _Lw=of5 & of3;wire i_Sw=of5 & op3;wire I_BEQ =of2 & of1;wire i_Lui =of3 & op2;assign FEgDSt = I _Rt;assign RegWRite=i _Rt

22、| I _LW i _Lui ;assign ALURc =i _Lv| i _Sw | i_Lui ;assign MEmWRite =i_Svyassign MEmFEadfi _LwASSIGN MtMT(FEG= I _LVVASSIGN BRANC=I_BEQASSIGN ALLCtf1= I _Rt| I _Lui ;ASSIGN ALLCtR0= I _BEC| I_LUI ;ENDMODULE在ISE集成開發(fā)環(huán)境中,對模塊 Control進行綜合(Synthesize ), 綜合結(jié)果如 圖:在ISE集成開發(fā)環(huán)境中,對模塊 Control進行仿真(Simulation )。首先輸

23、入如下測 式代碼:moduleControltb;/ I NPUTSREG 5:0 OP;/ OUTPUTSWIRE FEGDST;WIRE FEG/RITE;WIRE ALUSCwire MEmRead;wire MEmtOEgwire Branchwire 1:0ALUCTR/ I NSTANTIATE THE UNIT UNDERTEST (UUT)Control uut(.OR OP),.REGDBT(REGDST),.ReG/Rite(ReGAAite),.ALUSRqALUSR。,.M eM/Rite (MeiMMite),.MeMFEad(MeiReac),.M EMT(REG(

24、MEMTdREG,.B ranc(B ranch.ALUctf(ALUctf);INITIAL BEGIN/ I NITIALIZE I NPUTSOP = 0;/ VAIT 100 NS FOR GLOBAL RESET TO FINISH#100;OP = 6' B000000;#100;OP = 6' B100011;#100;OP = 6' B101011;#100;OP = 6' B000100;#100;OP = 6' B001111;ENDENDMODULE然后進行仿真,仿真結(jié)果如圖所示:b. ALUop的設(shè)計與實現(xiàn)在ISE集成開發(fā)環(huán)境中,

25、在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇NewSource命令,創(chuàng)建一個 Verilog Module模塊,名稱為:ALUop然后輸入其實現(xiàn)代碼: moduleALLORinput 5:0 FUNC,INPUT 1:0 ALUCtroutput2:0 ALU_OP);wire I _Rt = ALUCtRI & ALUCtf0;assign ALU_oR2=( i_Rt&( funC2& funC1)|( funC2 &funC0)| ALUdtR。;assign ALU_OR1=( I_RT &funC2 &funC1)|(ALUc

26、tR1& ALUCtR。);ASSIGN ALU_OR0=( I _Rr &FUNC2 &FUNC1); ENDMODULE在ISE集成開發(fā)環(huán)境中,對模塊 ALUop進行綜合(Synthesize ),綜合結(jié)果如圖:在ISE集成開發(fā)環(huán)境中,對模塊 ALUop進行仿真(Simulation )。首先輸入如下測式代碼:moduleALUjtb;/ I nputsREG 31:0A;REG 31:0B;REG 2:0ALU_operation/ OUTPUTSwire 31:0Result;WIRE ZERO/ I NSTANTIATE THE UNIT UNDERTEST

27、(UUT)ALUuut (.A(A),.B(B),.ALU_operatio(ALU_operatio)j,.resultresult,.Z ERO(Z ERO);INITIAL BEGIN/ I NITIALIZE I NPUTSA = 0;B = 0;ALU_operation= 0;/ VAIT 100 NS FOR GLOBAL RESET TO FINISH#100;A = 1;B = 1;ALU_operation= 0;/ Add stimulus here#100A = 2;B = 2;ALU_?peration= 4;#100A = 1;B = 1;ALU_qperation

28、= 1;#100A = 1;B = 1;ALU_operation= 5;#100A = 1;B = 1;ALU_operation= 2;ENDendmodule然后進行仿真,仿真結(jié)果如圖所:c.將 Control 與 ALUop封裝成 Controller在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇New Source命令,創(chuàng)建一個 Verilog Module 模塊,名稱為:Controller ,然后輸入其實現(xiàn)代碼:MODULECONTROLLERINPUT 5:0 OP,INPUT 5:0 FUNC,OUTPUTFEGDST,OUTPUTREGWRIT

29、E,outputALUSc,outputMemWFite,outputMeMFEadOUTPUTMEMTOREG,outputbranchoutput2:0ALU_op);WIRE 1:0 ALUCtrControlUO(op ReGDst, FEWRite, ALU$C MeMRite, MEmRead MEmtOEg BranchALUCtR;ALUOp U1 (func ALUCtr ALU_of);endmodule在ISE集成開發(fā)環(huán)境中,對模塊Controller進行綜合(Synthesize ),綜合結(jié)果如圖:在ISE集成開發(fā)環(huán)境中,對模塊 Controller 進行仿真(Simu

30、lation )。首先輸入如下 測式代碼:moduleControllertb;/ I NPUTSREG 5:0 OP;REG 5:0 FUNC;/ OUTPUTSWIRE FEGDST;wire FEGTRite;WIRE ALUSiCWIRE MEMWRITE;WIRE MEMREADwire MEmtOEgwire Branch wire 2:0 ALU_op;/ I nstantiate the Unit UNderTest (UUT)Controller uut(.OR OB,.funC funC,.REdDsT(REdDsi),.ReG/Rite(ReGWRite),.ALUSRq

31、ALUSR。,.M eM/Rite (MeMAAite),.MeMEad(MeiReac),.M EMT(REd(MEMTdREdl,.B rancHBrancN.ALU_oRALU_oB);initial begin/ I NITIALIZE I NPUTSOP = 0;FUNC= 0;/ VAIT 100 NS FOR GLOBAL RESET TO FINISH#100;OP =6' B100011;#100OP=6' B101011;#100OP=6' B000100;#100OP=6' B001111;ENDENDMODULE然后進行仿真,仿真結(jié)果如圖

32、所示:(6)取指電路的設(shè)計與實現(xiàn)取指電路需完成ADD32 PC寄存器、多路選擇器和 左移兩位模塊,從而實現(xiàn)該取指電 路。a. ADD32勺設(shè)計與實現(xiàn)在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇NewSource命令,創(chuàng)建一個 Verilog Module模塊,名稱為:ADD32然后輸入其實現(xiàn)代碼:moduleADD32(input 31:0 A, B,output31:0 C);ASSIGN C = A + B;ENDMODULE在ISE集成開發(fā)環(huán)境中,對模塊Controller進行綜合(Synthesize ),綜合結(jié)果如圖:b. 左移兩位模塊(Left_2_

33、Shifter )的設(shè)計與實現(xiàn)在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇New Source命令,創(chuàng)建一個 Verilog Module 模塊,名稱為:Left_2_Shifter ,然后輸入其實現(xiàn)代碼:modulELeft_2_Shifter(INPUT 31:0 D,output31:0 o);ASSIGN O = C29:0,2' B00;ENDMODULE在ISE集成開發(fā)環(huán)境中,對模塊Controller進行綜合(Synthesize ),綜合結(jié)果如圖:c.綜合取指電路(Fetch)的設(shè)計與實現(xiàn)在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠

34、標右鍵,在彈出的菜單中選擇NewSource命令,創(chuàng)建一個 Verilog Module模塊,名稱為:Fetch ,然后輸入其實現(xiàn)代碼:MODULEFETCHinput Resetinput Clockinput 31:0B_addrINPUT Z, B,output31:0 addr);reg 31:0 PC;wire 31:0U0_o;WIRE 31:0U1_C;WIRE 31:0U2_C;WIRE 31:0 Next_PC;WIRE SEL = Z & B;Left_2_Shifter U0 (B_addr U0_o);ADD32U1 (PC, 4, U1_C);ADD32U2

35、(U1_C, U0_O, U2_C);MUX32_2_1M1 (U1_C, U2_C, sel, Next_PC);assign addr= PC;always( posedgEDlock or negedgEeseI) beginif (Reset = 0)PC= 0;ELSEPC= Next_PC;endendmodule在ISE集成開發(fā)環(huán)境中,對模塊Fetch進行綜合(Synthesize ),綜合結(jié)果如圖:首先輸入如下測式在ISE集成開發(fā)環(huán)境中,對模塊 Fetch進行仿真(Simulation )代碼:moduleFETCH_T;/ I nputsREG CLOCKREG RESETR

36、EG 31:0 B _ADDRREG B;REG乙/ Outputswire 31:0 inst ;WIRE 31:0 O_ADDRWIRE 31:0 O_SUMWIRE 31:0 O_SUM1;/ I nstantiate the unit UNderTest (UUT)FETCHUut (.clocK clocK,.reset reset,.b_addRb_addR,.B(B),.Z(Z),.INST( INST),.o_addRo_addR,.o_sum c_sum,.o_suM(o_suM);INITIAL BEGIN/ I NITIALIZE I NPUTSCLOCK= 0;RESE

37、T= 0;b_addr= 0;B = 0;Z = 0;/ WAIT 100 NS FOR GLOBAL RESET TO FINISH#100;CLOC=1;#100;CLOC=0;#100;CLOC=1;#100;CLOC=0;#100;CLOC=1;#100;CLOC=0;#100;CLOC=1;#100;Z=1;B=1;b_add=32' h4;CLOC=0;#100;CLOC=1;#100;CLOC=0;B=0;Z=0;#100;CLOC=1;#100;CLOC=0;#100;CLOC=1;B_ADD=32' B0;#100;CLOC=0;#100;RESET=1;CL

38、OC=1;#100;CLOC=0;#100;CLOC=1;#100;CLOC=0;/ Add stimulus here/ Add stimulus hereENDENDMODULE然后進行仿真,仿真結(jié)果如圖所示:(7)數(shù)據(jù)通路Data_Flow的設(shè)計與實現(xiàn)除去指令存儲器Instruction ROM、數(shù)據(jù)存儲器DATA MEM將剩余的電路封裝成一個 單周期的CP嗷據(jù)通路(Data_Flow)模塊。在ISE集成開發(fā)環(huán)境中,在工程管理區(qū)任意位置單擊鼠標右鍵,在彈出的菜單中選擇New Source命令,創(chuàng)建一個 Verilog Module 模塊,名稱為:Data_Flow,然后輸入其實現(xiàn)代碼:m

39、odulEData_Flo(input Resetinput ClockINPUT 31:0 I NST,input 31:0DataoutputMemWRite,outputMeMReadioutput31:0 Result,output31:0B_dataoutput31:0 NexTPC);WIRE 31:0 B_addrWIRE Z, B;WIRE FEGDST;WIRE FEGVRITE;WIRE ALU&CWIRE MEMTOEGwire 2:0ALU_OWIRE 31:0 ALU_A, ALU_B;wire 4:0WN;wire 31:0 WD;Fetch U0 (Res

40、et Clock B_addr 乙 B, NextPC);ControllefUI (I nst31:26,I nst5:0,ReGDst, ReGWRite, ALUScMEMMite, MEMRead MEmtReg B, ALU_OB;ALU U2 (ALU_A, ALU_B, ALU_OP Result, Z);REgFile U3(I nst25:21,I nst20:16,W ReGARite, WD, ALU_A, B_>ata ClocK;MUX5_2_1U4 (I nst20:16,I nst15:11,REgDst, VN);MUX32_2_1U5(B_data B_

41、addr ALU&C ALU_B);Sign_ExtenderU6 (I nst15:0,B_addR;MUX32_2_1U7(NexTPC, Data, MEmtOeg VD);endmodule在ISE集成開發(fā)環(huán)境中,對模塊Controller進行綜合(Synthesize ),綜合結(jié)果如圖:在ISE集成開發(fā)環(huán)境中,對模塊 Data_Flow進行仿真(Simulation )。首先輸入如下 測式代碼:modulEData Flowtb;/ I nputsreg Resetreg Clockreg 31:0Instreg 31:0Data;/ Outputs wire MEM/Rit

42、e;wire 31:0 Result;wire 31:0 B_datawire 31:0 NextPC;/ I nstantiate the Unit UNderTest (UUT)Data_Flow uut(.Reset(Reset),.ClocKClocK,.I ns| nsi),.DatADatA*,.MeMWRite(MeMWRite),.MeMRead(MeiReaD,.ResulTResulT,.B_dat(B_datA,.N extPC(NExTPC));INITIAL BEGIN/ I NITIALIZE I NPUTSReset = 0;Clock = 0;I nst = 0;Data = 0;/ VAit 100 ns for global reset to finish#100;Reset= 1;/#100;I NST = 32' H00002820;/R 型,ADD0號0號寄存器內(nèi)容相加保存到5號寄存器,執(zhí)行后 MW,M!fi為零,B_data應(yīng)為零#100;Clock = 1;#100;Clock = 0;I NST = 32' h8CB10000;/I, lw,5號與立即數(shù)符號擴展相加作為地址,將內(nèi)存單元內(nèi)容DATA送到9號寄存器,執(zhí)行:#100;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論