CPU實(shí)驗(yàn)-單周期MIPS處理器設(shè)計(jì)_第1頁
CPU實(shí)驗(yàn)-單周期MIPS處理器設(shè)計(jì)_第2頁
CPU實(shí)驗(yàn)-單周期MIPS處理器設(shè)計(jì)_第3頁
CPU實(shí)驗(yàn)-單周期MIPS處理器設(shè)計(jì)_第4頁
CPU實(shí)驗(yàn)-單周期MIPS處理器設(shè)計(jì)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、-. z.單周期MIPS處理器設(shè)計(jì)實(shí)驗(yàn)報(bào)告完成人:笪騰飛 2012011263一、實(shí)驗(yàn)?zāi)康?1、設(shè)計(jì)一個(gè)32位的單周期MIPS處理器,具備定時(shí)器、數(shù)碼管等外設(shè);2、編寫一個(gè)編譯器,可以將mips代碼編譯為二進(jìn)制機(jī)器碼;3、編寫一個(gè)計(jì)算兩個(gè)整數(shù)的最大公約數(shù)的匯編程序。二、設(shè)計(jì)方案根據(jù)理論課所學(xué)的單周期MIPS處理器數(shù)據(jù)通路的知識,結(jié)合本次試驗(yàn)的具體要求,最終設(shè)計(jì)方案如下:1、系統(tǒng)時(shí)鐘為了綜合后能夠在開發(fā)板上正確運(yùn)行程序,我們決定采取50MHz的CPU時(shí)鐘,因此編寫了一個(gè)時(shí)鐘分頻模塊,對開發(fā)板提供的100MHz時(shí)鐘進(jìn)展二分頻,從而得到50MHz時(shí)鐘。2、PC產(chǎn)生模塊原理圖如下:如上圖左半局部所示,

2、多路選擇器由一個(gè)always語句中的ifelse ifelse語句實(shí)現(xiàn)。其中,將ALU中的加減法局部提取出來實(shí)現(xiàn)一個(gè)加法器,用于產(chǎn)生PC+4和ConBA兩個(gè)PC來源。將I型指令中的16位立即數(shù)左移兩位后再符號位擴(kuò)展成32位地址,與PC+4相加得到分支地址ConBA。將跳轉(zhuǎn)指令中的26位目標(biāo)地址左移兩位后,與當(dāng)前PC的高四位拼接得到跳轉(zhuǎn)地址JT。將第一個(gè)操作數(shù)存放器中的值取出作為PC的一個(gè)輸入,這是為了實(shí)現(xiàn)jr和jalr指令,從$*p和$Ra存放器中讀取跳轉(zhuǎn)地址。ILLOP和*ADR分別是發(fā)生中斷和異常時(shí)的跳轉(zhuǎn)地址。下一指令地址的選擇由PCSrc決定,而PCSrc是譯碼后由控制信號模塊根據(jù)每條指

3、令的操作碼(opcode)和函數(shù)碼(funct)產(chǎn)生。3、譯碼模塊原理圖如上圖右半局部所示,將PC作為ROM模塊的地址輸入,輸出即為PC所對應(yīng)的指令。分別取出指令中的*些片段,得到$Rs,$Rt,$Rd,shamt,funct,16位立即數(shù)和26位跳轉(zhuǎn)地址。4、控制模塊控制模塊即控制信號產(chǎn)生模塊,六位操作碼OpCode,六位函數(shù)碼5:0 Funct,定時(shí)器中斷信號irq和PC最高位PC31作為輸入,輸出為以下控制信號:(1) R型指令指示信號IsR,值為1表示當(dāng)前指令為R型指令,否則非R型指令;(2) PC產(chǎn)生的選擇信號2:0 PCSrc,取值0,1,2,3,4及其它,分別選擇下一指令不同的P

4、C;(3) 目的存放器選擇信號1:0RegDst,被寫入的存放器有四種選擇:$Rd,$Rt,$Ra,$*p,分別由RegDst不同取值完成選擇;(4) 寫存放器使能信號RegWr,值為1表示允許對存放器進(jìn)展寫操作;(5) ALU第一個(gè)操作數(shù)選擇信號ALUSrc1,值為1表示選擇將移位量shamt進(jìn)展0擴(kuò)展后作為輸入,值為0表示將$Rs存放器中的值作為輸入;(6) ALU第一個(gè)操作數(shù)選擇信號ALUSrc1,值為1表示選擇將擴(kuò)展后的32位立即數(shù)作為輸入,值為0表示將$Rt存放器中的值作為輸入;(7) ALU運(yùn)算控制信號5:0 ALUFunc,作為ALU的輸入選擇不同的運(yùn)算操作;(8) 有無符號數(shù)指

