计算机组成原理实习报告

福建农林大学计算机与信息学院

计算机类

课程实习报告

20##年   06月  25日


福建农林大学计算机与信息学院计算机类

课程实习报告结果评定


目        录

1实习的目的和任务……………………………………………………4

2实习要求………………………………………………………………4

3实习地点………………………………………………………………4

4主要仪器设备(实验用的软硬件环境)……………………………4

5实习内容………………………………………………………………4

5.1编写程序……………………………………………………………4

5.2连接试验线路………………………………………………………5

5.3写程序………………………………………………………………8

6问题讨论与分析………………………………………………………9

7结束语…………………………………………………………………16

参考文献…………………………………………………………………16

简单模型机设计

1.        实习的目的和任务

《计算机组成原理》是一门理论性和实践性非常强的课程,学生仅仅通过课堂教学来获取理论知识是远远不够的,必须加强实践教学,通过亲自动手,巩固课堂知识、提高综合运用所学的理论知识和方法独立分析和解决问题的能力,并从成功和失败的体验中得到锻炼,才能够掌握和运用所学到的理论知识来解决实际问题,达到学以致用的目的。除此之外,《计算机组成原理课程实习》为学生提供了一次学习综合运用所学知识去解决实际问题的锻炼。

    《计算机组成原理课程实习》是学生学习《计算机组成原理》课程期间的一个重要教学环节。通过实习总结计算机组成原理课程的学习内容:层次化设计方法、多路开关,逻辑运算部件,微程序控制的运算器设计、微程序控制的存储器设计、简单计算机的设计等内容。为将来从事专业工作打下基础,培养良好的职业道德和严谨的工作作风。

2.        实习要求

了解并掌握计算机组成原理设计的一般方法,具备初步的独立分析和设计能力; 通过该课程设计的学习,总结计算机组成原理课程的学习内容,层次化设计方法、多路开关,逻辑运算部件,微程序控制的运算器设计、微程序控制的存储器设计、简单计算机的设计。提高综合运用所学的理论知识和方法独立分析和解决问题的能力。

3.        实习地点

  田家炳C404硬件实验室

4.        主要仪器设备(实验用的软硬件环境)

ZYE1603B计算机组成原理实验仪一台;

PC机一台;

  ZYE1603B计算机组成原理实验仪联机软件。

5.  实习原理

在第一部分的单元实验中,所有的控制信号是人为用SWITCH单元产生的,但是在实际的CPU中,所有的控制信号都是由CPU自动产生的。所以在本次实验中我们用微程序来控制,自动产生各部件单元控制信号,实现特定指令的功能。这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一段微程序。通过微程序控制自动产生各部件单元控制信号,实现特定指令的功能。微程序控制器控制计算机的数据通路,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期由微指令的序列来完成,即一条机器指令对应一条微程序。本次采用五条机器指令,它们是IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移),其指令格式如下:助计词机器指令码说明IN0000 0000“INPUT DEVICE”中的开关状态 →ROADD addr0001 0000xxxxxxxxRO+[addr] →ROSTA addr 0010 0000xxxxxxxxRO

→[addr]OUT addr 0011 0000xxxxxxxx[addr] →BUSJMP addr0100 0000xxxxxxxxaddr →PC 其中IN 为单字长(8位),其余为双字长指令,XXXXXXXX为addr对应的二进制码。

为了向RAM中装入程序和数据,检查写如是否正确,并能启动程序执行,还必须设计三个控制台操作微程序。它们是存储器读操作(KRD)、存储器写操作(KWE)和启动程序。这三条控制台指令用两个开关SWB、SWA的状态来设置。

本实验设计了五条机器指令,其指令格式如下:

助记符      机器指令码                 说明

IN        00000000       ;输入,“INPUT”设备中的开关状     态→R0

ADD addr    00010000 XXXXXXXX   ;二进制加法,R0+[addr]→R0

STA addr    00100000 XXXXXXXX  ;存数,R0→[addr]

OUT addr     00110000 XXXXXXXX  ;输出,[addr]→BUS

JMP addr     01000000 XXXXXXXX  ;无条件转移,addr→PC

机器指令码的前4位为操作码。其中IN为单字长,其余为双字长指令,XXXXXXXX为addr对应的二进制地址码。

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

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

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

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

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

根据以上要求设计数据通路框图,如图5-1。微代码定义如表5-1所示。

根据以上要求设计数据通路框图,如图5-1。微代码定义如表5-1所示。

图5-l  数据通路框图

表5-1   基本模型机微指令结构图

