抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

[TOC]

一、概念

微处理器微型计算机系统的核心——中央处理器(CPU)。它是一块超大规模集成电路芯片,集成了运算器、控制器、寄存器等核心逻辑部件

微型计算机以微处理器为核心,配以必要的支持电路(如芯片组)、存储器(RAM、ROM)、输入/输出接口,组装在一块或几块印刷电路板(PCB)上,形成的功能基本完整的计算机硬件主体。

微型计算机系统微型计算机配备上必要的辅助存储设备、输入/输出设备(外设)、系统软件(如操作系统)和应用软件后,形成的完整、可投入实际使用的计算机系统。


指令译码器:指令译码器是CPU控制单元的核心部件,负责将从内存中取出的机器指令(二进制编码)翻译成CPU内部可识别的微操作(Micro-Ops),并生成控制信号,告诉其他功能单元(如ALU、寄存器等)如何执行该指令。

指令队列:指令队列是一个缓冲结构,用于暂存从内存或缓存中预取的指令,为后续的译码和执行阶段提供连续的指令流,避免因指令获取延迟导致的流水线停顿。

二、8086简述

8086微处理器主要由运算器(算术逻辑运算单元ALU、地址加法器)、控制器(总线控制器)、内部寄存器组(14个内部寄存器)三部分组成。

CPU从功能上分为执行单元EU总线接口单元BIU,其中执行单元EU负责指令的执行;而总线接口单元BIU负责与存储器及I/O接口之间的数据传送操作。具体来看,完成取指令送指令队列,配合执行部件的动作,从内存单元或I/O端口取操作数,或者将操作结果送内存单元或者I/O端口。

EU和BIU的工作逻辑关系如下所示:

① 每当8086的指令队列中有两个空字节,或BIU就会自动把指令取到指令队列中。其取指的顺序是按指令在程序中出现的前后顺序;

② 每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者I/O端口的操作;如果此时BIU正好处于空闲状态,会立即响应EU的总线请求。如BIU正将某个指令字节取到指令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应EU发出的访问总线的请求。

③ 当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。

④在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码。

三、引脚

(1)8086引脚:

8086引脚

引脚名称 类型 功能描述
AD15–AD0 双向三态 地址/数据分时复用总线。T1状态输出低16位地址(A15–A0),其他时间传输数据(D15–D0)。
A19/S6–A16/S3 输出三态 地址/状态分时复用。T1状态输出高4位地址(A19–A16),其他时间输出状态:S6=0(CPU占用总线),S5=IF标志位状态,S4–S3表示当前段寄存器(00=ES,01=SS,10=CS,11=DS)。
BHE*/S7 输出三态 高8位数据总线允许/状态复用。T1状态低电平有效时允许高8位数据(D15–D8)传输;其他时间输出未定义的S7状态。与A0组合控制数据总线宽度(如奇/偶地址访问)。
RD* 输出三态 读信号,低电平有效时表示CPU正在从存储器或I/O端口读取数据。
WR* 输出三态 写信号,低电平有效时表示CPU正在向存储器或I/O端口写入数据。
M/IO* 输出三态 存储器/I/O选择信号。高电平选择存储器,低电平选择I/O端口。
READY 输入 高电平有效时表示外设或存储器已准备好数据传输;若为低电平,CPU插入等待状态(Tw)直到READY恢复高电平。
INTR 输入 可屏蔽中断请求,高电平有效。若IF=1,CPU在当前指令结束后响应中断。
INTA* 输出 中断响应信号,低电平有效。CPU响应INTR后连续发出两个INTA*脉冲,通知外设提交中断向量。
NMI 输入 非屏蔽中断请求,上升沿触发。不受IF标志影响,优先级高于INTR。
RESET 输入 复位信号,高电平有效至少4个时钟周期。复位后CPU初始化寄存器(CS=FFFFH,其他清零),并从FFFF0H开始执行程序。
CLK 输入 时钟信号,占空比1:3(高电平占1/3),频率5–8MHz。
MN/MX* 输入 工作模式选择。高电平为最小模式(单处理器),低电平为最大模式(多处理器)。
ALE 输出 地址锁存允许信号,高电平有效。T1期间锁存复用总线上的地址信息。
DEN* 输出三态 数据允许信号,低电平有效时启用外部数据收发器。
DT/R* 输出三态 数据方向控制信号。高电平表示CPU发送数据(写操作),低电平表示接收数据(读操作)。
HOLD/HLDA 输入/输出 最小模式下:HOLD为总线请求输入,HLDA为响应输出。最大模式下被RQ/GT0–1取代。
TEST* 输入 测试信号,低电平有效。与WAIT指令配合实现CPU与外设同步。
VCC/GND 电源/地 +5V电源输入(引脚40)和接地引脚(引脚1、20)。

