简单微处理器的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五简单微处理器的设计与实现
一、设计任务和技术指标
运用在“数字电路与逻辑设计”课程中学过的基本理论知识,设计并用可编程逻辑器件实现一个简单的八位操作数的微处理器。完成微处理器硬件系统设计和指令系统设计两方面的任务,使微处理器能够实现两个不带符号位的八位二进制数原码相乘等功能。
二、简单微处理器介绍
1.微处理器硬件系统及原理
微处理器硬件系统包括运算器、控制器、存储器以及其它必要的逻辑部件。图4-1是一个微处理器的参考原理框图,具体说明如下:
(1)程序计数器PC:存放将要执行指令的地址。
(2)指令存储器IROM,存放程序指令,每条指令的长度为W,指令的个数为L。
(3)指令寄存器IR:存放被执行指令的操作码,直接供运算控制器。
(4)控制器CON:产生一系列时序逻辑信号,控制微处理器各个部件协调一致地完成每条指令相应的操作,实现两个操作数的运算。
(5)通用寄存器堆R0-R7:用来临时存放运算过程中读出和写入的数据。
(6)缓冲寄存器RS和RD:用于存放ALU的两个输入操作数。
(7)运算器ALU和进位寄存器C:运算器ALU对两个操作数RS和RD进行加、减或逻辑运算处理,在进行加减运算时还接受控制器的进位输入信号CI,ALU的运算结果送给通用寄存
器或特殊寄存器。ALU还根据运算结果设置进位标志C和零标志Z。
(8)运算结果显示送七段数码管显示,用十六进制显示。
输入
输出
图4-1 简单微处理器框图
2.处理器指令系统及功能
处理器的基本指令字长为W位,指令的每一位从高到低用D W、D W-1、…D1、D0表示,有些微处理器的一条指令包括多个指令字长,即每条指令的长度不一样,例如Intel的80386等。本实验为了简化设计,规定所有的指令都是单指令字的指令,即所有指令的长度都是W。基本的指令系统一般包括
三类指令:数据传送指令、算术逻辑运算指令和转移指令。每条指令又有多种对操作数的寻址方式。本实验只要求掌握立即数寻址和直接寻址方式。例如下表中OP表示要进行的操作,立即数表示操作数为常数,D、S是直接寻址的地址,表示要寻址的通用寄存器的地址, ADDR表示要跳转到的地址。
OP字段的长度主要由指令种类的数量决定,但不同类型的指令的OP字段的长度也可以不同。D、S字段的长度主要由寄存器的个数决定。ADDR的长度主要由容许的程序最大长度决定。
表4-1 指令格式
立即数立即数寻址指令OP D
S 直接寻址指令OP D
转移指令OP ADDR
2.1数据传送指令
数据传送指令在两个通用寄存器或者通用寄存器和特殊寄存器直接传送数据,或者为通用寄存器装载一个常数,常用的指令可以用以下助记符表示:
MOV Dest_Reg, Source_Reg 将Source_Reg的内容传送到Dest_Reg
MOV Dest_Reg, #Constant 将常数Constant装载到Dest_Reg
2.2算术逻辑运算指令
这类指令控制ALU执行两个寄存器之间的运算操作。通常微处理器还具有一些状态寄存器,它们由ALU的运算结果设置。在表4-1的指令格式里,S和D字段指定了两个寄存器。OP字段规定了在S 和D之间执行的操作种类,并将结果保存到D寄存器。
ALU还根据运算结果设置进位标志C和零标志Z。即如果运算结果有进位,则设置进位标志C=1,如果运算结果为零,则设置零标志Z=1。
常用的指令可以用以下助记符表示:
表4-2 算术逻辑运算指令助记符
助记符功能
ADD D =S+D
ADDC D =S+D+C
INC D =D+1
DEC D = D-1
SUB D =D – S
SUBB D = D – S – 1
AND D = D and S
OR D = D or S
XOR D = D xor S
假设微处理器共有64条不同的指令,定义OP字段长6位,分配给ADD指令的OP是100111,D、S 字段都是4位,那么指令字长就是14位。对于指令ADD R3, R6,它的指令码应该是“100111-0011-0110”。2.2转移指令
转移指令分为无条件转移和条件转移指令。条件转移指令可以根据进位标志C、零标志Z的状态控制程序的流程,常用的指令助记符如下:
表4-3 转移指令助记符
助记符说明
JMP 无条件跳转到(ADDR)
JC 如果C=1就跳转到(ADDR)执行,否则继续执行
JNC 如果C=0就跳转到(ADDR)执行,否则继续执行
JZ 如果Z=1就跳转到(ADDR)执行,否则继续执行
JNZ 如果Z=0就跳转到(ADDR)执行,否则继续执行
3. NOP指令
空操作指令,不执行任何动作。
4.处理器的设计
为实现上述处理器的功能,每条指令运行需要若干个时钟周期,称为机器周期。通常周期“0”为“取指令”阶段,其余周期为“执行”阶段,例如可以安排周期“1”取S操作数,周期“2”取D操作数并运算,周期“3”将运算结果保存回D。
三、实验要求:
1.参考并修改图4-1的框图设计能够处理八位操作数的微处理器系统,画出必要的电路结构示意图、状态转移图。设计微处理器的指令系统(指令助记符、指令编码方式),至少包括数据传送指令、算术运算指令、逻辑运算指令和转移指令的每一类指令中的一条或若干条。确定每条指令执行所需的指令周期数,合理分配各个指令周期。
2.要求IROM和寄存器堆(R0…R7)用LPM实现。
3.合理安排系统应有的输入、输出开关,下面是建议使用的开关。
①“复位”开关——用于系统复位和清除PC,并从零地址开始执行程序。
③“单步/连续”开关——为了能够调试检查处理器的运行情况,用这个开关来选择连续脉冲时钟或单脉冲时钟。
④“单脉冲”按钮——单步工作时,产生时钟单脉冲。
⑤“数据输入”开关——8位开关,用于输入8位数据。
⑥“数据显示”——七段显示器,显示指令执行的结果。
⑦“PC”显示——七段显示器,显示PC的内容。
⑧“指令码显示”——八个发光管,显示指令码,方便调试。
4.参考下表编写乘法程序测试你的系统。
为验证处理器的功能,编写一个两个无符号位的八位二进制数相乘的程序,乘积为16位,将程序保存于指令存储器(IROM)中。在运行程序时注意:
A.为输入乘数或被乘数,应该首先将输入开关S7-S0置为乘数或被乘数,然后按下输入键,使程序读入数据。
B.由于输入键按下的持续时间一般大于指令周期,因此必须由硬件或软件对输入键进行处理,以免将按下一次输入键误识为按下多次输入键。
表4-7 乘法程序
PC 显示程序
地址
指令码操作说明
0 000000 SUB R3,R3 R3← 0
1 000001 P0: MOV R1,Rin1 R
1
← Rin1,输入乘数
2 000010 MOV R2,Rin2 R
2
← Rin2,检测按下输入键
3 … SUB R2, R3 R
2
← R2 - 0
4 …
JZ P0 如果R2等于0(没有按下输入键),跳转到P0执行,等待按下输入键
5 P1: MOV R4,Rin1 R
4
← Rin1,输入被乘数
6 MOV R2,Rin2 R
2
← Rin2,检测按下输入键
7 SUB R2, R3 R
2
← R2 - 0