8位CPU的设计
一、 设计的任务与要求
计算机的核心部件CPU通常包含运算器和控制器两大部分。组成CPU的基本部件有运算部件,寄存器组,微命令产生部件和时序系统等。这些部件通过CPU内部的总线连接起来,实现它们之间的信息交换。 1.设计目的
(1).深入理解基本模型计算机的功能、组成知识; (2).深入学习计算机各类典型指令的执行流程; (3).学习微程序控制器的设计过程和相关技术,掌握LPM_ROM的配置方法。 (4).在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机。
(5).定义五条机器指令,并编写相应的微程序,上机调试,掌握计算机整机概念。掌握微程序的设计方法,学会编写二进制微指令代码表。
(6).通过熟悉较完整的计算机的设计,全面了解并掌握微程序控制方式计算机的设计方法。
2.设计原理
在部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本实验将能在微过程控制下自动产生各部件单元控制信号,实现特定的功能。实验中,计算机数据通路的控制将由微过程控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
11
该CPU 主要由算术逻辑单元ALU,数据暂存寄存器DR1、DR2,数据寄存器R0~R2,程序计数器PC,地址寄存器AR,程序/数据存储器MEMORAY,指令寄存器IR,微控制器uC,输入单元INPUT 和输出单元OUTPUT 所组成。图中虚线框内部分包括运算器、控制器、程序存储器、数据存储器和微程序存储器等,实测时,它们都可以在单片FPGA 中 实现。虚线框外部分主要是输入/输出装置,包括键盘、数码管、LCD 显示器等,用于向CPU 输入数据,或CPU 向外输出数据,以及观察CPU 内部工作情况及运算结果。
二、单元电路设计 1、运算部件
运算部件的任务是对操作数进行加工处理。主要由三部分组成: (1) 输入逻辑。
(2) 算术/逻辑运算部件ALU。 (3) 输出逻辑。
2.寄存器组
计算机工作时,CPU 需要处理大量的控制信息和数据信息。例如对指令信息进行译码,以便产生相应控制命令对操作数进行算术或逻辑运算加工,并且根据运算结果决定后续操作等。因此,在CPU 中需要设置若干寄存器,暂时存放这些信息。在模型CPU中,寄存器组由R0、R1、R2所组成。
3.指令寄存器
指令寄存器(IR)用来存放当前正在执行的指令,它的输出包括操作码信息、地址信息等,是产生微命令的主要逻辑依据。
4.程序计数器
程序计数器(PC)也称指令指针,用来指示指令在存储器中的存放位置。当程序顺序执行时,每次从主存取出一条指令,PC 内容就增量计数,指向下一条指令的地址。增量值取决于现行指令所占的存储单元数。如果现行指令只占一个存储单元,则PC 内容加1;若现行指令占了两个存储单元,那么PC 内容就要加2。当程序需要转移时,将转移地址送入PC,使PC 指向新的指令地址。因此,当现行指令执行完,PC 中存放的总是后续指令的地址;将该地址送往主存的地址寄存器AR,便可从存储器读取下一条指令。
5.地址寄存器
CPU 访问存储器,首先要找到需要访问的存储单元,因此设置地址寄存器(AR)来存放被访单元的地址。当需要读取指令时,CPU 先将PC 的内容送入AR,再由AR将指令地址送往存储器。当需要读取或存放数据时,也要先将该数据的有效地址送入AR,再对存储器进行读写操作。
6.标志寄存器
标志寄存器F 是用来记录现行程序的运行状态和指示程序的工作方式的,标志位则用来反映当前程序的执行状态。一条指令执行后,CPU 根据执行结果设置相应特征位,作为决定程序流向的判断依据。例如,当特征位的状态与转移条件符合时,程序就进行转移;如果不符合,则顺序执行。在后面将要介绍的较复杂模型计算机设计中设置了两个标志位:进位位Fc:运算后如果产生进位,将Fc置为1;否则将Fc清为0。零位Fz:运算结果为零,将Fz置为1,否则将Fz清为0。
7.微命令产生部件
实现信息传送要靠微命令的控制,因此在CPU 中设置微命令产生部件,根据控制信息产生微命令序列,对指令功能所要求的数据传送进行控制,同时在数据传送至运算部件时控制完成运算处理。
微命令产生部件可由若干组合逻辑电路组成,也可以由专门的存储逻辑组成。产生微命令的方式可分为组合逻辑控制方式和微程序控制方式两种。在本章所介绍的8 位模型CPU 设计中,采用微程序控制方式通过微程序控制器和微指令存储器产生微命令,因此此CPU 属于复杂指令CISC CPU。
8.时序系统
计算机的工作常常是分步执行的,那么就需要有一种时间信号作为分步执行的标志,如周期、节拍等。
节拍是执行一个单步操作所需的时间,一个周期可能包含几个节拍。这样,一条指令在执行过程中,根据不同的周期、节拍信号,就能在不同的时间发出不同的微命令完成不同的微操作。
周期、节拍、脉冲等信号称为时序信号,产生时序信号的部件称为时序发生器或时序系统,它由一组触发器组成。由石英晶体振荡器输出频率稳定的脉冲信号,也称时钟脉冲,为CPU 提供时钟基准。时钟脉冲经过一系列计数分频,产生所需的节拍(时钟周期)信号。时钟脉冲与周期、节拍信号和有关控制条件相结合,可以产生所需的各种工作脉冲。
三、指令系统的结构及功能的确定
1、指令是计算机执行某种操作的命令,而指令系统是一台计算机中所有机器指令的集合。通常性能较好的计算机都设置有功能齐全、通用性强、指令丰富的指令系统,而指令功能的实现需要复杂的硬件结构来支持。因此在设计CPU 时,首先要明确机器硬件应具有哪些功能,然后根据这些功能来设置相应指令,包括确定所采用的指令格式、所选择的寻址方式和所需要的指令类型。
设模型机指令系统中包含有五条基本指令,分为算术运算指令、存取指令和 控制转移指令等三种类型。五条机器指令分别是:IN(输入)、ADD(二进制加 法)、STA(存数)、OUT(输出)、JMP(无条件转移)。IN 为单字长(8 位 二进制),其余为双字长指令,XX H 为addr对应的十六进制地址码。 (1)微命令和微操作
微命令和微操作是一一对应的。微命令是微操作的控制信号,微操作是微命令的操作过程。微命令有兼容性和互斥性之分。兼容性微命令是指那些可以同时产生,共同完成某一些微操作的微命令;而互斥性微命令是指在机器中不允许同时出现的微命令。兼容和互斥都是相对的,一个微命令可以和一些微命令兼容,和另一些微命令互斥。对于单独一个微命令,就无所谓兼容性或互斥性了。 (2)微指令、微地址
微指令是指控制存储器中的一个单元的内容,即控制字,是若干个微命令的集合,存放控制字的控制存储器的单元地址就称为微地址。一条微指令通常至少包含两大部分信息:微操作码字段,又称操作控制字段,该字段指出微指令执行的微操作;微地址码字段,又称顺序控制字段,指出下一条要执行的微指令的地址。 (3)微周期
所谓微周期是指从控存中读取出一条微指令并执行规定的相应操作所需的时间。 (4)微程序
一系列微指令的有序集合就是微程序。若干条有序的微指令构成了微程序。微程序可以控制实现一条机器指令的功能。或者说一条机器指令可以分解为特定的微指令序列。一旦机器的指令系统确定以后,每条指令所对应的微程序被设计好并且存入控存后,控存总是处于只读的工作状态,所以控存一般采用只读存储器(ROM)存放。重新设计控存内容就能增加、删除、修改机器指令系统。在FPGA 中通常采用嵌入式阵列块构成的LPM_ROM 作为控存,存放微指令。
uA5~uA0:微程序控制器的微地址输出信号,是下一条要执行的微指令的微地址。 S3、S2、Sl、S0:由微程序控制器输出的ALU 操作选择信号,以控制执行16 种算术操作或16 种逻辑操作中的某一种操作。
M:微程序控制输出的ALU 操作方式选择信号。M=0 执行算术操作;M=l执行逻辑操作。。
Cn:微程序控制器输出的进位标志信号,Cn=0 表示ALU 运算时最低位有进位;Cn=1 则表示无进位。
WE:微程序控制器输出的RAM 控制信号。当CE=0 时,如WE=0,为存储器读;如WE=1,为存储器写A9、A8:译码后产生CS0、CS1、CS2 信号,分别作为SW_B、 RAM、LED 的选通控制信号。
A 字段(15、14、13):译码后产生与总线相连接的各单元的输入选通信号。 B 字段(12、11、10):译码后产生与总线相连接的各单元的输出选通信号。 C 字段(9、8、7):译码后产生分支判断测试信号P(1)~P(4)和LDPC 信号。
2、微程序设计
一个具有五条指令IN、ADD、STA、OUT和JMP 的微程序流程图。其中方框代表基本的微操作,菱形框为分支判断框。
(1)IN指令
为了执行输入指令,CPU 要做两件事情。首先,由INPUT 输入装置的数据开关SW输入