最大模式专用引脚

引脚名称 功能描述
S2–S0* 总线周期状态信号,输出给8288总线控制器生成控制信号(如存储器/I/O读写)。
RQ/GT0–1 总线请求/允许双向信号,优先级高于HOLD/HLDA。
LOCK* 总线封锁信号,低电平有效时禁止其他主设备占用总线。
QS1–QS0 指令队列状态信号,外部可跟踪CPU内部指令队列状态(如00=无操作,10=队列空)。

(2)8088引脚:

8088引脚

引脚名称 类型 功能描述
AD7–AD0 双向三态 地址/数据分时复用总线。T1状态输出低8位地址(A7–A0),其他时间传输数据(D7–D0)。
A15–A8 输出三态 高8位地址线(非复用),直接输出地址A15–A8。
A19/S6–A16/S3 输出三态 地址/状态分时复用。T1状态输出高4位地址(A19–A16),其他时间输出状态:S6=0(CPU占用总线),S5=IF标志位状态,S4–S3表示当前段寄存器(00=ES,01=SS,10=CS,11=DS)。
BHE*/S7 输出三态 高字节允许/状态复用(8088中此引脚功能与8086不同)。8088中通常无效(因数据总线仅8位),但部分系统可能复用为状态位S7。
RD* 输出三态 读信号,低电平有效时表示CPU正在从存储器或I/O端口读取数据。
WR* 输出三态 写信号,低电平有效时表示CPU正在向存储器或I/O端口写入数据。
M/IO* 输出三态 存储器/I/O选择信号。高电平选择存储器,低电平选择I/O端口。
READY 输入 准备就绪信号,高电平有效时表示外设或存储器已准备好数据传输;若为低电平,CPU插入等待状态(Tw)。
INTR 输入 可屏蔽中断请求,高电平有效。若IF=1,CPU在当前指令结束后响应中断。
INTA* 输出 中断响应信号,低电平有效。CPU响应INTR后连续发出两个INTA*脉冲,通知外设提交中断向量。
NMI 输入 非屏蔽中断请求,上升沿触发。不受IF标志影响,优先级高于INTR。
RESET 输入 复位信号,高电平有效至少4个时钟周期。复位后CPU初始化寄存器(CS=FFFFH,其他清零),并从FFFF0H开始执行程序。
CLK 输入 时钟信号,占空比1:3(高电平占1/3),频率4.77MHz(IBM PC标准)。
MN/MX* 输入 工作模式选择。高电平为最小模式(单处理器),低电平为最大模式(多处理器)。
ALE 输出 地址锁存允许信号,高电平有效。T1期间锁存复用总线上的地址信息。
DEN* 输出三态 数据允许信号,低电平有效时启用外部数据收发器。
DT/R* 输出三态 数据方向控制信号。高电平表示CPU发送数据(写操作),低电平表示接收数据(读操作)。
HOLD/HLDA 输入/输出 最小模式下:HOLD为总线请求输入,HLDA为响应输出。最大模式下被RQ/GT0–1取代
TEST* 输入 测试信号,低电平有效。与WAIT指令配合实现CPU与外设同步。
SS0* 输出 状态信号(8088特有),在最大模式下与IO/M、DT/R组合指示总线周期类型(如中断响应、取指等)。
VCC/GND 电源/地 +5V电源输入(引脚40)和接地引脚(引脚1、20)。

最大模式专用引脚

8088最大组态下的引脚

引脚名称 功能描述
S2–S0* 总线周期状态信号,输出给8288总线控制器生成控制信号(如存储器/I/O读写)。
组合含义:
• 000:中断响应
• 001:读I/O
• 010:写I/O
• 011:暂停
• 100:取值令
• 101:读存储器
• 110:写存储器
•111:无
RQ/GT0–1 总线请求/允许双向信号,优先级高于HOLD/HLDA。
LOCK* 总线封锁信号,低电平有效时禁止其他主设备占用总线(如原子操作期间)。
QS1–QS0 指令队列状态信号,外部可跟踪CPU内部指令队列状态:
• 00:无操作
• 01:取指令第一字节
• 10:队列空
• 11:取指令后续字节。