5、示信號Sign,值為1表示有符號數(shù),值為0表示無符號數(shù);(9) 寫存儲器使能信號MemWr,值為1表示允許對存儲器進(jìn)展寫操作;(10) 讀存儲器使能信號MemRd,值為1表示允許對存儲器進(jìn)展讀操作;(11) 寫存放器值的選擇信號1:0 MemToReg,選擇ALU結(jié)果,存儲器讀取結(jié)果和PC+4其中之一作為寫入目的存放器的值;(12) 符號位擴(kuò)展指示信號E*TOp,值為1表示對16位立即數(shù)進(jìn)展符號位擴(kuò)展,值為0表示0擴(kuò)展;(13) 立即數(shù)高位取指令指示信號LUOp,值為1表示當(dāng)前指令為lui指令,選擇將立即數(shù)載入高16位低位填0的32位立即數(shù)作為ALU輸入,值為0表示將正常擴(kuò)展后的32位立即數(shù)作

6、為ALU輸入;控制信號的具體產(chǎn)生過程此處略去,在控制信號說明文件中進(jìn)展詳述。下列圖為數(shù)據(jù)通路的總體原理圖:5、存放器堆模塊存放器堆模塊RegFile根據(jù)$Rs,$Rt,$Rd的值和寫存放器使能信號RegWr完成對存放器堆的讀寫操作。6、ALU模塊根據(jù)指令容進(jìn)展選擇后得到兩個(gè)ALU操作數(shù)和ALU運(yùn)算控制信號ALUFunc及有無符號數(shù)指示信號作為ALU輸入,完成算術(shù)運(yùn)算、位運(yùn)算、邏輯運(yùn)算、移位運(yùn)算和比擬運(yùn)算,輸出為運(yùn)算結(jié)果ALUResult。7、數(shù)據(jù)存儲器模塊通過讀寫使能信號、讀寫地址和寫入容完成對數(shù)據(jù)存儲器的讀寫操作。8、外設(shè)模塊完成對除UART局部的外設(shè)的讀寫操作,以及實(shí)現(xiàn)定時(shí)器功能,此模塊為

7、實(shí)驗(yàn)提供模塊。9、UART模塊此模塊通過對串口對應(yīng)外設(shè)地址的讀寫操作,完成串口收發(fā)器的數(shù)據(jù)接收和數(shù)據(jù)發(fā)送功能。10、存儲器讀取結(jié)果讀存儲器的結(jié)果可能是數(shù)據(jù)存儲器或外設(shè)中的容,因此要通過讀存儲器的地址進(jìn)展選擇,此處該地址即為ALU的計(jì)算結(jié)果ALUResultlw指令的讀取地址為$Ra存放器的值加上偏移量,假設(shè)ALUResult高兩位為00表示讀取的是數(shù)據(jù)存儲器,假設(shè)高兩位為其它實(shí)際上是01表示讀取的是外設(shè)。假設(shè)ALUResult5為1或ALUResult4、3為0表示讀取UART容,否則表示讀取其他外設(shè)的容。三、關(guān)鍵代碼及文件清單1、分頻模塊 CPU_clk.v2、PC產(chǎn)生模塊assign im

