计算机组成原理课程设计1111

第1设计分析

1.1设计题目

基本模型机的存储器逻辑框图设计

1.2设计目的

1.巩固和加深所学的硬件系统知识,学习和掌握硬件系统的设计方法。

2.掌握计算机各模块的原理和相互关系,建立计算机整机概念。

3.利用基本模型机的构建与调试,完整地建立计算机硬件的整机模型,掌握CPU的基本结构和控制流程,掌握指令执行的基本过程。

4.掌握计算机功能模块的原理和关系,建立计算机整机概念。在掌握部件单元电路实验的基础上,进一步将其组成系统,构造一台基本模型计算机。为其定义五条机器指令,并编写相应的微程序,具体上机调试掌握整机概念

1.3设计环境和工具

TDN-CM组成原理实验系统,排线若干和PC微机一台

1.4 设计任务

1.掌握CISC微控制器功能与微指令格式

2.设计五条机器指令,并编写对应的微程序

3.在TDN-CM+教学实验系统中调试机器指令程序,确认运行结果

1.5 设计要求

1.掌握实验系统的熟练操作

2.完成模型机的实验线路连接

3.调试模型机,并记录下实验结果

第2概要设计

部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本次课程设计将在微程序控制下自动产生各个部件单元控制信号,实现特定指令的功能。

这本次课程设计里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一段微程序。而微程序由设计者自己写入微控制存储器中或者联机读入程序。

2.1 机器指令定义

本次采用五条机器指令:IN(输入),ADD(二进制加法),STA(存数),OUT(输出),JMP(无条件转移)。其指令格式如下(前4位为操作码):

助记符        机器指令码                      说明

    IN          00000000               “INPUT DEVICE”中的开关状态 → R0

    ADD addr    0001 0000  ××××××××  R0+[addr] → R0

    STA addr          0010 0000  ××××××××  R0 → [addr]

    OUT addr     0011 0000  ××××××××  [addr] → LED

    JMP addr      0100 0000  ××××××××  addr → PC

其中IN为单字长(8位),其余为双字长指令,××××××××为addr对应的二进制地址码。

为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序:

* 存储器读操作(KRD):拨动总清开关CLR后,控制台开关SWB、SWA为“0 0”时,按START微动开关,可对RAM连续手动读操作。

* 存储器写操作(KWE):拨动总清开关CLR后,控制台开关SWB、SWA置为“0 1”时,按START微动开关可对RAM进行连续手动写入。

* 启动程序:拨动总清开关CLR后,控制台开关SWB、SWA置为“1 1”时,按START微动开关,即可转入到第01号“取址”微指令,启动程序运行。

上述三条控制台指令用两个开关 SWB,SWA的状态来设置,其定义如下:

表2.1 控制台命令


2.2 数据通路框图

图 2.1 数据通路框图

2.3 微代码定义

表2.2 微代码格式

其中A、B、C 字段的代码格式如下:

表 2.3  A、B、C字段代码格式

2.4 微程序流程

系统涉及到的微程序流程如图:

图 2.2 微程序流程图1

图2.3 微程序流程图2

当拟定“取指”微指令时,该微指令的判别测试字段为P(1)测试。由于“取指”微指令是所有微程序都使用的公用微指令,因此P(1)  的测试结果出现多路分支。本机用指令寄存器的前4位(IR7一IR4)作为测试条件,出现5路分支,占用5个固定微地址单元。对于每一指令分别予以微程序解释。

控制台操作为P(4)测试,它以控制台开关SWB,SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下的其他地方就可以一条微指令占用控存一个微地址单元随意填写。注意:微程序流程图上的单元地址为8进制。

指令寄存器(IR):指令寄存器用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。指令划分为操作码和地址码字段,由二进制数构成,为了执行任何给定的指令,必须对操作码进行测试[P(1)],通过节拍脉冲T4的控制以便识别所要求的操作。“指令译码器” (实验板上标有“INS DECODE”的芯片)根据指令中的操作码译码强置微控器单元的微地址,使下一条微指令指向相应的微程序首地址。

2.5 二进制微代码表

表 2.4 二进制微代码表

2.6 设计说明

本系统有两种外部I/O设备,一种是二进制代码开关,它作为输入设备(INPUT DEVICE):另一种是数码块,它作为输出设备(OUTPUT DEVICE)。例如:输入时,二进制开关数据直接经过三态门送到总线上,只要开关状态不变,输入的信息也不变。输出时,将输出数据送到数据总线上,当写信号(W/R)有效时,将数据打入输出锁存器,驱动数码块显示。

本实验设计机器指令程序如下:

地  址(二进制)机器指令码    助记符         说   明

0000 0000        0000 0000    IN  R0    “INPUT DEVICE(班号)”→R0 

0000 0001        0001 0000    ADD [0AH],R0     R0+[0AH] →R0

0000 0010        0000 1010              

0000 0011        0010 0000    STA R0,[0BH]      R0→[0BH]

0000 0100        0000 1011               

0000 0101        0011 0000    OUT [0BH]        [0BH] →LED

0000 0110        0000 1011               