四、8088最小/最大组态模式

8088微处理器通过MN/MX*引脚(33号引脚)的电平选择工作模式,分为最小组态(最小模式)最大组态(最大模式)

(1)最小组态(最小模式)

  • 配置方式:MN/MX*引脚接+5V高电平,适用于单处理器系统
  • 特点:
    • 总线控制:8088直接生成所有系统总线信号(如RD、WR、IO/M*等),无需外部总线控制器
    • 引脚功能:
      • HOLD/HLDA:用于总线请求与响应。HOLD为输入信号,其他设备请求总线控制权;HLDA为输出信号,表示CPU已释放总线
      • WR*、RD*:直接控制存储器和I/O端口的读写操作
    • 典型电路:
      • 地址锁存:使用3片74LS373锁存器分离复用地址线(AD7–AD0、A19/S6–A16/S3)
      • 数据缓冲:1片74LS245收发器驱动8位数据总线

(2)最大组态(最大模式)

  • 配置方式:MN/MX*引脚接地(低电平),适用于多处理器系统(如主处理器+协处理器8087/8089)

  • 特点:

    • 总线控制:由8288总线控制器译码8088的状态信号(S2–S0*),生成系统控制信号(如MEMRMEMW、IOR、IOW等),增强驱动能力

    • 引脚功能:

      • S2–S0*:输出总线周期状态编码,8288据此生成读写控制信号
      • RQ/GT0–1:取代HOLD/HLDA,支持优先级更高的总线请求/响应机制
      • LOCK*:总线封锁信号,用于多处理器同步(如原子操作)
    • 典型电路:

      • 地址与数据分离:仍需锁存器和收发器,但控制信号由8288管理
      • 协处理器支持:可连接8087(浮点运算)或8089(I/O处理)
    • 应用场景:复杂系统如IBM PC/XT,需多处理器协同或高性能总线控制


(3) 区别总结

特性 最小组态 最大组态
MN/MX*电平 +5V 接地
总线控制 8088直接生成控制信号 8288控制器译码S2–S0*生成信号
总线请求 HOLD/HLDA RQ/GT0–1(优先级更高)
多处理器支持 不支持 支持(如8087/8089)
典型应用 简单单处理器系统 IBM PC/XT等复杂系统

五、8086总线和总线时序

(1)概念

寻址空间 = 2^(地址总线位数)

总线周期数量 = 数据块大小 / 数据总线宽度

总线:总线是计算机系统中各部件(CPU、内存、I/O设备等)之间传输数据、地址和控制信号的公共通道,由一组导线(或光纤、无线链路等)组成

功能可分为三类:

  1. 数据总线(Data Bus)
    • 双向传输实际数据(如CPU从内存读取的指令、硬盘传输的文件数据)。
    • 宽度(位数)决定一次传输的数据量(如32位总线一次传4字节)。
  2. 地址总线(Address Bus)
    • 单向传输(CPU→外设),指定访问的内存或I/O设备位置。
    • 宽度决定寻址空间(如32位地址总线支持4GB内存)。
  3. 控制总线(Control Bus)
    • 传输协调操作的信号,如:
      • 读写使能(Read/Write)
      • 时钟同步(CLK)
      • 中断请求(IRQ)
      • 总线仲裁(用于多主设备竞争总线使用权)。

层级可分为:

  • 系统总线(CPU与北桥/内存之间的高速总线,如Intel的FSB)。
  • I/O总线(连接外设的扩展总线,如PCIe、SATA)。

连接对象可分为:

  • 芯片总线:用于 芯片内部或SoC组件间 的超高速通信(如CPU ↔ 缓存)。
  • 内总线:用于 主板内部 的高速通信(如CPU ↔ 内存、PCIe设备)。
  • 外总线:用于 连接外部设备,速率较低但通用性强(如USB、SATA)。

按照数据传输方式分类:

  • 并行总线:并行总线使用 多条数据线同时传输多个数据位,每个时钟周期可以传输多位数据(如8位、16位、32位等)
  • 串行总线:串行总线使用 单条或少数几条数据线逐位传输数据,通过提高频率和编码技术实现高带宽。

总线周期:总线周期是CPU通过总线完成一次基本操作(如读/写一个数据单元)所需的时间段,通常由多个时钟周期组成

