Logisim完成單周期處理器開發(fā)_第1頁
Logisim完成單周期處理器開發(fā)_第2頁
Logisim完成單周期處理器開發(fā)_第3頁
Logisim完成單周期處理器開發(fā)_第4頁
Logisim完成單周期處理器開發(fā)_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Logisim完成單周期處理器開發(fā)實(shí)驗(yàn)報(bào)告目錄一、總體數(shù)據(jù)通路結(jié)構(gòu)設(shè)計(jì)圖二、數(shù)據(jù)通路中的模塊設(shè)計(jì)圖1、IFU2、GPR3、ALU4、EXT5、DM6、Controller三、控制器設(shè)計(jì)四、機(jī)器指令描述五、測試程序六、運(yùn)行結(jié)果七、問答八、收獲體會(huì)附:Logisim模塊目錄一、 總體數(shù)據(jù)通路結(jié)構(gòu)設(shè)計(jì)圖 二、數(shù)據(jù)通路中的模塊設(shè)計(jì)圖1、IFU模塊接口信號名方向描述ZeroIALU計(jì)算結(jié)果1:計(jì)算結(jié)果為00:計(jì)算結(jié)果非0ClkI時(shí)鐘信號ResetI復(fù)位信號1:復(fù)位0:無效Insout31:0O32位MIPS指令功能定義序號功能名稱描述1復(fù)位當(dāng)復(fù)位信號有效時(shí),PC被設(shè)置為0x2取指令根據(jù)PC從IM中取出指

2、令3計(jì)算下一條指令地址若不是beq指令,則PC-PC+1,若是beq指令,且zero為1,則PC-PC+sign_ext2、GPR信號名方向描述Wd31:0I寫入數(shù)據(jù)的輸入RegwriteI讀寫控制信號1:寫操作0:讀操作ClkI時(shí)鐘信號ResetI復(fù)位信號1:復(fù)位0:無效A14:0I讀存取器地址1A24:0I讀存取器地址2A34:0I寫寄存器地址Rd131:0O32位數(shù)據(jù)輸出1Rd231:0O32位數(shù)據(jù)輸出23、ALU模塊接口信號名方向描述A31:0I32位輸入數(shù)據(jù)1B31:0I32位輸入數(shù)據(jù)22F1:0I控制信號01:或運(yùn)算10:減法11加法C31:0O32位數(shù)據(jù)輸出功能定義序號功能名稱描

3、述1或A|B2減A-B3加A+B4、EXT模塊接口信號名方向描述Imm1615:0I16位數(shù)據(jù)輸入Extop1:0I控制信號00:高位補(bǔ)001:低位補(bǔ)010:符號擴(kuò)展Ext32O32位數(shù)據(jù)輸出功能定義序號功能名稱描述1高位補(bǔ)0高16位補(bǔ)02低位補(bǔ)0低16位補(bǔ)03符號擴(kuò)展符號位擴(kuò)展5、DM模塊接口信號名方向描述D31:0I寫入數(shù)據(jù)的輸入MemwriteI讀寫控制信號1:寫操作ClkI時(shí)鐘信號ResetI復(fù)位信號1:復(fù)位0:無效A4:0I操作寄存器地址Out31:0032位數(shù)據(jù)輸出功能定義序號功能名稱描述1復(fù)位當(dāng)復(fù)位信號有效時(shí),所有數(shù)據(jù)被設(shè)置為02讀根據(jù)輸入的寄存器地址讀出數(shù)據(jù)3寫根據(jù)輸入的地址把

4、輸入的數(shù)據(jù)寫入6、Controller模塊接口信號名方向描述Op5:0I六位opFunc5:0I六位functionRegdst0寫地址控制Alusrc0cpu第二操作數(shù)選擇控制Mentoreg0Dm讀控制Regwrite0GPR讀寫控制Memwrite0DM寫控制,寫入GPR數(shù)據(jù)選擇Npc_sel0Beq指令標(biāo)志Extop0控制ext擴(kuò)展方式Aluop1:00控制cpu進(jìn)行相應(yīng)運(yùn)算三、控制器設(shè)計(jì)單周期真值表FuncN/AOpaddsuborilwswbeqluiRegDst1100XX0ALUSrc0011101MentoReg0001XXXRegWrite1111002MemWrite00

5、00100Npc_sel0000010ExtopXX000X1ALUctrAddsubtractoraddaddsubtractX四、機(jī)器指令描述助記符opcodefunction功能addurd-rs+rtsuburd-rs-rtorirt - rs | (zero-extend)immediatelwrt - memoryrs + (sign-extend)immediateswmemoryrs + (sign-extend)immediate - rtbeqif (rs = rt) PC - PC+4 + (sign-extend)immediate2luirt - immediate*

6、65536jPC - (PC+4)31.28,address,0,0五、測試程序lui$t0,0x0004 #lui 測試程序要實(shí)現(xiàn):立即數(shù) 0x0004 加載至 t0 寄存器的高位 lui$t1,0x0008 #lui 測試程序要實(shí)現(xiàn):立即數(shù) 0x0008 加載至 t1 寄存器的高位 ori$t3,$zero,0x #ori 測試程序要實(shí)現(xiàn): zero 寄存器中的內(nèi)容與立即數(shù) 0x 進(jìn)行或運(yùn)算,儲存在 t3 寄存器中 sw$t0,4($t3) #sw 測試程序要實(shí)現(xiàn):把 t0 寄存器中值(1Word),存儲到 t3 的值再加上偏移量 4, 所指向的 RAM 中 sw$t0,8($t3) #s

