第 2 章 微处理器与总线

简介: 第 2 章 微处理器与总线

第 2 章 微处理器与总线

1. 微处理器概述


(1)程序的执行过程


CPU 的功能:取指令、翻译、取操作数、执行和保存结果。

内存的重要性:执行操作的来源

自动运行的核心:程序控制寄存器 IP

总线的宽度:对计算机的速度有影响

(2)微处理器(CPU)的基本组成:运算器、控制器和寄存器。


(3)8066 和 8088 的区别


8086 总线宽度为 16 位,8088 总线宽度为 8 位(数据总线)。


2. 8088微处理器

(1)8086 / 8088 CPU的内部结构 (考点)


a2e862031fbb46ba83bc8293275377a3.png


  • 执行单元 EU
  • 基本构成: 算数逻辑单元(ALU)、8 个通用寄存器、1 个标志寄存器和 EU 控制电路。
  • 功能:翻译、执行并临时保存结果。


总线接口单元 BIU

  • 基本构成: 20 位的地址加法器、5 个专用寄存器、1 个指令队列和总线接口控制电路。
  • 功能:取指令、取操作数并保存结果。


流水线的功能 (考点):


【区别】8086 是 6 个字节,8088 是 4 个字节。


1、两个以上字节空,自动启动取指令(取指令为 FIFO 即先进先出结构)。


2、EU 不和外界打交道,只在指令队列取指令。


3、预取指令队列(指令队列不是固定的),有跳转指令时会更新。


(2)8086 CPU 的寄存器结构


8086 CPU 内部有 14 个 16 位寄存器:通用寄存器(8)、段寄存器(4)和控制寄存器(2)。

通用寄存器

AX BX CX DX
累加器 基址寄存器 计数器 数据寄存器


SI DI SP BP
源寄存器 目的寄存器 堆栈指针 基址指针


专用寄存器

CS DS SS ES IP FR
代码段 数据段 堆栈段 扩展段 指令指针 标志位寄存器


  • 标志寄存器 FR: 16 位只用其中 9 位,包括 6 个状态标志和 3 个控制标志。


f7f212de1a6549d1bbcc4bb8d245358f.png


状态标志位: CF 、PF 、AF 、ZF 、SF 、OF


OF: 溢出标志位。当算数运算超出带符号数的范围,即溢出时 OF = 1 ,否则 OF = 0 。

SF: 符号标志位。当运算结果的最高位为 1 时即负数。

ZF: 零标志位。当运算结果为零时 ZF = 1 ,否则 ZF = 0 。

AF: 辅助进位标志。在加(减)法操作中,如果 D3 向 D4 有进位(借位),则 AF = 1,否则 AF = 0。

PF: 奇偶标志位。当运算结果的低 8 位中 1 的个数为偶数时 PF = 1 ,为奇数时 PF = 0 。

CF: 进位标志。当进行加(减)运算时,若最高位向前有进(错)位,则 CF = 1 ,否则 CF = 0 。

控制标志位: TF 、IF 、DF


标志位记忆方法(一般不用 TF):

奥(OF)迪(DF / IF)死(SF)砸(ZF)P(PF)C(CF)


44ed6326703a4ccbb0f39f2a4e572738.png


一般考试会考 O S Z A P C 的状态:

eg.


29fefcdb5152435c89e5f832930d5b24.png


上面操作完后的标志位状态为:


OF(1): 带符号数的最高位由 0 变为 1 即从正变成负,所以溢出了。

SF(1): 运算结果最高位为 1 即负数。

ZA(0): 结果不为零。

AF(1): D3 到 D4 有进位情况。

PF(1): 低 8 位中 1 的个数为 4 即偶数。

CF(0): 最高位没有进位,如果是带符号数就有进位了。

(3)改标志位


CLI/STI: 改 IF


CLD/STD: 改 DF


CLC/STC: 改 CF


3. 8088 系统的存储器

(1)编码数


位数 8 16 20
码数 256 (28) 65536 (216) 1024K (210 * 210 = 1M)



(2)储存器的配置


8086 / 8088 特点:1 M 内存 ,地址范围为 00000H - FFFFFH 。


默认为高地址高字节,即小端模式。


大端法: 最高有效字节放在低地址。


小端法: 最低有效字节放在低地址。


字节顺序依赖于机器的类型,小端法一般用的较多,下列是一个十六进制值为 0x1234567 的例子:

9dde9f8e823f4331a87ad550c80a4060.png


地址总线 16 位,内存空间为 64 KB ;地址总线 20 位,内存空间为 220 个单元,即 1 MB 。

地址段的首地址,最后一位为 0H 。


段首址: 段的首地址,最后一位为 0H 。


段基址: 段首址的最高 4 位 H 。


段首址和段基址是等价的。


逻辑地址 = 段基址 : 偏移地址


物理地址(考点) = 段基址 × 16 + 段内偏移 = 段首址 + 偏移地址


eg. 逻辑地址 3A00H : 12FBH 对应的物理地址是 3BFBH 。


最小段为 16 B(例如 XXX10H 和 XXX20H 之间就相差了 16 B),**最大段 **为 64 KB ,并且段是可以重叠的,故逻辑地址不唯一。


注意:


(1)64 KB = 26 KB = 216 B(16 位有 16 个二进制数表示,其中最小为0000 0000 0000 0000,最大为1111 1111 1111 1111)


(2)1 KB = 1024 字节也就是 Bytes(B) ,1 Byte = 8 bit


(3)64 KB = 65536 比特


(4)段寄存器的使用


代码段(程序段)—— CS : IP

数据段 —— DS : BX ,DI ,SI

堆栈段 —— SS : SP ,BP