0000 0111        0100 0000    JMP  00H         00H→ PC

0000 1000        0000 0000               

0000 1001      

0000 1010        0000 1001                    学号(20号同学)

0000 1011                                    求和结果(班号加学号)

第3设计步骤

3.1实验线路连接图

     试验时按照如下所示电路图连接:

图 3.1 设计接线图

3.2写程序 

3.2.1 手动写入

1、先将机器指令对应的微代码正确地写入2816中,由于在微程序控制实验中已将微代码写入E2PROM芯片中,对照表5校验正确后就可使用。

2、使用控制台KWE和KRD微程序进行机器指令程序的装入和检查。

A.使编程开关处于“RUN",STEP为“STEP”状态,STOP为“RUN”状态。

B.拨动总清开关CLR(0→1),微地址寄存器清零,程序计数器清零。然后使控制台SWB,SWA开关置为“01”,按动一次启动开关START,微地址显示灯显示“010001”,再按动一次START,微地址灯显示“010100"。此时,数据开关的内容置为要写入的机器指令,按动两次START键后,即完成该条指令的写入。若仔细阅读KE的流程,就不难发现,机器指令的首地址总清后为零,以后每个循环PC会自动加1,所以,每次按动START,只有在微地址灯显示“010100”时,才设置内容,直到所有机器指令写完。

C.写完程序后须进行校验。拨动总清开关CLR(0→1)后,微地址清零。PC程序计数器清零,然后使控制台开关SWB,SWA为“00”,按动启动START,微地址灯将显示“010000”;再按START,微地址灯显示为“010010";第3次按START,微地址灯显示为“010111”,再按START后,此时输出单元的数码管显示为该首地址中的内容。不断按动START,以后每个循环PC会自动加1,可检查后续单元内容。每次在微地址灯显示为“010000”时,是将当前地址中的机器指令写入到输出设备中显示。

3.2.2 联机读/写程序

按照规定格式,将机器指令及表5微指令二进制表编辑成十六进制的如下格式文件。微指令格式中的微指令代码为将表5中的24位微代码按从左到右分成3个8位,将此3个8位二进制代码化为相应的十六进制数即可。

计算机组成原理课程设计1111

    程  序

    $P4000

    $P4110

    $P420A

    $P4320

    $P440B

    $P4530

    $P460B

    $P4740

    $P4800

    $P4A01

    微程序 

    $M00018110                 $M0901ED83                      $M1200A017

    $M0101ED82               $M0A0IED87                   $M13018001

    $M0200C048               $M0B01ED8E                   $M14002018

    $M0300E004               $M0C01ED96                   $M15070A01

    $M0400B005             $N0D028201                       $M1600D181

    $M0501A206             $M0E00E00F                      $M17070A10

    $M06959A01             $M0F00A015                      $M18068A11

    $M0700E00D            $M1001ED92                      $M18068A11

$M08001001             $M1101ED94                     

用联机软件的传送文件功能(F4)将该格式文件传入实验系统即可。

3.3运行程序

3.3.1 单步运行程序

A 使编程开关处于“RUN”状态,STEP为“STEP”状态,STOP为“RUN”状态。

B 拨动总清开关CLR(0→1),微地址清零,程序计数器清零。程序首址为00H。

C 单步运行一条微指令,每按动一次START键,即单步运行一条微指令。对照微程序流程图,观察微地址显示灯是否和流程一致。

D 当运行结束后,可检查存数单元(0BH)中的结果是否和理论值一致。

3.3.2 连续运行程序

A 使“STATE UNIT”中的STEP开关置为“EXEC”状态。STOP开关置为“RUN”状态。

B 拨动CLR开关,清微地址及程序计数器,然后按动START,系统连续运行程序,稍后将STOP拨至“STOP”时,系统停机。

C 停机后,可检查存数单元(0BH)结果是否正确。

3.4 联机运行

联机运行程序时,进入软件界面,装在机器指令及微指令后,选择【运行】-【通路图】-【复杂模型机】 功能菜单打开相应动态数据通路图,按相应功能键即可联机运行,监控,调试程序。

 总清开关CLR清零(1->0->1)后,将使程序首址及微程序地址为00H,程序可从头开始运行。

3.4.1 启动微机步骤

⑴ 微控器编程开关拨至RUN,“STEP”→STEP,“STOP”→RUN

⑵ 实验箱利用COM1口与微机连接,实验箱加电,启动微机:

①进入安装实验系统的目录,例如D:\CMP;

②对实验箱复位;

③运行CMP.EXE,进入实验运行环境;

④选F4:加载\CMP\EX1,完成后ESC键退出;

EX1文本文件内容如下:

   机器指令程序

$P0000

$P0110

$P020A

$P0320

$P040B

$P0530

$P060B

$P0740

$P0800

$P0A09

    

机器指令对应的微程序:

$M00018110

$M0101ED82

$M0200C048

$M0300E004

$M0400B005

$M0501A206

$M06959A01

$M0700E00D 

$M08001001

$M0901ED83

$M0A01ED87

$M0B01ED8E

$M0C01ED96

$M0D028201

