1、计算机原理课程设计桂林电子科技大学计算机与控制学院2007 年 10 月设计的内容、要求、操作原理及方法一、设计的题目和内容1.题目设计一台 CISC 模型计算机,并运行能完成一定功能的机器语言程序进行验证,程序功能可从以下 3 类中任选一个:A 类(最高成绩为“优” ):求 1 到任意一个整数 N 之间的所有奇数之和并输出显示,和为双字长说明:N 从开关输入,和分两次输出,其间间隔约 1 秒钟,然后输出显示停止求 1 到任意一个整数 N 之间的所有偶数之和并输出显示,和为双字长说明:N 从开关输入,和分两次输出,其间间隔约 1 秒钟,然后输出显示停止求两个向量的点积并输出显示,和为单字长说明
2、:向量分量的个数 N 及两个向量的所有分量均从开关输入,和从数码管输出,然后输出显示停止B 类(最高成绩为“良” ):求两个向量的和并输出显示,和为单字长说明:向量中分量的个数 N 及两个向量的所有分量均从开关输入,和分 N 次输出,其间间隔约 1 秒钟,然后输出显示停止求两个向量的差并输出显示,和为单字长说明:向量中分量的个数 N 及两个向量的所有分量均从开关输入,差分 N 次输出,其间间隔约 1 秒钟,然后输出显示停止C 类(最高成绩为“中” ):让输出设备上的数码管加 1 计数; 说明:计数的初值和循环的次数均从开关输入,当计数结束时,输出显示停止让输出设备上的数码管减 1 计数; 说明
3、:计数的初值和循环的次数均从开关输入,当计数结束时,输出显示停止求 1 到任意一个整数 N 之间的所有偶数之和并输出显示,和为单字长说明:N 从开关输入,和从数码管输出,然后输出显示停止 (范例) 求 1 到任意一个整数 N 之间的所有奇数之和并输出显示,和为单字长说明:N 从开关输入,和从数码管输出,然后输出显示停止2.完成的内容完成系统的总体设计,画出模型机数据通路框图;设计机器指令格式和指令系统;设计微指令格式和所有机器指令的微程序流程图;设计指令系统中所有机器指令对应的微指令; 设计地址转移逻辑电路;按总体设计,将控制存储器经锁存器 74LS273、74LS175 后的输出,即系统中所
4、需的全部控制信号,连接到相应部件,如:运算器、存储器、输入开关、输出发光二极管、三态门。连接系统所需的时序信号,连接地址转移逻辑电路的输入与输出等等;由给出的题目和设计的指令系统编写相应的汇编语言源程序;根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其存入相应的主存地址单元;输入机器语言源程序在主存的起始地址,单步或连续运行主存中的程序,观察输出显示,要保证其结果满足题目的要求。二、本设计的基本要求正确设计机器指令的格式、指令系统、微程序流程图、微指令格式、微指令、地址转移逻辑电路、汇编语言源程序,正确连接系统中所需的全部控制信号线和时序信号线,保证在执行机器语言源程序时能
5、根据指令的操作码和时序信号,产生正确的具有时间标志的控制信号,以便建立正确的数据通路,从而完成取指和执行指令的控制,最终使得程序运行输出的结果满足题目的要求。为了确实杜绝学生在计算机原理课程设计中硬件设计和软件设计的抄袭现象,真正达到锻炼学生实际动手能力的目的,现作如下要求:(1)学生到实验室做课程设计前,必须按要求设计好所有指令的指令格式、微程序流程图、微指令列表、汇编语言源程序、机器语言源程序。验收通过后,由指导教师签字,并附在正式的课程设计报告后一同上交;(2)学生可根据自己的实际情况选择不同难度的题目进行设计,也可以先做简单的,验收通过后再做难度较大的题目;(3)学生在实验室进行课程设
6、计期间,不允许相互讨论或现场指导。理论上有什么不清楚的或实验台确有故障的可向指导教师咨询。但若是自己在连线或设计时产生的错误,教师将不予解答,留给学生自己分析故障的原因,找出解决的方法。(4)每个人验收时,教师将会根据学生所做的题目涉及到的理论知识及可能出现的故障现象提出 35 个问题,以检查学生实际掌握知识的情况。三、课程设计的具体步骤(以 C 类的最后一个题目为范例)1.编写满足功能的汇编语言源程序;汇编语言源程序:IN R0 功能:从开关输入任意一个整数-R0MOV R1,1 将立即数 1-R1(R1 用于存放参与运算的奇数)MOV R2,0 将立即数 0-R2(R2 用于存放累加和)L
7、1: CMP R0,R1 将 R0 的整数 n 与 R1 的奇数进行比较JB L2 小于,则转到 L2 处执行ADD R1,R2 否则,累加求和;并将 R1 的内容加 2,形成下一个奇数INC R1 INC R1 JMP L1 跳转到 L1 处继续执行L2: OUT R2 输出累加和JMP L2 循环显示2.确定指令格式和指令系统;为了完成求和功能,本系统设计了八条指令:IN(输入),MOV(将一个数送入寄存器),CMP(比较) ,JB(小于跳转) ,ADD(两数相加),INC(自增 1) ,JMP(无条件跳转),OUT(输出)。这些指令的指令格式如下:(1)I/O 指令输入(IN)指令采用单
8、字节指令,其格式如下:7 6 5 4 3 2 1 0操作码 X X Rd输出(OUT)指令采用单字节指令,其格式如下:7 6 5 4 3 2 1 0操作码 Rs X X“Rs”:源寄存器 “Rd”:目的寄存器(2)转移指令条件转移指令(JB)和无条件转移指令(JMP)采用双字节指令,其格式如下:7 6 5 4 3 2 1 0操作码 X X X X地 址“地址”中的值就是要转移的地址值。(3)比较指令和相加指令比较指令(CMP)和相加指令(ADD)采用单字节指令,其格式如下:7 6 5 4 3 2 1 0操作码 Rs Rd(4)MOV 指令MOV 指令采用双字节指令,其格式如下:7 6 5 4
9、3 2 1 0操作码 X X Rd立 即 数(5)自增指令自增 1 指令(INC)采用单字节指令,其格式如下:7 6 5 4 3 2 1 0操作码 X X Rd以下是对 Rs 和 Rd 的规定:Rs 或 Rd 选定的寄存器0 0 R00 1 R11 0 R2数据格式模型机规定数据的表示采用定点补码表示,单字长为 8 位,其格式如下:7 6 5 4 3 2 1 0符号位 尾数指令系统本模型共有 8 条基本指令,下表列出了每条指令的格式、汇编符号和指令功能。助记符号 指令格式 功 能IN Rd 1 0 0 0 X X Rd 将数据存到 Rd 寄存器OUT Rs 1 1 1 1 Rs X X RsL
10、EDADD Rs,Rd 1 1 0 0 Rs Rd Rs+RdRdCMP Rs,Rd 1 0 1 0 Rs Rd Rs-Rd,锁存 CY 和 ZIINC Rd 1 1 0 1 X X Rd Rd+1RdMOV Rd,data 1 0 0 1 X X RddatadataRdJMP addr 1 1 1 0 X X X XaddraddrPCJB addr 1 0 1 1 X X X Xaddr若小于,则 addrPC3.由指令格式将汇编语言源程序手工汇编成机器代码;与汇编语言源程序对应的机器语言源程序:助记符 地址(十六进制) 机器代码 功能IN RO 00 10000000 (SW)R0MO
11、V R1,1 01 10010001 1R102 00000001 MOV R2,0 03 10010010 0R204 00000000L1: CMP R0,R1 05 10100001 R0-R1JB L2 06 10110000 (L2)PC07 00001101ADD R1,R2 08 11000110 R1+R2R2 INC R1 09 11010001 R1+1R1 INC R1 0A 11010001 R1+1R1JMP L1 0B 11100000 L1PC0C 00000101L2: OUT R2 0D 11111000 R2LEDJMP L2 OE 11100000 L2P
12、C0F 000011014.由数据通路图,画出所有机器指令的微程序流程图,确定相应的微地址;图 3-1 微程序流程图计数器 74LS161:LOAD LDPC 功能0 1 BUS - PC1 0 不装入,也不计数1 1 PC+1存储器 RAM6116:WE CS WE OE 功能WE 1 * * 不选择T3 0 1 0 读6116 0 0 1 写0 0 0 写5.设计微指令格式和微指令代码表;系统使用的微指令字长共 24 位,其格式如下:24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1S3 S2 S1 S0 M CN
13、WE A9 A8 A B C A5 A4 A3 A2 A1 A0A、B、C 字段经过译码器译码后的信号使用说明:A 字段 B 字段 C 字段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_B 0 0 1 P(1)0 1 0 LDDR1 0 1 0 RD_B 0 1 0 P(2)0 1 1 LDDR2 0 1 1 RI_B 0 1 1 P(3)1 0 0 LDIR 1 0 0 299_B 1 0 0 P(4)1 0 1 LOAD 1 0 1 ALU_B 1 0 1 AR1 1 0 LDAR 1 1 0 PC
14、_B 1 1 0 LDPCA9、A8 经译码器译码后的信号使用说明:Y0 Y1 Y2 Y3A9 A8 SW_B CE LED_B 未用0 0 0 1 1 10 1 1 0 1 11 0 1 1 0 11 1 1 1 1 0其中 A5A0 为 6 位的后继微地址,A、B、C 分别为三个译码字段,分别由三个控制位译码出多位。C 字段中的 P(1)-P(4)是四个测试位。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行,其原理如图 3-1 所示, I7-I2 为指令寄存器的第 7-2 位输出,SE5-SE1 为微控制单元微地址锁存器的强置端
15、输出。AR 为算术运算是否影响进位及判零标志位,低电平有效。B 字段的 RS_B,RD_B,RI_B 分别为源寄存器、目的寄存器、变址寄存器选三个工作寄存器 R0,R1及 R2 的选通译码器的使能信号,其原理如图 3-2 所示,图中 I0-I3 为指令寄存器的第 0-3位,LDRI 为打入工作寄存器信号的译码器使能控制位。图 3-2 逻辑译码单元图由微指令格式及微程序流程图可编写如下的微指令列表微地址 S3 S2 S1 S0 M CN WE A9 A8 A B C A5A000 0 0 0 0 0 0 0 1 1 000 000 100 01100001 0 0 0 0 0 0 0 1 1 1
16、10 110 110 00001002 0 0 0 0 0 0 0 0 1 100 000 001 00100003 0 0 0 0 0 0 0 0 1 001 000 000 00000104 0 0 0 0 0 0 0 1 1 011 010 000 00010105 0 1 1 0 0 0 0 1 1 000 000 101 00000106 0 0 0 0 0 0 0 1 1 011 010 000 00011107 1 0 0 1 0 1 0 1 1 001 101 000 00000110 0 0 0 0 0 0 0 0 0 001 000 000 00000111 0 0 0 0
17、 0 0 0 1 1 110 110 110 00001112 0 0 0 0 0 0 0 1 1 010 001 000 00010013 0 0 0 0 0 0 0 1 1 110 110 110 01000114 0 0 0 0 0 0 0 1 1 010 001 000 00011015 0 0 0 0 0 0 0 1 1 010 010 000 01001016 0 0 0 0 0 0 0 1 1 110 110 110 01001117 0 0 0 0 0 0 1 1 0 000 001 000 00000121 0 0 0 0 0 0 0 1 1 000 000 011 1000
18、0022 0 0 0 0 0 0 0 1 1 001 101 000 00000123 0 0 0 0 0 0 0 0 1 101 000 110 00000124 0 0 0 0 0 0 0 0 0 010 000 000 01010125 0 0 0 0 0 1 1 0 1 000 101 000 01100126 0 0 0 0 0 0 0 0 1 010 000 000 01011127 0 0 0 0 0 1 1 1 0 000 101 000 01100030 0 0 0 0 0 0 0 1 1 110 110 110 01011031 0 0 0 0 0 0 0 1 1 110
19、110 110 01010033 0 0 0 0 0 0 0 1 1 000 000 000 00000140 0 0 0 0 0 0 0 0 1 101 000 110 00000160 0 0 0 0 0 0 0 1 1 000 000 000 000001说明:表中的微地址用八进制数表示。6.设计地址转移逻辑电路;在此实验系统中,地址转移逻辑的设计方案已经固化,电路如图 3-3 所示。微地址的逻辑表达式如下: A4=(FC+FZ)P(3)T4A3=I7P(1)T4A2=I6P(1)T4A1=I5P(1)T4+I3P(2)T4+SWBP(4)T4A0=I4P(1)T4+I2P(2)T4+S
20、WAP(4)T4由于微地址触发器置“1”端低电平有效,A5-A0 置“1”控制信号(A5 的置“1”端实际未使用) 。A4-A0 置“1”控制信号 SE5-SE1 的逻辑表达式为:SE5=(FC+FZ)P(3)T4SE4=I7P(1)T4SE3=I6P(1)T4SE2=I5P(1)T4+I3P(2)T4+SWBP(4)T4SE1=I4P(1)T4+I2P(2)T4+SWAP(4)T4上述逻辑表达式的含义为:在进行 P(1)测试时,根据指令操作码 I7、I6、I5、I4 进行 16 路分支;在进行 P(2)测试时,根据指令二进制编码的 I3、I2 进行 4 路分支;在进行P(3)测试时,根据状态
21、标志 FC 和 FZ 进行 2 路分支;在进行 P(4)测试时,根据开关SWB、SWA 的值进行 4 路分支。本程序只使用了 P(1),P(3),P(4)测试来形成后继微指令的微地址,转入各分支完成的具体功能详见微程序流程图。图 3-3 地址转移逻辑电路图7.将微指令代码写入控制存储器,并读出验证;写或读控制存储器中的微指令时的连线方法时序电路的连接由于时序电路的内部线路已经连好,所以只需将时序电路与方波信号源连接,即将时序电路的时钟脉冲输入端 接至方波信号发生器输出端(H23) ,时序电路的 CLR 已接至实验板右下方的 CLR 模拟开关上。其它信号线的连接将“STATE UNIT”单元的
22、TS1-TS4 与“W/R UNIT”单元的 T1-T4 连接;将“MICRO- CONTROLLER”单元的 MA5-MA0 与“SWITCH UNIT”单元的 A5-A0 连接。编程A.将编程开关置为 PROM(编程)状态。B.将实验板上“START UNIT”中的“STEP”置为“STEP” ,将“STOP”置为“RUN”状态。C.用二进制模拟开关置微地址 A5A0。D.在 MAK24MAK1 开关上置微代码,24 位开关对应 24 位显示灯,开关置为零时灯亮,开关置为“1”时灯灭。E.启动时序电路(按动启动按钮“START” ) ,即将微代码写入到 EEPROM 2816 的相应地址对应的单元中。F.重复 CE 步骤,将微指令列表中的微代码写入 2816。校验A.将编程开关设置为 READ(校验)状态。B.将实验板的 STEP 开关置为“STEP”状态。 “STOP”开关置为“RUN”状态。C.用二进制开关置好微地址 A5A0。D.按动“START”键,启动时序电路,读出微代码,观察显示灯 MD24-MD1 的状态(灯亮为“0” ,灭为“1” ) ,检查读出的微代码是否与写入相同。如果不同,则将开关置为