《计算机组成原理课程设计报告11.doc》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计报告11.doc(14页珍藏版)》请在三一办公上搜索。
1、计算机组成原理课程设计报告实验项目:1、设计一个具有带进位加法和立即数寻址方式的模型机2、设计一个具有带进位加法和条件跳转的模型机专 业: 计算机科学与技术 班 级: 10级37-4班 学 号: 11003070407 姓 名: 何岑 指导教师: 王勇 实验时间: 20125.2527 实验一:设计一个具有带进位加法和立即数寻址方式的模型机1、问题描述本题目设计的是一台具有输入、输出、带进位加法、储存和跳转功能的模型计算机,并写出工作程序和测试数据验证所设计的指令系统。2、设计目标在设计完本程序后,所设计模型机能够完成从一个外设输入一个数到指定的寄存器中,另外输入立即数并将其存入另一个、寄存器
2、中,两数进行进位相加并将结果保存到第一个寄存器,输出结果,并显示。另外,实现无条件跳转至开始。3、指令格式助记符号机器指令码功 能IN0000 0000Input - R0ADC Imm1110 0000 XXXX XXXXR0+Imm+CY - R0STA addr0010 0000 XXXX XXXXR0 - addrOUT addr0011 0000 XXXX XXXXaddr - LEDJMP addr0100 0000 XXXX XXXXaddr - PC4、设计微指令(1)定义指令码,及定义一个下地址为08H指令指令编码微地址IN0000 000008ADC0001 000009S
3、TA0010 000010OUT0011 000011JMP0100 000012 (2)设计微指令编码表微地址S3S2S1S0MCnWEA9A8ABCUA5-UA000000000011000000000000001010000000111101101100000100200000000110000000100100008000000000001000000000001090000000111101101100000110300000000101100000000010004000000011010001000000101051001000110011010000000010A0000000
4、1111011011000011006000000001110000000000111070000001010000010000000010B0000000111101101100011010D0000000011100000000011100E0000000010010000000011110F0000001100000010000000010C00000001111011011001000010000000001101000110000001(3)微程序流程图(4)由编码得到微程序根据以上编写的微程序,以及微指令代码化的方法得到的微程序代码为:$M00018001$M0101ED82$M0
5、200C048$M08001001$M0901ED83$M0300B004$M0401A205$M05919A01$M0A01ED86$M0600E007$M07028201$M0B01ED8D$M0D00E00E$M0E00900F$M0F030201$M0C01ED90$M1000D181(5)写工作程序$P0000$P0110$P0222$P0320$P0401$P0530$P0601$P0740$P0800(6)建立联机操作文件为了从PC机下载工作程序和微程序,需要建立联机操作文件,该文件是普通的文本文件,扩展名为TXT,可用记事本来建立的,要求:a、 测试用的工作程序排在文件的前面,
6、每个内存地址及代码占一行;b、 微指令代码排在文件的后面,每个微地址及微指令代码占一行;(7)按照实验电路图连接实验线路实验采用复杂模型机系统连线图,电路图如下:(8)运行(a)系统与PC机联机实验系统安装有一个标准的DB型9针RS-232C串口插座,使用配套的串行通信电缆分别插在实验系统及PC机的串口,即可实现系统与PC机的联机操作。(b)下载工作程序和微程序使用唐都软件将工作程序和微程序下载到实验箱的内存和控制存储器中。其中,自带电 线的实验箱用NCMP53软件,启动软件后使用F4装载进行下载;外接电源线的实验箱用CMPP软件,启动软件后在菜单中选择转储/装载进行下载。(c)运行实验原理图
7、,及数据流程图如下:(9)调试以及调试过程(把写好的程序下载到唐都实验箱,打开软件复杂模型机的原理图,按步骤点击单步运行,查看运行的指令和微指令的过程)调试发现问题:a、 刚开始时点击时,机器不运行。b、 DR1与DR2相加结果不正确。c、 从R0到内存STA存数指令的存数操作有误,R0-B打开的同时把AR的LDAR也打开了,造成指向内存单元改变。也就造成输出时的数据不正确和。d、 修改上一条错误后,误把R0数据存在01单元,覆盖了原来的指令,当跳转指令跳转回到原来程序的开头时,执行第二次就发生了错误。所以针对以上问题,都一一地找到相应的错误之处和解决方法:a1、连线有错误,检查后发现错误之处
8、,并改正b2、改变s3到s0 ,改为1001(带进位加法)c3、由于疏忽造成,修改对应的LDAR开关编码d4、修改$P程序,存到没用的内存上述问题解决之后,程序便可运行出结果。(10)运行结果在上图中会执行INPUT到R0,然后从内存中取出一个数放到DR2中,R0内的数放到DR1中,DR1+DR2+cy放到R0中,再将R0内的数显示到LED上。实验二:设计一个具有带进位加法和条件跳转的模型机1、问题描述本题目设计的是一台具有输入、输出、数据传送、带进位加法、条件跳转,停机功能的模型计算机,并写出工作程序和测试数据验证所设计的指令系统。2、指令格式助记符号指令格式功 能MOVrs,rdXXXX
9、Rs RdRs-RdADCrs,rdXXXX Rs RdRs+Rd+CY - R0BZCD00 00 00 00 D当cy=1或z=1时,D-PC否则,顺序执行。INrdXXXX 01 RdSW-rdOUTrdXXXX 10 RdRd - LEDHALTXXXX 0000停机3、设计微指令(1)定义一个下地址为20H指令指令编码微地址IN0011 000023MOV0010 000022ADC0001 000021BZCD0000 000020OUT0100 000024HALT0101 000025(2)设计微指令微地址S3S2S1S0MCnWEA9A8ABCUA5-UA0000000000
10、110000000000000010100000001111011011000001002000000001100000001100000200000000110000000110000011100000001111011011000001103000000001101000110000001210000000110100100000001000400000001101100100000010105100100011001101000000001220000000110010010000000012300000000000100000000000124000000010000001000000
11、00125000000011000000000100101(3)画出微程序流程图(4) 微程序代码根据以上编写的微程序,以及微指令代码化的方法得到的微程序代码为:$M00018001$M0101ED82$M0200C060$M200180C1$M1101ED83$M0300D181$M2101A404$M0401B205$M05919A01$M22019201$M23001001$M24030201$M25018025(5)设计工作程序代码,以测试微程序$P0035$P0124$P0235$P0314$P0444$P0500$P0607$P0750(6)按照实验一建立联机文档并按照书本计算机组
12、成原理课程设计的附录2(系统连线参考图)进行连线。(7)运行与调试把程序下载但唐都实验箱进行运行和调试。通过调试发现的问题:A、 不知道R1、R2、R0三个寄存器的关系(请教老师解决)。B、 运行第一条指令后便停滞,不再执行下面的操作。C、 解决a后,从输入模块输入到R1或R2都不能实现。D、 条件跳转指令后,执行非设计程序,程序跑飞了。通过前面的几次实验,已经获得部分解决方法的经验B1、检查连线未能发现问题,估计可能是哪里接触不良,故而弃之,换实验箱,重新调试,发现可以运行的。C2、自己未能找出错误所在,请教老师,指出连线上,我们仍采用的是原来电路图,因而没有把R1、R2寄存器连到电路中。D
13、3、未设置好跳转的方向,最后使其跳转到停机指令,使其处于停机状态。(8)运行结果程序会先从SW读一个数放到R1中,然后将R1内的数转移到R0中,然后将R0内的数放到DR1,R1中的数放到DR2,然后DR1+DR2+cy放到R0中,然后将R1内的数显示到LED上,下一步就进入了停机的死循环。实验总结与心得体会本次课程设计巩固和实践了本学期所学习的理论知识。我没有单纯的为设计指令而设计指令,而是采取了以所要实现的功能为驱动,进而决定需要哪些指令,然后进行设计,这样不仅达到了设计指令的目的,而且体验到了指令在实际编程中的工作方式,加深了对机器指令的理解。这次课程设计我设计指令实现了“一个具有带进位加
14、法和立即数寻址方式的模型机”,在指令设计的过程中,遇到了很多的问题,我最初设想了三种方案,经过跟同学讨论否定了一种,后又在老师的指导下,分析了另外两种方案,最终选择了通过P3测试,在微程序内部实现流程转移。这种方法不仅使得指令系统简单,而且由于采用硬件实现,速度很快,而我原来的那两套方案都是用软件实现类似功能,速度慢,且逻辑复杂,不符合指令系统设计的目标和要求。通过这个方案选择的过程,我加深了指令系统性能要求的理解,对指令系统的工作方式有了更清晰的认识。在本次课程设计之前,我对程序计数器PC的理解并不深刻,经常会将其和微程序的地址控制逻辑弄混。通过这次课程设计,我才真正理解:PC就是一个地址指针,只能指示内存单元。在我设计的指令系统中,经常需要修改PC的值来实现某些功能。现在我已经初步体会到PC的强大功能和在指令执行过程中的重要地位。通过这一周的学习,我对计算机各部件的组成和功能有了一个新的认识,对内存、地址寄存器、通用寄存器、数据缓冲器、指令寄存器、程序计数器PC以及ALU等部件协同工作的方式和过程有了更清晰深刻的了解,加深了对计算机硬件体系的结构合理性的理解。在课程设计过程中遇到了不少困难,仅凭我自己很难解决,感谢指导老师和同学们的帮助。