690 likes | 819 Views
第七章 输入 / 输出接口. 一、微机接口技术概述 二、 DMA 接口技术 三、可编程 DMA 控制器 8237. 第一部分 微机接口技术概述. 第一节 接口技术的基本概念 第二节 I/O 端口的编址和译码 第三节 CPU 与外设间的数据传送方式 第四节 接口技术的现状. 第一节 接口技术的基本概念. 一、 接口的概念和功能 二、 接口电路的典型结构. 1 、接口和接口技术. 2 、为什么要用接口电路?. 一、 接口的概念和功能. 接口 指 CPU 、存储器、外设之间通过总线进行连接的电路部分,
E N D
第七章 输入/输出接口 • 一、微机接口技术概述 • 二、DMA接口技术 • 三、可编程DMA控制器8237 qiu
第一部分 微机接口技术概述 第一节 接口技术的基本概念 第二节I/O端口的编址和译码 第三节CPU与外设间的数据传送方式 第四节 接口技术的现状 qiu
第一节 接口技术的基本概念 一、 接口的概念和功能 二、 接口电路的典型结构 qiu
1、接口和接口技术 2、为什么要用接口电路? 一、 接口的概念和功能 qiu
接口 指CPU、存储器、外设之间通过总线进行连接的电路部分, 是CPU与外界进行信息交换的中转站。接口电路一般指通用的接口芯片,泛指所有接口。 1、接口和接口技术 接口技术 是研究CPU如何与外部世界进行最佳耦合与匹配, 实现双方高效、可靠地交换信息的一门技术, 是软件、硬件结合的体现,是微机应用的关键。 qiu
2、为什么要用接口电路? 外设是用来实现人机交互的一些机电设备。 外设处理信息的类型、速度、通信方式与CPU不匹配, 不能直接挂在总线上,必须通过接口和系统相连 qiu
接口可起到串并转换作用 • 接口可起到模数/数模转换作用 • 接口对I/O过程起到缓冲和联络作用 qiu
按通用性分为两类: • 通用接口: • 可供多种外部设备使用的标准接口,目的是使微机正常工作; • 通用接口通常制造成集成电路芯片,称为接口芯片。 • 最初的IBM-PC使用了6块接口芯片:8284、8288、8255、8259、8237、8253 • 后来的微机将这些芯片集成为大规模集成电路芯片,称为芯片组。 • 如82430TX芯片组,由两片芯片组成: • 北桥:82439TX • 南桥:82371AB • 专用接口: • 为某种用途或某类外设而专门设计的接口电路,目的在于扩充微机系统的功能。 • 专用接口通常制造成接口卡,插在主板总线插槽上使用。 通用接口和专用接口的界限并不严格。 qiu
3. 接口电路的功能 简单地说,一个接口的基本功能是在系统总线和I/O设备之间传输信号,提供缓冲作用,以满足接口两边的时序要求。下面从广义的角度概括一下接口的功能: • 寻址功能 • 输入/输出功能 • 数据转换功能 • 联络功能 • 中断管理功能 • 可编程功能 • 复位功能 • 错误检测功能 qiu
AB 地址 译码 C P U 外 设 I/O端口1 DB 数据 缓冲 I/O端口2 CB 控制 电路 I/O端口3 二、接口电路的典型结构 从编程角度看,接口内部主要包括一个或多个 CPU可以进行读/写操作的寄存器,又称为I/O端口。 各I/O端口由端口地址区分。 qiu
AB 地址 译码 C P U 外 设 1001 0101 (状态端口) 按存放信息的不同,I/O端口可分为三种类型 数据端口:用于存放CPU与外设间传送的数据信息 状态端口:用于暂存外设的状态信息 控制端口:用于存放CPU对外设或接口的控制信息, 控制外设或接口的工作方式。 DB 数据 缓冲 0110 1010 (数据端口) CB 控制 电路 1100 0110 (控制端口) qiu
AB 地址 译码 C P U 外 设 I/O端口1 DB 数据 缓冲 I/O端口2 CB 控制 电路 I/O端口3 CPU对外设输入/输出的控制, 是通过对接口电路中各I/O端口的读/写操作完成。 qiu
数据信息 • 数字量 • 模拟量 • 开关量 • 状态信息 表征外设工作状态(READY,BUSY) • 控制信息 控制I/O接口的工作方式外设启停 qiu
第二节 I/O端口的编址和译码 一、I/O端口的编址方式 二、8086/8088的输入/输出指令 三、I/O端口的译码 qiu
一、I/O端口的编址方式 1、端口与存储器分别独立编址 2、端口与存储器统一编址 qiu
例Intel的80X86系列、Z80系列 内 存 空 间 I/O 空 间 1、端口与存储器分别独立编址 (I/O映射方式) 特点: • 端口与存储器分别独立编址 端口不占用内存空间 • 设有专门的 I/O指令对端口进行读写, 对内存操作的指令不能用于I/O端口,能够应用于端口的指令较少 例 MOV [ 10H ], AL 对内存操作 IN AL , 10H 对端口操作 qiu
端口的独立编址 MEMR、MEMW 8 0 8 6 总 线 存储器 A19-A0 IOR、IOW 、AEN 输入/输出 A15-A0 qiu
例 motorola的M6800系列 日立H8S单片机系列 内 存 空 间 I/O 空 间 2、端口与存储器统一编址 (存储器映射方式) 特点: • I/O端口相当于内存的一部分, 使内存容量减小 • 对I/O端口的读/写与对存储器的读/写相同, 所有可对内存操作的指令对I/O端口均可使用, 指令系统中不专设I/O指令。 qiu
端口地址是一种重要资源 qiu
二 、8086的输入/输出指令 输入/输出指令实现I/O端口与CPU之间的数据传送 1.输入指令IN 2.输出指令OUT qiu
8086CPU采用I/O端口与存储器分别独立编址 内 存 空 间 可寻址220= 1M个内存单元 内存范围00000 ~FFFFFH 内存单元的地址有5种寻址 可寻址216= 64 K个I/O端口 I/O端口范围0000 ~ FFFFH I/O端口的地址由 一个8位二进制数直接寻址 或DX寄存器间接寻址 I/O 空 间 qiu
1. 输入指令IN port 为数字形式的端口地址, 大小为0~255 或0~FFH qiu
例 (1) IN AL,28H 若 (28H端口) = 1010 1111B 执行后 (AL) = (28H端口) = 0AFH (2)IN AX,28H 若 (28H端口)= 1010 1111B (29H端口)= 0101 0000B 执行后 (AL) = (28H端口) = 0AFH (AH) = (29H端口) = 50H (3)MOV DX, 300H IN AL,DX 若 (300H端口)= 69H 执行后 (AL) = (300H端口) = 69H qiu
qiu IN AL, 21H
2. 输出指令OUT port 为数字形式的端口地址, 大小为0~255 或0~FFH qiu
例 (1)OUT 21H, AL 若(AL)= 1100 1100B 执行后 (21H端口) = 0CCH (2)MOV DX , 21BH OUT DX, AL 若(AL)= 1010 0110B 执行后 (21BH端口)= (AL) = 0A6H qiu
qiu OUT 43H, AL
三、I/O地址的译码 目的: 确定端口的地址 参加译码的信号: IOR,IOW,A15~ A0 OUT指令将使总线的IOW信号有效 IN指令将使总线的IOR信号有效 qiu
当接口只有一个端口时,16位地址线一般应全部参与译码,译码输出直接选择该端口;当接口具有多个端口时,则16位地址线的高位参与译码(决定接口的基地址),而低位则用于确定要访问哪一个端口。当接口只有一个端口时,16位地址线一般应全部参与译码,译码输出直接选择该端口;当接口具有多个端口时,则16位地址线的高位参与译码(决定接口的基地址),而低位则用于确定要访问哪一个端口。 qiu
某外设接口有4个端口,地址为2F0H~2F3H,则其基地址为2F0H,由A15~A2译码得到,而A1、A0用来确定4个端口中的某一个。某外设接口有4个端口,地址为2F0H~2F3H,则其基地址为2F0H,由A15~A2译码得到,而A1、A0用来确定4个端口中的某一个。 qiu
第三节 CPU与外设间的数据传送方式 CPU与外设的工作速度不一致, 如何使两者高效、可靠地进行数据传送, 是本节讨论的问题。 qiu
有以下几种传送方式: 一、程序控制传送方式 1. 无条件传送方式 2. 条件传送方式 ( 查询方式) 二、 中断传送方式 三、DMA传送方式 ( Direct Memory Access ) qiu
概述 1。无条件传送(CPU与外设同步工作): 外部控制过程各种动作时间是固定的,而且是已知的。 2。查询方式(CPU与外设不同步工作): 传送前,先查询外设状态,准备好才传送,否则CPU处于等待状态。 3。中断方式: 外设与CPU处于并行工作,一旦外设准备好,外设向CPU发中断申请,条件具备,CPU暂停原程序执行,响应中断,外设与CPU串行工作。 4。DMA方式(高速I/O及成组交换数据): CPU不干予,由硬件实现存储器与外设之间交换数据,称直接存取存储器。 qiu
一、无条件传送方式 (同步传送方式) 实现方法若程序员能够确信一个外设已经准备就绪,那就不必查询外设的状态而进行信息传输,这称为无条件传送方式。 与外设速度的匹配通过在软件上延时完成, 在程序中直接用I/O指令,完成与外设的数据传送 特点 1. 适用于外设动作时间已知, 在CPU与外设进行数据传送时,外设保证已准备好的情况 2. 软硬件十分简单。这种方式用得较少,只用在对一些简单外设的操作,如开关、七段显示管等。 qiu
无条件传送流程 qiu
数据 线 三 态 缓冲器 输入 设备 D7 ~ D0 PC 总 线 地址 译码 地址线 200H A15 ~ A0 0 与 非 0 0 IOR 例 1无条件输入接口 接口电路,即硬件上保证: 只在CPU执行从200H端口输入数据时, 三态门处于工作状态,使输入设备的数据送上总线侧, 而CPU执行其它指令时, 三态门均处于高阻状态, 使输入设备的数据线与总线侧断开 qiu
无条件输入输出编程: MOV DX, 200H ;端口地址 IN AL, DX ;读入数据 MOV DX, 200H ;端口地址 MOV AL, [BX] OUT DX, AL ;输出数据 qiu
二、条件传送方式(查询传送方式) CPU通过执行程序不断读取并测试外设的状态,根据外设的工作状态控制外设的输入/输出,即查询方式。 实现方法: 在与外设进行传送数据前,CPU先查询外设状态, 当外设准备好后,才执行I/O指令,实现数据传送 特点: 1. CPU通过不断查询外设状态,实现与外设的速度匹配 2. CPU的工作效率低 qiu
对于条件传送方式来说,一个数据传送过程由3个环节组成:对于条件传送方式来说,一个数据传送过程由3个环节组成: • CPU从接口中读取状态字 • CPU检测状态字的对应位是否满足“就绪”条件,如果不满足,则回到前一步读取状态字。 • 如状态字表明外设已处于“就绪”状态,则传送数据 qiu
查询传送流程 qiu
从状态端口读入状态信息 N 外设准备好否? Y 从数据端口传送一个数据 查询传送方式,编程流程: qiu
例1查询方式输入 假设 外设的状态端口为21C H, 其中D4=1时,表示外设数据准备好 外设的数据端口为218 H。 实现从外设读入50H个字节到内存缓冲区buffer中。 地址线 C P U 输入 外 备 地址 译码 21CH端口 状态端口 数据线 数据 缓冲 218H端口 数据端口 控制线 控制 电路 qiu
PC总线 IOR MOV DX, 218H IN AL, DX 状态端口 D4=1 表示外设准备好 数据 端口 地址 译码 地址线 A15 ~ A0 218H 输 入 设 备 锁 存 器 三 态 缓冲器 数 据 线 D7 ~ D0 STB R Q D 三 态 缓冲器 D4 状态 端口 地址 译码 21CH +5v MOV DX, 21CH IN AL, DX IOR & & 查询方式输入接口 qiu
编程从外设读入50H个字节到内存缓冲区buffer中 从21CH状态端口 读入外设状态信息 N Y Y D4=1, 外设准备好否? 从218H数据端口 读入一个字节数据 N 50H个数据传送结束? qiu
查询方式输入程序段: 、、、 MOV AX, SEG buffer ;取缓冲区首地址 MOV DS, AX LEA DI, buffer MOV CX, 50H ;传送个数 next: MOV DX, 21CH ask:IN AL, DX ;从状态端口读入状态信息 TEST AL, 0001 0000B ;检测D4位 JZ ask ;D4=0,继续查询 MOV DX, 218H IN AL, DX ;从数据端口读入数据 MOV [DI], AL ;送缓冲区 INC DI ;修改缓冲区指针 LOOP next ;传送下一个 、、、 qiu
例2查询方式输出 假设 外设的状态端口为21C H, 其中D0 = 0时,表示外设准备好 外设的数据端口为219 H。 编程将缓冲区buffer的80H个字节输出到外设。 地址线 C P U 输出 外 设 地址 译码 21CH端口 状态端口 数据线 数据 缓冲 219H端口 数据端口 控制线 控制 电路 qiu
查询方式输出接口 IOW MOV DX, 219H OUT DX, AL 状态端口 D0 = 0 表示外设准备好 数据 端口 地址 译码 地址线 A15 ~ A0 PC 总 线 219H 输 出 设 备 锁 存 器 D7 ~ D0 数 据 线 三 态 缓冲器 R D Q D0 状态 端口 地址 译码 +5v ACK 21CH MOV DX, 21CH Ask: IN AL, DX TESTAL,01h JNZ ask IOR & & qiu
编程将缓冲区buffer的80H个字节输出到外设 从21CH状态端口 读入外设状态信息 N Y Y D0=0, 外设准备好否? 将一字节数据送至 219H数据端口 N 80H个数据传送结束? qiu
查询方式输出程序段: 、、、 MOV AX, SEG buffer ;取缓冲区首地址 MOV DS, AX LEA SI, buffer MOV CX, 80H ;传送个数 next: MOV DX, 21CH ask:IN AL, DX;从状态端口读入状态信息 TEST AL, 0000 0001B ;检测D0位 JNZ ask;D0≠0,继续查询 MOV AL, [SI] ;从缓冲区取数 MOV DX, 219H OUT DX, AL ;从数据端口输出数据 INC SI ;修改缓冲区指针 LOOP next ;输出下一个 、、、 qiu
主程序 启动外设A、B、C Y Y Y 设备A服务 设备B服务 设备C服务 查询A N 查询B N 查询C N 操作结束否? N Y 继续主程序 多个外设的查询方式流程图 qiu