1、基本模型机设计一. 设计目的1. 在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台稍微复杂的模型计算机;2. 为其定义 5 条机器指令,并编写相应的微程序,具体上机调试掌握整机概念二. 设计内容部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本次实验将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能,这里,计算机数据通路的控制将由微程序控制器来完成,CPU 从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。三概要设计为了向 RAM 中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控
2、制台操作微程序.存储器读操作:拨动总清开关 CLR 后,控制台开关 SWB,SWA 为”0 0”时,按START 微动开关,可对 RAM 连续手动读操作.存储器写操作:拨动总清开关 CLR 后,控制台开关 SWB SWA 置为”0 1”时,按 START 微动开关可对 RAM 进行连续手动写入.启动程序:拨动总清开关 CLR 后,控制台开关 SWB SWA 置为“1 1”时,按START 微动开关,既可转入到第 01 号“取址”微指令,启动程序运行.上述三条控制台指令用两个开关 SWB SWA 的状态来设置,其定义如下表 3-1 读写变化SWB SWA 控制台指令001011读内存(KRD)写
3、内存(KWE)启动程序(RP)根据以上要素设计数据通路框图,如图 3-1:表 3-2 微代码的定义微程序 24 23 22 21 20- 19 18 17 16 15 14 13控制信号 S3 S2 S1 S0 M CN RD M17 M16 A12 11 10 9 8 7 6 5 4 3 2 1B P uA5 uA4 uA3 uA2 uA1 uA0表 3-3 A,B,P 字段内容A 字段 B 字段 P 字段15 14 13 控制信号 12 11 10 控制信号 9 8 7 控制信号0 0 0 .0 0 0 0 0 00 0 1 LDRI 0 0 1 RS_G 0 0 1 P10 1 0 LD
4、DR1 0 1 0 0 1 00 1 1 LDDR2 0 1 1 0 1 11 0 0 LDIR 1 0 0 1 0 0 P41 0 1 LOAD 1 0 1 ALU_G 1 0 11 1 0 LDAR 1 1 0 PC_G 1 1 0 LDPC当拟定“取指令”微指令时,该微指令的判别测试字段为 P1 测试。由于“取指”微指令是所有微程序都使用的公用微指令,因此 P1 测试结果出现多路分支。本次课程设计用指令寄存器的前 4 位(I7-I4)作为测试条件,出现 5 路分支,占用 5 个固定微地址单元。控制台操作为 P4 测试,它以控制台开关 SWB,SWA 作为测试条件,出现了3 路分支,占用
5、3 个固定微地址单元。当分支微地址单元固定后,剩下的其他地方就可以一条微指令占用控存一个微地址单元随意填写。PCARPC+1DR1RAMRAMBUSBUSDR1RAMBUSBUSDR1PCARPC+1P4DR1RAM控制台0020WRITE(01) READ(00) RUN(11)21 20 2324 220130 27图 3-2 微程序流程图表 3-4 二进制微代码表微地址 S3CN RD M17 M16 A B P uA5uA000 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 001 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0
6、 1 1 0 0 0 0 0 1 002 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 003 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 004 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 105 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 006 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 107 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0
7、 0 0 0 0 1 0 1 1 010 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 111 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 112 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 1 1 113 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 014 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 015 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1
8、 0 0 0 0 0 0 0 0 116 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 117 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 120 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1 021 0 0 0 0 0 0 0 1 1 1 10 1 1 0 1 1 0 0 1 0 1 0 022 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 123 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0
9、0 0 0 0 0 0 0 0 124 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 025 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 126 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 127 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 030 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1四详细设计B7 BUS UNIT|B0W/R UNIT T4T3T
10、2T1WETS4TS3 TS2TS1STATE UNITH24SIGNAL UNITB7 S3| |AUJ3 | |B0 CNLDDR1LDDR2ALU-BALU UNITB7 LDR0| RO-B|B0 REG UNITB7 LDAR| LOAD| PC-BB0 LDPCADDRESS UNITM24| M18| SE6| |M19 |SE1LDDR1LDDR2 P(1)P(4)ALU-BLDIPLDR1RS-BLDARLOADPC-BM16LDPC M17MICRO-CONTROLLERSWBSWASE6|SE1 I7|P(1) |P(4) |LOG UNIT I2SWITCH UNITS
11、WBSWAI7|I2INT UNITLDIRINPUT DEVICED7|D0 SW-BA8A9Y0EX UNITY1D7| Y2|D0D7 LED-B| W/RD0 OUTPUT DEVICEA7|A0W/RD7|D0MAIN MEMCEAD7 D7| | | |AD0 D0W/R EXT BUSB7 BUS UNIT|B0W/R UNIT T4T3T2T1WETS4TS3 TS2TS1STATE UNITH24SIGNAL UNITS3| |AUJ3 | | | SE6| |SE1P(1)P(4)LDIPRS-BPC-BSE6|SE1 I7|P(1) |P(4) |I2I7|I2| | |
12、 | |上图为本实验的连线图五测试数据及运行结果正常测试数据(3 组)及运行结果;输入:03 结果:04输入:02 结果:03输入:07 结果:08六调试情况,设计技巧及体会经过这次课程设计,我体会到自己所学的东西太少了,很多都不知道。虽然这次设计的只是一个小程序,但是这其间我还是学到了不少东西。在这次课程设计的过程,有些很基本的知识出现记混淆的现象,通过查书及询问同学,最终明白了。本次课程设计我们要设计一台微程序控制的模型机,以对计算机能有一个整机的概念,完成对计算机组成原理这门课程的综合应用,达到学习本书的作用。作为一个计算机系学生这是必需掌握的,使我们对数据选择器,移位器,加法器,运算器
13、,存储器和微程序控制器,有了比较透彻的认识。由于计算机设计的部件较多,结构原理较复杂,对于我们这样的初设计者来说感到无从下手,所以我们在整个过程中采取由浅入深,由简单到复杂的放法,通过这次设计,使我们能清楚的了解计算机的基本组成,基本原理和设计步骤,设计思路和调试步骤,最终能清晰的建立起整机概念,为独立完成计算机设计奠定了基础。七参考文献计算机组成原理实验指导书 西安邮电学院计算机系 邢高峰 牛晓晨 王劲松计算机组成原理 白中英 科学出版社八附录:源代码(电子版)本实验采用 5 条指令实现加 1 操作,设计机器指令如下:地址 内容 助记符 说明 00 00 IN ;输入开关数据R0,采集数据0
14、1 10 ADD0AH ;R0+0AHR002 0A ;地址03 20 STA0BH ; R00BH04 0B ;地址05 30 OUT0BH ;0BH BUS,输出显示06 0B ;地址07 40 JMP08H ;00Hpc 08 00 ;地址090A 01 ;自定0B ;求和结果复杂模型机的设计一. 设计目的1. 在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台复杂的模型计算机;2. 在基本指令的基础上,进行扩充指令并编写相应的微程序,具体上机调试掌握整机概念二. 设计内容设计一个必须包含 IN、OUT、STA、ADD、JMP 指令的复杂指令模型机,指令种类自己决定,至少包括 5
15、 条。部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本次实验将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能,这里,计算机数据通路的控制将由微程序控制器来完成,CPU 从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。三概要设计为了向 RAM 中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序.存储器读操作:拨动总清开关 CLR 后,控制台开关 SWB,SWA 为”0 0”时,按START 微动开关,可对 RAM 连续手动读操作.存储器写操作:拨动总清开关 CLR 后,控制
16、台开关 SWB SWA 置为”0 1”时,按 START 微动开关可对 RAM 进行连续手动写入.启动程序:拨动总清开关 CLR 后,控制台开关 SWB SWA 置为“1 1”时,按START 微动开关,既可转入到第 01 号“取址”微指令,启动程序运行.上述三条控制台指令用两个开关 SWB SWA 的状态来设置,其定义如下表 3-1 读写变化SWB SWA 控制台指令001011读内存(KRD)写内存(KWE)启动程序(RP)根据以上要素设计数据通路框图,如下图所示:微程序:$M00018108$M0101ED82$M0200C050$M0300A004$M0400E0A0$M0500E00
17、6$M0600A007$M0700E0A0$M0801ED8A$M0901ED8C$M0A00A03B$M0B018001$M0C00203C$M0D00A00E$M0E01B60F$M0F95EA25$M1001ED83$M1101ED85$M1201ED8D$M1301EDA6$M14001001$M15030401$M16018016$M173D9A01$M18019201$M1901A22A$M1A01B22C$M1B01A232$M1C01A233$M1D01A236$M1E318237$M1F318239$M20009001$M21028401$M2205DB81$M230180E
18、4$M24018001$M2595AAA0$M2600A027$M2701BC28$M2895EA29$M2995AA0$M2A01B42B$M2B959B41$M2C01A42D$M2D65AB6E$M2E0D9A01$M2F01AA30$M300D8171$M31959B41$M32019A01$M3301B435$M3405DB81$M35B99B41$M360D9A01$M37298838$M38019801$M3919883A$M3A019801$M3B070A08$M3C068A09四详细设计1. 实验的连线图B7 BUS UNIT|B0W/R UNIT T4T3T2T1WETS4
19、TS3 TS2TS1STATE UNITH24SIGNAL UNITB7 S3| |AUJ3 | |B0 CNLDDR1LDDR2ALU-BALU UNITB7 LDR0| RO-B|B0 REG UNITB7 LDAR| LOAD| PC-BB0 LDPCADDRESS UNITM24| M18| SE6| |M19 |SE1LDDR1LDDR2 P(1)P(4)ALU-BLDIPLDR1RS-BLDARLOADPC-BM16LDPC M17MICRO-CONTROLLERSWBSWASE6|SE1 I7|P(1) |P(4) |LOG UNIT I2SWITCH UNITSWBSWAI7|
20、I2INT UNITLDIRINPUT DEVICED7|D0 SW-BA8A9Y0EX UNITY1D7| Y2|D0D7 LED-B| W/RD0 OUTPUT DEVICEA7|A0W/RD7|D0MAIN MEMCEAD7 D7| | | |AD0 D0W/R EXT BUSB7 BUS UNIT|B0W/R UNIT T4T3T2T1WETS4TS3 TS2TS1STATE UNITH24SIGNAL UNITS3| |AUJ3 | | | SE6| |SE1P(1)P(4)LDIPRS-BPC-BSE6|SE1 I7|P(1) |P(4) |I2I7|I2| | | | |2. 指
21、令系统本模型机共有 16 条基本指令,其中算术逻辑指令 7 条,访存指令和程序控制指令 4 条,输入输出指令 2 条,其它指令 1 条,表列出了各条指令的格式、汇编符号、指令功能。助记符号 指令格式 功能CLR rdMOV rs,rdADC rs,rd1000 rs rd1001 rs rd0111 00 rd 0rdrsrdrs+rd+cyrdSBC rs,rdINC rdAND rs,rdCOM rdRRC rs,rdRLC rs,rd1010 rs rd1011 rd1100 rs rd1101 rd1110 rs rd1111 rs rdrs-rd-cyrdrd+1rdrsrdrdrd
22、rdc y r srsrdc y r srsrdLDA M, D, rdSTA M, D, rdJMP M, DBZC M, D00 M 01 rd00 M 00 rdD00 M 00 rdD00 M 00 rdDErsrdEEPC当 CY1 或 Z1,EPCIN addr, rdOUT addr, rd0100 01 rd0101 01 rdaddrrdrdaddrHALT 0100 01 rd 停机五测试数据及运行结果输入值:03 和 01输出值:02 00 03 00 03 FF 00 六调试情况,设计技巧及体会1调试步骤(1)按图连接实验线路(2)写入程序1) 手动写入A. 按如下步骤
23、讲微代码写入微控器中的存储器 2816 中: 将编程开关置为 PROM(编程)状态。 将实验板上“STATE UNIT”中的“STEP”置为“STEP” , “STOP”置为“RUN”状态。 用二进制模拟开关置微地址 MA5MA0。 在 MK24MK1 开关上置微代码,24 位开关对应 24 位显示灯,开关量置为“0”时灯亮,开关量为“1”时灯灭。 启动时序电路(按动启动按钮“START” ) ,即将微代码写入到 2816 的相应地址对应的单元中。 重复步骤,将所有的微代码写入 2816 中。B. 按如下步骤校验微代码 将编程开关置为 READ(校验)状态。 将实验板上“STATE UNIT”
24、中的“STEP”置为“STEP” , “STOP”置为“RUN”状态。 用二进制模拟开关置微地址 MA5MA0。 启动时序电路(按动启动按钮“START” ) ,读出微代码。观察显示灯MD24MD1 的状态(灯亮为“0” ,灭为“1” ) ,检查读出的微代码是否与写入的相同。如果不同,则将开关置于 PROM 编程状态,重新执行)即可。C. 按如下步骤使用 KWE 微程序进行机器指令程序的装入。 使编程开关处于“RUN” ,STEP 为“STEP”状态,STOP 为“RUN”状态。 拨动总清开关 CLR(010) ,微地址寄存器清零,程序计数器清零,然后使控制台 SWB、SWA 开关置为“0 1
25、”,并按动一次 START,微地址显示灯显示“010001” 。 再按动一次 START,微地址灯显示“010100” ,此时数据开关的内容置为要写入的机器指令。再按动两次 START 键后,即完成该条指令的写入,并且微地址显示灯显示“010001” 。 (注:由 KWE 的流程图可知,该流程每执行一次,将向 PC 寄存器所指向的存储器单元中写入一个字节的数据,并且将 PC 加 1。 ) 如果还需要向存储器中输入数据,则需重复重新执行。D. 按如下步骤使用 KRD 微程序进行机器指令程序的检查。 使编程开关处于“RUN” ,STEP 为“STEP”状态,STOP 为“RUN”状态。 拨动总清开
26、关 CLR(010) ,微地址寄存器清零,程序计数器清零,然后使控制台 SWB、SWA 开关置为“0 0”, 并按动一次启动开关START,微地址显示灯显示“010000” 。 再按动一次 START,微地址灯显示“010010” ,第三次按动 STRAT,微地址灯显示为“010111” ,再按动 STRAT 后此时输出单元的数码管显示为PC 寄存器所指单元的内容。 (注:由 KRD 的流程图可知,该流程每执行一次,将显示 PC 寄存器所指向的存储器单元中一个字节的数据,并且将 PC 加 1。 ) 如果还需要检查存储器中其他单元的数据,则需重复重新执行。2) 联机读/写程序将微代码写入文本文件
27、中,通过联机软件载入实验系统。(3)运行程序1) 本机运行A. 单步运行程序 使编程开关处于“RUN”状态,STEP 为“STEP”状态,STOP 为“RUN”状态。 拨动总清开关 CLR(010) ,微地址寄存器清零,程序计数器清零。 单步运行一条微指令,每按动一次 START 键,即单步运行一条微指令。对照微程序流程图,观察微地址显示灯是否与流程一致。 当运行结束后,可检查存数单元(0BH)中的结果是否和理论计算结果一致。B. 连续运行程序 使编程开关处于“RUN”状态,STEP 为“EXEC”状态,STOP 为“RUN”状态。 拨动总清开关 CLR(010) ,微地址寄存器清零,程序计数
28、器清零。 按动 START 键,系统将连续运行程序,直至将 STOP 拨至“STOP”状态。 当运行结束后,可检查存数单元(0BH)中的结果是否和理论计算结果一致。2) 联机运行联机运行程序时,进入软件界面,装载机器指令及微指令后,运行即可。2对设计及调试过程的心得体会。复杂模型机的设计与实现比简单模型机难得多,在设计过程中,我对计算机的大致组成以及运行原理有了进一步的了解,对实验流程也比较熟悉。觉得做实验的时候必须一丝不苟,要善于排错,不能慌张。再设计指令的时候要讲求合理,写出详细的微程序,设计初步完成后,要编写适当的程序进行测试,不断调试,从而成功的完成实验。经过这次课程设计,我体会到自己
29、所学的东西太少了,很多都不知道。虽然这次设计的只是一个小程序,但是这其间我还是学到了不少东西。在这次课程设计的过程,有些很基本的知识出现记混淆的现象,通过查书及询问同学,最终明白了。本次课程设计我们要设计一台微程序控制的模型机,以对计算机能有一个整机的概念,完成对计算机组成原理这门课程的综合应用,达到学习本书的作用。作为一个计算机系学生这是必需掌握的,使我们对数据选择器,移位器,加法器,运算器,存储器和微程序控制器,有了比较透彻的认识。由于计算机设计的部件较多,结构原理较复杂,对于我们这样的初设计者来说感到无从下手,所以我们在整个过程中采取由浅入深,由简单到复杂的放法,通过这次设计,使我们能清
30、楚的了解计算机的基本组成,基本原理和设计步骤,设计思路和调试步骤,最终能清晰的建立起整机概念,为独立完成计算机设计奠定了基础。七参考文献计算机组成原理实验指导书 西安邮电学院计算机系 邢高峰 牛晓晨 王劲松计算机组成原理 白中英 科学出版社八附录:源代码(电子版)本实验采用 5 条指令实现加 1 操作,设计机器指令如下:地址 内容 助记符 00 0100 0100 IN R001 0100 0101 IN R102 0111 0010 CLR R203 0101 1010 OUT R204 1110 1010 RRC R2,R205 1010 0001 SUC R0,R106 0101 100
31、1 OUT R107 0111 0010 CLR R208 1111 1010 RLC R2,R209 1000 1001 MOV R2,R10A 0101 1001 OUT R10B 1001 0001 ADC R0,R10C 0101 1001 OUT R10D 1100 0110 AND R1,R20E 0101 1010 OUT R20F 0000 0100 STA M,D,R010 0100 000011 0000 0010 LDA M,D,R212 0100 000013 01011010 OUT R214 1101 1010 COM R215 0101 1010 OUT R216 1011 1010 INC R217 01011010 OUT R218 0000 1000 JMP M,D19 0001 1111 1F 0110 0000 HALT