8、m16_sll_2bits = 14imm1615,imm16,2b00;assign JT = PC31:28,target,2b00;assign ILLOP = 32h80000004;assign *ADR = 32h80000008;Adder add1(.A(PC),.B(4),.CIN(1b0),.S(PC_Add_4);Adder add2(.A(PC_Add_4),.B(imm16_sll_2bits),.CIN(1b0),.S(ConBA);always (posedge clk or negedge reset) begin if (!reset) PC = 32h800

9、0_0000; else if (PCSrc = 0) PC = PC_Add_4; else if (PCSrc = 1 & ALUResult0 = 1b0) PC = PC_Add_4; else if (PCSrc = 1 & ALUResult0 = 1b1) PC = ConBA; else if (PCSrc = 2) PC = JT; else if (PCSrc = 3) PC = DataBusA; else if (PCSrc = 4) PC = ILLOP; else PC = *ADR;end3、數(shù)據(jù)通路ROM IF(.addr(PC),.data(Instructi

10、on);OpcodeToControl control(.OpCode(OpCode),.Funct(Funct),.irq(irq),.PC31(PC31),.IsR(IsR),.PCSrc(PCSrc),.RegDst(RegDst),.RegWr(RegWr),.ALUSrc1(ALUSrc1),.ALUSrc2(ALUSrc2), .ALUFunc(ALUFunc),.Sign(Sign),.MemWr(MemWr), .MemRd(MemRd),.MemToReg(MemToReg),.E*TOp(E*TOp),.LUOp(LUOp);RegFile RF(.reset(reset)

11、,.clk(clk),.addr1(Rs),.data1(DataBusA),.addr2(Rt),.data2(DataBusB), .wr(RegWr),.addr3(RegWrAddr),.data3(DataBusW);ALU alu(.SrcA(SrcA),.SrcB(SrcB),.ALUFunc(ALUFunc),.Sign(Sign),.ALUResult(ALUResult),.Zero(Zero),.OverFlow(OverFlow),.Negative(Negative);DataMem dm(.reset(reset),.clk(clk),.rd(MemRd),.wr(

12、MemWr),.addr(ALUResult),.wdata(DataBusB),.rdata(DataMemResult);Peripheral per(.reset(reset),.clk(clk),.rd(MemRd),.wr(MemWr),.addr(ALUResult),.wdata(DataBusB),.rdata(PeripheralResult),.led(led),.switch(switch),.digi(digi),.irqout(irq) );UART uart(.clk(clk),.rd(MemRd),.wr(MemWr),.wdata(DataBusB),.rese

13、t(reset),.DataIn(UARTIn),.addr(ALUResult),.DataOut(UARTOut),.rdata(UARTResult);assign MemRdData = (ALUResult31:30 = 2b00) DataMemResult : (ALUResult5 = 1b1 | (ALUResult4 & ALUResult3) UARTResult : PeripheralResult;代碼文件見附件。四、仿真結(jié)果及分析第一組輸入為00001111(15)和00000101(5),輸出為00000101(5);第二組輸入為00000011(3)和00001

14、001(9),輸出為00000011(3);計(jì)算結(jié)果正確,UART、led、數(shù)碼管均顯示正確。五、綜合情況六、硬件調(diào)試情況硬件調(diào)試工作正常七、思想體會在理論課上已經(jīng)學(xué)習(xí)過單周期數(shù)據(jù)通路的搭建,思路比擬清晰,教師又對一些關(guān)鍵模塊如存放器堆、存儲器、外設(shè)等提供了代碼,因此,初步搭建一個(gè)較為粗糙的單周期數(shù)據(jù)通路并不困難,然后是結(jié)合本次試驗(yàn)的一些要求,逐漸豐富完整數(shù)據(jù)通路。比擬有難度的是在后續(xù)仿真調(diào)試過程中遇到的各種復(fù)雜情況,需要對硬件作出一些調(diào)整,如對存儲器的讀取,起初并未考慮到數(shù)據(jù)存儲器與外設(shè)的區(qū)別,因?yàn)樵诶碚撜n中也并未提及到,后來仿真出不了結(jié)果,經(jīng)過反復(fù)分析發(fā)現(xiàn)是讀取存儲器的問題,于是針對不同存儲地址的區(qū)別進(jìn)展了選擇。從開場著手單周期,包括安排控制信號,到最后仿真出正確結(jié)果,綜合到開發(fā)板上正確顯示運(yùn)行,經(jīng)歷了一個(gè)并不容易的過程。在這個(gè)過程中學(xué)到了很多東西,也積累了很多經(jīng)歷,很多時(shí)候?qū)σ粋€(gè)系統(tǒng)來說,開場是非常重要的。對系統(tǒng)整體有了較為充分的理解,對各局部銜接也有很明確的認(rèn)識,在思路清晰的情況下搭建一個(gè)系統(tǒng),事半功倍,以后也可以

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論