$M0E00E00F

$M0F00A015

$M1001ED92

$M1101ED94

$M1200A017

$M13018001

$M14002018     

$M15070A01

$M1600D181

$M17070A10

$M18068A11

⑤选F2:键入地址0AH,将0AH内容改为学号,并用ESC键退出;

⑥选F6:进入调试状态,此时开关置入班号,将实验箱启动地址清零(CLR:1→0→1):

1)选择F2进入单步运行状态;

2)选择F3进入连续运行状态;

⑦若运行不正确,首先检查连线有无错误;

⑧若运行正确,将在数据通路的“OUTPUT”

模块看到十六进制的结果: “班号+学号”

⑨采用单步或连续运行方式执行机器指令程序,请参照机器指令程序及微程序流程图,将实验结果与程序的理论分析结果进行比较,验证实验系统执行机器指令程序的正确性。

第4运行结果与分析

4.1 运行结果

图 4.1 运行结果图                                                    

 键入地址0AH,将0A内容改为学号14H,用开关置入班号,结果OUTPUT为16H。

4.2 运行结果分析

4.2.1机器指令ADD的理论计算过程

计算机1082班, 第20号同学,  班号=02H,学号=14H,  F=X加Y(算术加)

X=R0=班号= 00000010B=02H

 Y=M[0A]=学号=00010100B=14H

ADD [0AH],R0功能:R0加M[0AH]→R0

00000010B

         加  00010100B      

00010110B =16H

第5课程设计总结

5.1 机器指令的微程序

IN:01H: 01ED82H

02H: 00C048H

10H: 01ED92H

ADD:01H→02H→11H→03H→04H→05H→06H

STA:01H→02H→12H→07H→15H

OUT:01H→02H→13H→16H→17H→25H

JMP:01H→02H→14H→26H

5.2 课程设计心得体会

通过本次课程设计,我更进一步了解了计算机的组成,线路的连接与模型机的各个硬件的结构,同时初步掌握了微程序微指令的一些编制与设计。从一种微观的角度更加了解计算机模型机,也逐渐建立起整机概念。

这次课程设计使我从中获益匪浅。对计算机组成原理的理论知识有了更深刻的理解,对于以前一知半解的东西也有了充分的理解。因为课程设计是要求将以前在课堂上学的理论知识运用到实际的设计当中去,但是在设计过程中,我们一定会碰到各种各样的问题。但是为了解决这些问题,我们一定会更加仔细认真的去翻阅自己以前学过但是以为已经了解熟悉的东西。这在无形中帮助我们加深对所学知识的了解及运用能力,并且让我们明白什么地方是我们真正需要去关注的。而且这样我们对课本以及以前学过的知识有了一个更好的总结与理解。而课程设计需要我们不但通过翻阅复习以前学过的知识而且需要查阅更多的相关信息,如去图书馆查阅相关的书籍,去网上搜索相关的材料,最终确立了设计方案。

在模型机设计过程中我碰到了许多问题,而这些问题都是需要我认真仔细才能检查出来,而且,这些设计是要通过系统的设计才能完成的,不能想到哪里就做到哪里,必须在设计之前有个系统的分析,在详细设计时更加要仔细对待,因为对于各个代码都不能出错,一些细微的错误就会导致所有的错误。

通过这次的设计我对于CPU指令系统和模型机的认识很大的提高,而且通过此次课程设计,对我们以后的工作和学习的帮助都很有用处。这是我们踏入社会前的一次模拟工作。给了我们很好的一次实践的机会。通过这次课设让我明白了理论和实际操作之间差距,而且也让我明确得意识到自己在学习上有很多的知识漏洞,应努力弥补,并且给了我努力的明确方向,知识只有会运用了才是真正的了解掌握了这些知识。而这些不了解的差距在以后的工作中将是致命的。所有又一次给我的提点。给我不断完善自己的机会。给了我实际工作的一点有用的经验,这是所有的理论都比不过实践的地方,而我在今后的学习中,也将向着这些方面去完善。

参考文献:

[1] 石磊 《计算机组成原理简明教程》 北京:清华大学出版社 20##年3月

[2] 唐朔飞 《计算机组成原理》 北京:高等教育出版社 20##年1月

[3] 薛胜军 《计算机组成原理》 武汉:武汉理工大学出版社 20##年5月

设计过程中质疑(或答辩)记载:

1.在微程序运行过程中如何验证微程序流程是否正确?

答:在运行程序时可使编程开关处于“RUN”状态,STEP为“STEP”状态,STOP为“RUN”,进行单步运行,每次单步运行一条微指令,每按动一次START键,即单步运行一条微指令,可对照微程序流程图,观察微地址显示灯是否和流程一致。,如果一致则微程序流程正确,反之错误。

2.在完成接线后,如何对RO和[0AH]输入数据并完成运算?

答:在完成接线后,对开关置入R0的值,然后总清开关CLR清零,然后再联机实验软件中找到0AH地址,然后键入0AH中的值,即完成了R0和[0AH]中数的置入,按F3连续运行程序,运行完成后在OUTPUT中即可看到运算结果。

相关推荐