微处理器架构

2025年3月17日 | 阅读11分钟

微处理器是计算机的CPU(中央处理器)。它是计算机的心脏。在这里,我们将介绍Intel 8085,因为它是一种最受欢迎的8位微处理器。

Intel 8085

Intel 8085是一款由Intel于1977年设计的8位NMOS微处理器。

它具有以下配置

  • 它是一个40引脚的集成电路封装,采用单个LSI芯片制造。
  • Intel 8085在运行过程中使用+5V直流单电源。
  • Intel 8085的时钟速度约为3 MHz;时钟周期为320ns。
  • 8位数据总线。
  • 地址总线为16位,可寻址高达64KB
  • 16位堆栈指针
  • 16位PC(程序计数器)
  • 六个8位寄存器成对排列:BC、DE、HL

Intel 8085用于手机、微波炉、洗衣机等。

下图显示了Intel 8085的框图

Microprocessor Architecture

ALU

算术逻辑单元ALU执行算术和逻辑运算

  • 加法
  • 减法
  • 逻辑与
  • 逻辑或
  • 逻辑异或
  • 求反(逻辑非)
  • 增一(加1)
  • 减一(减1)
  • 左移、左循环、右循环
  • 清除等。

时序与控制单元

时序与控制单元是CPU的一部分。

  • 它用于生成执行指令所需的时序和控制信号。
  • 它用于控制CPU和外围设备(包括内存)之间的数据流。
  • 它用于提供内存和I/O设备运行所需的总线状态、控制和时序信号。
  • 它用于控制微处理器及其连接外围设备的整个操作。

因此,我们可以看到CPU的控制单元就像计算机系统的“大脑”。


寄存器

寄存器用于微处理器临时存储和操作数据及指令。数据会保留在寄存器中,直到被发送到I/O设备或内存。Intel 8085微处理器具有以下寄存器

  • 一个8位累加器(ACC),即寄存器A
  • 六个8位通用寄存器,它们是B、C、D、E、H和L寄存器
  • 一个16位堆栈指针,SP
  • 一个16位程序计数器,PC
  • 指令寄存器
  • 临时寄存器

除了上述寄存器外,8085微处理器还包含一组五个触发器,用作标志(或状态标志)。

标志是触发器,它指示算术或逻辑指令执行后出现的某些条件。

  1. 累加器(ACC):累加器是与ALU关联的一个8位寄存器。8085中的寄存器“A”是累加器。它用于保存算术和逻辑运算的一个操作数。
    算术或逻辑运算的最终结果也存储在累加器中。
  2. 通用寄存器:8085微处理器包含六个8位通用寄存器。它们是:B、D、C、E、H和L寄存器。
    要存储16位数据,可以使用两个8位寄存器的组合。
    两个8位寄存器的组合称为寄存器对。8085中有效的寄存器对是:D-E、B-C和H-L。H-L对用作内存指针。
  3. 程序计数器(PC):它是一个16位特殊用途寄存器。它用于保存要执行的下一条指令的内存地址。在程序指令执行过程中,它会跟踪指令。
    微处理器在执行指令期间会递增下一个程序计数器的内容,以便在指令执行结束时,它指向程序中的下一条指令的地址。
  4. 堆栈指针(SP):它是一个16位特殊功能寄存器,用作内存指针。堆栈不过是RAM的一部分。在堆栈中,只保存了程序后续部分需要的寄存器内容。
    堆栈指针(SP)控制堆栈的寻址。堆栈指针包含存储在堆栈中的数据顶元素的地址。
  5. 指令寄存器:指令寄存器保存正在解码和执行的指令的操作码(操作码或指令码)。
  6. 临时寄存器:它是一个与ALU关联的8位寄存器。它在算术/逻辑运算期间保存数据。它由微处理器使用。程序员无法访问它。
  7. 标志:Intel 8085微处理器包含五个触发器作为状态标志。触发器根据算术或逻辑运算期间出现的条件进行复位或设置。

Intel 8085的五个状态标志是

  • 进位标志 (CS)
  • 奇偶标志 (P)
  • 辅助进位标志 (AC)
  • 零标志 (Z)
  • 符号标志 (S)

如果某个标志的触发器被置位,则表示1。当它被复位时,表示0。


