计算机组成原理课程设计报告

2025-10-07

计算机组成原理 课程设计报告

课程设计的题目:

精简微指令系统的设计及九位计数器的实现 二级学院: 信息工程学院

2012年 6月 27 日

CPTH计算机组成原理试验仪,可以由用户自己设计指令/微指令系统,根据前面所做的实验,我们小组决定创建了一个有如下功能的指令系统,主要用于实现累加器里的数据从零开始增加,并且每次循环递增一的功能。该指令系统包含指令如下: 指令助记符 指令意义 LD A,#* 把立即数装入到累加器A中 ADD A,#* 累加器A进行加法运算 OUT A 把累加器A中内容输出到端口 GOTO * 无条件跳转 一·创建指令系统

1.打开CPTH组成原理实验软件,选择[文件|新建指令系统/微程序],清除原来的指令/微程序系统,观察软件下方的“指令系统”窗口,所有指令码都“未使用”。

因为硬件系统需要指令机器码的最低两位做为R0-R3 寄存器寻址用,所以指令机器码要忽略掉这两位。于是我们暂定这四条指令的机器码分别为04H,08H,0CH,10H。

2.选择第二行,即“机器码1”为0000 01XX行,在下方的“助记符”栏填入数据装载功能的指令助记符“LD”,在“操作数1”栏选择“A”,表示第一个操作数为累加器A。在“操作数2”栏选择“#*”,表示第二个操作数为立即数。按“修改”按钮确认。

3.选择第三行,即“机器码1”为0000 10XX行,在下方的“助记符”栏填入加法功能的指令助记符“ADD”,在“操作码1”栏选择“A”,表示第一操作数为累加器A,在“操作数2”栏选择“#*”,表示第二操作数为立即数。按“修改”按钮确认。

4.选择第四行,即“机器码1”为0000 11XX行,在下方的“助记符”栏填入无条件跳转功能的指令助记符“GOTO”,在“操作码1”栏选择“*”,表示跳转地址为*,此指令无第二操作数,无需选择“操作数2”。按“修改”按钮确认。因为硬件设计时,跳转指令的跳转控制需要指令码的第3 位和第2位IR3、IR2来决定,无条件跳转的控制要求IR3必需为1,所以无条件跳转的机器码选择在此行,机器码为000011XX。

5.选择第五行,即“机器码1”为0001 00XX行,在下方的“助记符”栏填入输出数据功能的指令助记符“OUT”,由于此指令隐含指定了将累加器A输出到输出寄存器,所以不用选择“操作码1”和“操作数2”,也可在“操作码1”栏选择“A”,按“修改”按钮确认。现在我们只是输入了四条指令(见下图)

二.根据相关指令的功能来设计相应的微程序。

将窗口切换到“uM微程序”窗口,现在此窗口中所有微指令值都是0FFFFFFH,也就是无任何操作,我们需要在此窗口输入每条指令的微程序来实现该指令的功能。

⑴每个程序开始要执行的第一条微指令应是取指操作,因为程序复位后,PC 和uPC 的值都为0,所以微程序的0 地址处就是程序执行的第一条取指的微指令。取指操作要做的工作是从程序存储器EM 中读出下条将要执行的指令,并将指令的机器码存入指令寄存器IR和微程序计数器uPC中,读出下条操作的微指令。根据此功能,观察窗口下方的各控制信号,有“勾”表示信号为高,处于无效状态,去掉“勾”信号为低,为有效状态。要从EM中读数,EMRD 必需有效,去掉信号下面的“勾”使其有效;读EM的地址要从PC输出,所以PCOE要有效,允许PC输出,去掉PCOE下面的“勾”,PCOE有效同时还会使PC加1,准备读EM的下一地址;IREN是将EM读出的指令码存入uPC和IR,所以要去掉IREN的“勾”使其有效。这样,取指操作的微指令就设计好了,取指操作的微指令的值为CBFFFFH。然后把助记符"_FATCH_",状态"T0",微地址"00",微程序"CBFFFFH"..(其余为注释可略),按照上表格式填入,其余类同.

⑵现在我们来看把立即数装入累加器A要做哪些工作,首先要从EM中读出立即数,并送到数据总线DBUS,再从DBUS 上将数据打入累加器A中,按照这个要求,从EM中读数据,EMRD应该有效,EM的地址由PC输出,PCOE必需有效,读出的数据送到DBUS,EMEN也应有效,要求将数据存入A中,AEN也要有效,根据前面描述“LD A,#*”指令有两个状态周期,T1状态将所有有效位下面的“勾”去掉,使其有效,这条微指令的值为C7FFF7H。为了保证程序的连续执行,每条指令的最后必需是取指令,取出下条将要执行的指令。T0状态取指微指令的值为CBFFFFH。(取操作描述可见第⑴ 步)。

