1、第 1 页第 1 页计算机组成原理课程设计说明书题 目: 设计一台嵌入式 CISC 模型计算机 院 (系): 计算机科学与工程学院 专 业: 网络工程 学生姓名: 唐波 学 号: 1100380219 指导教师: 陈智勇 第 2 页第 2 页一、课设题目:设计一台嵌入式 CISC 模型计算机(采用定长 CPU 周期、联合控制方式) ,并运行能完成一定功能的机器语言程序进行验证,实现方法可从以下 4 类中任选一个:连续输入 5 个有符号整数(8 位二进制补码表示,用十六进制数输入) ,求最小的负数的绝对值并输出显示。说明:5 个有符号数从外部输入;一定要使用符号标志位(比如说 SF) ,并且要使
2、用为负的时候转移(比如JS)或不为负的时候转移(比如 JNS)指令。二CISC 模型机系统总体设计三操作控制器的逻辑框图指令寄存器 IR操作码微地址寄存器地址译码控制存储器地址转移逻辑状态条件微命令寄存器 P 字段 操作控制字段微命令信号第 3 页第 3 页说明:在 T4 内形成微指令的微地址,并访问控制存储器,在 T2 的上边沿到来时,将读出的微指令打入微指令寄存器,即图中的微命令寄存器和微地址寄存器。四模型机的指令系统和所有指令的指令格式由此可见,本模型机中的指令系统中共有 8 条基本指令,下表 9 列出了每条指令的格式、汇编符号和指令功能。指令格式指令助记符15-12 11 10 9 8
3、 7-0功能IN1 Rd0101 Rd (Rd)+1Rd,锁存标志位MOV Rd,im 0001 Rd im 立即数RdCMP Rs,Rd 0011 Rs Rd Rs,Rd 比较,INC Rd 0010 Rd 输入设备RdJNS addr 0100 addr 若大于,则 addrPCJMP addr 0110 addr addrPCOUT1 Rs 1001 Rs (Rs)输出设备MOV1 Rs,Rd 1000 Rs Rd (Rs)RdNOT Rd 0111 Rd Data 取反第 4 页第 4 页指令格式:(1)I/O 指令(单字节)I 说明:对 Rs 和 Rd 的规定:Rs 或 Rd 选定的
4、寄存器0 0 R00 1 R11 0 R21 1 R3五所有机器指令的微程序流程图设计操作控制器单元(即微程序控制器)(1)设计微指令格式和微指令代码表CISC 模型机系统使用的微指令采用全水平型微指令,字长为 25 位,其中微命令字段为 17 位,P 字段为 2 位,后继微地址为 6 位,其格式如下:25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0LOAD LDPC LDAR LDIR LDRi RD_B RS_B S2 S1 S0 ALU_B SW_B LED_B RD_D CS_D RAM_B CS_I
5、 ADDR_B P1 P2 后继微地PCABUS(I)RD ROMIBUSIRPC+1RdYY+1Rd锁存CF,ZFRsXRdY锁存CF,ZFSWRdROMBUSBUSPCRsX-XRs锁存 CF,ZFRsLEDIR(A)PCIR(I)RdP(1)P(2)000002 03 04 05 O6 07 0900012010CF=0ZF=0CF=1ZF=1INC CMP JNS IN1 JMP NOT OUT1000000 0000 00MOV00MOV1RsXXRd0800 00 00第 5 页第 5 页址由微指令格式和微程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命令字段从左边到右
6、代表的微命令信号依次为:LOAD LDPC LDAR LDIR LDRi RD_B RS_B S2 S1 S0 ALU_B SW_B LED_B RD_D CS_D RAM_B CS_I ADDR_B微地址 微命令字段 P1 P2 后继微地址00 1 1 0 1 0 0 1 0 0 0 1 1 1 1 1 1 0 1 1 0 00001001 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 00000002 1 0 0 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 00000103 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1
7、 1 1 1 0 0 00000004 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 0 1 00001105 1 0 0 0 1 0 1 0 0 0 1 0 1 1 1 1 1 1 0 0 00010006 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 10000007 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 00000008 1 0 0 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 0 0 01001009 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1
8、 0 0 01010010 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 000000(2)设计地址转移逻辑电路地址转移逻辑电路是根据微程序流程图 3-2 中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。由于微地址寄存器中的触发器异步置“1”端低电平有效,与 A4A0 对应的异步置“1”控制信号 SE5SE1 的逻辑表达式为:(A5 的异步置“1”端 SE6 实际未使用)SE5= FSP(2)T4SE4=I7P(1)T4SE3=I6P(1)T4SE2=I5P(1)T4SE1=I4P(1)T4六嵌入式 CISC 模型计算机
9、的顶层电路图第 6 页第 6 页CROM:AA;第 7 页第 7 页七汇编代码:MOV R0,00H 功能 :将 0 赋给 R0MOV R1,FFH 将 FF 赋给 R1MOV R2,05H 将 05 赋给 R2L0:INC R0 计数加 1CMP R0,R2 R0 与 R2 比较,是否输入五个数JNS L3 是跳转 L2 输出IN1 R3 输入一个数到 R3CMP R3,R1 R3 和 R1 比较,锁存 CF,ZFJNS L2 跳转 L2 输出JMP L1 跳转 L1L1:MOV1 R1,R3 (R3)(R1)JMP L0 跳转 L0L2: NOT R1 R1 取反INC R1 R1 加 1
10、OUT1 R1 输出 R1第 8 页第 8 页八机器语言源程序地址(十六进制) 汇编语言源程序 机器语言源程序 代码00 MOV R0,00H 0001 0000 0000 0000 100001 MOV R1,FFH 0001 0001 1111 1111 11FF02 MOV R2,05H 0001 0010 0000 0101 102503 L0:INC R0 0010 0000 0000 0000 2000 04 CMP R0,R2 0011 1000 0000 0000 3800 05 JNS L3 0100 0000 0000 1100 400C 06 IN1 R3 0101 00
11、11 0000 0000 5300 07 CMP R3,R1 0011 1101 0000 0000 3D00 08 JNS L2 0100 0000 0000 1010 400A09 JMP L1 0110 0000 0000 0011 60030A L1:MOV1 R1,R3 1000 1101 0000 0000 8D000B JMP L0 0110 0000 0000 0011 60030C L2: NOT R1 0111 0001 0000 0000 71000D INC R1 0010 0001 0000 0000 21000E OUT1 R1 1001 0100 0000 000
12、0 9400九机器语言源程序的功能仿真波形图及结果分析第 9 页第 9 页1.MOV R0,00H 2.MOV R1,FFH 3.MOV R2,05H 4.CMP R2,R0 5.IN1 R3(F4 存到 R3)6MOV1 R3,R1(F4 存入 R1)7.IN1 R3(02 存到 R3) 802 是大于 F4 的正数,不跳到 L1 存 R1,直接跳回 L0。9.IN1 R3(F1 存到 R3)。10F1 是小于于 F4 的负数,跳到 L1,MOV1 R3,R1(F1 存入 R1)第 10 页第 10 页11FNOT R1, INC R1(F1 取反加 1 存入 R1) 。 12。 OUT1 R1(输出 R1,最终结果是0F)十故障现象和故障分析故障一:在进行仿真的时候,当输入一个正数存进 R3 之后,执行 CMP R3,R1 之后,没有执行JNS L0,而是错将正数也存入 R1。查看之后发现是 ALU 里“CMP”运算代码有问题。故障二:计数(R0)一直加,到 5 时不会跳转输出,检查机器指令发现 JNS L2 的地址写成了06故障三:,输出结果时,取反都变成 FB,检查很久之后发现原本应该对 AC 里的数取反的,结