数据和地址总线

  • Intel 8085是一款8位微处理器。其数据总线为8位宽,因此可以并行地从微处理器传输或到微处理器8位数据。
  • Intel 8085需要一个16位宽的地址总线,因为内存地址是16位的。
  • 地址的8个最高有效位通过地址总线A总线(引脚A8 ? A15)传输。
  • 地址的8个最低有效位通过数据/地址总线AD总线(引脚AD0 ? AD7)传输。

引脚配置

Microprocessor Architecture

图:Intel 8085微处理器引脚图

各种引脚的描述如下

地址总线和数据总线

  • A8 ? A15 (输出):这是地址总线,用于内存地址的最高有效位或I/O地址的8位。
  • AD0 ? AD7 (输入/输出):这些是时间复用的地址/数据总线,即它们具有双重功能。在第一个周期中,它们用于内存地址或I/O地址的最低8位。在第二和第三个时钟周期中,它们用于数据。

控制和状态信号

  • ALE (输出):ALE代表地址锁存使能信号。ALE在机器周期的第一个时钟周期内变为高电平,并使能低8位地址被锁存到内存或外部锁存器中。
  • IO/M (输出):这是一个状态信号,用于区分地址是用于内存还是I/O设备。
  • S0, S1 (输出):这是微处理器发送的状态信号,用于区分各种操作类型,如下表所示

Intel 8085的状态码

S1S0操作
00HALT
01WRITE
10READ
11FETCH
  • RD (输出):RD是读取操作的控制信号。当它变为低电平时,读取选定的I/O设备或内存。
  • WR (输出):WR是写入操作的控制信号。当它变为低电平时,将数据总线的数据写入选定的内存或I/O位置。
  • READY (输入):微处理器使用它来检测外围设备是否准备好传输数据。如果READY为高电平,则外围设备已准备好。如果为低电平,则微处理器将等待直到它变为高电平。

中断和外部触发信号

  • HOLD (输入):HOLD指示另一个设备正在请求使用地址和数据总线。
  • HLDA (输出):HLDA是HOLD确认信号,表示已收到HOLD请求。移除此请求后,HLDA变为低电平。
  • INTR (输入):INTR是中断请求信号。在中断中,它具有最低优先级。INTR可以通过软件启用或禁用。
  • INTA (输出):INTA是微处理器在收到INTR后发送的中断确认信号
  • RST 5.5, 6.5, 7.5 和 TRAP (输入):这些都是中断。当识别到任何中断时,将从内存中的固定位置执行下一条指令,如下所示
线从中获取下一条指令的位置
TRAP0024
RST 5.5002C
RST 6.50034
RST 7.5003C

RST 7.5、RST 6.5和RST 5.5是重启中断,它们会导致自动插入内部重启。

TRAP在中具有最高优先级。中断的优先级顺序如下

  • TRAP (最高优先级)
  • RST 7.5
  • RST 6.5
  • RST 5.5
  • INTR (最低优先级)。

复位信号

  • RESET IN (输入):它将程序计数器(PC)复位为0。它还会复位中断使能和HLDA触发器。在应用RESET之前,CPU一直处于复位状态。
  • RESET OUT (输出):RESET OUT指示CPU正在被复位。

时钟信号

  • X1, X2 (输入):X1和X2是连接到外部晶体振荡器的端子,该振荡器驱动微处理器的内部电路。它用于产生适合微处理器运行的时钟。
  • CLK (输出):CLK是供用户使用的时钟输出,可用于其他数字IC。其频率与处理器运行的频率相同。

串行I/O信号

  • SID (输入):SID是串行输入的数据线。执行RIM指令时,此线上的数据会加载到累加器的第七位。
  • SOD (输出):SOD是串行输出的数据线。执行SIM指令时,累加器的第七位会输出到SOD线。

电源

Vcc:+5V电源

Vss:地参考


8085指令

计算机的指令是给计算机执行特定操作的命令。Intel 8085微处理器的一些指令是:MOV、MVI、LDA、STA、ADD、SUB、RAL、INR、MVI等。


操作码和操作数

每条指令包含两个部分:操作码(Operation code)和操作数。

指令的第一部分,指定计算机要执行的任务,称为操作码。

指令的第二部分是要操作的数据,称为操作数。指令中给出的操作数(或数据)可能以各种形式存在,例如8位或16位数据,8位或16位地址,内部寄存器,或寄存器或内存位置。


