Skip to content

Latest commit

 

History

History
454 lines (322 loc) · 10.4 KB

File metadata and controls

454 lines (322 loc) · 10.4 KB

方式和控制字

方式

8086

总线

  • 芯片总线
  • 内总线
  • 外总线

数据传输四个阶段

  • 总线请求和仲裁
  • 寻址
  • 数据传送
  • 结束

存储器

  • RAM
    • SRAM
    • DRAM
    • NVRAM
  • ROM
    • MROM
    • PROM
    • EPROM
    • EEPROM

与CPU连接

  • 位扩充:扩充数据位
  • 字扩充:扩充容量 用部分地址线选芯片

译码

  • 全译码:片选+片内
  • 部分译码:部分高位地址片选
  • 线选译码:一根线表示01

IO

编码

  • 单独编码
  • 统一编码

传送方式

  • 程序控制
    • 无条件
    • 查询 test al,01h;检查端口
    • 中断
  • DMA
  • I/O处理机

工作方式

  • 中断请求
  • 中断响应
  • 关中断
  • 断点保护
  • 中断识别
  • 现场保护
  • 中断服务
  • 恢复现场
  • 开中断
  • 中断返回

8259

类型

  • 内部中断:异常
    • 触发错中断
    • 指令中断 INT N
    • 溢出中断 INTO
    • 单步中断 TF
  • 外部中断:中断
    • NMI 向量号为2
    • INT:IF

8253

方式

  1. 计数结束中断
  2. 可编程单稳脉冲
  3. 频率发生器(分频器)
  4. 方波发生器
  5. 软件触发选通信号
  6. 硬件触发选通信号

每种工作方式的过程类似:

  1. 设定工作方式
  2. 设定计数初值
  3. (硬件启动)
  4. 计数初值进入减1计数器
  5. 每输入一个时钟计数器减1的计数过程
  6. 计数过程结束

8237

软件命令

$A_3A_2A_1A_0$

  • 清除高/低触发器软件命令
    • $A_3A_2A_1A_0$=1100,使高/低触发器清零
  • 主清除命令
    • $A_3A_2A_1A_0$=1101,使高/低触发器清零
    • 还使命令、状态、请求、临时寄存器清零
    • 使屏蔽寄存器置为全1(禁止DMA请求)
    • 主清除命令与硬件的RESET信号具有相同的功能
  • 清屏蔽寄存器命令
    • $A_3A_2A_1A_0$=1110,使4个屏蔽位都清零(允许DMA请求)

传送方式

  • 请求传送方式

    • DREQ有效就传送 无效就暂时中止
    • 直到字节数寄存器为FFFFH或外部信号终结
    • 可由外设利用DREQ控制传送过程
  • 单字节传送方式

    • 每次传送一个字节后 交还系统总线控制权
    • 效率低
  • 数据块传送方式

    • DREQ启动就传送数据
    • 直到字节数寄存器为FFFFH或外部信号终结
    • 效率高
    • CPU长时间无法控制总线
  • 级联方式

    • 第二级的HRQHLDA连到第一级某通道的DREQDACK
    • 实际操作由第二级芯片完成
    • 第二级芯片优先权与所连2通道优先权对应

8255

方式

  1. 基本输入输出方式
    1. 适用于无条件传送和查询方式的接口电路
  2. 选通输入输出方式
    1. 适用于查询和中断方式的接口电路
  3. 双向选通传送方式
    1. 适用于与双向传送数据的外设
    2. 适用于查询和中断方式的接口电路

控制字

8259

ICW固定写入顺序 OCW无写入顺序

ICW1

D7 D6 D5 D4 D3 D2 D1 D0
X X X 1 LTIM X SNGL IC4
建议为0 作为标志 中断触发方式 单片或级联方式 是否写入ICW4

中断触发方式

  1. 边沿触发
  2. 电平触发

SNGL:

  1. 级联
  2. 单片

ICW2

D7 D6 D5 D4 D3 D2 D1 D0
T7 T6 T5 T4 T3 X X X

设置中断向量号

  • T7~T3为中断向量号的高5位
  • 低3位由8259A自动确定
  • IR0为000、 IR1为001、……、IR7为111

ICW3

D7 D6 D5 D4 D3 D2 D1 D0
S7 S6 S5 S4 S3 S2/ID2 S1/ID1 S0/ID0

级联命令字

  • 主片8259A:$S_i=1$对应$IR_i$有从片
  • 从片8259A:ID0~ID2编码说明从片INT引脚接到主片的IR引脚