⑶本指令为立即数加法指令,立即数加可分两步,首先从EM中读出立即数,送到DBUS,并存入工作寄存器W 中,从EM中读数,EMRD应有效,读EM的地址由PC输出,PCOE要有效,读出的数据要送到DBUS,EMEN应有效,数据存入W 中,WEN应有效,根据描述,“ADD A,#*”指令的T1状态微指令

的值为C7FFEFH。第二步,执行加法操作,并将结果存入A中。执行加法操作,S2S1S0 的值应为000(二进制),结果无需移位直接输出到DBUS,X2X1X0 的值就要为100(二进制),从DBUS 将数据再存入A中,AEN应有效。与此同时,ABUS 和IBUS空闲,取指操作可以并行执行,也就是以PC 为地址,从EM 中读出下条将要执行指令的机器码,并打入IR和uPC中,根据取指操作的说明,EMRD、PCOE、IREN 要有效,根据上面描述,T0状态时将EMRD、PCOE、IREN、X2X1X0、AEN、S2S1S0都置成有效和相应的工作方式,此微指令的值为CBFF90H。

⑷“GOTO *”为无条件跳转,所要执行的操作为从EM 中读出目标地址,送到数据总线DBUS 上,并存入PC 中,实现程序跳转。从EM 中读数,EMRD 要有效,读EM的地址由PC输出,PCOE有效,数据送到DBUS,EMEN要有效,将数据打入PC中,由两位决定,ELP 有效,指令寄存器IR的第三位IR3应为1,由于本指令机器码为0CH,存入IR后,IR3 为1。将EMRD、PCOE、EMEN、ELP 设成低,使其成为有效状态,结合指令的第三位,实现程序跳转,这条微指令的值为C6FFFFH。下条微指令应为取指操作,将EMRD、PCOE、IREN 设成有效,微指令的值为CBFFFFH。 ⑸“OUTA”,将累加器的内容输出到输出端口。其操作为累加器A不做运算,直通输出,ALU 结果不移位输出到DBUS,DBUS 上的数据存入输出端口OUT。累加器A 直通输出结果,S2S1S0值要为111(二进制),ALU 结果不移位输出到数据总线DBUS,X2X1X0的值要等于100(二进制),DBUS 数据要打入OUT,那么OUTEN 应有效。与此同时,ABUS 和IBUS空闲,取指操作可以并行执行,也就是以PC为地址,从EM中读出下条将要执行指令的机器码,并打入IR和uPC中,根据取指操作的说明,EMRD、PCOE、IREN 要有效,综上所述,将EMRD、PCOE、IREN、OUTEN、X2X1X0、S2S1S0 置成有效状态和相应的工作方式,微指令的值为CBDF9FH。

设计完后,完整的微程序具体格式见下表:

(6)选择菜单[文件|保存指令系统/微程序]功能,将新建的指令系统/微程序保存下来,以便以后调用。为不与已有的指令系统冲突,将新的指令系统/微程序保存为“zqc.mac”

三、验证该指令系统的功能

在源程序窗口输入以下程序,保存为zqc.ASM.。 LD A,#00 LOOP: ADD A,#01 OUT A

GOTO LOOP END

然后选择[文件|调入指令系统/微程序 ],调入 zqc.mac,将程序汇编成机器码,进而在调试窗口显示出程序地址、机器码和反汇编指令如下: 程序地址 机器码 反汇编指令 指令说明 00 04 00 LD A,#00 把立即数00装入累加器A 02 LOOP: 循环入口地址02 02 08 01 ADD A,#01 累加器A加立即数01 04 10 OUT A 累加器A输出到端口 05 0C 02 GOTO LOOP 无条件跳转到02地址 快速运行到某一时刻时的输出结果如下(此时输出OUT=34):

之后,重新复位后,按快捷图标的F7,执行“单微指令运行”功能,可观察执行每条微指令时,数据即可按照设计要求流动,,输出端口OUT初始化时为0,之后每进行一次循环递增1。所以,该程序实现了累加器递增1的功能。

到此为止,我们利用CPTH 软件系统已经建成了一个新的指令系统/微程序。新的指令系统从汇编助记符到指令机器码到微指令都与原来的指令系统有所不同,但能完满完成我们设计所要达到的目标。


计算机组成原理课程设计报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:物理化学期末考试试题库

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219