计算机组成原理
课程设计
姓名:聂彪
班级:192102-26 学院:计算机学院 学号:20101003907 日期:20xx年12月
指导老师:刘超
目录
一.目录?????????????????????(1)
二.实验内容???????????????????(2)
1.实验原理?????????????????????(2)
2.实验一常规型微程序控制器组成实验????????(4)
2.1实验目的
2.2实验设备
2.3实验电路
2.4实验任务
2.5实验步骤与分析
3.实验二 CPU组成与机器指令执行实验????????(8)
3.1实验目的
3.2实验设备
3.3实验电路
3.4实验任务
3.5实验步骤与分析
4.实验三中断原理实验???????????????(10)
4.1实验目的
4.2实验设备
4.3实验电路
三.审查过程??????????????????(11)
四.问题及解决思路???????????????(13)
五.实验心得??????????????????(14)
实验原理
一:TEC-4 计算机组成实验系统简介
TEC-4计算机组成实验系统由清华同方教学仪器设备公司研制。它是一个典型的计算机模型实验仪器,可用于将大专、本科、硕士研究生计算机组成原理课程、计算机系统结构课程的教学实验。该仪器将提高学生的动手能力就,提高学生对计算机整体和各组成部分的理解,提高学生对计算机系统的综合设计能力。
二:TEC-4计算机组成实验系统的组成
1.控制台
2.数据通路
3.控制器
4.用户自选器件实验区
5.时序电路
6.电源部分
三:时序发生器
时序发生器器产生计算机模型的时序。TEC-4计算机组成原理实验的时序电路如图一,电路采用2片GAL22V10(U6,U7),可产生两级等间隔时序新号T1-T4和W1-W4。其中一个W由一轮T1-T4循环组成,相当于一个微指令周期;而一轮W1-W4循环可供硬连线控制器执行一条机器指令。
CLR#为复位新号,低有效。试验仪处于任何状态下令CLR#=0,都会使时序发生器和微程序控制器复位;CLR#=0时,则可以正常运行。
TJ是停机新号,是控制器的输出新号之一。连续运行时,如果控制信号停机=1,会使机器停机,停止发送时序脉冲,从而暂停程序。QD是启动信号,是运行程序的标志。DP,DZ,DB是来自控制台的开关信号。DP表示单拍,当DP=1时,每次只执行一条微指令;DZ表示单指,当DZ=1时,每次只执行一条机器指令;当DP,DB,DZ都为0时,机器连续运行。
图1时序信号发生器
四:控制器
控制器位于本实验系统的中上部,产生数据通路操作所需的控制信号。如图2:
图2
五:控制台
控制台位于TEC-4计算机组成原理实验系统的下部,主要由指示灯和若干拨动开关组成,用于给数据通路设置数、设置控制信号、显示各种数据使用。
实验内容
实验一常规型微程序控制器组成实验
一、实验目的:
1.掌握时序产生器的组成原理。
2.掌握微程序控制器的组成原理。
3.掌握伪指令格式的化简和归并。
二、实验设备:
1.TEC-4计算机组成原理实验仪一台
2.双踪示波器一台
3.直流万用表一只
4.逻辑测试笔一支
三、实验电路:
1. 微指令格式与微程序控制器电路
图3
根据给定的12条机器指令功能和数据通路总体图的控制信号,采用的微指令格式见图10。微指令字长共35位。其中顺序控制部分10位,后继微地址6位,判别字段4位,操作控制字段25位,各位进行直接控制。微指令格式中,信号名带有后缀“#”的信号为低有效信号,不带有后缀“#”的信号为高有效信号。
图4
对应微指令格式,微程序控制器的组成见图11。控制存储器采用5片EEPROM28C64(U8,Ug,U1O,Ull,U12)。微地址寄存器6位,用一片6D触发器74HCl74(U1)组成,带有清零端。两级与门或门构成微地址转移逻辑,用于产生下一微指令的地址。在每个TI上升沿时刻,新的微指令地址会打入微地址寄存器中,控制存储器随即输出相应的微命令代码。微地址转移逻辑生成下一地址,等下一个Tl上升沿时打入微地址寄存器。微地址转移逻辑的多个输入信号中,INTQ是中断请求,本实验中可以不理会。SWA,SWB是控制台的两个二进制开关信号,实验台上线已接好。C是进位信号,IR7—IR4是机器指令代码,由于本次实验不连接数据通路,这些信号都接到二进制开关KO—Kl5上。
2、机器指令与微程序
为教学中简单明了,本实验仪使用12条机器指令,均为单字长(8位)指令。指令功能及格式如表5所示。指令的高4位提供给微程序控制器,低4位提供给数据通路。
为了向RAM和寄存储器堆中装入程序和数据,检查写入是否正确,并能启动程序执行,还设计了以下五个控制台操作微程序:
存储器写操作(KWE):按下复位按钮CLR#后,微地址寄存器状态为全零。此时置SWC=O,SWB=l,SWA=O,按启动按钮后微指令地址转入27H,从而可对RAM连续进行手动写入。
存储器读操作(KRD):按下复位按钮CLR#后,置SWC=O,SWB=O,SWA=l,按启动按钮后微指令地址转入l7H,从而可对RAM连续进行读操作。
启动程序(PR):按下复位按钮ClR#后,置SWC=O,SWB=O,SWB=A,用数据开关SW7—SWO设置内存中程序的首地址,按启动按钮后微指令地址转入07H,然后转到“取指”微指令。
写寄存器操作(KLD):按下复位按钮CLR样后,置SWC=O,SWB=l,SWA=l,按启动按钮后微指令地址转入37H,从而可对寄存器堆中的寄存器连续进行写操作。
读寄存器操作(KRR):按下复位按钮CLR#后,置SWC=l,SWB=O,SWA=O,按启动按钮后微指令地址转入47H,从而可对寄存器堆申的寄存器连续进行读操作。
图5
四、实验任务
(1)按实验要求,连接试验台的数码开关K0-K15、控制开关、按钮开关、时钟信号源和微程序控制器。
注意:本次实验只做微程序控制器本身的实验,故微程序控制器输出的微命令信号与执行部件(数据通路)的连线暂不连接。连接完成后应仔细检查一遍,然后才可加上电源。
(2)熟习微指令格式的定义,按此定义将控制台指令微程序的8条微指令按十六进制编码,列于下表。三种控制台指令的功能由SWC,SWB,SWA三个二进制开关的状态来制定(KRD=001B,KWE=010B,PR=010B)。
单拍(DP)方式执行控制台微程序,读出上述八条微指令,用P字段和微地址指示灯跟踪微指令执行情况,并与上表数据对照。
(3)用P3和SWC,SWB,SWA的状态组合,观察验证三种控制台指令KWE,KRD,PR微地址转移逻辑功能的实现。
(4)熟习05H,10H两条微指令的功能和P2测试的状态条件(IR4-IR7),用二进制开关设置IR7-IR4的不同状态,观察ADD至STP九条机器指令微地址转移逻辑功能的实现。
(5)设置IR7-IR4的不同组合,用单拍方式执行ADD至STP九条机器指令微程序,用微地址和P字段指示灯跟踪微程序转移的执行情况。
五、实验步骤与分析
(1)依据微指令格式分析微指令编码的组成,得到八条微指令编码;微指令字长共为35位,最后6位表示后继微地址,判别字段进行控制台操作控制与运算选择控制。据此完成表2。
(2)测试机器是否可以正常运行。将IR4-IR7分别与数据开关SW0-SW3相 接,检查是否能根据数据开关的变化,微地址也根据图5有所变化,变化一致则说明机器正常。
(3)依据书上的电路图,连接电路。IR4-IR7分别与SW0-SW3相连接,INTQ 与SW4相连接(在此还未做中断实验,INTQ的变化对微指令地址变化不构成影响),C与SW5相连接。
(4)运行数据通路,观察微地址的变化与指示灯的变化
使DP=1,DZ=0,DB=0(单拍方式),用P3和SWC、SWB、SWA的状态组合,分别观察内存读、写,寄存器读、写和启动程序后各个指令操作码对应的微地址(注:这里由SW0-SW3控制)。
1)令SWC=0、SWB=0、SWA=1,连续按下QD,微地址第一次显示17H,第二次显示3FH,第三次显示3EH,之后在3FH与3EH之间循环。
2)令SWC=0、SWB=1、SWA=0,连续按下QD,微地址第一次显示27H,第二次显示3DH,第三次显示3CH,之后在3DH与3CH之间循环。
3)令SWC=0、SWB=1、SWA=1,连续按下QD,微地址第一次显示37H,第二次显示33H,第三次显示32H,第四次显示31H,第五次显示30H,之后在33H 、32H、31H、30H之间循环。
4)令SWC=1、SWB=0、SWA=0,连续按下QD,微地址第一次显示47H,第二次显示46H,第三次显示45H,第四次显示44H,之后在46H、 45H、44H间循环。
5)使SWC=0、SWB=0、SWA=0,启动程序,此时微地址由IR4-IR7(连接在SW0-SW3上)控制。对照微程序流程图,可观察到在不同微指令操作码下微地址的变化。连续按下QD,微地址第一次显示07H,第二次显示05H,之后到P2选择状态,中间过程随微指令操作码(IR4-IR7)的不同而改变,最后一次显示0FH。
6)出现0F的同时,出现 P1判断状态,此处还未做中断实验,无论INTQ=0还是INTQ=1,都会直接跳转至05H,然后继续做P2条件判断。
实验二 CPU组成与机器指令执行实验
一、实验目的:
1.将微程序控制器执行部件(整个数据通路)联机,组成一台模型计算机;
2.用微程序控制器控制模型机数据通路;
3.通过CPU运行九条机器指令(排除有关中断的指令)组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机型概念。
二、实验设备:
1.TEC-4计算机组成原理实验仪一台
2.双踪示波器一台
3.直流万用表一只
4.逻辑测试笔一支
三、实验电路
根据实验一的结果,结合前几次实验的原理与依据,完成此次试验。
本次实验用到前面四个实验中的所有电路,包括运算器、存储器、通用寄存器堆、程序计数器、指令寄存器、微程序控制器等,将几个模块组合成为一台简单计算机。因此,在基本实验中,这是最复杂的一个实验,也是最能得到收获的一个实验。
在前面的实验中,实验者本身作为“控制器”,完成数据通路的控制。而在本次实验中,数据通路的控制将由微程序控制器来完成。CPU从内存取出一条机器指令到执行指令结束的一个机器指令周期,是由微指令组成的序列来完成的,即一条机器指令对应一个微程序。
四、实验任务
(1)对机器指令系统组成的简单程序进行译码。将下表的程序按指令格式手
(2)按照下面框图,参考前面实验的电路图完成连线,控制器是控制部件,数据通路(包括上面各模块)是执行部件,时序发生器是时序部件。连线包括控制台、时序部分、数据通路和微程序控制器之间的连接。其中,为把操作数传给通用寄存器组RF,数据通路上的RS1,RS0,RD1,RD0应分别与IR3至IR0连接,WR1,WR0也应接到IR1,IR0上。
图6
(3) 将上述任务(1)中的程序机器代码用控制台操作存入内存中,并根据程序的需要,用数码开关SW7—SW0设置通用寄存器R2,R3及内存相关单元的数据。注意:由于设置通用寄存器时会破坏内存单元的数据,因此应先设置寄存器的数据,再设置内存数据。
(4) 用单拍(DP)方式执行一遍程序,列表记录通用寄存器堆RF中四个寄存器的数据,以及由STA指令存入RAM中的数据(程序结束后从RAM的相应单元中读出),与理论分析值作对比。单拍方式执行时注意观察微地址指示灯、IR/DBUS指示灯、AR2ARl指示灯、微地址指示灯和判断字段指示灯的值,以跟踪程序中取指令和执行指令的详细过程(可观察到每一条微指令)。
五、实验步骤与分析
1.接线
本实验的接线比较多,需仔细连接。
(1)时序发生器的输入TJI接控制存储器的输出TJ。控制器的输入C接运输器ALU的C。控制器的输入IR7、IR6、IR5、IR4、依次接指令寄存器IR的输出IR7、IR6、IR5、IR4。共6条线。
(2)控制器的输出LDIR(CER)、LDPC(LDR4) 、PC_ADD、PC_INC、LDIAR、LDAR1(LDAR2)、AR1_INC、M3、LDER、IAR_BUS#、SW_BUS#、RS_BUS#、ALU_BUS、CEL#、LRW、WRD、LDDR1(LDDR2)、M1(M2)、S2、S1、S0依次与数据通路的对应信号连接。共27条线。
(3)指令寄存器IR的输出IR0接双端口寄存器堆的RD0、WR0,IR1接RD1、WR1,IR2接RS0,IR3接RS1。共6条线。
合上电源。按CLR#按扭,使实验系统处于初始状态。
2. P3指示灯亮时,拨动SWC-SWA至011(KLD),进行QD,然后向寄存器内写入地址,寄存器写入结束后,再拨动SWC-SWA至010(KWE),依次进行存储器内的地址与数据写入(地址为00H-09H,指令如表3)。
3.开始执行指令,按下CLR#,回到P3状态,拨动SWC-SWA至000(PR),微地址经过07H,05H到达P2选择状态,接下来自动进入程序执行状态,根据输入的指令的内容,逐条执行指令。
4.对存入的数据指令进行运算,核对是否与执行结果相一致。
实验三中断原理实验
一、实验目的
1.从硬件、软件结合的角度,模拟单级中断和中断返回的过程;
2.通过简单的中断系统,掌握中断控制器、中断向量、中断屏蔽等概念;
3.了解微程序控制器与中断控制器协调工作的基本原理。
二、实验设备
TDN-CM+计算机组成原理实验系统一台
双踪示波器一台(并非必备)
直流万用表一只
逻辑测试笔一支
三、实验电路
仍然使用前面的CPU组成与机器指令执行实验的电路图,但本次实验加入中断系统。这是一个简单的中断系统模型,只支持单级中断、单个中断请求,有中断屏蔽功能,旨在说明最基本的原理。
由于硬件与时间的限制,没能完成此项实验,十分遗憾,望今后会有机会完成它!
审查过程
老师给定指令与数据,设计电路执行
(3)要求:
1,执行指令,执行完第十条时停下,读出各个寄存器的数据;
2,将读出的各个寄存器数据记录下来,与理论计算出的数据进行比较; 3,单独执行第三条指令(02H ADD R0,R1) 4,再次读出寄存器R0中的数据,
(4)操作步骤:
1、设置通用寄存器R2,R3的值:
1)使DP=1,DZ=0,DB=0,使实验系统处于单拍状态。令SWC=0、SWB=1、SWA=1,使实验系统处于寄存器加载工作方式KLD。按下CLR#按钮,使系统处于初始状态。
2)在SW7-SW0上设置一个首地址(FFH),该存储器地址供设置通用寄存器使用。该存储器地址最好是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容。
3)在SW7-SW0上设置02H,作为通用寄存器R2的寄存器号。按一次QD按钮,则将65H写入IR。
4)在SW7-SW0上设置36H,作为R2的值。按一次QD按钮,将36H写入IR指定的R2寄存器。
5)在SW7-SW0上设置03H,作为通用寄存器R3的寄存器号。按一次QD按钮,则将03H写入IR。
6)在SW7-SW0上设置37H,作为R3的值。按一次QD按钮,将66H写入IR指定的R3寄存器。
7)设置R2,R3结束,按CLR#按钮,使实验系统恢复到初始状态。
2、存指令
首先使SWC=0、SWB=1、SWA=0(KWE内存中写代码),然后设置首地址(令SW0-SW7都为0,即首地址为00H)并按下CLR#(清零),再按下QD,将首地址打入地址寄存器,接着设置微指令代码SW7-SW0=01011000,再次按下QD,将代码打入到与地址寄存器地址向对应的内存中。这样第一个指令代码就存入了内存中的00H单元。
接着上述步骤,按下QD,地址寄存器中地址自动加1,再设置第二条指令代码,按下QD,即将第二条指令存入了内存中的01H单元中。
按照以上的方法,依次将十条指令存入内存中,即是完成了指令的录入。
3.、向指定的内存单元存入数据:
首先使SWC=0、SWB=1、SWA=0(KWE内存中写数据),然后设置内存地址为65H(SW7-SW0=01100101),按下QD,即是将地址打入地址寄存器中,再设置数据,使SW7-SW0=03H,再次按下QD,即是将03H存入了内存单元36H中。
接着按上述方法将05H存入37H中。
4、执行各微指令程序
首先使SWC=0、SWB=0、SWA=0,按下QD,地址转入07,再按QD,转入05,再按QD执行LDA指令,不断按QD直到执行完地址为09H的指令,按CLR#按钮,设置SWC=1、SWB=0、SWA=0,读取各个寄存器的值。
例如读取R0的值如下:
设置SWC=1、SWB=0、SWA=0,选择00H为首地址,按QD,使SW7-SW0=00H.,
(5)程序分析结果
1)初值:R0未定,R1未定,R2=36H,R3=37H;
存储器36H单元的内容是03H,37H单元的内容是05H。
2)执行存储器00H单元中指令(第一条指令):LDA R0,[R2]
执行结果:R2=36H,R0=03H。
3)执行存储器01H单元中指令(第二条指令):LDA R1,[R3]
执行结果:R3=37H,R1=05H。
4)执行存储器02H单元中指令(第三条指令):ADD R0,R1
执行结果:R0=08H,R1=05H,C=0。
5)执行存储器03H单元中指令(第四条指令):JC+5
执行结果:结果转移到04H,因为C=0。
6)执行存储器04H单元中指令(第五条指令):AND R2,R3
执行结果:R2=36H,R3=37H。
7)执行存储器05H单元中指令(第六条指令):SUB R3,R2
执行结果:R2=36H,R3=01H。
8)执行存储器06H单元中指令(第七条指令):STA R3,[R2]
执行结果:R2=36H,R3=01H,存储器60H单元的内容为02H。
9)执行存储器07H单元中指令(第八条指令):MUL R0,R1
执行结果:R0=28H,R1=05H。
10)执行存储器08H单元中指令(第九条指令):STP
执行结果:(无变化)
11)执行存储器09H单元中指令(第十条指令):JMP [R1]
执行结果:(无变化)
问题及解决思路
1.在实验执行完第10条指令时不知道怎么去执行第3条指令
经过看流程图,发现地址信号是07时该模块是实现首地址的写入,即微程序从该处给定的地址对应的指令开始执行,所以跳出后,令SWC=0、SWB=0、SWA=0时,选择首地址02H,接下来便可以直接执行第3条指令。
2.在最开始写数据的时候,无法将数据正确的写入
经分析发现,在令SWC=0、SWB=1、SWA=1时,按了QD,之后才写入首地址,致使后面存数据时出现错误。原来出现某一模块的地址时,代表该动作已经完成,必须在之前完成各项数据的输入。
3.在最后一步要求单独执行第三条指令时,因为QD与输入首地址的顺序弄错了,导致R0的数据有了变化
将新产生的R0记录,接着做02H指令,记录最后的结果。
实验心得
我是一名计算机学院的学生,我们必须要有扎实的专业知识,才能经得起考验。我深知我们所学的计算机组成原理这门课程,是为我们今后学习计算机硬件
知识打基础。通过这次课程设计,我不仅了解了模型机的硬件结构和如何去设计微程序,而且明白了许多做事做人的道理。那就是不能放弃和虚心向同学学习。
首先,在实验过程中,因为与以前做实验时间相距较远,之前做实验时所学的知识有些记不清楚,但因为此次试验需要,我又将以前所学的知识复习巩固了一下,在实验过程中,知识条理比较清晰,能够领悟实验过程中的内容。正如学习开车一样,只有理论基础好,才能更好的实践。同时,我也意识到我的动手能力不是很强,学习计算机最需要的就是这方面的能力,所以我还需要继续努力,多锻炼自己的动手能力。
有的时候都是自己在吓自己,做完了之后发现实验也没那么难。
其次,我也深刻体会到,做事情一定要静下心来,做完一件事再想着做另外一件事。开始时,总是心里着急,为什么别人会做了,我还不明白其中原理?可是“心急吃不了热豆腐”,我们的实验还是停滞不前,后我就去看别人做实验,问别人该怎么做,静下心来认真思考,亲自动手尝试,终于,我们通过向其他同学请教及自己总结,完成了实验。这也告诉我们,做事除了需要一颗认真的心,还需要静下心来,认真总结,才能完成好一件事。
再次,我明白了与他人交流学习的重要性,有些时候,知识的掌握需要走捷径,这样的捷径不是照搬照抄,而是通过他人的经验,得到属于自己的知识与本领。在此次试验中,我向其他比我们做的快做得好的同学请教,既巩固了以前所学知识,还帮助自己理清了思路。
实验过程中,因为硬件问题,在第一次大检查中没有找到能完成中断实验的仪器,所以没有完成中断原理实验,感到挺遗憾的,不过第二次我还是很顺利的把实验做完了。
在最后验收实验时,心中还是有点紧张的,因为我怕自己一次做不好。为此我还特意找了同学陪我一起来做,庆幸的是在他来的时候我刚好做完。
经过一个学期对计算机组成原理的学习,我对其有了一定的理解,课程设计旨在检测我们对这门课的掌握程度及能否灵活运用的能力。看到课本上的方法和步骤感觉很简单,但在真正做的过程中,才发现课程设计并不是那么简单的,有些东西在理论上能够解释出来,却很难通过硬件把它实现,有些东西看似简单,实际操作起来却频频出错。总之,我会牢牢记住在这次实践过程中学到的道理,并在以后的学习生活中加以利用。
五天就这样过去了,这样的五天,是头脑急运行的五天,是知识升华的五天,也是见证我们的努力与付出的五天。相信在今后的日子里,我会想起KLD时,要进行寄存器写,还有那SW0-SW7编写出的一条条地址与指令,交汇成留在信息楼605里的快乐回忆。
最重要要的一点,做实验的时候千万不能放弃,相信自己一定能做出来! 感谢老师和同学们在实验中对我的帮助!