ICW4

D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 SFNM BUF M/S AEOI $\mu$PM
嵌套方式
特殊(1)/普通(0)全嵌套
缓冲方式:缓冲(1) M/S* AutoEOI

$\mu$PM:微处理器类型

  1. 8位8080/8085
  2. 16位80x86

普通全嵌套:

  • 8259A的中断优先权顺序固定不变
  • 中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其向量号送上数据总线,对应ISR的Di位置位,至到中断结束(ISR的Di位复位)
  • 在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套

OCW1

D7 D6 D5 D4 D3 D2 D1 D0
M7 M6 M5 M4 M3 M2 M1 M0

屏蔽命令字 Di=Mi对应IRi

为1禁止IRi中断

OCW2

D7 D6 D5 D4 D3 D2 D1 D0
R SL EOI 0 0 L2 L1 L0
产生中断 结束EOI命令 和改变优先权顺序 指定 IR 引脚

R SL EOI 为一组

L2~0为一组

OCW3

D7 D6 D5 D4 D3 D2 D1 D0
0 ESMN SMM 0 1 P RR RIS
设置中断 屏蔽方式 规定随后读取 状态字 含义

ESMN SMM一组

P RR RIS一组

状态字

  • $A_0$为低 OCW3中RR和RIS设定读取IRR或ISR P设定为读取查询字
  • $A_0$为高 读取都是IMR

查询字反应8259A是否有中断请求

D7 D6 D5 D4 D3 D2 D1 D0
I W2 W1 W0
是否有外设请求中断 当前中断请求 最高优先级

8253

CS* A1 A0 I/O地址 RD* WR*
0 0 0 40H Read Cnt0 Write Cnt0
0 0 1 41H Read Cnt1 Write Cnt1
0 1 0 42H Read Cnt2 Write Cnt2
0 1 1 43H NOP 写控制字

写入控制字I/O地址 $A_1A_0=11$

D7 D6 D5 D4 D3 D2 D1 D0
计数器 读写格式 工作方式 数制

计数器:

00 01 10 11
计数器0 计数器1 计数器2 非法

读写格式:

00 01 10 11
计数器锁存 低字节only 高字节only 先低字节后高字节

工作方式:000-101 方式0-5

数制

  1. binary
  2. BCD

8237

模式寄存器

通道的方式控制字

最低二位选择通道

D7 D6 D5 D4 D3 D2 D1 D0
传送方式 地址增量 自动初始化 传送类型 通道

传送方式:

模式
00 请求
01 单字节
10 数据块
11 级联

地址增量

0 自增

1 自减

工作方式

传送类型
00 DMA校验
01 DMA写
10 DMA读
11 非法

命令寄存器

存放8237A的命令字

影响每个DMA通道

复位清零

D2=1设置8237A为DMAC

7 6 5 4 3 2 1 0
标志 DACK DREQ 优先权 时序 DMAC 通道0地址改变 存储器间传送
1 高有效 低有效 扩展写 循环 压缩 禁止DMAC工作 禁止 允许
0 滞后写 固定 正常

8255

CS* A1 A0 I/O地址 RD* WR*
0 0 0 60H Read PA Write PA
0 0 1 61H Read PB Write PB
0 1 0 62H Read PC Write PC
0 1 1 63H 非法 写控制字

控制字

初始化编程

8259

  • 8259A开始工作前,必须进行初始化编程:
  • 给8259A写入初始化命令字ICW
	mov al,11h	;写入ICW1
	out 20h,al
	jmp intr1
intr1:	mov al,08h	;写入ICW2
	out 21h,al
	jmp intr2
intr2:	mov al,04h	;写入ICW3
	out 21h,al
	jmp intr3
intr3:	mov al,1h	;写入ICW4
	out 21h,al

8253

mov al,36h;00110110B
;计数器0为方式3,采用二进制计数,
;先低后高写入计数值
out 43h,al	;写入方式控制字
mov al,0	;计数值为0
out 40h,al	;写入低字节计数值
out 40h,al	;写入高字节计数值
mov al,54h
;计数器1为方式2,采用二进制计数,只写低8位计数值
out 43h,al	;写入方式控制字
mov al,18	;计数初值为18
out 41h,al	;写入计数值

8237

  • 写入命令寄存器
  • 可先输出主清除命令 进行软件复位
  • 然后写入命令字

8255

MOV AL,10011001B;99H 方式控制字
OUT 63H,AL