《計算機組成原理》課程實踐_第1頁
《計算機組成原理》課程實踐_第2頁
《計算機組成原理》課程實踐_第3頁
《計算機組成原理》課程實踐_第4頁
《計算機組成原理》課程實踐_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《計算機組成原理》課程實踐

題目:單周期MIPSCPU設(shè)計

學號:__________

姓名:李興旺

班級:軟件20-1______________

學院:計算機科學與工程學院

山東科技大學

2022年6月

課程實踐:單周期MIPSCPU設(shè)計

1.目的與要求

1)本課程要求根據(jù)所學計算機組成原理的相關(guān)知識,結(jié)合實驗內(nèi)容,基于

EDA環(huán)境設(shè)計一個簡易CPU,并能利用EDA等現(xiàn)代仿真工具建立研究對象的模

型,模擬系統(tǒng)設(shè)計的正確性。

2)學生掌握控制器設(shè)計的基本原理,能利用硬布線控制器的設(shè)計原理在

Logisim平臺中設(shè)計實現(xiàn)MIPSCPU。

2.實驗內(nèi)容

對照多周期MIPS處理器數(shù)據(jù)通路圖,采用微程序控制器的設(shè)計方法實現(xiàn)控

制器,構(gòu)造多周期MIPS處理器,要求能支持表中的8條MIPS核心指令,最終

設(shè)計實現(xiàn)的MIPS處理器能運行實驗包中的冒泡排序測試程序,該程序自動在數(shù)

據(jù)存儲器0~15號字單元中寫入16個數(shù)據(jù),然后利用冒泡排序?qū)?shù)據(jù)升序拄序。

實驗電路應(yīng)能自動統(tǒng)計指令數(shù)目、時鐘周期數(shù)。

3.實驗過程與方案

OPCunc

jgoooojfcjOiUiU.OP

