第 6章 微型计算机和外设之间的数据传输通过本章的学习,使学生掌握接口电路的基本概念、接口电路的主要功能、两种 I/O端口的编址方式,32位微处理器采用 I/O编址的译码、微处理器与 I/O设备数据传送的查询式输入输出方式以及中断方式输入输出熟悉 32位微处理器保护模式下的 I/O空间,
直接存储器存取( DMA)方式以及 I/O处理器控制方式教学目的和教学要求重点:
I/O端口的编址方式
CPU与 I/O设备数据传送的查询式输入输出方式以及中断方式输入输出难点:
微处理器与 I/O设备数据传送的几种方式本章重点、难点
6.1 接口及接口技术
6.1.1 接口电路的概述所谓 接口 就是微处理器与外围设备之间的连接电路,它是两者之间进行信息交换时的必要通路,不同的外设有不同的输入 /输出接口电路。例如,键盘输入有键盘接口电路,CRT显示器有显示器输出接口电路,打印机也有打印输出接口电路等等微型计算机系统的各类接口如图 6-1所示图 6-1 微型计算机各种接口框图
I/O接口是位于系统与外设间,用来协助完成数据传送和控制任务的逻辑电路
PC机系统板的可编程接口芯片,I/O总线槽的电路板 ( 适配器 ) 都是接口电路
CPU 接口电路
I/O
设备什么是 I/O接口(电路)?
微机的外部设备多种多样
工作原理,驱动方式,信息格式,以及工作速度方面彼此差别很大
它们不能与 CPU直接相连
必须经过中间电路再与系统相连
这部分电路被称为 I/O接口电路为什么需要 I/O接口(电路)?
处理微机系统与外设间联系的技术
注意其软硬结合的特点
根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备什么是微机接口技术?
6.1.2 接口电路的主要功能设备选择功能数据缓冲功能接收和执行 CPU命令的功能寄存外设状态的功能信号的转换功能数据宽度变换的功能可编程功能
6.1.3 接口技术的发展及分类微型计算机接口技术的发展,基本上是与微处理器的发展同步进行的 。 按照接口技术与接口随着微处理器的发展,可将接口电路分为四类,
固定式接口电路
可编程接口电路
智能接口与通用外围接口
功能接口板一、固定式接口电路早期的微处理器多采用 PMOS工艺,集成度低,
系统结构与指令系统均比较简单,受半导体工艺的限制,接口芯片的集成度也不高,大都采用 TTL与 MSI工艺,计算机接口由小规模或中规模集成电路组合而成,要改变其功能与工作方式必须改变硬件连线才能实现,将这种简单接口电路称之为固定式接口电路二、可编程接口电路
16位微处理器 ( 例如 8086CPU) 的出现,使微型计算机的发展进入了第二代,第二代微处理器采用了 NMOS工艺,集成度明显提高,Intel公司推出的与此相适应的接口芯片有中断控制器 8259A,并行 I/O接口芯片 8255A,定时 /计数器 8253/ 8254,
DMA控制器 8237A以及串行通信接口芯片 8250等,
这些芯片都是采用 NMOS工艺的大规模集成 ( LSI)
芯片,而且都是可编程的接口芯片,用户可以通过对接口芯片的在线编程,方便灵活地改变接口的工作方式三、智能接口与通用外围接口
Intel公司于 1985年首次推出第三代微处理器 80386,
1989年又推出 X86系列的第四代微处理器 80486,这时代的芯片大都是采用了 NMOS或 CMOS工艺的超大规模集成 ( VLSI) 芯片 。 与此相应,也开发出了大批集成度更高的接口器件 。 这一时期接口芯片的显著特点是应用了单片机作通用接口,使接口电路智能化智能化接口集单片机技术与接口技术于一体,可直接与外围设备相连,它是一种结构与功能接近于 CPU的专用控制器,有独立的指令系统,通过编写完整的 I/O
管理程序和预处理程序,来实现对许多外设频繁的 I/O
进行管理,从而减轻了 CPU管理 I/O设备的负担,大大提高了微机系统的运行速度四,功能接口板由于微型计算机使用了各种统一的总线标准,
例如,ISA,PCI,SCSI,USB等各种总线,因而从电气特性,机械特性及通信协议等方面都已标准化,开发商已为各种总线开发出了不同功能的专用接口板,可供用户选购,例如,PCI总线的 ADC和 DAC功能板,PCI的网卡,基于 PCI的
RS-232串行通行卡等
6.2 I/O端口的编址方式端口 是接口电路中能被 CPU直接访问的寄存器的地址 。由于有的寄存器寄存的二进制信息专门用来被 CPU
读取,有的寄存器用于专门接收 CPU发出来的数据,因此,被 CPU访问的寄存器的地址分为输入端口和输出端口,故称为 I/O端口微机给接口电路中的每个寄存器分配一个端口,即给每个寄存器分配一个地址,当 CPU访问这些寄存器时,
通过执行 I/O指令,由 I/O指令中给出的地址就从地址总线上发出去,经接口电路中的地址译码器译码后,
便可以选中 I/O指令中所指定的寄存器进行 R/W访问
6.2.1 两种 I/O端口的编址方式一、统一编址从内存空间划出一部分地址空间留给 I/O设备编址,CPU把 I/O端口所指的寄存器当作存储单元进行访问,直接用访问内存的指令访问 I/O
寄存器,这种 I/O端口的编址方式被称之为统一编址,或称为存储器映像的 I/O编址方式优点,不需要设立专门的 I/O指令,用访问内存的指令就可以访问外设,指令类型多,功能齐全,还可以对端口进行算术运算,逻辑运算以及移位操作等。 I/O端口空间不受限制缺点,是 I/O端口占用了内存空间,减少了内存容量统一编址优缺点二、专门的 I/O编址方式接口电路中所有的 I/O端口统一编址,而所有 I/O端口建立的地址空间与内存地址空间是两个独立的地址空间,也常称这种方式为独立编址方式优点,不占用内存空间,使用专门 I/O指令访问 I/O端口,I/O速度快缺点,CPU的引脚上必须具有能区分出访问内存还是访问 I/O端口的信号,作为 I/O接口电路中端口译码电路以及存储器片选译码电路的输入信号专用 I/O编址的 优缺点
6.2.2 保护模式下的 I/O空间在实地址模式下,80486CPU采用存储器映像 I/O编址方式访问 I/O端口时,I/O端口占有物理地址从 0地址开始的 1MB存储空间中的任意地址,在实模式下,采用专门 I/O编址方式时,占用 0地址开始的 64KBI/O地址空间中任意地址当 80486CPU运行在保护模式下,用存储器映像的 I/O编址方式寻址,I/O端口可以被映像到物理地址从 0地址开始的 4GB存储空间中任意地址( 0000 0000H~ FFFF
FFFFH),而采用专门 I/O编址方式,I/O
寻址的地址空间是从 0地址开始的 64KB
( 0000 0000H~ 0000 FFFFH) I/O地址空间中任意地址
32位机在保护模式下,CPU对以上两种 I/O寻址方式提供不同的保护机制对于存储器映像 I/O的保护由存储器分段与分页保护机制完成,同时还要避免使用系统数据缓冲地址空间被映像来作为 I/O操作地址对于专用的 I/O编址方式,只有当前的特权级
( CPL)大于或等于 I/O特权级( IOPL)时,即此时的 CPL值必须小于或等于 IOPL的数值,I/O指令才能被执行,反之,则 I/O指令将不被执行,相应还要产生一个普通的保护故障在保护模式下,32位机任务状态段 ( TSS) 中的
I/O允许位,提供了另一种保护机制 。 I/O允许位中的每一位分别与一个 8位的 I/O端口相对应 。 当执行
I/O操作时,虽然当前的特权级 ( CPL) 大于或等于
I/O特权级 ( IOPL),但 CPU要检查 I/O允许位中与该 I/O端口对应的那一位,若该位为 1,则禁止当前
I/O操作的形成,若为 0,则允许形成当前的 I/O操作在虚拟 8086模式下,所有的 I/O操作均要受 I/O
允许位的限制
6.2.3 32位微处理器采用 I/O编址的译码电路一,8位数据端口与低 8位数据线的连接二,8位数据端口与 32位数据线的连接例如:
MOV DX,3E0H
IN AL,DX ; BE0* 有效,只读端口0
IN AX,DX ; BE1*,BE0*有效,;读端口 1与读端口0
IN EAX,DX ; BE3* ~ BE0*均有效,;读端口 3~端口0
6.3 CPU与 I/O设备数据传送的几种方式
6.3.1 I/O接口电路的基本结构一,I/O接口电路的连接二,I/O接口电路中的基本寄存器
I/O接口电路中一般具有 三种类型 的 基本寄存器,它们是用于存取数据的寄存器,存取命令信息的寄存器以及存取外设所处状态的寄存器,习惯上把这些寄存器称为端口
1、数据端口
2、命令端口
3、状态端口
1.数据端口
用于中转数据信息 。 一种情况是 CPU通过数据总线,将待传送给外设的数据先传送到数据端口,
然后由 I/O设备通过与 I/O接口电路相连接的数据线取得该数据
另一种情况是 I/O设备首先将输入数据锁存于数据端口,然后,CPU通过数据端口将该数据读入
CPU中 。 数据端口一般既有输出寄存器 ( 或称输出锁存器 ),又有输入寄存器 ( 或称输入锁存器 )
2、命令端口用于传送对 I/O设备的命令信息 。 CPU将命令信息通过数据总线写入 I/O接口电路的命令寄存器中,然后传送到 I/O设备,以便控制外设的操作 。 它由输出寄存器组成,命令端口是一个输出端口
3、状态端口用于传送外设所处的状态信息 。 状态端口是输入端口,CPU通过读取状态端口的数据,以此了解外设当前所处的工作状态,比如,如果是输入设备,则可以通过状态信息了解输入设备是否有了等待输入的新数据,如果是输出设备,CPU通过读入的状态信息,可以了解输出设备是否作好了接受 CPU传送新数据的准备 。 显然,1bit的状态信息可以反应 1个外设的两种状态,1个 8位的状态端口则可以反应外设的 8
个状态信息总之,I/O接口电路中一般有数据端口,命令端口以及状态端口,每个端口地址是不相同的,CPU均通过数据总线来传送三种端口的数据 。 有些 I/O接口中,还有中断控制逻辑电路,以便外设与 CPU之间以中断方式进行输入或输出,其优点是可以提高 CPU的工作效率
6.3.2 CPU与 I/O设备传输数据的几种方式
CPU以及 I/O设备的种类繁多,CPU与 I/O设备所构成的系统不可能完全相同,CPU与 I/O设备之间传输数据的方式也不完全相同,接口电路的结构与功能也不同,驱动程序也不相同一般可以划分为 五种 传输数据的方式:无条件 I/O传送方式,查询式输入输出方式,中断控制方式,DMA方式以及 I/O处理器控制方式一,无条件输入输出方式无条件输入输出方式 是一种最简单的输入 /输出控制方式,其 I/O接口电路及软件比较简单,
所有的操作均由执行程序来完成特点,输入接口电路总是准备好了等待输入给
CPU的数据,输出接口电路总是准备好了接受来自 CPU的数据 。 CPU无须查询 I/O设备是否准备就绪,直接用汇编语言或高级语言编程,实现输入或输出操作此种方式的接口电路是查询式输入输出方式接口电路的基础
IOR*与 IOW*的产生无条件输入接口电路及输入时序无条件输出接口电路及输出时序二、查询式输入输出方式
1.查询式输入方式当 CPU采用查询方式从外设读取数据时,
CPU必须首先从状态端口查询外设的数据是否已经准备好,确认已准备好后,才能执行一次数据输入操作例:假设状态端口与数据端口的地址分别为 300H和
301H,状态信息从数据总线上的 D0位读入 CPU中,查询式输入程序段如下:
MOV DX,300H ; 状态口地址传送给 DX
ABC,IN AL,DX ; 读入状态信息
TEST AL,01H ; AL∧ 01H,影响 ZF标志
JZ ABC ; 如果状态信息为 0转 ABC
MOV DX,301H; 数据端口地址传送给 DX
IN AL,DX ; 读入数据信息
2.查询式输出方式当 CPU采用查询方式向外设输出数据时,
CPU必须首先从状态端口查询外设是否已经作好了接受 CPU数据的准备,若没有准备好,
则要继续查询,若准备好了,CPU便执行一次数据输出操作例:假设状态端口与数据端口的地址分别为 3FOH和
3F1H,状态信息从数据线上 D7位读入 CPU中,查询式输出程序段如下:
MOV DX,3F0H ; 状态口地址传送给 DX
CBA,IN AL,DX ; 读入状态信息
TEST AL,80H ; AL∧ 80H,影响 ZF标志
JZ CBA ; 如果状态信息为 0则转 CBA
MOV DX,3F1H ; 数据端口地址传送给 DX
MOV AL,[SI] ; 从内存读取数据给 AL
OUT DX,AL ; 向数据口输出数据
6.3.2 CPU与 I/O设备传输数据的几种方式例 【 6-1】 一个查询式 A/D转换的基本结构。在数据采集系统中,常采用查询式输入方式来实现 A/D
转换。运用这种 A/D转换方式,也能满足大多监测与控制的实际需要。查询式 A/D转换的基本结构图如图 6-10
查询式 A/D转换的基本结构图设 A/D转换为 8位,而且假设,及的地址分别是
302H,301H以及 300H,如果要顺序采集 CH0与 CH1两道模拟信号,各采集 100次,并将所采集的数据分别存入内存数据段内起始位置为 0000H和 1000H的内存空间,编写如下程序段:
MOV SI,0000H ; 存放采集 CH0数据的起始地址传送给 SI
MOV DI,1000H ; 存放采集 CH1数据的起始地址传送给 DI
MOV CX,0064H
BGN,MOV DX,300H ; y0* 通道地址给 DX
MOV AL,00000000B
OUT DX,AL ; 启动信号 =0,选 CH0
MOV AL,00001000B
OUT DX,AL ; 启动信号 =1,仍选通 CH0
MOV AL,00000000B
OUT DX,AL ; 启动信号 =0,仍选通 CH0
MOV DX,301H ; 状态口地址给 DX
ABC,IN AL,DX
TEST AL,80H
JZ ABC ; 如果 EOC=0继续查询
MOV DX,302H ; 数据口地址给 DX
IN AL,DX ; 读入转换后的数字量
MOV [SI],AL ; CH0通道数字量存入内存
INC SI
MOV DX,300H ; 选通道地址给 DX
MOV AL,0000 0001B
OUT DX,AL ; 启动信号 =0,选 CH1
MOV AL,0000 1001B
OUT DX,AL ; 启动信号 =1,仍选通 CH1
MOV AL,0000 0001B
OUT DX,AL ; 启动信号 =0,仍选通 CH1
MOV DX,301H ;状态口地址给 DX
CBA,IN AL,DX
TEST AL,80H ;读入 EOC值
JZ CBA ; 如果 EOC=0,转 CBA
MOV DX,302H ;数据口地址给 DX
IN AL,DX ; 读入 CH1通道转换后数字量
MOV [DI],AL ; CH1通道数字量存入内存
INC DI
LOOP BGN
3.查询式输入输出方式存在的问题从图 6-11可以看出,当 CPU与 I/O设备之间采用查询式输入输出方式交换数据时,CPU必须顺序查询每一个外设,当某一个外设不需要服务时,CPU也得按顺序查询一次 。 外设总是处于被动状态,CPU无法快速响应外设要求及时服务的请求 。 CPU为了服务外设,
其它程序会停止执行,所以,查询式 I/O方式不可能是微型计算机外设工作的最佳选择,不适用于实时监控系统三,中断方式输入输出中断 是外设或者其他中断源中止 CPU当前正在执行的程序,转向为申请中断的外设(或中断源)执行服务程序,一旦服务程序执行结束,
必须返回到被中断程序的断点处,接着执行原来的程序运用中断控制方式实现外设数据的输入输出,完全可以解决查询式输入输出存在的问题。在中断控制方式下,所有的 I/O
设备都可以工作在主动请求 CPU为该外设服务的状态下,一旦一个或多个外设申请中断服务,则 CPU根据各 I/O设备预先被设置的中断优先级别,逐个予以响应,并进行中断处理、中断返回,实现中断处理的全过程图 6-12 2个中断源中断过程的示意图中断控制方式的输入输出是微机中常用的一门技术,采用中断技术后,CPU能与所有的外设并行工作,能及时服务外设,并处理系统异常情况,从而可以提高微机的整体性能,提高计算机的运行速度。有关中断技术的详细内容请看第 7章四,直接存储器存取 ( DMA) 方式
1.什么是 DMA?
DMA( Direct Memory Access)即直接存储器存取方式,是指在专门的 DMA控制器的控制下实现外围设备与内存储器直接交换数据的一门接口技术。
在这种方式下,数据传输不经过 CPU,传送的速度就只取决于存储器和外设的工作速度 。 在这种方式下,数据传输不经过 CPU,传送的速度就只取决于存储器和外设的工作速度微型计算机在一般情况下,由 CPU管理数据总线、地址总线以及控制总线,当系统有 DMA
请求时,CPU便让出三种总线的控制权,或让出有关这三种总线的全局总线,转由 DMAC控制三种总线实现高速外存与内存之间数据的交换。由 DMAC控制数据传送结束后,DMA向
CPU撤除 DMA请求,交还三总线控制权给 CPU,
于是结束一次 DMA传输的过程
2,DMA系统的基本组成图 6-13 DMA系统的基本组成
DMAC内部包括四个基本寄存器
① 地址寄存器,用于存取下一个要访问的内存单元的地址,地址寄存器的内容加 1或减 1操作,取决于 DMAC的设计
② 字节计数器,用于存放尚未传送完毕字节的数量,字节计数器在 DMA过程中自动作减 1操作
③ 控制寄存器,用于对 DMAC操作的控制
④ 状态寄存器,反映 DMAC当前所处的状态,例如,
数据块传输是否结束等状态信息
3,DMA传送的基本原理五,I/O处理器控制方式如前所述,中断方式输入输出仍然是一种程序控制方式,DMA传送方式只能实现比较单纯的数据传送,在大型计算机系统与高档微机中,外设数量多,传输速度快,I/O操作频繁,为了进一步减轻
CPU的负担,提高整体性能,采用了 I/O处理器
( IOP)控制方式来实现外设数据的 I/O传送,IOP
处理技术也称之为通道技术,IOP也被称之为,通道,
具有 I/O处理器的计算机系统如图 6-15所示图 6-15 具有 I/O处理器的计算机系统习题 6
6.1 6.2 6.3 6.7 6.8 6.10 6.12
从图 6-15中可以看出,,CPU可以直接通过连接在系统总线上的 I/O接口电路访问 I/O设备,也可以通过 IOP及 IOP的局部 I/O总线所连接的 I/O接口电路,
CPU间接管理 I/O设备,IOP实质上是一种微处理器,
协助主 CPU管理外设,因此,也常称其为协处理器 。
它分担 CPU的一部分功能,可以实现对外设的统一管理及外设与主存之间的数据交换,使整个系统的效率大大提高
直接存储器存取( DMA)方式以及 I/O处理器控制方式教学目的和教学要求重点:
I/O端口的编址方式
CPU与 I/O设备数据传送的查询式输入输出方式以及中断方式输入输出难点:
微处理器与 I/O设备数据传送的几种方式本章重点、难点
6.1 接口及接口技术
6.1.1 接口电路的概述所谓 接口 就是微处理器与外围设备之间的连接电路,它是两者之间进行信息交换时的必要通路,不同的外设有不同的输入 /输出接口电路。例如,键盘输入有键盘接口电路,CRT显示器有显示器输出接口电路,打印机也有打印输出接口电路等等微型计算机系统的各类接口如图 6-1所示图 6-1 微型计算机各种接口框图
I/O接口是位于系统与外设间,用来协助完成数据传送和控制任务的逻辑电路
PC机系统板的可编程接口芯片,I/O总线槽的电路板 ( 适配器 ) 都是接口电路
CPU 接口电路
I/O
设备什么是 I/O接口(电路)?
微机的外部设备多种多样
工作原理,驱动方式,信息格式,以及工作速度方面彼此差别很大
它们不能与 CPU直接相连
必须经过中间电路再与系统相连
这部分电路被称为 I/O接口电路为什么需要 I/O接口(电路)?
处理微机系统与外设间联系的技术
注意其软硬结合的特点
根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备什么是微机接口技术?
6.1.2 接口电路的主要功能设备选择功能数据缓冲功能接收和执行 CPU命令的功能寄存外设状态的功能信号的转换功能数据宽度变换的功能可编程功能
6.1.3 接口技术的发展及分类微型计算机接口技术的发展,基本上是与微处理器的发展同步进行的 。 按照接口技术与接口随着微处理器的发展,可将接口电路分为四类,
固定式接口电路
可编程接口电路
智能接口与通用外围接口
功能接口板一、固定式接口电路早期的微处理器多采用 PMOS工艺,集成度低,
系统结构与指令系统均比较简单,受半导体工艺的限制,接口芯片的集成度也不高,大都采用 TTL与 MSI工艺,计算机接口由小规模或中规模集成电路组合而成,要改变其功能与工作方式必须改变硬件连线才能实现,将这种简单接口电路称之为固定式接口电路二、可编程接口电路
16位微处理器 ( 例如 8086CPU) 的出现,使微型计算机的发展进入了第二代,第二代微处理器采用了 NMOS工艺,集成度明显提高,Intel公司推出的与此相适应的接口芯片有中断控制器 8259A,并行 I/O接口芯片 8255A,定时 /计数器 8253/ 8254,
DMA控制器 8237A以及串行通信接口芯片 8250等,
这些芯片都是采用 NMOS工艺的大规模集成 ( LSI)
芯片,而且都是可编程的接口芯片,用户可以通过对接口芯片的在线编程,方便灵活地改变接口的工作方式三、智能接口与通用外围接口
Intel公司于 1985年首次推出第三代微处理器 80386,
1989年又推出 X86系列的第四代微处理器 80486,这时代的芯片大都是采用了 NMOS或 CMOS工艺的超大规模集成 ( VLSI) 芯片 。 与此相应,也开发出了大批集成度更高的接口器件 。 这一时期接口芯片的显著特点是应用了单片机作通用接口,使接口电路智能化智能化接口集单片机技术与接口技术于一体,可直接与外围设备相连,它是一种结构与功能接近于 CPU的专用控制器,有独立的指令系统,通过编写完整的 I/O
管理程序和预处理程序,来实现对许多外设频繁的 I/O
进行管理,从而减轻了 CPU管理 I/O设备的负担,大大提高了微机系统的运行速度四,功能接口板由于微型计算机使用了各种统一的总线标准,
例如,ISA,PCI,SCSI,USB等各种总线,因而从电气特性,机械特性及通信协议等方面都已标准化,开发商已为各种总线开发出了不同功能的专用接口板,可供用户选购,例如,PCI总线的 ADC和 DAC功能板,PCI的网卡,基于 PCI的
RS-232串行通行卡等
6.2 I/O端口的编址方式端口 是接口电路中能被 CPU直接访问的寄存器的地址 。由于有的寄存器寄存的二进制信息专门用来被 CPU
读取,有的寄存器用于专门接收 CPU发出来的数据,因此,被 CPU访问的寄存器的地址分为输入端口和输出端口,故称为 I/O端口微机给接口电路中的每个寄存器分配一个端口,即给每个寄存器分配一个地址,当 CPU访问这些寄存器时,
通过执行 I/O指令,由 I/O指令中给出的地址就从地址总线上发出去,经接口电路中的地址译码器译码后,
便可以选中 I/O指令中所指定的寄存器进行 R/W访问
6.2.1 两种 I/O端口的编址方式一、统一编址从内存空间划出一部分地址空间留给 I/O设备编址,CPU把 I/O端口所指的寄存器当作存储单元进行访问,直接用访问内存的指令访问 I/O
寄存器,这种 I/O端口的编址方式被称之为统一编址,或称为存储器映像的 I/O编址方式优点,不需要设立专门的 I/O指令,用访问内存的指令就可以访问外设,指令类型多,功能齐全,还可以对端口进行算术运算,逻辑运算以及移位操作等。 I/O端口空间不受限制缺点,是 I/O端口占用了内存空间,减少了内存容量统一编址优缺点二、专门的 I/O编址方式接口电路中所有的 I/O端口统一编址,而所有 I/O端口建立的地址空间与内存地址空间是两个独立的地址空间,也常称这种方式为独立编址方式优点,不占用内存空间,使用专门 I/O指令访问 I/O端口,I/O速度快缺点,CPU的引脚上必须具有能区分出访问内存还是访问 I/O端口的信号,作为 I/O接口电路中端口译码电路以及存储器片选译码电路的输入信号专用 I/O编址的 优缺点
6.2.2 保护模式下的 I/O空间在实地址模式下,80486CPU采用存储器映像 I/O编址方式访问 I/O端口时,I/O端口占有物理地址从 0地址开始的 1MB存储空间中的任意地址,在实模式下,采用专门 I/O编址方式时,占用 0地址开始的 64KBI/O地址空间中任意地址当 80486CPU运行在保护模式下,用存储器映像的 I/O编址方式寻址,I/O端口可以被映像到物理地址从 0地址开始的 4GB存储空间中任意地址( 0000 0000H~ FFFF
FFFFH),而采用专门 I/O编址方式,I/O
寻址的地址空间是从 0地址开始的 64KB
( 0000 0000H~ 0000 FFFFH) I/O地址空间中任意地址
32位机在保护模式下,CPU对以上两种 I/O寻址方式提供不同的保护机制对于存储器映像 I/O的保护由存储器分段与分页保护机制完成,同时还要避免使用系统数据缓冲地址空间被映像来作为 I/O操作地址对于专用的 I/O编址方式,只有当前的特权级
( CPL)大于或等于 I/O特权级( IOPL)时,即此时的 CPL值必须小于或等于 IOPL的数值,I/O指令才能被执行,反之,则 I/O指令将不被执行,相应还要产生一个普通的保护故障在保护模式下,32位机任务状态段 ( TSS) 中的
I/O允许位,提供了另一种保护机制 。 I/O允许位中的每一位分别与一个 8位的 I/O端口相对应 。 当执行
I/O操作时,虽然当前的特权级 ( CPL) 大于或等于
I/O特权级 ( IOPL),但 CPU要检查 I/O允许位中与该 I/O端口对应的那一位,若该位为 1,则禁止当前
I/O操作的形成,若为 0,则允许形成当前的 I/O操作在虚拟 8086模式下,所有的 I/O操作均要受 I/O
允许位的限制
6.2.3 32位微处理器采用 I/O编址的译码电路一,8位数据端口与低 8位数据线的连接二,8位数据端口与 32位数据线的连接例如:
MOV DX,3E0H
IN AL,DX ; BE0* 有效,只读端口0
IN AX,DX ; BE1*,BE0*有效,;读端口 1与读端口0
IN EAX,DX ; BE3* ~ BE0*均有效,;读端口 3~端口0
6.3 CPU与 I/O设备数据传送的几种方式
6.3.1 I/O接口电路的基本结构一,I/O接口电路的连接二,I/O接口电路中的基本寄存器
I/O接口电路中一般具有 三种类型 的 基本寄存器,它们是用于存取数据的寄存器,存取命令信息的寄存器以及存取外设所处状态的寄存器,习惯上把这些寄存器称为端口
1、数据端口
2、命令端口
3、状态端口
1.数据端口
用于中转数据信息 。 一种情况是 CPU通过数据总线,将待传送给外设的数据先传送到数据端口,
然后由 I/O设备通过与 I/O接口电路相连接的数据线取得该数据
另一种情况是 I/O设备首先将输入数据锁存于数据端口,然后,CPU通过数据端口将该数据读入
CPU中 。 数据端口一般既有输出寄存器 ( 或称输出锁存器 ),又有输入寄存器 ( 或称输入锁存器 )
2、命令端口用于传送对 I/O设备的命令信息 。 CPU将命令信息通过数据总线写入 I/O接口电路的命令寄存器中,然后传送到 I/O设备,以便控制外设的操作 。 它由输出寄存器组成,命令端口是一个输出端口
3、状态端口用于传送外设所处的状态信息 。 状态端口是输入端口,CPU通过读取状态端口的数据,以此了解外设当前所处的工作状态,比如,如果是输入设备,则可以通过状态信息了解输入设备是否有了等待输入的新数据,如果是输出设备,CPU通过读入的状态信息,可以了解输出设备是否作好了接受 CPU传送新数据的准备 。 显然,1bit的状态信息可以反应 1个外设的两种状态,1个 8位的状态端口则可以反应外设的 8
个状态信息总之,I/O接口电路中一般有数据端口,命令端口以及状态端口,每个端口地址是不相同的,CPU均通过数据总线来传送三种端口的数据 。 有些 I/O接口中,还有中断控制逻辑电路,以便外设与 CPU之间以中断方式进行输入或输出,其优点是可以提高 CPU的工作效率
6.3.2 CPU与 I/O设备传输数据的几种方式
CPU以及 I/O设备的种类繁多,CPU与 I/O设备所构成的系统不可能完全相同,CPU与 I/O设备之间传输数据的方式也不完全相同,接口电路的结构与功能也不同,驱动程序也不相同一般可以划分为 五种 传输数据的方式:无条件 I/O传送方式,查询式输入输出方式,中断控制方式,DMA方式以及 I/O处理器控制方式一,无条件输入输出方式无条件输入输出方式 是一种最简单的输入 /输出控制方式,其 I/O接口电路及软件比较简单,
所有的操作均由执行程序来完成特点,输入接口电路总是准备好了等待输入给
CPU的数据,输出接口电路总是准备好了接受来自 CPU的数据 。 CPU无须查询 I/O设备是否准备就绪,直接用汇编语言或高级语言编程,实现输入或输出操作此种方式的接口电路是查询式输入输出方式接口电路的基础
IOR*与 IOW*的产生无条件输入接口电路及输入时序无条件输出接口电路及输出时序二、查询式输入输出方式
1.查询式输入方式当 CPU采用查询方式从外设读取数据时,
CPU必须首先从状态端口查询外设的数据是否已经准备好,确认已准备好后,才能执行一次数据输入操作例:假设状态端口与数据端口的地址分别为 300H和
301H,状态信息从数据总线上的 D0位读入 CPU中,查询式输入程序段如下:
MOV DX,300H ; 状态口地址传送给 DX
ABC,IN AL,DX ; 读入状态信息
TEST AL,01H ; AL∧ 01H,影响 ZF标志
JZ ABC ; 如果状态信息为 0转 ABC
MOV DX,301H; 数据端口地址传送给 DX
IN AL,DX ; 读入数据信息
2.查询式输出方式当 CPU采用查询方式向外设输出数据时,
CPU必须首先从状态端口查询外设是否已经作好了接受 CPU数据的准备,若没有准备好,
则要继续查询,若准备好了,CPU便执行一次数据输出操作例:假设状态端口与数据端口的地址分别为 3FOH和
3F1H,状态信息从数据线上 D7位读入 CPU中,查询式输出程序段如下:
MOV DX,3F0H ; 状态口地址传送给 DX
CBA,IN AL,DX ; 读入状态信息
TEST AL,80H ; AL∧ 80H,影响 ZF标志
JZ CBA ; 如果状态信息为 0则转 CBA
MOV DX,3F1H ; 数据端口地址传送给 DX
MOV AL,[SI] ; 从内存读取数据给 AL
OUT DX,AL ; 向数据口输出数据
6.3.2 CPU与 I/O设备传输数据的几种方式例 【 6-1】 一个查询式 A/D转换的基本结构。在数据采集系统中,常采用查询式输入方式来实现 A/D
转换。运用这种 A/D转换方式,也能满足大多监测与控制的实际需要。查询式 A/D转换的基本结构图如图 6-10
查询式 A/D转换的基本结构图设 A/D转换为 8位,而且假设,及的地址分别是
302H,301H以及 300H,如果要顺序采集 CH0与 CH1两道模拟信号,各采集 100次,并将所采集的数据分别存入内存数据段内起始位置为 0000H和 1000H的内存空间,编写如下程序段:
MOV SI,0000H ; 存放采集 CH0数据的起始地址传送给 SI
MOV DI,1000H ; 存放采集 CH1数据的起始地址传送给 DI
MOV CX,0064H
BGN,MOV DX,300H ; y0* 通道地址给 DX
MOV AL,00000000B
OUT DX,AL ; 启动信号 =0,选 CH0
MOV AL,00001000B
OUT DX,AL ; 启动信号 =1,仍选通 CH0
MOV AL,00000000B
OUT DX,AL ; 启动信号 =0,仍选通 CH0
MOV DX,301H ; 状态口地址给 DX
ABC,IN AL,DX
TEST AL,80H
JZ ABC ; 如果 EOC=0继续查询
MOV DX,302H ; 数据口地址给 DX
IN AL,DX ; 读入转换后的数字量
MOV [SI],AL ; CH0通道数字量存入内存
INC SI
MOV DX,300H ; 选通道地址给 DX
MOV AL,0000 0001B
OUT DX,AL ; 启动信号 =0,选 CH1
MOV AL,0000 1001B
OUT DX,AL ; 启动信号 =1,仍选通 CH1
MOV AL,0000 0001B
OUT DX,AL ; 启动信号 =0,仍选通 CH1
MOV DX,301H ;状态口地址给 DX
CBA,IN AL,DX
TEST AL,80H ;读入 EOC值
JZ CBA ; 如果 EOC=0,转 CBA
MOV DX,302H ;数据口地址给 DX
IN AL,DX ; 读入 CH1通道转换后数字量
MOV [DI],AL ; CH1通道数字量存入内存
INC DI
LOOP BGN
3.查询式输入输出方式存在的问题从图 6-11可以看出,当 CPU与 I/O设备之间采用查询式输入输出方式交换数据时,CPU必须顺序查询每一个外设,当某一个外设不需要服务时,CPU也得按顺序查询一次 。 外设总是处于被动状态,CPU无法快速响应外设要求及时服务的请求 。 CPU为了服务外设,
其它程序会停止执行,所以,查询式 I/O方式不可能是微型计算机外设工作的最佳选择,不适用于实时监控系统三,中断方式输入输出中断 是外设或者其他中断源中止 CPU当前正在执行的程序,转向为申请中断的外设(或中断源)执行服务程序,一旦服务程序执行结束,
必须返回到被中断程序的断点处,接着执行原来的程序运用中断控制方式实现外设数据的输入输出,完全可以解决查询式输入输出存在的问题。在中断控制方式下,所有的 I/O
设备都可以工作在主动请求 CPU为该外设服务的状态下,一旦一个或多个外设申请中断服务,则 CPU根据各 I/O设备预先被设置的中断优先级别,逐个予以响应,并进行中断处理、中断返回,实现中断处理的全过程图 6-12 2个中断源中断过程的示意图中断控制方式的输入输出是微机中常用的一门技术,采用中断技术后,CPU能与所有的外设并行工作,能及时服务外设,并处理系统异常情况,从而可以提高微机的整体性能,提高计算机的运行速度。有关中断技术的详细内容请看第 7章四,直接存储器存取 ( DMA) 方式
1.什么是 DMA?
DMA( Direct Memory Access)即直接存储器存取方式,是指在专门的 DMA控制器的控制下实现外围设备与内存储器直接交换数据的一门接口技术。
在这种方式下,数据传输不经过 CPU,传送的速度就只取决于存储器和外设的工作速度 。 在这种方式下,数据传输不经过 CPU,传送的速度就只取决于存储器和外设的工作速度微型计算机在一般情况下,由 CPU管理数据总线、地址总线以及控制总线,当系统有 DMA
请求时,CPU便让出三种总线的控制权,或让出有关这三种总线的全局总线,转由 DMAC控制三种总线实现高速外存与内存之间数据的交换。由 DMAC控制数据传送结束后,DMA向
CPU撤除 DMA请求,交还三总线控制权给 CPU,
于是结束一次 DMA传输的过程
2,DMA系统的基本组成图 6-13 DMA系统的基本组成
DMAC内部包括四个基本寄存器
① 地址寄存器,用于存取下一个要访问的内存单元的地址,地址寄存器的内容加 1或减 1操作,取决于 DMAC的设计
② 字节计数器,用于存放尚未传送完毕字节的数量,字节计数器在 DMA过程中自动作减 1操作
③ 控制寄存器,用于对 DMAC操作的控制
④ 状态寄存器,反映 DMAC当前所处的状态,例如,
数据块传输是否结束等状态信息
3,DMA传送的基本原理五,I/O处理器控制方式如前所述,中断方式输入输出仍然是一种程序控制方式,DMA传送方式只能实现比较单纯的数据传送,在大型计算机系统与高档微机中,外设数量多,传输速度快,I/O操作频繁,为了进一步减轻
CPU的负担,提高整体性能,采用了 I/O处理器
( IOP)控制方式来实现外设数据的 I/O传送,IOP
处理技术也称之为通道技术,IOP也被称之为,通道,
具有 I/O处理器的计算机系统如图 6-15所示图 6-15 具有 I/O处理器的计算机系统习题 6
6.1 6.2 6.3 6.7 6.8 6.10 6.12
从图 6-15中可以看出,,CPU可以直接通过连接在系统总线上的 I/O接口电路访问 I/O设备,也可以通过 IOP及 IOP的局部 I/O总线所连接的 I/O接口电路,
CPU间接管理 I/O设备,IOP实质上是一种微处理器,
协助主 CPU管理外设,因此,也常称其为协处理器 。
它分担 CPU的一部分功能,可以实现对外设的统一管理及外设与主存之间的数据交换,使整个系统的效率大大提高