您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 计算机组成原理课设1100380204
桂林电子科技大学综合设计说明书用纸《计算机组成原理》课程设计说明书题目:设计一台嵌入式CISC模型机学院:计算机科学与工程学院专业:网络工程姓名:学号:1100380204指导教师:陈智勇2014年01月09日桂林电子科技大学综合设计说明书用纸1目录1课程设计题目……………………………………………………………22CISC模型机数据通路框图………………………………………………23操作控制器的逻辑框图…………………………………………………34模型机的指令系统和所有指令的指令格式……………………………35所有机器指令的微程序流程图…………………………………………56汇编语言源程序………………………………67机器语言源程序…………………………………………………………78顶层电路图…………………………………………………………89机器语言源程序的功能仿真波形图及结果分析………………………910故障现象和故障分析…………………………………………………1111心得体会……………………………………………………………1212软件清单………………………………………………………………13桂林电子科技大学综合设计说明书用纸21课程设计题目●连续输入5个有符号整数(8位二进制补码表示,用十六进制数输入),求最大负数的绝对值并输出显示。说明:①5个有符号数从外部输入;②一定要使用符号标志位(比如说SF),并且要使用为负的时候转移(比如JS)或不为负的时候转移(比如JNS)指令。2CISC模型机数据通路框图3操作控制器的逻辑框图ALU状态条件寄存器ACDRIRROMARPCR0R1R3R2操作控制器和时序产生器输入设备输出设备具有时间标志的操作控制信号FSFZ嵌入式CISC模型机桂林电子科技大学综合设计说明书用纸34模型机的指令系统和所有指令的指令格式4.1指令系统76543210I/O指令IN操作码××RdI/O指令OUT操作码Rs××自减指令DEC操作码Rs××跳转指令JS操作码××××ADDR→PC跳转指令JMP操作码××××ADDR→PC比较指令CMP操作码RsRd移动指令MOV操作码××RdDATA测试指令TEST操作码××Rd移动指令MOV1操作码RsRd相乘指令IMUL操作码RsRd4.2本模型机中的指令系统中共有10条基本指令:IN、MOV、CMP、DEC、JMP、TEST、JS、MOV1、OUT、MUL,其指格式如下:助记符号指令格式功能MOVdata,Rd0011XXRddata→RdINRd0010XXRd将数据存到Rd寄存器里DECRd0101RsXX(Rd)-1→Rd桂林电子科技大学综合设计说明书用纸4CMPRs,Rd0100RsRd(Rs)-(Rd),锁存SFTESTRd0111XXRd测试Rd寄存器中的值是否为负dataJMPaddr1000XXXXaddr→PCaddrJSaddr0110XXXX若为负,则addr→PCaddrOUT1Rs1011RsXX(Rs)→LEDIMULRs,Rd1001RsRd(Rs)*(Rd)→RdMOV1Rs,Rd1010RsRdRs→Rd说明:①对Rs和Rd的规定:Rs或Rd选定的寄存器00R001R110R211R3②模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:76543210符号位尾数4.3地址转移逻辑电路SE6=1;SE5=NOT((NOTFS)ANDP2ANDT4);SE4=NOT(I7ANDP1ANDT4);SE3=NOT(I6ANDP1ANDT4);SE2=NOT(I5ANDP1ANDT4);SE1=NOT(I4ANDP1ANDT4);桂林电子科技大学综合设计说明书用纸55所有机器指令的微程序流程图设计微指令格式和微指令代码表CISC模型机系统使用的微指令采用全水平型微指令,字长为25位,其中微命令字段为19位,P字段为2位,后继微地址为6位,其格式如下:24232221201918171615141312111098765.....0LOADLDPCLDARLDIRLDRiRD_BRS_BS1S0ALU_BLDACLDDRWRCSSW_BLED_BLDFRP1P2后继微地址由微指令格式和微程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命令字段从左边到右代表的微命令信号依次为:LOAD、LDPC、LDAR、LDIR、LDRi、RD_B、RS_B、S1、S0、ALU_B、LDAC、LDDR、WR、CS、SW_B、LED_B、LDFRSW→BUSBUS→Rd0001000B09TESTJMPOUTMUL00PC→ARPC+1Rd→BUSBUS→DRPC→ARPC+1ROM→BUSBUS→PCRs→BUSBUS→ACPC+1RS→LEDROM→BUSBUS→RdAC*DR→DRRs→BUSBUS→ACRd→BUSBUS→DRRs→BUSBUS→ACRDMBUS→IRP(1)02030407081314121800MOV1IN1MOVCMP0A00000000111DEC05Rd→BUSBUS→AC00FS=115Rd→BUSBUS→DR00Rd→BUSBUS→DRAC→DR锁存FSFZ0017锁存FSPC→ARPC+106JSP(2)20ROM→BUSBUS→PC0000203012AC-1→BUSBUS→RdFS=0桂林电子科技大学综合设计说明书用纸6微地址微命令后继地址00000011100110010011110000000010000011001011001001011010000000000010100011100100110100000000000001111100110010011110000100110001001000010001101111000010100000101100000100110111100001010100011011100110010011110011000000001111000001001011111000010111001000111001100100111100001100000100110000100011011110000110010010101000110001001111000000000001011100001100100011000000000001000110001111100011110000000000100101000011011001111100000000010011100011100100101100000000001010010000010010111110000100100101011000111100001111000000000010111100001100000111110000000001100001000110010010110000000000110011000001001011111000010001100000010001100100101100000000011000010000110010011110000000006.汇编语言源程序汇编源程序:MOV80H,R3MOV05H,R2MOVFFH,R1L1:INR0DECR2TestR2JSL3TESTR0JSL2JMPL1L2:CMPR0,R3JSL1MOV1R0,R3JMPL1L3:MULR1,R3OUTR3桂林电子科技大学综合设计说明书用纸77.机器语言源程序助记符地址(十六进制)机器代码功能MOV80H,R3000011001180→R30110000000MOV05H,R20200110011005→R20300000101MOVFF,R10400110001FF→R10511111111L1:INR00600100000输入→R0DECR20701110010(R2)-1→R2TestR20801110010测试R2符号位,锁存SFJSL30901100000若为负数,则L3→PC0A00010110TESTR00B01110011测试R0的符号位,锁存SFJSL20C01100000若为负,则L2→PC0D00010000JMPL10E10000000L1→PC0F00000110L2:CMPR0,R31001000011比较R0,R3的大小,锁存SFJSL11101100000若为负,L1→PC1200000110MOV1R0,R31310100011R0→R3JMPL11410000000L1→PC1500000110L3:MULR1,R31610010111R1*R3→R3OUTR31710111100R3→LED桂林电子科技大学综合设计说明书用纸88.嵌入式CISC模型计算机的顶层电路图桂林电子科技大学综合设计说明书用纸99机器语言源程序的功能仿真波形图及结果分析过程分析:进行初始化之后,输入5个数值在源程序设计中,如果输入的数不为负数则不保留,继续输入。由图A中可以看出,在输入第一个数03时R3仍为预置数80H,在输入第二个数FD时,经Test指令测试为负数,跳转到CMP指令执行比较,结果是FD80H,故将输入的FD移至R3中,后面输入的数也进行相同的处理,经过5次循环之后在R3中的数始终是输入的五个数中最大的负数。在图B中,R2自减一到FF,符号位为1,循环结束,跳到L3执行MULR1,R3指令,求出最大负数的绝对值03为输入的第一个数值,打入R0中R2-1→R2桂林电子科技大学综合设计说明书用纸10结果分析:输入的5个数分别为:03,FD,FF,01,FE最终输出结果应为FF的绝对值01,由图B可以看到输出结果正确,综合上述分析,在仿真过程中追踪数据来源无误,本次课程设计任务完成。最后输出的结果桂林电子科技大学综合设计说明书用纸1110故障现象和故障分析刚开始设计的时候在程序流程图中有3个P测试:P1,P2,P3。在设计地址转移逻辑电路的时候未能写对,经过多次修改之后结果仍然不对。问了周围的同学没有人能解答,于是又重新从头开始做,重新画流程图,重写源程序,机器码和微指令。这些在最第二次的时候感觉很顺手了,因为有了第一次的经历之后,感觉轻松了很多,而且也理解了很多东西。一切看起来都很顺利,到仿真的时候问题就出现了:1.程序只执行到了JMP跳转指令而没有继续往下执行。为此我认真地核对了程序的机器指令及微指令,结果发现微指令和机器码都没有写错,让其他同学帮看之后也没人能看出个所以然,纠结了很久之后终于有机会问老师了,原来是我在写机器语言源程序的时候写错了,当时不知道编写的16进制的地址就是机器的物理地址,于是在编写的时候有1个地址不是连续的,但是执行程序的时候机器按顺序读取地址,一条一条地执行指令而我中间有空出来的地址,导致后面的程序都无法执行。修改之后JMP指令可以正确执行。2.在执行CMP指令时未能正确执行,,当输入的数比80H还大的负数时,在比较之后没有执行MOV1R0,R3指令而是直接跳到L1继续输入。于是我先从ALU中进行CMP算法的代码找错,找来找去发现CMP部分的代码没有错,算法也是对的。由于在执行前面的指令时都是正确执行的,就只是到比较指令CMP未能正确执行,因此不是跳转指令JS的问题,而能够跳到L1说明此事SF为1,但是理论上应为SF=0,所以我想到把SF的变化情况调到波形图中观察,结果发现在锁存了SF的减一指令DEC,测试指令Test在执行时SF变化都是符合理论值的,所以确定就是CMP的算法有问题,因为之前已经检车过微指令和机器码了,这两个都没有错,于是又重新检查ALU中的比较算法,看了好几遍发现真的没有错。后来发现错误的时候居然是在测试指令的代码中有错,本来应该是IF(S1=’0’ANDS0=’0’)但是写代码的时候不知道哪根筋不对写成了IF(S1=’0’ANDS1=’0’),相当于3只要S1=0就执行Test指令,所以在进行比较的时候没有锁存SF所以SF还是原来的值。修整代码之后SF变化正常。3.在循环了2次之后,程序执行到第三次循环
本文标题:计算机组成原理课设1100380204
链接地址:https://www.777doc.com/doc-5791965 .html