(2)总线时序

8086/8088系统总线详解(时序解析+总线相关知识)_8086总线-CSDN博客

【4.2 8086总线时序】 https://www.bilibili.com/video/BV17f4y1v7Sa/?share_source=copy_web&vd_source=367168fbf1718c5ddb4ca1f97788c1b0

最小模式下的系统总线

最大模式下的系统总线

总线周期:CPU完成一次访存/接口操作所需要的时间,一个总线周期至少包含4个时钟周期

六、8253计数器

8253 是一种可编程的定时器/计数器芯片,具有三个独立的 16 位计数器通道(Channel 0 ~ Channel 2),每个通道都可以根据不同的工作方式(模式)进行编程控制,用作定时器、计数器或产生波形信号。

(1)基本结构

8253 芯片包含以下主要组成部分:

组成部分 功能说明
3个独立的16位计数器 每个计数器可以单独编程,用于定时或计数功能
控制寄存器 决定每个计数器的工作方式和读写操作
数据总线缓冲器 与 CPU 的数据总线连接,实现数据交换
读/写逻辑电路 控制对寄存器的访问

8253引脚

8253控制字

(2)6种工作方式

8253工作方式0

8253工作方式1

8253工作方式2

8253工作方式3

8253工作方式4

8253工作方式5


需要两个写脉冲 —— 两次写操作

  • 第 1 个写脉冲写入控制字

  • 第 2 个写脉冲写入计数初值

不同的工作方式,有不同的计数启动方法
可根据对输出波形的要求,选择不同的工作方式
能输出连续波形的只有方式 2 和方式 3

(3)初始化程序

1
2
3
4
5
6
7
8
9
;写入控制字
MOV DX, {控制寄存器地址}
MOV AL, {控制字}
OUT DX, AL
;写入计数器地址(比如计数器0地址)
MOV DX, {计数器地址}
;写入初始值
MOV AX, {初始值}
OUT DX, AL ;OUT只能用低八位

七、8255芯片

8255引脚

D7~D0:数据信号线

CS:片选信号输入引脚,低电平有效

RD:读信号输入引脚,低电平有效

WR:写信号输入引脚,低电平有效

RESET:复位信号输入引脚,高电平有效。用于将8255A控制字寄存器清“0”,并将A、B、C口置成输入状态

A1、A0:端口选择信号输入引脚

8255控制字

八、8259A芯片

【微机原理l 四页思维导图+45分钟解决难点两大章8255A,8259A 能闭眼回忆出初始化方式控制字吗?】 https://www.bilibili.com/video/BV1ps4y1V7xp/?share_source=copy_web&vd_source=367168fbf1718c5ddb4ca1f97788c1b0

(1)芯片框图

8259A芯片框图

(2)引脚功能

8259引脚功能

(3)8259A级联

8259A

其中从芯片的INT引脚连接到主芯片的IR2引脚上,即8259A从芯片发出的中断信号将作为8259A主芯片的IRQ2输入信号

(4)8259A内部结构和寄存器

8259A内部包含多个功能模块和寄存器,共同协作完成中断管理任务:

  1. **中断请求寄存器(IRR)**:8位寄存器,用于保存来自IR0-IR7的中断请求状态。当某IR线出现有效中断请求信号时,IRR对应位被置1。

  2. **中断服务寄存器(ISR)**:8位寄存器,记录当前正在被服务的中断。当某中断被CPU响应后,其对应位在ISR中被置1,直到中断处理结束。

  3. **中断屏蔽寄存器(IMR)**:8位寄存器,用于屏蔽特定的中断请求。某位置1表示屏蔽对应中断,禁止其被CPU处理。

  4. **优先权判别器(PR)**:当多个中断同时发生时,PR会比较它们的优先级,决定哪个中断应优先被处理。PR还会将新中断与当前正在处理的中断(ISR中记录)比较,只有更高优先级的中断才能打断当前处理。

  5. 数据总线缓冲器:作为8259A与CPU数据总线之间的接口,用于传输命令字、状态字和中断类型码。

  6. 读写控制逻辑:控制数据总线缓冲器的数据传输方向,选择内部寄存器。当CPU发读信号时,8259A状态信息被放到数据总线;发写信号时,CPU的命令字被写入指定寄存器。

  7. 级联缓冲/比较器:用于多片8259A级联时,主片通过CAS0-CAS2发送级联地址,选中从片。

评论