系统涉及到的微程序流程见图6-2,当拟定“取指令”微指令时,该微指令的判别测试字段为P1测试。由于“取指令”微指令是所有微程序都使用的公用微指令,因此P1的测试结果出现多路分支。本机用指令寄存器的高4位(I7—I4操作码)作为测试条件,出现5路分支,占用5个固定微地址单元。

控制台操作为P4测试,它以控制台开关SWB、SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用一个微地址单元随意填写。

当全部微程序设计完毕后,应将每条微指令代码化,表6-2即为将图6-2的微程序流程图按微指令格式转化而成的“二进制微代码表”。

图5-2   微程序流程图

表5-2  二进制代码表

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

6.实习内容

6.1.根据该模型机的指令系统,编写一段程序

本程序从输入设备(数码开关)读入数据,与0A单元的数据相加,然后送到输出设备(LED数码管)进行显示。本程序不断地循环运行,在运行中可改变输入开关(INPUT)的值,观察输出显示的变化。

设计机器指令程序如下(机器码和地址为十六进制数据)。

地 址   内 容      助记符       说 明

00      00      IN               ;输入开关数据→R0,采集数据

01      10     ADD [0AH]    ;R0+[0AH]→R0,输入数据与指定数据相加

02      0A                         ;地址

03      20      STA [0BH]    ;R0→[0B]

04      0B                         ;地址

05      30      OUT [0BH]    ;[0BH] →BUS,输出显示

06      0B                        ;地址

07      40      JMP [00H]     ;00H→PC

08      00                        ;跳转地址

0A      01                       ;加数,可自定

0B                                ;求和结果保存在0B单元

6.2.连接实验线路

按图5-3连接实验线路

6.3.手动写入

(1)先将机器指令对应的微代码正确地写入28C16中,由于在实验1.7微程序控制器的组成与微程序设计实验中已将微代码写入E2PR0M芯片中,对照表2-5校验正确后就可使用。

(2)使用控制台WRITE和READ微程序进行机器指令程序的装入和检查,其操作如下:

A.使SIGNAL UNIT单元的SP03为“STEP”状态,SP04为“RUN”状态,CONTROLUNIT的开关SP05处于“NORM”状态,开关SP06处于“RUN” 状态。

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

 图5-3   基本模型机实验接线图

C.校验。拨动SWITCH单元的总清开关CLR(1?0?1),微地址清零。PC程序计数器清零,然后使SWITCH单元的开关SWB、SWA为“00”,则此时为读内存状态,按动CONTROL UNIT的触动开关START,为读数据一次,将PC送入AR,然后PC自动加1,微地址灯将显示“010000”;再按START,就再读一次数据,将RAM→BUS,然后BUS→DR1,微地址灯显示为“010010”;第三次按START,为读数据,将DR1→LED,微地址灯显示为“010111”;再按START后,此时OUTPUT单元的数码管显示为该首地址中的内容。不断按动START,以后每个循环PC会自动加1,可检查后续单元内容。每次在微地址灯显示为“010000”时,是将当前地址中的机器指令写入到输出设备中显示。

6.4.手动运行程序

(1)单步运行程序

A.使CONTROL UNIT的开关SP05处于“NORM”状态, SP06处于“RUN”状态,SIGNAL UNIT中的SP03为“STEP”状态,SP04为“RUN”状态,SWITCH单元的开关SWB、SWA为“11”,即为启动程序运行状态。

B.拨动SWITCH单元的总清开关CLR(1?0?1),微地址清零,程序计数器清零,程序首址为00H。

C.单步运行微指令,每按动一次CONTROL UNIT的START触动开关,即单步运行一条微指令。对照微程序流程图2-2,观察微地址显示灯MA5-MA0是否和流程一致。

D.当运行结束后,可检查运行结果是否和理论值一致。如果运行结果保存在RAM的某一个单元中,则可以使用手动写入中的校验方法将其读出。

数据传输过程:程序一

①PC=01      PC→ AR (AR=00)    AR→M    再M→IR (M=00)  发出控制信号    INPUT D5→R0

②PC=02       PC→ AR (AR=01)  AR→M    再M→IR (M=20)

发出控制信号

③PC=03      PC→ AR (AR=02)   变址 M→AR=08  再将保持在R0的值D5调到M。

④PC=04      PC→ AR (AR=03)   AR→M    M=30→IR   发出控制信号

⑤PC=05     PC→ AR (AR=04)   变址 M→AR=08    M=FF 传递到DR1

 ALU→INPUT

⑥PC=06     PC→ AR (AR=05)   AR→M   M=40→IR

PC=07     PC→ AR (AR=06)  M=00→PC     (PC值返回00)

(2)连续运行程序

