5.1CPU与简单模型机设计实验5.1.1实验目的(1)掌握一个简单CPU的组成原理。(2)在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。(3)为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。5.1.2实验设备PC机一台,TD-CMA实验系统一套。5.1.3实验原理本实验要实现一个简单的CPU,并且在此CPU的基础上,继续构建一个简单的模型计算机。CPU由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图5-1-1所示。这个CPU在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU必须和主存挂接后,才有实际的意义,所以还需要在该CPU的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。ABALUR0ARPCIR控制器图5-1-1基本CPU构成原理图除了程序计数器(PC),其余部件在前面的实验中都已用到,在此不再讨论。系统的程序计数器(PC)和地址寄存器(AR)集成在一片CPLD芯片中。CLR连接至CON单元的总清端CLR,按下CLR按钮,将使PC清零,LDPC和T3相与后作为计数器的计数时钟,当LOAD为低时,计数时钟到来后将CPU内总线上的数据打入PC。D7...D0计数器LCPU内总线B7...B0三态门B7...B0Q7...Q0LDPCT3PC_BCPU内总线B7...B0......CLRLOAD...图5-1-2程序计数器(PC)原理图本模型机和前面微程序控制器实验相比,新增加一条跳转指令JMP,共有五条指令:IN(输入)、ADD(二进制加法)、OUT(输出)、JMP(无条件转移),HLT(停机),其指令格式如下(高4位为操作码):助记符机器指令码说明IN00100000INR0ADD00000000R0+R0R0OUT00110000R0OUTJMPaddr11100000********addrPCHLT01010000停机其中JMP为双字节指令,其余均为单字节指令,********为addr对应的二进制地址码。微程序控制器实验的指令是通过手动给出的,现在要求CPU自动从存储器读取指令并执行。根据以上要求,设计数据通路图,如图5-1-3所示。本实验在前一个实验的基础上增加了三个部件,一是PC(程序计数器),另一个是AR(地址寄存器),还有就是MEM(主存)。因而在微指令中应增加相应的控制位,其微指令格式如表5-1-1所示。图5-1-3数据通路图表5-1-1微指令格式A字段B字段C字段141312选择000001LDA010LDB011LDR0100保留10111023M232221201918-1514-1211-98-65-0WRRDIOMA字段B字段C字段MA5-MA0S3-S0NOP111LDIRLDARLOAD11109选择000001ALU_B010R0_B011保留100保留101110NOP111保留保留PC_B876选择000001P1010保留011保留100保留101110NOP111保留保留LDPCM22系统涉及到的微程序流程见图5-1-4所示,当拟定“取指”微指令时,该微指令的判别测试字段为P1测试。指令译码原理见图3-2-3所示,由于“取指”微指令是所有微程序都使用的公用微指令,因此P1的测试结果出现多路分支。本机用指令寄存器的高6位(IR7—IR2)作为测试条件,出现5路分支,占用5个固定微地址单元,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写,微程序流程图上的单元地址为16进制。NOP00PC-ARPC加1MEM-IRP1R0-OUTNOPPC-ARPC加1R0-AIN-R0R0-BA加B-R001033032040533353C30ADDINOUTHLTJMP3501010101MEM-PC1D图5-1-4简单模型机微程序流程图当全部微程序设计完毕后,应将每条微指令代码化,表5-1-2即为将图5-1-4的微程序流程图按微指令格式转化而成的“二进制微代码表”。表5-1-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地址0000010000000000;0000010101010000;HLT停机5.1.4实验步骤1.按图5-1-5连接实验线路。2.写入实验程序,并进行校验,分两种方式,手动写入和联机写入。1)手动写入和校验(1)手动写入微程序①将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘编程’档,KK4置为‘控存’档,KK5置为‘置数’档。②使用CON单元的SD05——SD00给出微地址,IN单元给出低8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的低8位。③将时序与操作台单元的开关KK5置为‘加1’档。④IN单元给出中8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的中8位。IN单元给出高8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的高8位。⑤重复①、②、③、④四步,将表5-1-2的微代码写入2816芯片中。MC单元ALU_BALU_BLDALDBLDALDBS3S0S3S0.........P1P1CPU内总线SE5SE0SE5SE0.........IR单元时序与操作台单元TS1LDIRLDIR扩展单元控制总线WRIOMWRIOMRDRDXMRDXMWRIN单元LDR0LDRiR0_BRS_BTS4D7D0...IN7IN0......OUT7OUT0......D7D0..................OUT单元RDWRIN_BLED_BGNDD7D0......D7D0......D7D0.........XIORXIOWRDMEM单元WRXA7XA0A7A0...............地址总线ALU®单元D7D0......PC&AR单元LDPCLDPCPC_BPC_BLDARLDARLOADLOAD30HZCLK0数据总线XD7XD0.........D7D0.........T1T4......XD7XD0...图5-1-5实验接线图(2)手动校验微程序①将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘校验’档,KK4置为‘控存’档,KK5置为‘置数’档。②使用CON单元的SD05——SD00给出微地址,连续两次按动时序与操作台的开关ST,MC单元的指数据指示灯M7——M0显示该单元的低8位。③将时序与操作台单元的开关KK5置为‘加1’档。④连续两次按动时序与操作台的开关ST,MC单元的指数据指示灯M15——M8显示该单元的中8位,MC单元的指数据指示灯M23——M16显示该单元的高8位。⑤重复①、②、③、④四步,完成对微代码的校验。如果校验出微代码写入错误,重新写入、校验,直至确认微指令的输入无误为止。(1)手动写入机器程序①将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘编程’档,KK4置为‘主存’档,KK5置为‘置数’档。②使用CON单元的SD07——SD00给出地址,IN单元给出该单元应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该存储器单元。③将时序与操作台单元的开关KK5置为‘加1’档。④IN单元给出下一地址(地址自动加1)应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元中。然后地址会又自加1,只需在IN单元输入后续地址的数据,连续两次按动时序与操作台的开关ST,即可完成对该单元的写入。⑤亦可重复①、②两步,将所有机器指令写入主存芯片中。(2)手动校验机器程序①将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘校验’档,KK4置为‘主存’档,KK5置为‘置数’档。②使用CON单元的SD07——SD00给出地址,连续两次按动时序与操作台的开关ST,CPU内总线的指数据指示灯D7——D0显示该单元的数据。③将时序与操作台单元的开关KK5置为‘加1’档。④连续两次按动时序与操作台的开关ST,地址自动加1,CPU内总线的指数据指示灯D7——D0显示该单元的数据。此后每两次按动时序与操作台的开关ST,地址自动加1,CPU内总线的指数据指示灯D7——D0显示该单元的数据,继续进行该操作,直至完成校验,如发现错误,则返回写入,然后校验,直至确认输入的所有指令准确无误。⑤亦可重复①、②两步,完成对指令码的校验。如果校验出指令码写入错误,重新写入、校验,直至确认指令码的输入无误为止。2)联机写入和校验联机软件提供了微程序和机器程序下载功能,以代替手动读写微程序和机器程序,但是微程序和机器程序得以指定的格式写入到以TXT为后缀的文件中,微程序和机器程序的格式如下:机器指令格式说明:$P机器指令代码十六进制地址机器指令标志微指令格式说明:微指令代码十六进制地址微指令标志XXXX$MXXXXXXXX本次实验程序如下,程序中分号‘;’为注释符,分号后面的内容在下载时将被忽略掉:;//***************************************//;////;//CPU与简单模型机实验指令文件//;////;//ByTangDuCO.,LTD//;////;//***************************************//;//******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;//**EndOfMicroController