《计算机组成原理》课程实践_第1页
《计算机组成原理》课程实践_第2页
《计算机组成原理》课程实践_第3页
《计算机组成原理》课程实践_第4页
《计算机组成原理》课程实践_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《计算机组成原理》课程实践

题目:单周期MIPSCPU设计

学号:__________

姓名:李兴旺

班级:软件20-1______________

学院:计算机科学与工程学院

山东科技大学

2022年6月

课程实践:单周期MIPSCPU设计

1.目的与要求

1)本课程要求根据所学计算机组成原理的相关知识,结合实验内容,基于

EDA环境设计一个简易CPU,并能利用EDA等现代仿真工具建立研究对象的模

型,模拟系统设计的正确性。

2)学生掌握控制器设计的基本原理,能利用硬布线控制器的设计原理在

Logisim平台中设计实现MIPSCPU。

2.实验内容

对照多周期MIPS处理器数据通路图,采用微程序控制器的设计方法实现控

制器,构造多周期MIPS处理器,要求能支持表中的8条MIPS核心指令,最终

设计实现的MIPS处理器能运行实验包中的冒泡排序测试程序,该程序自动在数

据存储器0~15号字单元中写入16个数据,然后利用冒泡排序将数据升序拄序。

实验电路应能自动统计指令数目、时钟周期数。

3.实验过程与方案

OPCunc

jgoooojfcjOiUiU.OP

(OP][FUNC|[疝塞可

指令烽回信号

ttMIPS指令RTL功能描述

1addSrd.Srs.SrtR[$rd]^-R[$rs]+R[$rt]溢出时产生异常,且不修改R[$rd]

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

3addi$rt.$rs.immR[$rt]*-R[$rs]+SignExti6t)(imm>溢出产生异常

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系统调用,这里用于停机

4.电路框架

####电路引脚

I信号I输入/输出位宽I功能描述I

CLK|输入|1|时钟信号|

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

IRI输出|32|当前指令字|

RegWritel输出|1|寄存器文件写使能控制信号|

RDin|输出|32|寄存器文件写入端口的数据|

MemWritel输出|1|存储器写使能控制信号|

MDin|输出|32|存储器写入端口的数据|

4.实验电路测试

指令谙倒邃辑

给出WW的海文型ALU_OP与。P、Fune2赳的对(5关系

给出曾他的涉超女班对防指令许有(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.实验总结与心得

本次实践作业通过logisim平台实现了一个简易的单周期的MIPSCPU,为了

完成本次实验,我查询了大量网络资料,对计算机组成原理的基础知识和一些设

计电路的方法有了更深刻的了解,并对计算机整体的工作原理等有了更加深刻的

认识与理解,

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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论