A.使CONTROL UNIT的开关SP05处于“NORM”状态, SP06处于“RUN”状态,SIGNAL UNIT中的SP03为“RUN”状态,SP04为“RUN”状态,SWITCH单元的开关SWB、SWA为“11”。

B.拨动SWITCH单元的总清开关CLR(1?0?1),微地址及程序计数器清零,然后按动CONTROL UNIT的START触动开关,系统连续运行程序,稍后将SIGNAL UNIT中的SP04拨至“STOP”时,系统停机。

C.停机后,可检查运行结果是否正确。如果运行结果保存在RAM的某一个单元中,则可以使用手动写入中的校验方法将其读出。

数据传输过程:程序二

①PC=01      PC→ AR (AR=00)    AR→M    再M→IR (M=00)  发出控制信  号            INPUT D5→R0

②PC=02      PC→ AR (AR=01)  AR→M    再M→IR (M=10)

发出控制信号

③PC=03      PC→ AR (AR=02)   变址 M→AR=OA  再将内存中01传递到DR2

再把R0中的D5送到DR1。  最后输出结果再送到R0  (ALU→R0)

④PC=04      PC→ AR (AR=03)   AR→M   M=20→IR

⑤PC=05     PC→ AR (AR=04)   变址 M→AR=0B     再将保持在R0的值FF调到M。

⑥PC=06     PC→ AR (AR=05)   AR→M   M=30→IR=30

PC=07     PC→ AR (AR=06)  M=08→AR    然后再将M=FF→DR1.  通过ALU→INPUT=FF

⑧PC=08     PC→ AR (AR=07)   AR→M   M=40→IR

⑨PC=09    PC→ AR (AR=08)   M=00→PC    (PC值返回00)

参考程序一的机器指令:

$P0000                   $P0120

$P0208                   $P0330        

$P0408                   $P0540

$P0600                               

参考程序二的机器指令:

$P0000                   $P0110

$P020A                   $P0320

$P040B                   $P0530

$P060B                   $P0740

$P0800                   $P0A01

微程序(以上两程序公用):

$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

7.  问题讨论与分析

   对机器指令程序的装入和检查:将控制单元中的各开关置于规定状态,CLR(1-0-1),微地址寄存器、程序计数器清零,调整各开关状态,写入指令。CPU把程序计数器PC中第N条指令所在存储单元的地址通过地址总线送到存储器中的地址译码器,选中第N个存储单元;再CPU通过控制总线向存储器发出读取数据的控制信号,存储器中被选中的存储单元的内容通过数据总线送到指令寄存器中;CPU对该内容进行译码、分析指令将执行哪类操作。然后在之后的循环中,程序计数器自动加1。

    CPU根据译码结果发出完成此指令所需的控制信号,如果需要从存储器中取操作数,则CPU通过地址总线发出存放操作数的存储单元地址,并通过控制总线发出读取数据的控制信号,然后通过数据总线读取操作数。执行指令所规定的操作,程序计数器PC自动加1,又进入下一条(第N+1条)指令的取指令过程。计算机不断地取出指令、分析指令、执行指令,直到程序中的所有指令操作完毕。

8.  结束语

这学期我们学习了计算机组成原理这门课,通过这门课程的学习,说实话,不是每一个都学到了,但是让我对计算机的基本结构,基本组成与结构原理有了更加深入的了解。

这门课程是本专业重要的基础课,起了很大的作用,这个实验也是。初看这个试验很吃力,觉得它所涉及的东西比较枯燥乏味,不是很直观。但是在模拟机联机模拟上,可以很容易的演示出来,让整个试验更加容易理解,更加直观。对于计算机的基本结构,基本组成与结构原理,各功能部件在整机中的作用以及所要完成的任务,程序和数据在计算机中是如何存储的以及指令在计算机中的执行过程,计算机与外部设备之间的接口技术与原理和计算机外部设备的基本结构与工作原理等这些课程内容基本上还是有了深一点的掌握,并能比较好的理解。

本次试验中,在微程序的调试中花费不少时间,在通过模拟机上观察操作流向来检查错误的收获比较大,模拟机能够较精确的看出自己出错的地方,通过对程序进行多次调试修改以及老师的帮助下得到正确的结果,有很大的收获。虽然在第二个程序中不能成功的调试出来,但是还是看了别人的成果,还是有点收获的。

参考文献

[1] 《计算机组成与结构》,李文兵编著,清华大学出版社,2000,第1版.

[2] 《计算机组成原理实验指导》,张旭玲编著.

[3] 《计算机组成原理:解题、题库、实验》,王诚编著,清华大学出版社,2001,第3版.

相关推荐