eg. 若 CS = 8000H,则当前代码段可寻址的储存空间范围是 80000H ~ 8FFFFH 。


因为段基址 8000H 转换成段首址要乘以 16 即十六进制左移 1 位,得到 80000H 。又因为最大段为 64 KB 即 216 B ,所以最大填满段首址的低 4 位即 8FFFFH 。


8086/8088 的启动单元:0FFFF0H


(5)堆栈 - 特殊储存区


SP 初值指向栈底,向上生成。


eg. 若已知 SS = 1000H ,SP = 2000H ,则堆栈的段首地址为 10000H ,栈顶地址(初值在栈底)为 12000H 。将数据 1234H 压入堆栈后,1234H 所在的内存单元的地址为 11FFEH 。


专门指令操作:


PUSH: SP - 2


POP: SP + 2


SP 始终指向栈顶

对字操作: FIFO结构(先进后出)


0ca907b8fbe94a0b8b9e1a44e80a54e1.png



4. 管脚和总线

(1)8088 总线


总线要包含片选信号,以及三态门装置。


储存单元是用地址访问的。


总线的分类:


地址总线: 20 条 —— 单向

数据总线: 16 条(8086)、8 条(8088)—— 双向

控制总线: #RD ,#WR ,IO/#M 至少 3 条(有些地方会写成等价的 4 条,#MEMR ,#MEMW ,#IOR ,#IOW)

8086 和 8088 的区别总结 (考点):


(1)数据总线 8086 是 16 条,8088 是 8 条。


(2)流水线 8086 是 6 个字节,8088 是 4 个字节。


(3)8086 的 IO 高低电平相反,IO 是低电平,高电平是 M 即 #IO/M 。而 8088 是 IO/#M 。


(2)8088 的管脚功能


8088 的管脚解复用技术:


第一周期: ALE 下降沿所存地址信号形成稳定的地址总线。

第二周期: #DEN,DT/#R 控制形成稳定的数据总线。

主要控制状态线:


IO/#M: 输出。指出当前访问存储器还是访问I/O。注意8086是M/#IO。

#WR: 输出。写命令信号。

#RD: 输出。读命令信号。

ALE: 输出。高电平表示AB地址有效;此信号在T1状态有效。

#DEN: 输出。低电平时表示DB上的数据有效。

DT/#R: 输出。数据传送方向。

READY : 输入。准备就绪信号。由外部输入;用于解决CPU与慢速存储器或I/O电路的同步问题。

(3)最小系统


在最小系统中,还需加入:


8284(时钟发生器): 1 片

8282(地址的锁存器): 3 片

8286(数据的缓冲器即收发器): 1 片(8088)/ 2 片(8086)


5. 8086/8088 CPU 工作时序



(1)基本概念


时钟周期: 若 8086/8088 的主频为 5 MHZ ,一个时钟周期为200 ns 。

总线周期(机器周期): CPU 完成对储存器或 I/O 一次访问所需的时间。

指令周期: 执行一条指令需要的时间。

空闲周期(Ti): 微处理器 BIU 空闲时,总线上插入的时间。

等待周期(Tw): 总线周期内,储存器或 I/O 没有准备好数据时插入的时间。

(2)基本时序


典型的总线周期:一个总线周期一般由四个 T 组成。T1 :输出地址,T2 及 T3:传送数据。


指令周期大概在两个微秒:10 * 200 ns = 2 us


40b9e36fdfef476a9257252ff46aa07a.png



存储器读时序


第 1 周期: ALE 下降沿锁存地址。

第 2 周期: #DEN ,#RD 有效。

第 3 周期: 检测 ready 信号是否有效,若发现其为低,则在T3周期结束后,插入一个 Tw(等待周期) 状态。以后在每个 Tw 周期的前沿采样 READY 线,只有在发现它为高电平时,才在这个 Tw 结束后进入T4周期。

第 4 周期: #DEN ,#RD 无效。


存储器写时序

其写时序与读时序的区别是,写时序没有 ready 即没有等待周期,数据发出快。

目录
相关文章
|
6月前
|
存储 编译器 开发工具
EPROM 作为存储器的 8 位单片机
一、基本概述 TX-P01I83 是以 EPROM 作为存储器的 8 位单片机,专为多 IO 产品的应用而设计,例如遥控器、风扇/灯光控制或是 玩具周边等等。采用 CMOS 制程并同时提供客户低成本、高性能等显着优势。TX-P01I83 核心建立在 RISC 精简指 令集架构可以很容易地做编程和控制,共有 55 条指令。除了少数指令需要两个指令时钟,大多数指令都是一个指令时钟能完成,可以让用户轻松地以程序控制完成不同的应用。因此非常适合各种中低记忆容量但又复杂的应用。 在 I/O 的资源方面,TX-P01I83 有 6 根弹性的双向 I/O 脚,每个 I/O 脚都有单独的寄存器控制为输入或
118 0
|
4月前
|
存储 固态存储 前端开发
计算机中主板与总线
【7月更文挑战第28天】
65 1
|
6月前
|
存储 数据处理 芯片
单片机与存储器
单片机与存储器
55 0
总线系统(下)
总线系统(下)
85 0
|
芯片
深入理解AMBA总线(一)APB总线入门(上)
深入理解AMBA总线(一)APB总线入门
1088 0
|
存储 芯片 异构计算
LocalBus总线介绍及FPGA总线编程
LocalBus总线介绍及FPGA总线编程
1168 0
LocalBus总线介绍及FPGA总线编程
深入理解AMBA总线(一)APB总线入门(下)
深入理解AMBA总线(一)APB总线入门(下)
923 0
|
Linux
总线系统(上)
总线系统
89 0