null第六讲 8位CPU
与
第六讲 8位CPU分析与设计CPU组成结构
Richard CPU分析
CPU设计
指令系统设计
CPU功能模块设计CPU组成结构CPU组成结构按照冯•诺依曼计算机的划分方式,运算部件和与运算有关的寄存器属于运算器,而与程序执行有关的寄存器、微命令产生部件及时序系统等则属于控制器部分。
CPU主要由控制部件和运算部件两部分构成。
CPU的主要功能单元通过内部总线建立CPU内部的信号传送通路,实现信息交换。
控制部件控制部件控制器主要由以下几部分组成:
指令部件
时序部件
微操作序列形成部件
中断控制逻辑等辅助电路
控制部件控制部件控制器分为硬布线控制器和微程序控制器两种基本类型。
硬布线控制器
将控制部件看做产生专门固定时序控制信号的逻辑电路,以使用最少的元件和取得最高操作速度作为设计目标。
缺点:设计不规整,并且不易修改或扩展。
微程序控制器
将机器指令的操作(从取指令到执行)分解为若干更基本的微操作序列,并将有关的控制信息(微命令)以微码形式编成微指令输入控制存储器中。
优点:设计规则,方便修改及功能扩展。运算部件运算部件运算部件是计算机中对数据进行加工处理的主要场所,其最重要的功能是执行算术和逻辑运算。
运算器的性能直接决定计算机的处理能力,而运算器的设计与数据在计算机内的
示、存储方式、完成运算所用的算法及实现算法所用的逻辑电路都有密切关联。运算部件运算部件运算部件主要由输入逻辑、算术/逻辑运算单元及输出逻辑等三部分组成。
输入逻辑
对输入到算术/逻辑运算单元的操作数进行选择
算术/逻辑运算单元
运算部件的核心,完成具体的算术、逻辑运算操作。
输出逻辑
将算术/逻辑运算单元的运算结果经直传、左移、右移或者字节交换后送入相应的寄存器。
寄存器组寄存器组在复杂指令集计算机系统中一般有5种类型的寄存器:
指令寄存器
程序计数器
存储器数据缓冲寄存器(Memory Buffer Register,MBR)
存储器地址寄存器(Memory Address Register,MAR)
程序状态字寄存器(Program Status Word,PSW)CPU设计实例CPU设计实例CPU设计实例CPU设计实例CPU设计实例CPU设计实例BMOW(Big Mess of Wires)Richard CPU分析Richard CPU分析美国华盛顿大学William D. Richard 采用VHDL语言设计的16位CPU,仅有200行代码。Richard CPU分析Richard CPU分析IREG:指令寄存器(Instruction Register)
PC:程序计数器(Program Counter)
IAR:间接地址寄存器(Indirect Address Register)
ALU:算术逻辑单元 (Arithmetic Logic Unit)
ACC:累加器(Accumulator)
指令集设计分析指令集设计分析 指令编码分析指令编码分析halt与negate沒有运算参数,编码为0000H和0001H。
指令编码
IR(15..12) : 运算码
IR(11..0) : 运算元
四种指令类型
载入指令(load, dload, iload)
存储指令(dstore, istore)
分支指令(br, brZero, brZero, brPos, brNeg)
运算指令,加法运算(add)陳鍾誠 - *设计思路设计思路采用Mealy状态机设计方式
输出由当前状态state与输入信号t0-t7决定。
CPU基本状态
状态:reset, fetch, halt
指令状态:negate, mload, dload, iload, dstore, istore, brahch, brZero, brPos, brNeg, add等。*陳鍾誠 - *type state_type is (
reset_state, fetch, halt, negate, mload, dload, iload,
dstore, istore, branch, brZero, brPos, brNeg, add
);
signal state: state_type;
type tick_type is (t0, t1, t2, t3, t4, t5, t6, t7);
signal tick: tick_type;指令译码器设计指令译码器设计陳鍾誠 - * procedure decode is begin
-- Instruction decoding.
case iReg(15 downto 12) is
when x"0" =>
if iReg(11 downto 0) = x"000" then
state <= halt;
elsif iReg(11 downto 0) = x"001" then
state <= negate;
end if;
when x"1" => state <= mload;
when x"2" => state <= dload;
when x"3" => state <= iload;
when x"4" => state <= dstore;
when x"5" => state <= istore;
when x"6" => state <= branch;
when x"7" => state <= brZero;
when x"8" => state <= brPos;
when x"9" => state <= brNeg;
when x"a" => state <= add;
when others => state <= halt;
end case;
end procedure decode;指令周期分析指令周期分析istore -- M[M[0xxx]]:= ACC
①IR(11..0)([0xxx]) 地址总线
②数据总线(M[0xxx]) IAR
③清除地址线
④IAR地址总线
⑤ACC数据总线
⑥使能存储器写操作
⑦等待完成写操作
⑧清除地址总线、数据总线三态时钟节拍产生时钟节拍产生指令执行最多包含8个CPU周期,每一个CPU周期为一个节拍:t0 t1 … t7。微控制器设计微控制器设计微控制器将每条指令分解为若干条微操作。
为了提高执行效率,在时钟上升和下降边沿都有执行动作。Fetch指令分析Fetch指令分析Dload指令分析Dload指令分析仿真波形仿真波形RAM设计RAM设计为了简化设计,在RAM中存放测试程序代码。CPU设计方法CPU设计方法①CPU基本结构
②指令集设计(功能设计)
③指令编码设计
④整体设计思路
⑤确定指令周期
⑥CPU功能模块设计
⑦CPU模块联合调试测试
8位CPU结构8位CPU结构哈佛结构RAM:128Byte
ROM:4KB指令集设计指令集设计四种类型指令
传送类型指令
逻辑运算指令
算术运算指令
调用及转移指令指令集设计指令集设计四种类型指令,27条指令
传送类型指令(7条指令)
逻辑运算指令(5条指令)
算术运算指令(7条指令)
调用及跳转指令(8条指令)
指令寻址方式
立即寻址
直接寻址
寄存器直接寻址指令组成操作码操作数指令的操作种类
所用操作数数据类型操作数地址
地址附加信息
寻址方式指令组成指令编码指令编码 操作码优化编码的方法有三种:定长编码、哈夫曼编码和扩展编码。
定长编码:是指所有指令的操作码长度都是相等的。如果有n个需要编码的操作码,定长操作码的位数最少需要log2n位。
哈夫曼编码:哈夫曼方法构造哈夫曼树进行编码。
扩展编码:继承了哈夫曼思想,限制了操作码长度为有限个数。指令集设计指令集设计端口操作指令集设计指令集设计指令集设计指令集设计指令集设计指令集设计指令编码设计指令编码设计传送类指令001指令编码设计指令编码设计逻辑运算指令010指令编码设计指令编码设计算术运算指令011指令编码设计指令编码设计跳转及调用指令100CPU设计思路CPU设计思路模块化设计方法
(分析模块功能、模块间信号传递)
时钟控制信号
微程序控制方式指令周期确定指令周期确定
调用指令实现过程调用指令实现过程CALL Addr[11..0];
指令编码为100 11000,即98H
取指操作
IR使能,指令通过总线传送到IR,PC+1。LDIR1; M_PCBUS-->IR;
PC =PC + 1 ;ROM片选信号有效,ROM读使能,PC指向程序入口地址M_ROM; /ROM_ENPC-->ADDR[11..0] 功能说明控制信号微操作微控制器使能,IR送入指令,生成下一条微程序地址。M_uROM IR -->Microcontrol;
addr[7:0]->CM[47:0]122调用指令实现过程调用指令实现过程CALL Addr12;
指令编码为100 11000,即98H
取操作数操作
IR使能,指令通过总线传送到IR,PC+1。LDIR2; M_PCBUS-->IR;
PC =PC + 1 ;ROM片选信号有效,ROM读使能,PC指向程序入口地址M_ROM; /ROM_ENPC-->ADDR[11..0] 功能说明控制信号微操作微控制器使能,IR送入指令,生成下一条微程序地址。M_uROM IR -->Microcontrol;
addr[7:0]->CM[47:0]443调用指令实现过程调用指令实现过程CALL Addr12;
指令编码为100 11000,即98H
取操作数操作
IR使能,指令通过总线传送到IR,PC+1。LDIR3; M_PCBUS-->IR;
PC =PC + 1 ;ROM片选信号有效,ROM读使能,PC指向程序入口地址M_ROM; /ROM_ENPC-->ADDR[11..0] 功能说明控制信号微操作微控制器使能,IR送入指令,生成下一条微程序地址。M_uROM IR -->Microcontrol;
addr[7:0]->CM[47:0]665调用指令实现过程调用指令实现过程指令执行
7878指令周期确定指令周期确定
定长指令周期(8个CPU周期)CPU功能模块设计CPU功能模块设计2443时钟
模块15679108时钟节拍设计时钟节拍设计8个时钟节拍?
4个时钟节拍
一个节拍包含2个时钟周期
时钟上升沿或下降沿触发时钟模块仿真结果时钟模块仿真结果时钟模块仿真结果时钟模块仿真结果时钟模块仿真结果时钟模块仿真结果时钟模块仿真结果时钟模块仿真结果指令中的数据通路指令中的数据通路PC程序计数器
只读存储器ROM
指令寄存器ROM片选信号有效,ROM读使能,PC指向程序入口地址M_ROM; /ROM_ENPC-->ADDR[11..0] 功能说明控制信号微操作PC程序计数器设计PC程序计数器设计PC功能分析
加1功能
更新地址功能
PC数值送到数据总线
跳转指令:JMP,JZ,JC调用函数指令:CALL计数器、锁存器PC端口信号分析PC端口信号分析PC功能实现分析PC功能实现分析全局异步复位功能
ADDR<=“000000000000”;
数据总线高阻态;
加1功能
clk_PC上升沿有效;
M_PC高电平有效,PC+1ADDR;
clk_PC=nclk2;PC功能实现分析PC功能实现分析地址更新功能
clk_PC上升沿有效,nLD_PC低电平有效
新的PCADDR
PC数值送到数据总线
nPCH和nPCL低电平有效,注意分两次输出到总线上,先高8位后低8位。
程序存储器ROM设计程序存储器ROM设计clk_ROM=clk2 & nclk1指令存储器IR设计指令存储器IR设计IR功能分析
传送指令编码到微控制器
生成PC的新地址
生成RAM的读写地址
IR不作译码操作,
仅暂存数据。IR端口定义IR端口定义clk_IR=nclk2IR功能实现分析IR功能实现分析传送指令编码到微控制器
clk_IR 上升沿有效,LD_IR1高电平有效
dataIR。
寄存器地址操作
Data[0] RS
Data[1] RDIR功能实现分析IR功能实现分析生成PC的新地址
clk_IR 上升沿有效,LD_IR2高电平有效,data[3..0]PC[11..8];
clk_IR 上升沿有效,LD_IR3高电平有效,data[7..0]PC[7..0]。
生成RAM的读写地址
clk_IR 上升沿有效,LD_IR3高电平有效data[7..0]PC[7..0];
nARen低电平有效,PC[6..0]AR[6..0]。功能模块设计顺序功能模块设计顺序寄存器
ALU
RAM
SP
IO端口
微控制器
寄存器RN设计寄存器RN设计RN功能分析
数据锁存功能
读写功能clk_RN=nclk2D触发器RN功能实现分析RN功能实现分析读寄存器操作
clk_RN 上升沿有效,Ri_EN低电平有效,读信号RDRi高电平有效,选择RS寄存器,输出data[7..0]。
写寄存器操作
clk_RN 上升沿有效,Ri_EN低电平有效,写信号WRRi高电平有效,选择RD寄存器,data[7..0] RD 。ALU模块设计ALU模块设计ALU功能与结构
ALU设计方法
8位ALU设计
ALU功能与结构ALU功能与结构算术逻辑单元(ALU)
执行各种算术和逻辑运算
算术运算操作
加、减、乘、除
逻辑运算操作
与、或、非、异或
ALU功能与结构ALU功能与结构ALU
(算术运算、
逻辑运算)输入输出ALU功能与结构ALU功能与结构ALU输入
操作数以及来自控制单元的控制命令
ALU输出
运算结果,以及状态信息ADD R0,R1;ALU设计方法ALU设计方法设计要求确定ALU功能确定指令操作ALU设计实现124指令执行分析5ALU结构选择3确定ALU功能确定ALU功能 算术运算:加减运算
不带进位加法运算
不带进位减法运算
带进位加法运算
带进位减法运算
逻辑运算
基本逻辑运算
混合逻辑运算
确定指令操作确定指令操作ALU功能必须支持指令集中所有的算术运算和逻辑运算类型指令。
系统可扩展性。
ADDC R0,R1;确定指令操作确定指令操作算术运算指令 确定指令操作确定指令操作逻辑运算指令ALU结构选择ALU结构选择 根据运算器内部总线与构成运算器的基本部件的连接情况运算器分为3种基本结构:
单总线结构
双总线结构
三总线结构单总线结构单总线结构所有部件都接到同一总线上, 数据可以在任何两个寄存器之间,或者在任一个寄存器和ALU之间传送。
在同一时间内,只能有一个操作数放在总线上进行传输。单总线结构单总线结构需要分两次才能将两个操作数输入到ALU, 并且需要A、B两个缓冲寄存器。
优点:控制电路比较简单。
缺点:操作速度较慢。双总线结构双总线结构两个操作数同时加到ALU进行运算,只需一次操作控制, 可得到运算结果。
ALU的输出不能直接加到总线上去。
必须在ALU输出端设置缓冲寄存器。双总线结构双总线结构操作的控制要分两步完成:
(1)在ALU的两个输入端输入操作数,形成结果并送 入缓冲寄存器;
(2)暂存器将结果送入目的寄存器。三总线结构三总线结构ALU两个输入端分别连接两条总线, ALU的输出与第三条总线相连。
附加直接传送功能,当一个操作数不需要修改,可通过总线开关将数据从输入总线直接传送到输出总线。
特点是操作时间快。
缺点是结构复杂。指令执行分析指令执行分析ADD R0,R1;
两个控制信号不能同时有效。
AB指令执行分析指令执行分析ADD R0,R1;
在时钟上升沿有效,暂存器A控制信号有效,R0总线暂存器A 。
AB指令执行分析指令执行分析ADD R0,R1;
在下一个时钟上升沿有效的时候,暂存器B控制信号有效,R1总线暂存器B。
AB两个控制信号在不同的时钟节拍内
有效,实现暂存器的控制选择。指令执行分析指令执行分析ADD R0,R1;
暂存器A
控制信号暂存器B
控制信号ABALU设计实现ALU设计实现基于器件电路的ALU设计
基于硬件描述语言的ALU设计
FPGA验证基于器件的8位ALU设计基于器件的8位ALU设计8位D触发器742734位算术逻辑运算部件74181基于器件的8位ALU设计基于器件的8位ALU设计暂存器设计
算术逻辑运算部件设计暂存器电路实现暂存器电路实现清零信号CLRN接高电平
R0,R1的数据送入到暂存器A和B。
ADD R0, R1;算术逻辑运算部件设计算术逻辑运算部件设计根据设计的指令集,包括加法、减法、与或非等算术逻辑运算。
如何利用现有的多位的算术逻辑器件构建ALU中的算术逻辑运算部件。
4位算术逻辑运算器件741814位算术逻辑运算器件74181M 运算类型选择输入
S3—S0 操作选择输入
Cn 进位输入
A3—A0 数据A输入
B3—B0 数据B输入
4位算术逻辑运算器件741814位算术逻辑运算器件74181Cn+4 进位输出
FA=B A=B比较输出
G 进位产生输出
P 进位传送输出
F3—F0 运算结果输出
74181运算功能74181运算功能“加”指算术加;
符号“+”指“逻辑加”;
减法采用补码进行。算术逻辑部件电路实现算术逻辑部件电路实现CN为进位输入ADD R0, R1;加法运算实现过程加法运算实现过程ADD R0, R1;
指令编码为011 00100,即64H
取指操作
IR使能,指令通过总线传送到IR,PC+1。LDIR1; M_PCBUS-->IR;
PC =PC + 1 ;ROM片选信号有效,ROM读使能,PC指向程序入口地址M_ROM; /ROM_ENPC-->ADDR[11..0] 功能说明控制信号微操作微控制器使能,IR送入指令,生成控制信号。M_uROM IR -->Microcontrol;
addr[7:0]->CM[47:0]加法运算实现过程加法运算实现过程取操作数
暂存器电路暂存器电路锁存器选择信号加法运算实现过程加法运算实现过程执行指令
算术逻辑部件电路实现算术逻辑部件电路实现程序状态标志设计程序状态标志设计算术逻辑运算影响程序状态
AC (PSW.0) 辅助进位标志位,用于BCD码的十进制调整运算。
CY(PSW.1) 进位标志位 在执行算术指令时,指示运算是否产生进位。
ZN(PSW.2) 零标志位 用来判断最近一次的运算结果是否为零。
OV(PSW.3) 溢出标志位 在执行算术指令时,指示运算是否产生溢出。程序状态标志设计程序状态标志设计用户可以访问和控制程序状态
具有置位、清零、数据存储功能
集成置位、清零功能的D触发器程序状态电路实现程序状态电路实现移位寄存器设计移位寄存器设计逻辑左移
逻辑右移
循环逻辑左移
循环逻辑右移移位寄存器电路实现移位寄存器电路实现F[1..0]操作选择
[00] 直接传送
[01] 循环右移
[10] 循环左移
[11]逻辑左移当ALU_EN信号使能时,通过74244三态缓冲器,将结果输出到数据总线上。四选一选择电路四选一选择电路RL R0;循环左移循环左移运算实现过程循环左移运算实现过程RL R0;
指令编码为011 11000,即78H
取指操作
循环左移运算实现过程循环左移运算实现过程取操作数
循环左移运算实现过程循环左移运算实现过程执行指令
ALU模块ALU模块基于VHDL语言的ALU设计基于VHDL语言的ALU设计clk_ALU=nclk2数据存储器RAM设计数据存储器RAM设计MOV Ri,direct;
MOV direct,Ri;
RAM功能分析
数据存储功能
数据读写操作
RAM端口定义RAM端口定义高电平写操作有效,低电平读有效clk_RAM=nclk1 & W1MOV R0,[16H]RAM功能实现RAM功能实现读数据操作
clk_RAM上升沿有效,RAM_CS高电平,wr_nRD低电平,nRAM_EN低电平,[AR] data 。
写数据操作
clk_RAM上升沿有效,RAM_CS高电平,wr_nRD高电平有效,data[AR]。堆栈指针SP设计堆栈指针SP设计MOV SP,#data;
PUSH Ri;
POP Ri;
SP功能分析
数据存储功能
加1功能(出栈)
减1功能(压栈)SP端口定义SP端口定义clk_SP=nclk2SP功能实现分析SP功能实现分析数据存储功能
clk_SP上升沿有效,SP_CS高电平,dataSP。
加1功能(出栈)
clk_SP上升沿有效,SP_CS高电平,SP_UP高电平,nSP_EN低电平有效,SP+1SP,SPAR。
减1功能(压栈)
clk_SP上升沿有效,SP_CS高电平,SP_DN高电平,nSP_EN低电平有效,SP-1SP,SPAR。IO端口设计IO端口设计MOV P0,Ri;
MOV Ri,P0;
IO端口功能分析
输入锁存
输出锁存
IO端口定义IO端口定义clk_P0=nclk2IO功能实现分析IO功能实现分析输入锁存
clk_PO上升沿有效,P0_CS高电平,nP0_IEN低电平,P0_INdata。
输出锁存
clk_PO上升沿有效,P0_CS高电平,nP0_OEN低电平, dataP0_OUT。微程序控制器设计微程序控制器设计微程序控制器基本原理
微程序控制器基本结构
微程序控制器设计方法
基于VHDL的微程序控制器设计
微程序控制器基本原理微程序控制器基本原理将指令分解为基本的微命令序列,把操作控制信号编制成微指令,存放到控制存储器(CM)。
运行时,从控存中取出微指令,产生指令运行所需的操作控制信号。
微程序控制器基本结构微程序控制器基本结构 IR 译码器微命令序列微程序控制器基本结构微程序控制器基本结构控制存储器CM --存放微程序
微指令寄存器µIR --存放现行微指令
微地址形成电路--提供下一条微地址
微地址寄存器µAR--存放现在微地址
加法指令的微程序分析加法指令的微程序分析ADD R0, R1;
取指令
IR使能,指令通过总线传送到IR,PC+1。LDIR1; M_PCBUS-->IR;
PC =PC + 1 ;ROM片选信号有效,ROM读使能,PC指向程序入口地址M_ROM; /ROM_ENPC-->ADDR[11..0] 功能说明控制信号微操作微控制器使能,IR送入指令,生成控制信号。M_uROM IR -->Microcontrol;
addr[7:0]->CM[47:0]加法指令的微程序分析加法指令的微程序分析取操作数
加法指令的微程序分析加法指令的微程序分析执行指令
控制存储器CM控制存储器CM控制存储器与主存储器的区别微指令寄存器µIR微指令寄存器µIR
微命令(微操作)控制字段:提供当前操作所需的微命令。
微地址(顺序控制)字段:指明后续微地址的形成方式。提供微地址的给定部分。微地址形成电路微地址形成电路
微程序入口地址:由机器指令操作码形成。后续微地址:由微地址字段、现行微地
址等形成。null工作过程 IRCM 译码器微命令序列 取指微指令(1)取机器指令CM取指微指令µIR 取指微指令 译码器微命令序列 IR微命令字段译码器微命令主存机器指令IR 译码器微命令序列null(2)转微程序入口IR操作码微地址形成电路入口µAR微命令字段CM首条微指令 IRCM 译码器微命令序列 取指微指令 取指微指令 译码器微命令序列 IR 译码器微命令序列 IR微地址寄存器微地址寄存器(3)执行首条微指令 译码器µIRµIR译码器微命令序列微命令操作部件null IR(4)取后续微指令微地址字段
现行微地址微地址形成电路微地址寄存器微地址寄存器微地址寄存器后续微地址µARCM后续微指令µIR微地址寄存器null(5)执行后续微指令同(3) IR微地址寄存器微地址寄存器微地址寄存器微地址寄存器(6)返回微程序执行完,返回CM(存放取指微指令的固定单元)。微程序控制器设计方法微程序控制器设计方法根据指令系统,列出微操作序列
微指令编码
控制微程序流
确定指令格式
微程序写入控制存储器
功能模块设计指令的微操作分析指令的微操作分析IR使能,指令通过总线传送到IR,PC+1。LDIR1; M_PCBUS-->IR;
PC =PC + 1 ;ROM片选信号有效,ROM读使能,PC指向程序入口地址M_ROM; /ROM_ENPC-->ADDR[11..0] 功能说明控制信号微操作微控制器使能,IR送入指令,生成控制信号。M_uROM IR -->Microcontrol;
addr[7:0]->CM[47:0]微指令编码微指令编码直接控制法
字段直接编译法
字段间接编译法
假设控存容量为4K,则需12位来表示下一个微指令地址。
控制存储器的容量由实现指令系统所需要的微程序长度决定。
直接控制编码直接控制编码不译码法:微指令的控制字段中,每一位代表一个微命令。是否发出某个微命令,只要将控制字段中相应位置成“1”或“0”,就可以打开或关闭某个控制门。
优点:控制简单、 速度快、并行好 。
缺点:微指令字长度长,需要大容量存储空间。互斥与相容互斥与相容互斥的微操作:是指不能同时或不能在同一个节拍内并行执行的微操作。
相容的微操作:是指能够同时或在同一个节拍内并行执行的微操作。
把互斥的微操作组合在同一字段中,采用编码方式存取。
把相容的微操作组合在不同字段中,各段单独译码。字段直接编译法字段直接编译法把互斥的微命令编成一组,用二进制编码表示,成为微指令字的一个字段。
在微指令寄存器的输出端,为该字段增加一个译码器。
优点:缩短了微指令长度。
分段间接编译法分段间接编译法在字段直接编译法的基础上,进一步缩短微指令字长的一种编译法。
一个字段的某些微命令,要兼由另一些字段中的某些微命令来解释。
缺点:可能会削弱微指令的并行控制能力。控制微程序流控制微程序流当前正在执行的微指令,称为现行微指令,现行微指令所在的控存单元的地址称为现行微地址。
现行微指令执行完毕后,下一条要执行的微指令称为后继微指令,后继微指令所在的控存单元地址称为后继微地址。控制微程序流控制微程序流微程序流的控制:是指当前微指令执行完毕后,怎样控制产生后继微指令的微地址。
由指令操作码译码器产生
由微指令的下址字段指出以增量方式产生后继地址以增量方式产生后继地址顺序执行微程序。 后继微地址由现行微地址加上一个增量(通常为1)操作码 地址码译码器微程序计数器(µPC)控制存储器 控制字段 转移条件 后继地址+1µPC+1微程序入口以增量方式产生后继地址以增量方式产生后继地址转移的控制操作码 地址码译码器控制地址寄存器(µPC)控制存储器 控制字段 转移条件 后继地址微程序入口逻辑控制转移地址以增量方式产生后继地址以增量方式产生后继地址“计数器”方式
下址部分很短,只有两位,它选择三个输入源中的一个作为μPC的输入
①(μPC )+1→ μPC
②转移微地址
③操作码译码器的输出。非顺序执行的下址非顺序执行的下址初始地址:控制存储器的0号或1号单元
开机时,微地址形成部件复位;
开机后,执行后续指令时,由现行微程序的最后一条微指令给出。
转移地址:由微指令给出。
微中断地址:入口地址是固定的,由硬件直接赋值给微地址形成部件(微中断信号由程序的中断引起)。微指令格式微指令格式垂直型微指令
一条微指令定义并执行一种基本操作
优点:微指令短、简单、规整、便于编写微程序
缺点:微程序长,执行速度慢,工作效率低
水平型微指令
一条微指令定义并执行几种并行的基本操作
优点:微程序短、执行速度快
缺点:微指令长,编写微程序较麻烦水平微指令与垂直微指令比较水平微指令与垂直微指令比较微指令设计思路微指令设计思路采用直接控制编码,增量方式产生后继地址,水平型微指令。
所有模块控制信号控制信号汇总控制信号汇总PC模块(4条)
LD_PC:in std_logic; --装载新地址
M_PC:in std_logic; --PC加1控制信号
nPCH,nPCL::in std_logic; --PC输出总线控制信号
ROM模块(2条)
M_ROM :in std_logic; --ROM片选信号
ROM_EN :in std_logic; --ROM使能信号控制信号汇总控制信号汇总IR模块(4条)
LD_IR1,LD_IR2,LD_IR3 :in std_logic;--IR指令存储控制信号
nARen :in std_logic; --IR中RAM地址控制信号
RN模块(4条)
Ri_CS :in std_logic; --RN选择信号
Ri_EN :in std_logic; --RN寄存器使能
RDRi,WRRi :in std_logic; --RN读写信号
控制信号汇总控制信号汇总ALU模块(13条)
M_A,M_B :in std_logic; --暂存器控制信号
M_F :in std_logic; --程序状态字控制信号
nALU_EN :in std_logic; --ALU运算结果输出使能
nPSW_EN :in std_logic; --PSW输出使能
C0 :in std_logic; --进位输入
S:in std_logic_vector(4 downto 0); --运算类型和操作选择
F_in:in std_logic_vector(1 downto 0); --移位功能选择
RAM模块(3条)
RAM_CS :in std_logic; --RAM片选信号
nRAM_EN :in std_logic; --RAM输出使能信号
wr_nRD :in std_logic; -- 读写信号控制信号汇总控制信号汇总SP模块(4条)
SP_CS :in std_logic;--SP选择信号
SP_UP :in std_logic;--SP+1控制
SP_DN :in std_logic;--SP-1控制信号
nSP_EN :in std_logic;--SP输出使能
P0模块(3条)
P0_CS :in std_logic; --P0选择信号
nP0_IEN :in std_logic; --P0输入使能信号
nP0_OEN :in std_logic; --P0输出使能信号
CM模块(2条)
M_uA :IN std_logic; --微地址控制信号
CMROM_CS :IN std_logic; --控制存储器选通信号
控制信号设计控制信号设计39条控制信号(39位编码)
27条指令(5位编码)8位微地址取指公操作取指公操作指令集中每条指令的执行都先进行取指操作,独立出来作为公共微操作。
取指公操作
微程序入口地址:00H微指令码分析微指令码分析ROM片选信号有效,ROM读使能,PC指向程序入口地址M_ROM; /ROM_ENPC-->ADDR[11..0] 功能说明控制信号微操作微指令码分析微指令码分析IR使能,指令通过总线传送到IR,PC+1。LDIR1;
M_PCBUS-->IR;PC =PC + 1 ; IR -->Microcontrol;
微程序设计微程序设计MOV Ri,#data
微程序入口地址:24H微程序设计微程序设计SUBC Ri,Rj;
微程序入口地址: 74H微程序设计微程序设计SUB Ri,Rj;
微程序入口地址: 74H微程序设计微程序设计SUB Ri,Rj;
微程序入口地址: 74H微程序控制器设计微程序控制器设计控制存储器CM --存放微程序
微指令寄存器µIR --存放现行微指令
微地址形成电路--提供微地址
微地址寄存器µAR--存放现在微地址
微程序控制器设计微程序控制器设计微命令序列ROM
256*48bit IR寄存器寄存器多路选择器微程序控制器VHDL描述微程序控制器VHDL描述clk_MC=clk2 & W0