《复杂模型机设计-计算机组成原理课程设计.doc》由会员分享,可在线阅读,更多相关《复杂模型机设计-计算机组成原理课程设计.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机组成原理课 程 设 计 任 务 书 班级: 学号: 姓名: 成绩: 电子与信息工程学院计算机科学系目录一、设计题目1二、模型机功能概述1三、总体设计23.1 模型机结构:23.2 微程序控制电路33.3 指令译码器电路5四、详细设计64.1 数据格式:64.2指令格式:64.3指令系统74.4设计微代码8五、实验代码:10六、实验步骤:126.1实验连线:126.2写微代码:126.3读微代码及校验微代码:146.4写机器指令146.5读机器指令及校验机器指令:156.6运行程序15七、测试源程序及结果分析16八、认识体会16九、参考文献16计算机组成原理课程设计计算机组成原理课程设计报
2、告书一、设计题目复杂模型机设计二、模型机功能概述以EL-JY-II计算机组成原理教学实验系统为平台,根据模型机的结构,及内部的指令译码电路、微指令译码电路及微指令格式等设计一套指令系统,指令系统中包括传送类指令、算术运算指令、逻辑运算指令、输入/输出及转移指令;寻址方式包括寄存器寻址、直接寻址及立即寻址等。设计机器指令格式以及微程序,按照模型机数据通路设计实现机器指令功能的微程序,装载代码到EL-JY-II实验系统中并运行。系统采用“基板+扩展板(CPU板)”形式;系统公共部分如数据输入/输出和显示、单片机控制、与PC机通讯等电路放置在基板上,微程序控制器、运算器、各种寄存器、译码器等电路放置
3、在扩展板上。此模型机是由运算器,控制器,存储器,输入设备,输出设备五大部分组成。1.运算器又是有299,74LS181完成控制信号功能的算逻部件,暂存器LDR1,LDR2,及三个通用寄存器Ax,Bx,Cx等组成。2.控制器由程序计数器PC、指令寄存器、地址寄存器、时序电路、控制存储器及相应的译码电路组成。3.存储器RAM是通过CE和W/R两个微命令来完成数据和程序的的存放功能的。4.输出设备有两位LED数码管和W/R控制完成的。三、总体设计3.1 模型机结构: 图1中运算器ALU由U7U10四片74LS181构成,暂存器1由U3、U4两片74LS273构成,暂存器2由U5、U6两片74LS27
4、3构成。微控器部分控存由U13U15三片2816构成。除此之外,CPU的其它部分都由EP1K10集成(其原理见系统介绍部分)。存储器部分由两片6116构成16位存储器,地址总线只有低八位有效,因而其存储空间为00HFFH。输出设备由底板上的四个LED数码管及其译码、驱动电路构成,当D-G和W/R均为低电平时将数据总线的数据送入数码管显示。在开关方式下,输入设备由16位电平开关及两个三态缓冲芯片74LS244构成,当DIJ-G为低电平时将16位开关状态送上数据总线。在键盘方式或联机方式下,数据可由键盘或上位机输入,然后由监控程序直接送上数据总线,因而外加的数据输入电路可以不用。图1 模型机结构框
5、图3.2 微程序控制电路微程序控制电路电路中,由三片2816作为24位微程序存储器,EP1K10产生控制逻辑。开关K1、K2、K3的不同组合控制微程序的读、写和运行,六个黄色LED为微地址指示灯。微控器原理如下图(除2816、74LS245和74LS374外,其余芯片功能均由EP1K10实现。不详之处请查阅EP1K10的源程序)。以微程序的运行为例:在T2时刻,将MS24MS1的24位微程序打入微指令寄存器,然后由译码电路对MS24MS7进行译码,产生地址寄存器、指令寄存器等等电路的控制信号。MS6MS1指示下一个微地址,在T3时刻,由机器指令译码器产生的强制微地址信号对MS6MS1微地址的某
6、几位强行置位,形成下一个微地址输出。微控器的外部接口有:uAJ1、LDRO1、LDRO2、ALU_GOUT、G_299OUT、AROUT、STATUS 、AO1、BO1、WEO、WEI、LARI。在读、写微程序时,uAJ1用于从外部输入微地址;LDRO1、LDRO2、ALU_GOUT、G_299OUT、AROUT、STATUS为运算器电路的控制信号,只要将它们接至运算器电路相应的接口上(STATUS接S3S1MCN)就能实现微程序对运算器的控制。AO1、BO1通常接至底板I/O控制电路的1A1B上,用于外部I/O设备的选通控制。WEO为微控器的读写输出,WEI为外部读写控制电路的输入,控制总线
7、上的WR为外部读写控制电路的输出,其控制电路为:图2 控制电路通常将WEO与WEI相连,实现微程序对外部读写的控制。LARI为地址控制器的输入,以下另作介绍。除此以外其他控制信号都已接至相应的控制电路。3.3 指令译码器电路指令译码器电路由EP1K10实现,其原理如下图所示。其中P1、P2、P3、P4、LRi、RAG、RBG、RCG为微程序译码产生的控制信号,T3为时钟,I7I0为指令寄存器的输出IR,CA1、CA2为机器指令的读、写、运行的控制端,已分别接至控制总线的E4和E5。SA4SA0为强制微地址信号,输出至微控制器电路;LDR2LDR0输出至寄存器堆电路的LR,R0B、R1B、R2B
8、输出至寄存器堆电路的RG。图3-2 微控制器电路四、详细设计4.1 数据格式:本实验计算机采用定点补码表示法表示数据,字长为16位,其格式如下:1514 13. 0符号尾 数其中第16位为符号位,数值表示范围是:-32768X32767。4.2指令格式:1)算术逻辑指令 设计9条单字长算术逻辑指令,寻址方式采用寄存器直接寻址。其格式如下:7 6 5 43 21 0OP-CODErdrs其中OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:OP-CODE011110001001101010111100110111101111指令CLRMOVADDSUBINCANDNOTRORRO
9、L Rs或rd选定寄存器00Ax01Bx10Cx 9条算术逻辑指令的名称、功能和具体格式见表8-2。 2)存储器访问及转移指令 存储器的访问有两种,即存数和取数。它们都使用助记符MOV,但其操作码不同。转移指令只有一种,即无条件转移(JMP)。指令格式如下: 7 65 43 21 000MOP-CODErdD其中OP-CODE为操作码,rd为寄存器。M为寻址模式,D随M的不同其定义也不相同,如下表所示:OP-CODE000110指令说明写存储器读存储器转移指令寻址模式M有效地址ED定义说 明00E=(PC)+1立即数立即寻址10E=D直接地址直接寻址3)I/O指令 输入(IN)和输出(OUT)
10、指令采用单字节指令,其格式如下:7 6 5 43 21 0OP-CODEaddrrd其中,当OP-CODE=0100且addr=10时,从“数据输入电路”中的开关组输入数据;当OP-CODE=0100且addr=01时,将数据送到“输出显示电路”中的数码管显示。 4.3指令系统本实验共有14条基本指令,其中算术逻辑指令8条,访问内存指令和程序控制指令4条。输入输出指令2条。表1列出了各条指令的格式、汇编符号和指令功能。表1 指令格式 汇编符号指令的格式功 能MOV rd,rs ADD rd,rs SUB rd,rs 1000 rs rd 1001 rs rd 1010 rs rd rs rd
11、rs+rd rdrd-rs rdINC rdAND rd,rsNOT rdROR rd 1011 rd rd 1100 rs rd 1101 rd rd 1110 rd rd rd+1 rdrsrd rdrd rd rd ROL rd 1111 rd rd rd MOV D,rs 00 10 00 rs D rs D MOV rd, D 00 10 01 rd D D rd MOV rd, D 00 00 01 rd D D rd JMP D 00 00 10 00 DIN rd, KINOUT DISP,rd 0111 10 rd 0101 01 rd KIN rd rd DISP4.4设计
12、微代码设计三个控制操作微程序:存储器读操作(MRD):拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“00”时,按“单步”键,可对RAM连续读操作。 存储器写操作(MWE):拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“10”时,按“单步”键,可对RAM连续写操作。启动程序(RUN):拨动开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“11”时,按“单步”键,即可转入到第01号“取指”微指令,启动程序运行。注:CA1、CA2由控制总线的E4、E5给出。键盘操作方式时由监控程序直接对E4、E5赋值,无需接线。开关方式时可将E
13、4、E5接至控制开关CA1、CA2,由开关来控制。本系统设计的微程序字长共24位,其控制位顺序如下:24232221201918171615 14 1312 11 109 8 7654321S3S2S1S0MCnWE1A1BF1F2F3uA5uA4uA3uA2uA1uA0、三个字段的编码方案如表2: 表2 编码方案F1字段F2字段F3字段15 14 13选择12 11 10选择9 8 7选择0 0 0LDRi0 0 0RAG0 0 0P10 0 1LOAD0 0 1ALU-G0 0 1AR0 1 0LDR20 1 0RCG0 1 0P30 1 1自定义0 1 1自定义0 1 1自定义1 0 0
14、LDR11 0 0RBG1 0 0P21 0 1LAR1 0 1PC-G1 0 1LPC1 1 0LDIR1 1 0299-G1 1 0P 41 1 1无操作1 1 1无操作1 1 1无操作 系统涉及到的微程序流程见图2(图中各方框内为微指令所执行的操作,方框外的标号为该条微指令所处的八进制微地址)。控制操作为P4测试,它以CA1、CA2作为测试条件,出现了写机器指令、读机器指令和运行机器指令3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写。机器指令的执行过程如下:首先将指令在外存储器的地址送上地址总线,然后将该地址上的指令
15、传送至指令寄存器,这就是“取指”过程。之后必须对操作码进行P1测试,根据指令的译码将后续微地址中的某几位强制置位,使下一条微指令指向相应的微程序首地址,这就是“译码”过程(其原理见图5-4)。然后才顺序执行该段微程序,这是真正的指令执行过程。在所有机器指令的执行过程中,“取指”和“译码”是必不可少的,而且微指令执行的操作也是相同的,这些微指令称为公用微指令,对应于图8-2中01、02、75地址的微指令。75地址为“译码”微指令,该微指令的操作为P(1)测试,测试结果出现多路分支。本实验用指令寄存器的前4位(I7-I4)作为测试条件,出现12路分支,占用12个固定微地址单元。如I7I4相同,则还
16、需进行P2测试,以指令寄存器的I3、I2位作为测试条件,以区分不同的指令,如MOV指令和IN、OUT指表3即为将图2的微程序流程按微程序格式转化而成的二进制微代码表。图2的微程序流程 控制开关 00 P(4)测试 MWE(01) MRD(00) RUN(11) PC AR,PC+1 11 PC AR,PC+1 10 13 (D_INPUT) D_BUS LT1 14 RAM D_BUS LT1 12 01 LT1 RAM 74 LT1 LED 73 图3微程序流程图五、实验代码:按程序流程图译出适合本实验系统所有机器指令的微代码,加深对较完整的模型机的认识。这里提供以下实验程序:地址(二进制)
17、 指令(二进制) 助记符 说 明0000 0000 0100 1000 IN Ax, KIN “开关输入” Ax0000 0001 0000 0101 MOV Bx, 01H 01H Bx0000 0010 0000 00010000 0011 1001 0100 ADD Ax,Bx Ax+Bx Ax 0000 0100 1111 0000 ROL Ax Ax 0000 0101 1101 0000 NOT Ax 取反0000 0110 0010 0101 MOV Bx,01H 直接寻址0000 0111 0000 00010000 1000 1000 0010 MOV Cx, Ax Ax C
18、x0000 1001 0100 0110 OUT DISP, Cx Cx LED 0000 1010 0000 1000 JMP 00H 00H PC0000 1011 0000 0000其中MOV、JMP为双字长(32位),其余为单字长指令。对于双字长指令,第一字为操作码,第二字为操作数;对于单字长指令只有操作码,没有操作数。上述所有指令的操作码均为低8位有效,高八位默认为0。而操作数8位和16位均可。KIN和DISP分别为本系统专用输入、输出设备。表3为根据本实验程序流程图设计的二进制微代码表:表3 二进制微代码表微地址S3S2S1 S0 M CN WE 1A 1BF1F2F3UA5-UA
19、000000000000000011111111000100000000100000000010110110100001000001000000001011011111111110100011000000001010111111110010100011100000001010111111110010100100000000000010110110100101000100100000000010110110100110000101000000001010011111111101100101100000000011111111100000100110000000001110011111111110
20、001000000000000010110110110010101001000000000010110110100011101001100000000010110110100011001010100000010111101011100000101011100000001100011111100000101100000000000000000011100000101100100000000010000011110101001101000000000010000011110110001101100000000010000011111001001110000000000010000011111001
21、101110100000000010000011111011001111000110000011100011111011101111100110000000000011111100110000000000011011110011100000110000100000001000011111100000110001000000001000111110100000110010100000000011111110010000010101000000000001001011110101110101110010100000000111100000110110000000000001010011110110
22、110110101100000000000111100000111001000000000000000111100000111001100000000001001011111010111010110111000000000111100000111011000001100000000111100000111011100100000011111011111100011100000000000000011011100000111100100010000011111011111101011101000000000000011011100000111101100000110111100111100100
23、0111100111111110111001111001001111101000000010110111000010000六、实验步骤:单片机键盘操作方式实验。在进行单片机键盘控制实验时,必须把K4开关置于“OFF”状态,否则系统处于自锁状态,无法进行实验。6.1实验连线:实验连线图如图8-3所示。连线时应按如下方法:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。6.2写微代码:(1) 将开关K1K2K3K4拨到写状态即K1 off、K2 on、K3 off、K4 off,其中K1、K2、K3在微程序控制电路,K4在24位微代码输入
24、及显示电路上。(2) 在监控指示灯滚动显示【CLASS SELECt】状态下按【实验选择】键,显示【ES-_ _ 】输入08或8,按【确认】键,显示为【ES08】,再按下【确认】键。(3) 监控显示为【CtL1=_】,输入1显示【CtL1_1】,按【确认】。(4) 监控显示【U-Addr】,此时输入【000000】6位二进制数表示的微地址,然后按【确认】键,监控指示灯显示【U_CodE】,显示这时输入微代码【007F88】,注意输入微代码的顺序,先右后左。按【确认】键则显示【PULSE】,按【单步】完成一条微代码的输入。(5) 监控重新显示【U-Addr】提示输入表4第二条微代码地址。按照上面
25、的方法输入表4微代码,观察微代码与微地址显示灯的对应关系(注意输入微代码的顺序是由右至左)。表4 微代码表微地址(八进制)微地址(二进制)微代码(十六进制)00000000007F8801000001005B4202000010016FFD06000110015FE507000111015FE510001000005B4A11001001005B4C12001010014FFB13001011007FC11400110001CFFC20010000005B6522010010005B4723010011005B462501010102F5C127010111018FC1300110000001
26、C1310110010041EA320110100041EC330110110041F2340111000041F3350111010041F6360111103071F7370111113001F9401000000379C141100001010FC142100010011F4145100101007F20521010100029EB531010119403C1541011000029ED551011013003C1621100100003C1631100110025F565110101B803C1661101100C03C167110111207DF870111000000DC17111
27、1001107DFA72111010000DC17311101106F3C874111100FF73C975111101016E106.3读微代码及校验微代码:(3) 先将开关K1K2K3K4拨到读状态即K1 off、K2 off、K3 on、K4 off,按【RESET】按钮对单片机复位,使监控指示灯滚动显示【CLASS SELECt】状态。(4) 按【实验选择】键,显示【ES-_ _ 】输入08或8,按【确认】键,显示【ES08】。再按【确认】。(5) 监控显示【CtL1=_】时,输入2,按【确认】显示【U_Addr】 ,此时输入6位二进制微地址,进入读代码状态。再按【确认】显示【PULS
28、E】,此时按【单步】键,显示【U_Addr】,微地址指示灯显示输入的微地址,微代码显示电路上显示该地址对应的微代码,至此完成一条微指令的读过程。(6) 对照表3表检查微代码是否有错误,如有错误,可按步骤2重新输入微代码。6.4写机器指令(1) 先将K1K2K3K4拨到运行状态即K1 on、K2 off、K3 on、K4 off,按【RESET】按钮对单片机复位,使监控指示灯滚动显示【CLASS SELECt】状态。(2) 按【实验选择】键,显示【ES-_ _ 】输入08或8,按【确认】键,显示【ES08】,再按【确认】。(3) 监控显示【CtL1=_】,按【取消】键,监控指示灯显示【CtL2=
29、_】,输入1显示【CtL2_1】表示进入对机器指令操作状态,此时拨动CLR清零开关(在控制开关电路上,注意对应的JUI应短接)对地址寄存器、指令寄存器清零。确定清零后,按【确认】显示闪烁【PULSE】。连续按【单步】键,当微地址显示灯显示“001100”时,按【确认】键,监控指示灯显示【data】,提示输入机器指令“48”或“0048”(两位或4位十六进制数),输入后按【确认】,显示【PULSE】,再按【单步】,微地址显示灯显示“111100”,数据总线显示灯显示“0000000001001000”至此完成第一条机器指令。(4) 再连续按【单步】,微地址显示灯显示“001100”时,按【确认】
30、输入第二条机器指令。依此规律逐条输入表5的机器指令,输完后,可连续按【取消】或【RESET】键退出写机器指令状态。表5 机器指令表地址(十六进制)机器指令(十六进制)0000480100050200010300940400F00500D00600050700820800460900080A00006.5读机器指令及校验机器指令:在监控指示灯显示【CtL2=_】状态下,输入2,显示【CtL2_2】,表示进入读机器指令状态,按步骤4的方法拨动CLR开关对地址寄存器和指令寄存器进行清零,然后按【确认】键,显示【PULSE】,连续按【单步】键,微地址显示灯显示从“000000”开始,然后按“00100
31、0”、 “001010” 、“111011”方式循环显示。当微地址灯再次显示为“001000”时,输出显示数码管上显示写入的机器指令。读的过程注意微地址显示灯,地址显示灯和数据总线指示灯的对应关系。如果发现机器指令有误,则需重新输入机器指令。注意:机器指令存放在RAM里,掉电丢失,故断电后需重新输入。6.6运行程序在监控指示灯显示【CtL2=_】状态下,输入3,显示【CtL2_3】,表示进入运行机器指令状态,按步骤4的方法拨动CLR开关对地址寄存器和指令寄存器进行清零,使程序入口地址为00H,可以【单步】运行程序也可以【全速】运行,运行过程中提示输入相应的量,运行结束后从输出显示电路上观察结果
32、。图6-1电路连接图七、测试源程序及结果分析(1) 开始执行地址为00H的指令,即IN Ax,KIN。结果:从键盘输入1111H。(2) 执行地址为01H的指令,即MOV Bx,01H。结果:Bx = 0001H。(3) 执行地址为03H的指令,即ADD Ax,Bx。结果:Ax = 1112H。(4) 执行地址为04H的指令,即ROL Ax。结果:Ax = 2224H。(5) 执行地址为05H的指令,即NOT Ax。结果:Ax = DDDBH。(6) 执行地址为06H的指令,即MOV BX,01H。结果:Bx = 05H。(7) 执行地址为08H的指令,即MOV CX,AX。结果:Cx = D
33、DDBH。(8) 执行地址为09H的指令,即OUT DISP,Cx。结果:显示Cx。(9) 执行地址为0AH和0BH的指令,使程序跳转到地址为00H处,使程序可以循环执行。通过实验测试,输入1111H时,输出DDDBH。验证了结果的正确性。八、认识体会整个设计通过了软件和硬件上的调试。我想这对于自己以后的学习和工作都会有很大的帮助。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。对于教材管理系
34、统,其程序是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。因此可以说系统的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。九、参考文献1. 唐朔飞. 计算机组成原理(第二版). 北京:高等教育出版社,2008.12. 计算机组成原理实验系统实验指导书16