计算机组成原理课程设计16位机微程序控制器指令系统的设计与实现.docx
《计算机组成原理课程设计16位机微程序控制器指令系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计16位机微程序控制器指令系统的设计与实现.docx(13页珍藏版)》请在冰豆网上搜索。
![计算机组成原理课程设计16位机微程序控制器指令系统的设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-2/1/f8115ddb-6c2c-4669-8fe5-c706a312eacc/f8115ddb-6c2c-4669-8fe5-c706a312eacc1.gif)
计算机组成原理课程设计16位机微程序控制器指令系统的设计与实现
一、设计题目
16位机微程序控制器指令系统的设计与实现
二、设计目的
通过看懂教学计算机组合逻辑控制器中已经设计好并正常运行的几条基本指令(例如ADD、MVRR、OUT、MVRD、JR、RET等指令)的功能、格式和执行流程,然后自己设计微程序控制器中的29条基本指令和19条扩展指令的功能、格式和执行流程,并在教学计算机上实现、调试正确,达到以下目的:
1、深入理解计算机控制器的功能、组成知识和各类典型指令的执行过程;
2、对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念;
3、学习微程序控制器的设计过程和相关技术。
三、设计说明
控制器设计是学习计算机总体组成和设计的重要的部分。
要在TEC—2000教学计算机上完成这项设计,必须清楚懂得:
1、TEC—2000教学机的微程序控制器主要由作为选件的微程序控制器小板和教学机大板上的7片GAL20V8组成。
2、TEC—2000教学机微程序控制器上要实现的全部基本指令和扩展指令的控制信号都是由微程序小板上的7片控制存储器给出的。
3、应了解监控程序的A命令只支持基本指令,扩展指令应用E命令将指令代码写入到相应的存储单元中;不能用T、P命令单步调试扩展指令,只能用G命令执行扩展指令。
4、要明白TEC—2000教学机支持的指令格式及指令执行流程分组情况;理解TEC—2000教学机中已经设计好并正常运行的各类指令的功能、格式、执行流程和控制信号的组成。
5、明确自己要实现的指令格式、功能、执行流程设计中必须遵从的约束条件。
6、为了完成扩展指令的功能、格式和执行流程,并在教学计算机上实现、调试正确的实验内容,具体过程包括:
1)确定指令格式和功能,要受教学机已有硬件的约束,应尽量与已实现指令的格式和分类办法保持一致;
2)划分指令执行步骤并设计每一步的执行功能,设计节拍状态的取值,应参照已实现指令的处理办法来完成,特别要注意的是,读取指令的节拍只能用原来已实现的,其他节拍的节拍状态也应尽可能的与原用节拍的状态保持一致和相近;
3)在指令微程序表中填写每一个控制信号的状态值,注意要特别仔细,并有意识地体会这些信号的控制作用;
4)将设计好的微码,装入控制存储器的相应单元;
5)写一个包含你设计的指令的程序,通过运行该程序检查执行结果的正确性,来初步判断你的设计是否正确;如果有问题,通过几种办法查出错误并改正,继续调试,直到完全正确。
四、设计内容
1、完成微程序控制器指令系统设计,主要内容是由学生自己设计29条基本指令和19条扩展指令的功能、格式和执行流程,并在教学计算机上实现、运行、调试正确。
2、首先看懂TEC—2000教学计算机的功能部件组成和线路逻辑关系,然后分析教学计算机组合逻辑控制器中已经设计好并正常运行的几条典型指令(例如ADD、MVRR、OUT、MVRD、JRC、RET等指令)的功能、格式和执行流程。
3、设计微程序控制器指令系统中各条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确,例如ADC、STC、JRS、JRNS、LDRX、STRX、JMPR、CALR、LDRA等19条扩展指令。
4、单条运行指令,查看指令的功能、格式和执行流程。
5、用监控程序的A、E(扩展指令必须用E命令置入)命令编写一段小程序,观察运行结果。
五、设计要求
分组及任务分配
每组四名同学,任务分配为:
朱冠兰负责仿照教学计算机组合逻辑控制器,设计微程序控制器中基本指令的功能、格式和执行流程,画出29条基本指令的执行流程框图和微程序编码表。
冯云龙负责设计扩展指令的功能、格式和执行流程,设计微指令各字段的具体编码值,包括控制码的各字段、下址字段、形成下址用到的条件码,画出扩展指令的执行流程框图和微程序编码表。
胡学智负责确定微码各字段与控制存储器各个芯片之间的关系,列表写出各控制存储器芯片中存储单元的内容,将设计好的微码装入控制存储器。
王硕负责编写若干个测试程序,包含所有的基本指令和扩展指令,通过运行这些程序可以检查所有指令设计是否正确。
最后,所有组员共同参与测试,通过运行测试程序,判断指令设计是否正确。
(二)学生应交材料
1、课程设计报告,每组交一份。
2、一块自定义指令系统的微程序控制器板。
3、课程设计日记,每人交一份。
(三)课程设计报告内容
1、题目名称;
2、题目内容;
3、基本指令和扩展指令的执行流程框图;
4、基本指令和扩展指令的微程序编码表;
5、八个控制存储器芯片中各存储单元的内容列表;
6、测试程序;
7、自评(从实现的功能上评价);
8、遇到的问题及解决方案;
9、总结(主要从综合应用知识、分析问题、解决问题方面总结)。
六、进度安排
第1周周一上午课程设计动员
周二~周五
(1)熟悉汇编、TEC—2000机开发环境
(2)基本指令设计
(3)扩展指令设计
(4)编写调试程序。
第2周周一~周五微指令写入芯片,运行测试程序,调试指令。
第3周周一~周三编写课程设计报告。
周四、周五验收和答辩总结。
七、课程设计环境
1、硬件环境:
PC机一台、TEC—2000实验机一台、微程序控制器实验板一块。
2、软件环境:
(1)Win2000、DOS
(2)TEC—2000仿真终端程序PCEC
(3)TEC—2000监控程序。
八、软件设计方案
1.将设计好的微码写入控制存储器。
一次只对一片28C64控制存储器芯片进行读写,该芯片可插在扩展芯片的高位或低位,若插在高位,输入时信号编码为高八位,低八位补零;若插在低位,输入时信号编码为低八位,高位补零。
若一次扩展两片28C64控制器芯片,要注意信号要与产生该信号的芯片相对。
将扩展新片的内存单元地址置为4000~5FFF,将MAPROM插入扩展芯片的位置,微程序入口地址对应的内存单元的地址为芯片的起始地址和该指令的编码值之和。
具体操作如下:
E4000
400000FF:
0400FF:
0500FF:
0600FF:
0900FF:
08
00FF:
0A00FF:
0700FF:
0B00FF:
0D00FF:
0C
00FF:
0E00FF:
0F
E4020
402000FF:
50
E4041
404100FF:
11
E4044
404400FF:
1000FF:
1000FF:
1000FF:
10
E4080
408000FF:
1E00FF:
1B00FF:
1200FF:
1900FF:
15
00FF:
1500FF:
1200FF:
1700FF:
1D
E408C
408C00FF:
1700FF:
00FF:
00FF:
23
E40CE
40CE00FF:
1F
将MPROM1~MPROM7依次插入扩展芯片的位置对其编程,内存单元的地址为芯片的起始地址和该指令操作功能所对应的微址之和,操作如下:
MPROM1产生下址信号,MPROM2产生CI3~0、SCC3~0信号
对MPROM1-2的操作为:
MPROM1在高位MPROM2在低位
E4000
400000FF:
00E000FF:
00E000FF:
00E000FF:
0020
00FF:
303000FF:
303000FF:
303000FF:
3030
00FF:
303000FF:
303000FF:
303000FF:
3030
00FF:
303000FF:
303000FF:
303000FF:
3030
00FF:
303400FF:
303000FF:
143600FF:
3030
00FF:
303000FF:
1A3700FF:
303000FF:
1C37
00FF:
303000FF:
00E000FF:
303000FF:
00E0
00FF:
303000FF:
1C3000FF:
243000FF:
00E0
00FF:
00E000FF:
00E000FF:
303000FF:
00E0
00FF:
3030
E4030
403000FF:
3A3200FF:
0230
E4050
405000FF:
3030
MPROM3产生0MRW、0I2~0信号,MPROM4产生SAI8~I6、SBI5~I3信号,
对MPROM3-4的操作为:
MPROM3在高位MPROM4在低位
E4000
400000FF:
413100FF:
432000FF:
101000FF:
4010
00FF:
41B800FF:
41B900FF:
41BC00FF:
41BB
00FF:
41BE00FF:
419900FF:
419C00FF:
44B8
00FF:
433800FF:
433900FF:
437800FF:
4358
00FF:
401000FF:
453000FF:
471000FF:
2310
00FF:
373000FF:
433100FF:
001000FF:
4320
00FF:
101000FF:
431800FF:
049000FF:
4490
00FF:
173800FF:
432000FF:
432000FF:
4320
00FF:
170000FF:
433100FF:
022000FF:
4320
00FF:
1730
E4030
403000FF:
470000FF:
4320
E4050
00FF:
41B8
MPROM5产生B口、A口信号,MPROM6产生0SST、SSHSCI信号,
对MPROM5-6的操作为:
MPROM5在高位MPROM6在低位
E4000
400000FF:
550100FF:
550100FF:
000000FF:
0000
00FF:
001000FF:
001100FF:
001000FF:
0010
00FF:
001000FF:
001100FF:
001000FF:
0010
00FF:
001100FF:
001000FF:
006000FF:
0050
00FF:
000000FF:
550000FF:
000000FF:
0000
00FF:
000000FF:
400000FF:
000000FF:
4401
00FF:
002000FF:
000000FF:
000000FF:
0000
00FF:
000000FF:
550100FF:
550100FF:
5501
00FF:
000000FF:
400000FF:
550000FF:
4401
00FF:
5000
E4030
403000FF:
000000FF:
5501
E4050
405000FF:
0012
MPROM7产生DC2、DC1信号,对MPROM7的操作为:
E4000
400000FF:
7000FF:
B000FF:
1000FF:
00
00FF:
0000FF:
0000FF:
0000FF:
00
00FF:
0000FF:
0000FF:
0000FF:
00
00FF:
0000FF:
0000FF:
0000FF:
00
00FF:
0000FF:
0200FF:
3200FF:
01
00FF:
0000FF:
3000FF:
0300FF:
30
00FF:
0000FF:
3000FF:
0100FF:
30
00FF:
0000FF:
3000FF:
3000FF:
30
00FF:
0000FF:
3000FF:
0100FF:
30
00FF:
00
E4030
403000FF:
0300FF:
0B
E4050
405000FF:
00
九、测试程序
1.测试基本指令的程序:
1)测试MVRD,MVRR,PSHF,ADD,SUB,AND,CMP,JRNZ,POPF,RET,XOR,TEST,JRZ的程序
程序流程图:
程序:
(2000)MVRDR0,0041;MVRD
MVRDR1,0016
MVRDR2,0084
MVRRR3,R1;MVRR
MVRRR6,R0
MVRDR7,0000
(200A)PSHF;PSHF
ADDR0,R1;ADD,->R0=0057
SUBR2,R1;SUB,->R2=006E
ANDR3,R1;AND,->R3=0016
CMPR2,R1;CMP
JRNZ2050;JRNZ
(2010)POPF;POPF
RET;RET
(2050)XORR1,R6;XOR,->R1=0057
TESTR0,R7;TEST
JRZ2010;JRZ
运行结果:
2)测试OR,DEC,PUSH,INC,POP,SHR,JRC,SHL,JR,JMPA的程序
程序流程图:
程序:
(2000)MVRDR0,0046;MVRD
MVRDR1,0016
MVRRR2,R1;MVRR
MVRRR3,R0
MVRRR6,R0
(2007)ORR0,R1;OR,->R0=0056
DECR1;DEC,->R1=0015
PUSHR2;PUSH
INCR2;INC,->R2=0017
POPR2;POP,->R2=0016
SHRR3;SHR,->R3=0023
CMPR1,R0;CMP
JRC2050;JRC
(200F)SHLR6;SHL,->R6=008C
RET;RET
(2050)JR2060;JR
(2060)JMPA200F;JMPA
运行结果:
3)测试LDRR,CALA,OUT,STRR,IN,JRNC的程序
程序流程图:
程序:
(2070)2070:
00412071:
00422073:
00432074:
0043
(2000)MVRDR3,0004;MVRD
MVRDR2,2070;MVRD
(2004)LDRRR0,[R2];LDRR
CALA200C;CALA
DECR3;DEC
JRZ200B;JRZ
INCR2;INC
JR2004;JR
(200B)RET;RET
(200C)OUT80;OUT
MVRDR1,0020;MVRD
ADDR0,R1;ADD
STRR[R2],R0;STRR
(2011)IN81;IN
SHRR0;SHR
JRNC2011;JRNC
RET;RET
运行结果:
2.测试扩展指令的程序:
1)验证指令ADC的程序。
程序:
(2000)MVRDR0,FFFF
MVRDR1,1111
ADDR0,R1
RET
运行结果:
R0=1110,R1=1111,F=10000011
E2004
(2004)0001:
2001
运行结果:
R0=1111,R1=1111,F=10000011
十、自评
测试程序的运行结果证明了29条基本指令和19条扩展指令是正确的。
由此我们可以知道16位机微程序控制器指令系统的设计是正确的。
我们的设计基本上达到了实验目的所要求的。
十一、遇到的问题及解决方案
测试扩展指令时,用E命令编码写入,但我们对指令格式不熟悉,导致测试时程序无法正确运行。
经过我们大量的测试以及寻找相关资料,我们总结出了正确的格式并正确地调试了程序。
十二、总结
在整个设计过程中,虽然分工明确,但是大家仍然不时交流彼此的经验,分享收获,使知识得以互补,遇到困难时也能够互相帮助解决问题,最终使任务圆满完成。