(OP][FUNC|[疝塞可

指令烽回信號

ttMIPS指令RTL功能描述

1addSrd.Srs.SrtR[$rd]^-R[$rs]+R[$rt]溢出時產(chǎn)生異常,且不修改R[$rd]

2sitSrd,Srs.SrtR[Srd]<-R[$rs]<R[Srt]小于置1,有符號比較

3addi$rt.$rs.immR[$rt]*-R[$rs]+SignExti6t)(imm>溢出產(chǎn)生異常

4IwSrt.ininUSrs)R[$gl^Mem4B(R[$rs]+SignExti6b(imm))

5swSrt.iinin(Srs)Mem4B(R[$El±SignExti6b(imm))<—R[$rt]

6beqSrs.Srt.immif(R[Srs]=RFSrtnPC-PC+SignExtiM{imm,00})

7bne$rs.$rt.inimif{R[Srs]_t=R[Srt])PC-PC+SignExti8b((inim,00})

8syscall系統(tǒng)調(diào)用,這里用于停機

4.電路框架

####電路引腳

I信號I輸入/輸出位寬I功能描述I

CLK|輸入|1|時鐘信號|

PC|輸出|32|程序寄存器的值|

IRI輸出|32|當前指令字|

RegWritel輸出|1|寄存器文件寫使能控制信號|

RDin|輸出|32|寄存器文件寫入端口的數(shù)據(jù)|

MemWritel輸出|1|存儲器寫使能控制信號|

MDin|輸出|32|存儲器寫入端口的數(shù)據(jù)|

4.實驗電路測試

指令諳倒邃輯

給出WW的海文型ALU_OP與。P、Fune2赳的對(5關(guān)系

給出曾他的涉超女班對防指令許有(8號,LW、SW,BEO.BNE.ADDI.ADD.SLT.SYSCALL,R_TYPE.

注jftRJYPE費示R5?在凝指令,8Y8CALL罡特殊的R型指令,不及于這個類別

31/1全郃通過

一則輸出一——實際輸出——

RMI

PCIRRDinMe?WMLCntPCIRRDfM[

fkrwxnz>ziz>zi1一f0

IzWWWV2010f£ffffffffff0傲0000066000002910"開f0(

1位00(

fwwyww\/i0e

00000004201100000M0001VWWWM29110060)0f1

000的1

0000000830360200000000001fl000200000008□e300200)0o(

0e吟

1)Me00(

0000000(22100001000000000供0003221000010d

1皿0e(

/wwvwwx<A00

VAAWAAwfVtAAlfvt22310064090000040供OOMwwwXV223100^4)00(

00eg11

0e0(

00000014ae300200000000001佻000500000014ae3002001800(

0Q£/yxc/ee*

vAAwAQuAwA-AIO22100001000000016WOOwfWWw¥YwW>110Q22100G010(

10o*0

/WWWWWk/^O)005(

0O00001C22310004vwwwOeecOoe7eeeeeeic223100e40e21

00^0

00000020ae300200000000001供0008UWAAWZV■3002001eok00(

0000002422100001000000020供00090060002422100001eeme00(

1*J0

fWWVWVW^^z^/wvwwx*>oeo3e(

0000002822310064WVWWUeM0003www40223100e4631(x

e0e

eeoee02cae366206eeeewwi?oeeo3630020010e00(

me

0000003022100001000000930供000c221000010

1eell)M0

/WVWWW14Ag

0000003422310004WWW1ve僥000d22310004041

00000038ae360200000000031佻000eae3002001)eee0

0000003c22100001000000640供000f2210000110

<YZk/*t<*>Z>ZlJI/I

UWVW*v2231000400009014e供eeie22310004

6.實驗總結(jié)與心得

本次實踐作業(yè)通過logisim平臺實現(xiàn)了一個簡易的單周期的MIPSCPU,為了

完成本次實驗,我查詢了大量網(wǎng)絡(luò)資料,對計算機組成原理的基礎(chǔ)知識和一些設(shè)

計電路的方法有了更深刻的了解,并對計算機整體的工作原理等有了更加深刻的

認識與理解,

7.附件(源代碼)

<?xmlversion="1.0"encoding="UTF-8"standalone="no"?>

<projectsource="2.7.1"version="1.0">

ThisfileisintendedtobeloadedbyLogisim().

<libdesc="#Wiring"name="O">

<toolname="Splitter">

<aname="facing"val="west"/>

<aname="fanout"val="4'7>

<aname="incoming"val="4"/>

</tool>

<toolname="Pin">

<aname="facing"val="north'7>

<aname="labelloc"val="north"/>

<aname="labelfont"val="Dialogplain12"/>

</tool>

<toolname="Probe">

<aname="facing"val="west"/>

<aname="radix"val="10signed"/>

<aname="labelloc"val="north"/>

<aname="labelfont"val="Dialogplain12"/>

</tool>

<toolname="Tunner'>

<aname="facing"val="east"/>

<aname="width"val="32"/>

<aname="label"val="tunnel'7>

<aname="labelfont"val="Dialogplain12"/>

</tool>

<toolname="PullResistor">

<aname="facing"val=,'north"/>

</tool>

<toolname="Clock">

<aname="facing"val="north"/>

<aname="labelfont"val="Dialogplain12"/>

</tool>

<toolname="Constant">

<aname="facing"val="north"/>

<aname="width"val="3'7>

<aname="value"val="OxO"/>

</tool>

</lib>

<libdesc="#Gates"name="l">

<toolname="Buffer">

<aname="width”val="3"/>

</tool>

<toolname="ANDGate">

<aname="facing"val="west"/>

<aname="inputs"val="2"/>

</tool>

<toolname="ORGate">

<aname="inputs"val="2"/>

</tool>

<toolname="NORGate">

<aname="inputs"val="2"/>

</tool>

<toolname="XORGate">

<aname="inputsHval="2"/>

</tool>

<toolname="XNORGate">

<aname="size"val="30"/>

<aname="inputs"val="2"/>

</tool>

<toolname="OddParity">

<aname="facing"val="south"/>

<aname="inputs"val="3"/>

</tool>

<toolname="ControlledBuffer">

<aname="facing"val="north”/>

</tool>

</lib>

<libdesc="#Plexers"name="2">

<toolname="Multiplexer">

<aname="facing"val="north”/>

<aname="width"val="32"/>

</tool>

<toolname="Demultiplexer">

<aname="select"val="5"/>

</tool>

</lib>

<libdesc="#Arithmetic"name="3">

<toolname="Subtractor">

<aname=*'width"val="16"/>

</tool>

<toolname="Multiplier">

<aname="width"

</tool>

<toolname="Divider">

<aname="width"val="16"/>

</tool>

<toolname="Negator">

<aname="width"val="l"/>

</tool>

<toolname="Comparator">

<aname="width"val="16'7>

</tool>

</lib>

<libdesc="#Memory"name="4">

<toolname="Register">

<aname="width"val="32"/>

</tool>

<toolname="ROM">

<aname="contents">addr/data:88

0

</a>

</tool>

</lib>

<libdesc="#l/O"name="5"/>

<libdesc="#Base"name="6">

<toolname="TextTool">

<aname="text"val="'7>

<aname="font"val="SansSerifplain12"/>

<aname="halign"val="center"/>

<aname="valign"val="base"/>

</tool>

</lib>

<libdesc="jar##ll.nents"name="7">

<toolname="MIPSProgramROM">

<aname="contents"val=""/>

</tool>

</lib>

<mainname="?多周期MIPS(微程序)"/>

<options>

<aname="gateUndefined"val="ignore"/>

<aname="simlimit“val="100(T7>

<aname="simrand"\za\="O"/>

</options>

<mappings>

<toollib="6"map="Button2"name="MenuTool"/>

<toollib="6"map="CtrlButtonl"name="MenuTool'7>

<toollib="6Mmap="Button3"name="MenuTool"/>

</mappings>

<toolbar>

<toollib="6"name="PokeTool"/>

<toollib="6Mname="EditTool"/>

<toollib="6"name="TextTool">

<aname="text"val=""/>

<aname="font"val="SansSerifplain12"/>

<aname="halign"val="center"/>

<aname="valign"val="base'7>

</tool>

<sep/>

<toollib="O"name="Pin">

<aname="tristate"val="false"/>

</tool>

<toollib="O"name="Pin">

<aname="facing"val="west"/>

<aname="output"val=ntrue'7>

<aname="labelloc"val="east"/>

</tool>

<toollib="l"name="NOTGate">

<aname="facing"val="west"/>

<aname=,,size"val="20"/>

</tool>

<toollib="l"name="ANDGate">

<aname=,,size"val="30"/>

<aname="inputs"val="2"/>

</tool>

<toollib="l"name="ORGate">

<aname=,,sizeHval="30"/>

<aname="inputs"val="2"/>

</tool>

</toolbar>

<circuitname="?單周期MIPS(硬布線)”>

<aname="circuit"val="?單周期MIPS(硬布線)”/>

<aname="clabel"val=n"/>

<aname="clabelup"val="east"/>

<aname="clabelfont"val="SansSerifplain12u/>

<wirefrom="(480,550)“to=”(540,550)”/>

<wirefrom="(210370)"to="(210380),,/>

<wirefrom="(570,540)“to=”(610,540)'7>

<wirefrom="(510,510)“to="(510,530)”/>

<wirefrom="(720,650)“to=”(760,650)”/>

<wirefrom="(510,510)“to=”(610,510)”/>

<wirefrom="(170/240)"to="(470f240)'7>

<wirefrom="(710,500)“to=”(820,500)”/>

<wirefrom="(90,500)"to=”(130,500)”/>

<wirefrom="(580,580)“to=”(580,600)'7>

,,

<wirefrom="(90/500)"to="(90/720)/>

<wirefrom="(550,370)“to=”(550,520)”/>

<wirefrom="(140/180)"to="(140,470)"/>

<wirefrom="(180,80rto="(210,80『/>

'"

<wirefrom="(950/540)"to=(970/540)"/>

<wirefrom="(910,540)"to=”(930,540),,/>

<wirefrom="(1010/280)"to="(1030,280)"/>

<wirefrom="(730,570)“to=”(730,610)”/>

<wirefrom="(570,290)“to="(910,290)”/>

<wirefrom="(510,530)“to=”(540,530)”/>

廠/>

<wirefrom="(350/50)"9=”(380,50

',

<wirefrom="(730z670)"to=(760/670)"/>

wirefrom="(330,80)"to="(350/80)"/>

<wirefrom="(1030,180)“to=”(1030,280)”/>

,,

<wirefrom="(940/560)"to="(970/560)/>

',

<wirefrom="(180/530)"to=(200/530)"/>

<wirefrom="(170360)"to="(190360)'7>

<wirefrom="(880/540)"to="(910/540)'7>

',

<wirefrom="(220/490)"to=(240/490)"/>

<wirefrom="(570330)"to="(770330)"/>

<wirefrom="(450,490)“to=”(460,490)”/>

,,

<wirefrom="(370/570)"to=(370/G20)"/>

<wirefrom="(1030,70)“to=”(1040,70)”/>

<wirefrom="(570310)"to="(840310)"/>

<wirefrom="(170/240)"to="(170360)"/>

',

<wirefrom="(840z680)"to=(850/680)"/>

,,

<wirefrom="(1130/520)"to="(1150/520)/>

<wirefrom="(110/620)"to="(370/620)"/>

<wirefrom="(90/720)"to="(920/720)7>

,,

<wirefrom="(910/470)"to=(910/540)"/>

',

<wirefrom="(10/10)"to=(450/10),/>

<wirefrom="(480330)"to="(530330)"/>

<wirefrom="(170360)"to="(170/500)"/>

<wirefrom="(920,690)“to=”(920,720)”/>

<wirefrom="(1140,10)“to="(1140,140)”/>

',

<wirefrom="(800/660)"to=(840/660)"/>

<wirefrom="(200370)"to="(200390)'7>

<wirefrom="(660,590)“to=”(660,610)”/>

<wirefrom="(940300)"to="(960300)"/>

<wirefrom="(940,260)“to=”(960,260)”/>

<wirefrom="(800,210)“to=”(800,250)”/>

<wirefrom="(480,510)“to=”(510,510)”/>

<wirefrom="(950/40)"to="(950/80)'7>

<wirefrom="(370,700)“to=”(850,700)”/>

,,

<wirefrom="(340/570)"to="(370/570)/>

<wirefrom="(430/430)"to="(450/430)"/>

<wirefrom="(570350)"to="(660350)"/>

<wirefrom="(790/580)"to="(820,580)7>

<wirefrom="(210,530)“to=”(230,530)”/>

<wirefrom="(460/510)"to="(460/550)"/>

,,,,

<wirefrom="(1180/530)"to=(1210,530)/>

<wirefrom="(440z490)"to="(450/490)'7>

,,

<wirefrom="(840310)"to=(840/490)"/>

<wirefrom="(950,40)"to=”(960,40『/>

<wirefrom="(900310)"to="(910310)"/>

<wirefrom="(910,560)“to=”(910,610)”/>

〈wirefrom="(10z10)"to="(10z140)'7>

,,

<wirefrom='(480/650)"to="(540,650)7>

<wirefrom="(1040/580)"to="(1040/600)"/>

<wirefrom="(1080/580)"to="(1080/600)"/>

<wirefrom="(450,10)"to="(450/140)"/>

<wirefrom="(10/140)"to="(450/140)'7>

<wirefrom="(230,530)‘,to=”(230,540)”/>

<wirefrom="(1110/540)"to="(1150/540)7>

<wirefrom="(45040)Mto="(114040)'7>

<wirefrom="(500/580)"to="(500/730)"/>

<wirefromPOZOMO)"to=”(760,590),7>

<wirefrom="(370,620)“to=”(370,700)”/>

<wirefrom="(210,510)“to=”(210,530),7>

,,

<wirefrom="(50/80)"to="(90/80)/>

<wirefrom="(840/660)"to="(840/680)"/>

<wirefrom="(350,50)"to=”(350,80)'7>

<wirefrom="(490/240)"to="(530/240)"/>

<wirefrom="(860310)"to="(880310)'7>

,,

<wirefrom="(460,550)"to="(460/650)/>

<wirefrom="(1130/470)"to="(1130/520)7>

<wirefrom="(740/40)"to="(740,80)"/>

<wirefrom="(570,270)“to=”(910,270)”/>

<wirefrom="(940,560)“to=”(940,600)”/>

,,

<wirefrom="(730/570)"to="(760/570)/>

<wirefrom="(350,80rtofmo4O)”/〉

<wirefrom="(910,470)“to=”(1130,470)”/>

<wirefrom="(580,580)“to=”(610,580),7>

<wirefrom="(110,480)“to=”(130,480)”/>

<wirefrom="(170/500)"^"(lgO.SOO)">

<wirefrom="(220350)"to="(240350)'7>

',,,

<wirefrom=(890/690)"to="(920/690)/>

<wirefrom="(800,250)“to=”(800,630)”/>

<wirefrom=M(490,70)"to=,,(500,70),,/>

<wirefrom="(270,490)“to=”(280,490)”/>

<wirefrom="(500,730)“to=”(1210,730)”/>

<wirefrom="(500,580)“to="(580,580)”/>

<wirefrom="(810,70)"to="(820/70)"/>

,

<wirefrom="(450/430)"to="(450/490)7>

',

<wirefrom="(580/650)"to=(720/650)"/>

<wirefrom="(1000/580)"to="(1000/630)"/>

h

<wirefrom="(740/40)to="(750/40)"/>

<wirefrom="(610,70)"to="(620/70)"/>

<wirefrom="(270,490)“to=”(270,560)”/>

<wirefrom="(860,250)“to=”(910,250)”/>

〈wirefrom="(140z180)"to="(1030/180)"/>

<wirefrom="(730,610)“to=”(910,610)”/>

<wirefrom="(180,530)“to=”(180,540)”/>

<wirefrom="(660,350)“to=”(660,480)”/>

<wirefrom="(480350)"to="(530350),,/>

<wirefrom="(1160,230)“to="(1160,510)'7>

<wirefrom="(450440)"^"(lUO,UO)"^

<wirefrom="(460,350)“to=”(460,490)”/>

<wirefrom="(110,480)“to=”(110,620)'7>

<wirefrom="(570/250)"to="(800,250)"/>

<wirefrom="(460330)"10="(460350),7>

,,

<wirefrom="(460/490)"to="(460,510)/>

<wirefrom="(200/510)"to="(200/530)"/>

<wirefrom="(240z470)"to="(240,490)7>

<wirefrom="(1210,530)“to=”(1210,730)”/>

<wirefrom="(260,580)“to=”(300,580)”/>

,,

<wirefrom=(160/490)"to="(190/490)"/>

<wirefrom="(210380)"to="(240380),7>

<wirefrom="(240/490)"to="(270/490),/>

<wirefrom="(270/560)"to="(300/560)"/>

<wirefrom="(710z570)"to="(730,570)"/>

<wirefrom=',(660350)"to="(690350)"/>

<wirefrom="(910,560)“to=”(940,560)”/>

<wirefrom="(770,330)“to="(770,560)”/>

<wirefrom="(860,250)“to=”(860,310)”/>

<wirefrom="(860310)"to="(860f500)"/>

<wirefrom="(800,630)“to=”(1000,630)”/>

,,',

<wirefrom=(720,590)"to=(720/650)"/>

<wirefrom="(480/490)"to="(610/490)"/>

<wirefrom="(570/230)"to="(1160,230)"/>

<complib="O"loc="(460330)"name="Splitter">

<aname="fanout"val="l"/>

<aname=',incoming"val="32"/>

<aname="appear"val="center"/>

<aname="bitO"val=,'none"/>

<aname="bitl"val="none"/>

<aname="bit2Hval="none"/>

<aname="bit3"val="none"/>

<aname="bit4,'val="none"/>

<aname="bit5"val="none"/>

<aname="bit6"vah'^one"^

<aname="bit7"val="none"/>

<aname="bit8"val="none"/>

<aname="bit9"vak'^one"^

<aname="bitlO"val="none"/>

<aname="bitll"val^none"^

<aname="bitl2"val="none"/>

<aname="bitl3"val="none"/>

<aname="bitl4"val="none"/>

<aname="bitl5"val="none"/>

<aname="bitl6"val="none"/>

<aname="bitl7"val="none"/>

<aname=,'bitl8,'val="none"/>

<aname="bitl9"val="none"/>

<aname="bit20"val="none"/>

<aname="bit21"val="none"/>

<aname="bit22"val="none"/>

<aname="bit23"val="none"/>

<aname="bit24"val="none"/>

<aname="bit25"val="none"/>

<aname="bit26"val="07>

<aname="bit27"val="0"/>

<aname="bit28"val="O'/>

<aname="bit29"val="O"/>

<aname="bit30"val="0'7>

<aname="bit31"val="0"/>

</comp>

<complib="6"loc="(609324)"name="Text">

<aname="text"val^'AluSrcB"^

</comp>

<complib="l"loc="(900310)"name="NOTGate">

<aname="size"val="20"/>

</comp>

<complib=Tloc="(940,300)”name="ANDGate">

<aname="size"val="30"/>

<aname="inputs"val=H2'7>

</comp>

<complib="3"loc="(890/690)"name="Adder">

<aname=',widthuval="32'7>

</comp>

<complib="O"loc="(950,80)"name="Tunnel">

<aname="facing"val="north"/>

<aname="laber,val="MemWrite"/>

<aname="labelfont"val="Dialogplain12"/>

</comp>

<complib="O"loc="(750z40)"name="Pin">

<aname="facing"val="west'7>

<aname=,,output"val="true"/>

<aname="laber'val="Reg\A/rite"/>

<anames'labelloc"val="north'7>

<aname="labelfont"val="Dialogplain12"/>

</comp>

<complib="O"loc="(930/540)"name="Splitter">

<aname="fanout"val-'l"^

<aname="incomingHval="32"/>

<aname="appear"val="center"/>

<aname="bitO"val="none'7>

<aname="bitl"val="none*7>

<aname="bit2"val="0"/>

<aname="bit3"val="O"/>

<aname="bit4"val="O"/>

<aname="bit5"val="0'7>

<aname="bit6"val="0'7>

<aname="bit7"val="0"/>

<aname="bit8"val="0"/>

<aname="bit9"val="0"/>

<aname="bitlO"val='*O"/>

<aname="bitll"val="0"/>

<aname="b

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論