7、w 測試程序要實(shí)現(xiàn):把 t0 寄存器中值(1Word),存儲到 t3 的值再加上偏移量 8, 所指向的 RAM 中 loop:add$t2,$t2,$t1 #add 測試程序要實(shí)現(xiàn):t1 寄存器中的值加上 t2 寄存器中的值后存到 t2 寄存器中 lw$t4,4($t3) #lw 測試程序要實(shí)現(xiàn):把 t3 寄存器的值+4 當(dāng)作地址讀取存儲器中的值存入 t4 lui$t5,0x0004 #lui 測試程序要實(shí)現(xiàn):立即數(shù) 0x0004 加載至 t5 寄存器的高位 sub$t7,$t6,$t5 #sub 測試程序要實(shí)現(xiàn):t6 寄存器中的值減去 t5 寄存器中的值后存到 t7 寄存器中 add$t0,

8、$t0,$t5 #sub 測試程序要實(shí)現(xiàn):t0 寄存器中的值減去 t5 寄存器中的值后存到 t0 寄存器中 add$t6,$t6,$t0 #add 測試程序要實(shí)現(xiàn):t6 寄存器中的值加上 t0 后存到 t6 寄存器中 beq$t0,$t1,loop #beq 測試程序要實(shí)現(xiàn):判斷 t0 的值和 t1 的值是否相等,相等轉(zhuǎn) loop add$t0,$t0,$t5 #add 測試程序要實(shí)現(xiàn):t0 寄存器中的值加上 t5 后存到 t0 寄存器中 lui$v0,0x0001 #lui 測試程序要實(shí)現(xiàn):立即數(shù) 0x0001 加載至 v0 寄存器的高位 lui$v1,0x0002 #lui 測試程序要實(shí)現(xiàn)

9、:立即數(shù) 0x0002 加載至 v1 寄存器的高位 add$v0,$v0,$v1 #add 測試程序要實(shí)現(xiàn):v0 寄存器中的值加上 v1 后存到 v0 寄存器中 add$v1,$v0,$v1 #add 測試程序要實(shí)現(xiàn):v0 寄存器中的值加上 v1 后存到 v1 寄存器中 ori$a0,$v0,0xffff #ori 測試程序要實(shí)現(xiàn):v0 寄存器中的內(nèi)容與立即數(shù) 0xffff 進(jìn)行或運(yùn)算,儲存在 a0 寄存器中 sub$a1,$a0,0x0000ffff #sub 測試程序要實(shí)現(xiàn):a0 寄存器中的值減去立即數(shù) 0x0000ffff 后存到 a1 寄存器中 loop2:sub$a2,$v1,$v0

10、 #sub 測試程序要實(shí)現(xiàn):v1 寄存器中的值減去 v0 中的值后存到 a2 寄存器中 add$a1,$a2,$a1 #add 測試程序要實(shí)現(xiàn):a2 寄存器中的值加上 a1 后存到 a1 寄存器中 beq$a1,$v1,loop2 #beq 測試程序要實(shí)現(xiàn):判斷 a1 的值和 v1 的值是否相等,相等轉(zhuǎn) loop2機(jī)器碼:3c 3c 340b2000 ad 8d6c0004 3c0d0004 01cd7822 010d4020 01c87020 1109fff9 010d4020 3c 3c 3444ffff 3c 3421ffff 00c52820 10a3fffdMARS:六、運(yùn)行結(jié)果GP

11、RDM七、問答1. 請充分利用Error! Reference source not found.中的X可以將控制信號化簡為最簡單的表達(dá)式。RegDst=add+subALUSrc=ori+lw+swMemtoReg=lwRegWrite=add+sub+ori+lwMemWrite=swNpc_sel=beqExtop=lw+swALUctr0=(subu+beq)ALUctr1=ori+luiALUctr2=02. 對于Error! Reference source not found.、Error! Reference source not found.中的與或陣列來說,1個(gè)3輸入與門最

12、終轉(zhuǎn)化為2個(gè)2輸入與門,1個(gè)4輸入與門最終轉(zhuǎn)化為3個(gè)2輸入與門,依次類推?;蜿嚵幸差愃朴?jì)算。那么a) 請給出采用Error! Reference source not found.、Error! Reference source not found.中的方法設(shè)計(jì)的每個(gè)控制信號所對應(yīng)的2輸入與門、2輸入或門、非門的數(shù)量。2輸入與門2輸入或門非門RegDst17110RegWrite32410ALUsrc2035PCsrc505Memwrite502MemRead503MentoReg503Extop1524ALUctr11013ALUctr22129b) 請與第Error! Reference source not found.項(xiàng)對比,你更喜歡哪種設(shè)計(jì)方法。為什么第一種的每個(gè)控制信號都需要對其分配單獨(dú)的與門、或門,因?yàn)樗侵苯訉?op、func 的 12 位或 6 位信號的邏輯表達(dá)式,所以沒有針對性并且浪費(fèi)元件。 而第二種是先把 op、func 變成相應(yīng)的指令信號,再由指令信號生成控制信號。當(dāng)一種指令對應(yīng)多種控制信號為 1 時(shí),不必再對每個(gè)信號再單獨(dú)為這個(gè)指令分配與門,而可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論