指令字长

数字计算机理解用二进制代码(机器码)编写的指令。并非所有指令的二进制代码长度都相同。

根据字长,Intel 8085指令分为以下三类

  1. 单字节指令
  2. 双字节指令
  3. 三字节指令

1. 单字节指令:单字节指令的示例如下

  • MOV A, B - 将寄存器B的内容移动到寄存器A。
  • ADD B - 将寄存器B的内容加到累加器的内容上。

以上两个示例都只有一字节长。所有单字节指令都在操作码本身中包含有关操作数的信息。

2. 双字节指令:在双字节指令中,指令的第一个字节是其操作码,第二个字节是数据或地址。

示例

           MVI B, 05; 将05移入寄存器B。

           06, 05; MVI B, 05 以代码形式表示。

第一个字节06是MVI B的操作码,第二个字节05是要移入寄存器B的数据。

3. 三字节指令:指令的第一个字节是其操作码,第二个和第三个字节是16位数据或16位地址。

示例

           LXI H, 2400H; 将2400H加载到H-L对

           21, 00, 24; LXI H, 2400H 以代码形式表示

第一个字节21是LXI H指令的操作码。第二个字节00是数据(2400H)的8个低位,加载到寄存器L。第三个字节24是数据(2400H)的8个高位,加载到寄存器H。


指令周期

Microprocessor Architecture

从内存中获取指令和必要数据并执行所需的时间称为指令周期。或者执行一条指令的总时间由

      IC = FC + EC

其中,

IC = Instruction Cycle
FC = Fetch Cycle
EC = Execute Cycle

指令周期时序图

Microprocessor Architecture
  • 获取指令(取指令周期)

在取指令周期开始时,程序计数器(PC)的内容(即操作码所在内存位置的地址)被发送到内存。内存将操作码放在数据总线上,以便传输到CPU。

获取操作码的整个操作需要三个时钟周期。慢速内存可能需要更长时间。

  • 解码指令(解码周期)

从内存获取的操作码会转到数据寄存器DR,然后转到指令寄存器IR。从IR它会传递到解码器电路,该电路会解码指令。解码器电路位于微处理器内部。

  • 执行指令(执行周期)

指令解码后,开始执行。

如果操作数驻留在通用寄存器中,则立即执行。解码和执行指令所需的时间是一个时钟周期。

在某些情况下,执行周期可能涉及一个或多个读周期或写周期,或两者都涉及。

读周期:如果指令包含位于内存中的数据或操作数地址,CPU必须执行一些读操作才能获取所需数据。在读周期的情况下,从内存接收到的指令是数据或操作数地址,而不是操作码。

写周期:在写周期中,数据从CPU发送到内存或输出设备。

  • 机器周期和状态

执行访问内存或输入/输出设备的操作所需的步骤构成一个机器周期。换句话说,执行取指、读或写操作所需的步骤构成一个机器周期。

在一次时钟周期内执行的操作的一个细分称为一个状态或T状态。简而言之,系统时钟的一个时钟周期被称为一个状态。


时序图

机器周期中执行的必要步骤可以用图形表示。这种图形表示称为时序图。下面将讨论操作码取指、内存读、内存写、I/O读和I/O写的时序图。

  • 操作码取指周期时序图
Microprocessor Architecture
  • 内存读时序图
Microprocessor Architecture
  • 内存写时序图
Microprocessor Architecture
  • I/O读时序图
Microprocessor Architecture
  • I/O写时序图
Microprocessor Architecture

在上述图中,使用的基本参数是

ALE:ALE指示复用地址/数据线上是否存在有效地址。当它为高电平(1)时,它充当地址总线;当它为低电平(0)时,它充当数据总线。

RD(低电平有效):如果它为高电平(1),则微处理器不读取数据。如果信号为低电平(0),则微处理器读取数据。

WR(低电平有效):如果它为高电平(1),则微处理器不写入数据。如果信号为低电平(0),则微处理器将数据写入。

IO/M(低电平有效):该信号上的高电平(1)表示I/O操作,而低电平(0)表示内存操作。

S0, S1S0和S1指示正在进行的机器周期类型。

下表显示了不同操作下不同控制信号的状态

Microprocessor Architecture
下一主题8085指令集