模型机实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

哈尔滨工程大学实验报告实验名称:复杂模型机设计与实现班级:学号:姓名:实验时间:成绩:指导教师:程旭辉附小晶实验室名称:计算机专业实验中心一、实验名称:复杂模型机的设计与实现二、实验目的:1.综合运用所学计算机原理知识,设计并实现较为完整的计算机。2.设计指令系统。3.编写简单程序,在所设计的复杂模型计算机上调试运行。三、实验设备:GW-48CPP系列计算机组成原理实验系统。四、实验原理:1.数据格式模型机采用定点补码表示法表示数据,字长为8位,其格式如下:76543210符号尾数其中第7位为符号位,数值表示范围是:-1≤1。2.指令格式所设计的指令分为四大类共十六条,其中包括算术逻辑指令、I/O指令、访问、转移指令和停机指令。(1)算术逻辑指令设计9条算术逻辑指令并用单字节表示,采用寄存器直接寻址方式,其格式如下:76543210OP-CODErsrd其中,OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:Rs或rd选定的寄存器000110R0R1R2(2)访问指令及转移指令访问指令有2条,即存数(STA)、取数(LDA);2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC),指令格式为:7654321000MOP-CODErdD其中,OP-CODE为操作码,rd为目的寄存器地址(用于LDA、STA指令)。D为位移量(正负均可),M为寻址模式,其定义如下:寻址模式M有效地址E说明00011011E=DE=(D)E=(RI)+DE=(PC)+D直接寻址间接寻址RI变址寻址相对寻址在本模型机中规定变址寄存器RI为寄存器R2。(3)I/O指令输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:76543210OP-CODEaddrrd其中,addr=01时选中“INPUTDEVICE”中的键盘输入设备,addr=10时,选中“OUTPUTDEVICE”中的LCD点阵液晶屏作为输出设备。(4)停机指令指令格式如下:76543210OP-CODE00003.指令系统共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入/输出指令2条,其他指令1条。各条指令的格式、汇编符号、功能如表7-1所示。助记符号指令格式功能CLRrdMOVrs,rdADCrs,rdSBCrs,rdINCrdANDrs,rdCOMrdRRCrs,rdRLCrs,rd011100rd0→rd1000rsrdrs→rd1001rsrdrs+rd+cy→rd1010rsrdrs–rd–cy→rd1011rdrd+1→rd1100rdrs∧rd→rd1101rdrd→rd1110rd1111rdLDAM,D,rdSTAM,D,rdJMPM,DBZCM,D00M00rdDE→rs00M01rdDrd→E00M10rdDE→PC00M11rdD当CY=1或Z=1时,E→PCINaddr,rd010001rdaddr→rdOUTaddr,rd010110rdrd→addrHALT01100000停机本模型机的数据通路框图如图7-1。根据机器指令系统要求,设计微程序流程图及确定微地址,如图7-2。图7-2微程序流程图五、实验内容:按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操作时的十六进制格式文件。微代码定义如表7-1所示。242322212019181716151413121110987654321S3S2S1S0MCnWEA9A8ABCuA5uA4uA3uA2uA1uA0微程序六、实验框图设计:模型机设计主要是包括:控制器、存储器、运算器、输入、输出。主要的设计是SE-5是根据FC,FZ,T4,P[4..1],SWA,SWB,I[7..2]来控制输出的SE[1..6],控制地址的跳转。当SE输出0时Q输出1,当SE输出1时,Q输出D;$M00018108$M0101ed82$M0200c050$M0300a004$M0400e0a0$M0500e006$M0600a007$M0700e0a0$M0800ed8a$M0900ed8c$M0A00a030$M0B008001$M0C00202f$M0D00a00e$M0E01b60f$M0F95ea25$M1000ed83$M1100ed85$M1200ed8d$M1300eda6$M14001001$M15030401$M16018016$M173d9a01$M18019201$M1901a22a$M1A03b22c$M1B01a432$M1C01a233$M1D01a426$M1E318237$M1F318239$M20009001$M21038401$M2205db81$M230180e4$M24018001$M2595aaa0$M2600a027$M2701bc28$M2895ea29$M2995aaa0$M2A01b42b$M2B959b41$M2C01a42d$M2D65ab6e$M2E059a01$M2F078a09$M30050a08$M31019801$M32059a01$M3301b435$M3405db81$M35b99a41$M360d9a01$M37298978$M38019801$M39198979$M3A019801$M3B070a08$M3C062009$M3D000000$M3E000000$M3F000000SE-5:(SE6-1):在波形图中实现跳转的时候,会出现如图:刚开始对此变化不理解,自习观察SE6-1时,SE[6..1]作为控制端,SE为1时Q输出D,SE为0时Q输出1,达到跳转的功能,但是还隐含一个细节是:在SE有0的时候,SE不用T2的时钟触发,地址会直接会发生跳转,所以会出现如图微地址由20直接跳到31。1和3:移位寄存器:SHEFT和控制移位器的进位:说明:移位寄存器的M位有M[20]来控制,S[1..0]由M[22..21]来控制,控制进位由SHE_C0来控制,假设上次的移位器有进位,那么上次的SHEFT_CN输出1,在控制移位器进位的器件上,当需要进位时,即:AR=1,(通过观察微指令开看AR进位时才选中)那么会有进位,此时在下一次带进位的移位时,SHE_C0=1;2.控制ALU进位的器件:说明:在此器件中,AR为控制端,上次的进位溢出位FC连到D0上M[19]与Q非的或,连接到ALU_CN,当M[19]=1时表示不带进位的运算,那么ALU_CN的结果肯定是1,在下次运算时肯定是不带进位的运算。当M[19]=0,时,表示运算器运算是带进位的运算,若上次的运算FC=1,若选中AR则,表示本次的运算时带进位的运算,则在T2周期时,Q=1,那么ALU_CN的输出是0,将结果输入到ALU的进位控制端,控制本次的进位运算。4.通过编程控制可编码寄存器的选择:.内部结构:说明:这是通过两个2-4译码器组合而成的选择器,根据decoder_b产生的控制信号,并且在编程时编写的I0——I3指令来控制,RS,RD,RI.寄存器的选择。为了方便起见,在实验过程中用一一对应的实现:R0RS;R1RD;R2RI;七、程序表设计:实验程序如下:根据框图的设计以及书中的指令系统功能表,在编码的时候考虑到的情况主要是用指令指定哪个寄存器,以及在实现LDA,STA,JMP,BZC,是选用的哪种寻址方式,为了全面的测试框图实现功能的正确性,在设计程序流程的时候所有的功能,以及所有的寻址方式都用到了,下面就是我设计的实验程序:表7-2微指令格式121110选择000001RS-B010RD-B011RI-B100299-B101ALU-B110PC-B987选择000001P(1)010P(2)011P(3)100P(4)101AR110LDPC151413选择000001LDRi010LDDR1011LDDR2100LDIR101LOAD110LDARA字段B字段C字段地址数据16进制表示助记符000100000141IN:SW-RD(27)010100000040IN:SW-RS(26)0210100001A1SBC:(RD-RS)=RD030101100159OUT:RD=LED041001000191ADC:(RD+RS)=RD050101100159OUT:RD=LED0610110001B1INC:RD+1=RD070101100159OUT:RD=LED0811000001C1AND:(RD)AND(RS)=RD090101100159OUT:RD=LED0A11010001D1COM:RD取反=RD0B0101100159OUT:RD=LED0C11100001E1RRC:将RS中的数循环左移0D0101100159OUT:RD=LED0E11110001F1RLC:将RS中的数循环右移0F0101100159OUT:RD=LED101000000181MOV:RS-RD110101100159OUT:RD=LED120100001042IN:SW=RI(存入的数:10H)130000000101LDA:RAM=RD14000111101E把1E里的数送到RD中150001010115STA:RD=RAM16000111111F将RD中的数存到1F的地址中去17001010102AJMP:180001000111在变址寻址中用到(10H+11H)19001111013DBZC:1A0000001103没有用到1B0110000060HALT:停机指令1C0000000000没有用到1D0000000000没有用到1E000011110F在执行LDA是会用到0F1F000011110F在执行STA时会存到此地址200000000000在执行LDA存到此位置2101011001OUT读出RD中的数22001010102AJMP:跳回到断点位置230000100109执行JMP时用到此数将设计好的程序表写入到内存中,然后读内存,然后执行程序。七、实验过程分析:模型机过程分析:1.首先在ROM中已经存入了微代码,这里,在实验中发现35是错误的,正确的应该是:01A426,这是通过实验验证的。在SE-5的控制下,产生SE信号,控制微代码的后六位是否发生改变,从而判定是否发生跳转,产生的微地址送到uaddr中,指示到下一条的指令。2.每一条微代码,通过decodera,decoderb,decoderc,decoder2-4产生相应的控制信号,在观察了四个器件的的内部结构后,得出decodera选中的信号是输出1,得出decoderb选中的信号是输出0,得出decoderc选中的信号是输出1,decoder2-4输出0,这样在结合74148优先权编码器后才能完整的控制总线以及相应的输出。3.reg_3是可编程寄存器,利用指令可以选用不同的寄存器,在此模型机自己设计了一个DECODERREG部件通过,RD_B,RD_B,RD_B,以及I3-I0来控制选用相应的寄存器。为了方便起见,在实验过程中用一一对应的实现:R0RS;R1RD;R2RI;4.在微程序流程图中在进行相对寻址时框图47是错误的应该是:PCBUS,BUSDR2;波形图分析:1.开始执行程序,执行指令是40,执行的是IN指令,将27存入了指定的寄存器RD。说明:为编程方便用I0,I1,I2,I3,来控制选取:2.此时指令是:40,将26存入RS:3.指令:A1:(RD-RS)=27-26=01,将结果存入RD中。4.将RD中的结果输出到led中显示:此时的指令是(OUT:59)。5.执行ADC(91)指令:(RS+RD)=(26+01)=27存入RD中:6.执行OUT指令,将RD中的结果输出:7.执行INC指令,并将加1的结果输出到led中:8.执行AND(C1)指令,(RD)AND(RS)=(28AND26)=20,然后执行OUT(59)指令,

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功