您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 计算机组成与系统结构实验报告2
评语:课中检查完成的题号及题数:课后完成的题号与题数:成绩:自评成绩:95一、实验目的:(1)掌握一个简单CPU的组成原理。(2)在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。(3)为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。二、实验内容:1、实验原理:本实验要实现一个简单的CPU,并且在此CPU的基础上,继续构建一个简单的模型计算机。CPU由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图2-1-1所示。这个CPU在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU必须和主存挂接后,才有实际的意义,所以还需要在该CPU的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。图1-4-1基本CPU构成原理图实验报告实验名称:1.4CPU与简单模型机设计实验日期:2015.11.16班级:10011303学号:2013302534姓名:杨添文除了程序计数器(PC),其余部件在前面的实验中都已用到,在此不再讨论。系统的程序计数器(PC)由两片74LS161和一片74LS245构成,其原理如图1-4-2所示。PC_B为三态门的输出使能端,CLR连接至CON单元的总清端CLR,按下CLR按钮,将使PC清零,LDPC和T2相与后作为计数器的计数时钟,当LOAD为低时,计数时钟到来后将CPU内总线上的数据打入PC。图1-4-2程序计数器(PC)原理图本模型机和前面微程序控制器实验相比,新增加一条跳转指令JMP,共有五条指令:IN(输入)、ADD(二进制加法)、OUT(输出)、JMP(无条件转移),HLT(停机),其指令格式如下(高4位为操作码):助记符机器指令码说明IN00100000IN→R0ADD00000000R0+R0→R0OUT00110000R0→OUTJMPaddr11000000********addr→PCHLT01010000停机其中JMP为双字节指令,其余均为单字节指令,********为addr对应的二进制地址码。微程序控制器实验的指令是通过手动给出的,现在要求CPU自动从存储器读取指令并执行。根据以上要求,设计数据通路图,如图1-4-3所示。本实验在前一个实验的基础上增加了三个部件,一是PC(程序计数器),另一个是AR(地址寄存器),还有就是MEM(主存)。因而在微指令中应增加相应的控制位,其微指令格式如表1-4-1所示。图1-4-3数据通路图表1-4-1微指令格式232221201918-1514-1211-98-65-0M23M22WRRDIOMS3-S0A字段B字段C字段MA5-MA0141312选择000NOP001LDA010LDB011LDR0100保留101LOAD110LDAR111LDIR141312选择000NOP001P1010保留011保留100保留101LDPC110保留111保留141312选择000NOP001ALU-B010R0-B011保留100保留101保留110PC-B111保留系统涉及到的微程序流程见图1-4-4所示,当拟定“取指”微指令时,该微指令的判别测试字段为P1测试。指令译码原理见图1-3-3所示,由于“取指”微指令是所有微程序都使用的公用微指令,因此P1的测试结果出现多路分支。本机用指令寄存器的高6位(IR7—IR2)作为测试条件,出现5路分支,占用5个固定微地址单元,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写,微程序流程图上的单元地址为16进制。当全部微程序设计完毕后,应将每条微指令代码化,表1-4-2即为将图1-4-2的微程序流程图按微指令格式转化而成的“二进制微代码表”。NOP00PC-ARPC加1MEM-IRP1R0-OUTNOPPC-ARPC加1R0-AIN-R0R0-BA加B-R001033032040533353C30ADDINOUTHLTJMP3501010101MEM-PC1D图1-4-4简单模型机微程序流程图表1-4-2二进制微代码表地址十六进制高五位S3-S0A字段B字段C字段MA5-MA00000000100000000000000000000000101006D4300000000011011010100001103107070000100000111000001110000040024050000000000100100000001010504B2010000010010110010000000011D105141000100000101000101000001300014040000000000010100000001003218300100011000001100000000000133280401001010000000010000000001350000350000000000000000001101013C006D5D000000000110110101011101设计一段机器程序,要求从IN单元读入一个数据,存于R0,将R0和自身相加,结果存于R0,再将R0的值送OUT单元显示。根据要求可以得到如下程序,地址和内容均为二进制数。地址内容助记符说明0000000000100000;START:INR0从IN单元读入数据送R00000000100000000;ADDR0,R0R0和自身相加,结果送R00000001000110000;OUTR0R0的值送OUT单元显示0000001111100000;JMPSTART跳转至00H地址00000100000000000000010101010000;HLT停机2、实验步骤:1.按图1-4-5连接实验线路。图1-4-5实验接线图2.写入实验程序,并进行校验,分两种方式,手动写入和联机写入,本次实验采用联机写入。联机软件提供了微程序和机器程序下载功能,以代替手动读写微程序和机器程序,但是微程序和机器程序得以指定的格式写入到以TXT为后缀的文件中,微程序和机器程序的格式如下:本次实验程序如下,程序中分号‘;’为注释符,分号后面的内容在下载时将被忽略掉:;//*************************************//;////;//CPU与简单模型机实验指令文件//;////;//*************************************//;//*****StartOfMainMemoryData*****//$P0020;START:INR0从IN单元读入数据送R0$P0100;ADDR0,R0R0和自身相加,结果送R0$P0230;OUTR0R0的值送OUT单元显示$P03E0;JMPSTART跳转至00H地址$P0400;$P0550;HLT停机;//*****EndOfMainMemoryData*****//;//**StartOfMicroControllerData**//$M00000001;NOP$M01006D43;PC-AR,PC加1$M03107070;MEM-IR,P1$M04002405;R0-B$M0504B201;A加B-R0$M1D105141;MEM-PC$M30001404;R0-A$M32183001;IN-R0$M33280401;R0-OUT$M35000035;NOP$M3C006D5D;PC-AR,PC加1;//**EndOfMicroControllerData**//选择联机软件的“【转储】—【装载】”功能,在打开文件对话框中选择上面所保存的文件,软件自动将机器程序和微程序写入指定单元。选择联机软件的“【转储】—【刷新指令区】”可以读出下位机所有的机器指令和微指令,并在指令区显示,对照文件检查微程序和机器程序是否正确,如果不正确,则说明写入操作失败,应重新写入,可以通过联机软件单独修改某个单元的指令,以修改微指令为例,先用鼠标左键单击指令区的‘微存’TAB按钮,然后再单击需修改单元的数据,此时该单元变为编辑框,输入6位数据并回车,编辑框消失,并以红色显示写入的数据。3.运行程序将MC单元的编程开关置为‘运行’档,MEM单元的编程开关也置为‘运行’档,进入软件界面,选择菜单命令“【实验】—【简单模型机】”,打开简单模型机数据通路图。按动CON单元的总清按钮CLR,然后通过软件运行程序,选择相应的功能命令,即可联机运行、监控、调试程序,当模型机执行完JMP指令后,检查OUT单元显示的数是否为IN单元值的2倍。在数据通路图和微程序流中观测指令的执行过程,并观测软件中地址总线、数据总线以及微指令显示和下位机是否一致。三、项目要求及分析:1.试修改现有的指令系统,将加法指令的功能修改为R0的内容和某个存储单元的内容相加;增加存数、取数和减法三条机器指令,指令助记符分别为STA、LAD和SUB,指令操作码分别为十六进制的60、70和80。2.利用修改后的指令系统编写一段程序,完成十六位二进制数的加减法运算。分析:(1)根据ADD指令:R0+R0→R0,就是将寄存器中的数加两次,现在题目要求将两个不同的数A与B进行相加减,可以另外设计一个方案:A的值还是来自寄存器,但B的值可以设计来自于存储器,即增加存数、取数指令,从存储器中取数,将取出的数存入运算单元。即:1、将R0的值送入ALU的A端;2、将另一个数B存入内存中;具体内容为:①从IN单元读取要存储的数据地址;②将地址送到地址寄存器AR;③从IN单元读取要存储的数据;④将数据送到内存中的相应存储单元。3、计算另一个数B的内存地址;4、利用取数指令取出相应数B:具体内容为:①从IN单元读入数据的存储地址;②将存储地址送至地址寄存器AR;③将取出的数送至RO。5、寄存器R0中的数送到ALU的B;6、进行加减法运算,结果送回R0;7、连接OUT单元,显示结果输出。(2)要进行两个16位的二进制数加减,可以先将两个二进制数的高八位与低八位分别存入不同的地址中,接着取出两个数的低八位相加,送到OUT单元显示,进位要进行存储;然后进行两个数的高八位相加,结果在数据总线显示,其中,最高位的进位忽略。具体操做:1、根据已经构思好的指令变化具体步骤(要添加的指令有STA、LAD、SUB以及需更新的ADD),变化微指令,微指令结构为232221201918-1514-1211-98-65-0M23M22WRRDIOMS3-S0A字段B字段C字段MA5-MA0其中,S3-S0为控制信号,1010表示A+B+CN,1011表示A-B,0000为直通;MA5-MA0为后续微地址;A、B、C字段分别如下表示:指令译码原理图如下,操做码00、60、70、80分别映射成微地址为30、36、37、38。SE3T2P1I[7]SE2T2P1I[6]SE0T2I[4]I[6]I[7]I[2]P1SE1T2I[5]I[6]I[7]I[3]P1141312选择000NOP001LDA010LDB011LDR0100保留101保留110保留111LDIR141312选择000NOP001ALU-B010R0-B011保留100保留101保留110保留111保留141312选择000NOP001P1010保留011保留100保留101保留110保留111保留画出微程序流程图如下:00NOP01PC-ARPC+102MEN-IR30P1ADDINOUTHLTJMPLADSTASUB303233353C373638R0-AIN-R0RO-OUTNOPPC-ARIN-R0IN-R0RO-A17PC+115112CIN-R00101011DR0-ARR0-ARIN-R018MEM-PC16122DR0-ARMEM-R0IN-ROR0-AR1901132EMEM-B01R0-MEMMEM-B052F
本文标题:计算机组成与系统结构实验报告2
链接地址:https://www.777doc.com/doc-5902123 .html