第6章 微型计算机和外设之间的 数据传输
第6章 微型计算机和外设之间的数据传输 6.1 接口及接口技术 6.2 I/O 端口的编址方式
教学目的和教学要求 熟悉32位微处理器保护模式下的I/O空间,直接存储器存取(DMA)方式以及I/O处理器控制方式。 通过本章的学习,使学生掌握接口电路的基本概念、接口电路的主要功能、两种I/O端口的编址方式、32位微处理器采用I/O编址的译码、微处理器与I/O设备数据传送的查询式输入输出方式以及中断方式输入输出。 熟悉32位微处理器保护模式下的I/O空间,直接存储器存取(DMA)方式以及I/O处理器控制方式。
本章重点、难点 重点: 难点: I/O端口的编址方式 CPU与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接口电路
什么是微机接口技术? 处理微机系统与外设间联系的技术 注意其软硬结合的特点 根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备
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端口建立的地址空间与内存地址空间是两个独立的地址空间,也常称这种方式为独立编址方式。
缺点:CPU的引脚上必须具有能区分出访问内存还是访问I/O端口的信号,作为I/O接口电路中端口译码电路以及存储器片选译码电路的输入信号。 优点:不占用内存空间,使用专门I/O指令访问I/O端口,I/O速度快。 缺点:CPU的引脚上必须具有能区分出访问内存还是访问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指令将不被执行,相应还要产生一个普通的保护故障。
在虚拟8086模式下,所有的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接口电路及软件比较简单,所有的操作均由执行程序来完成。 一、无条件输入输出方式 无条件输入输出方式是一种最简单的输入/输出控制方式,其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转换的基本结构图
MOV SI,0000H ;存放采集CH0数据的起始地址传送给SI 设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 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
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,传送的速度就只取决于存储器和外设的工作速度。
2.DMA系统的基本组成 微型计算机在一般情况下,由CPU管理数据总线、地址总线以及控制总线,当系统有DMA请求时,CPU便让出三种总线的控制权,或让出有关这三种总线的全局总线,转由DMAC控制三种总线实现高速外存与内存之间数据的交换。由DMAC控制数据传送结束后,DMA向CPU撤除DMA请求,交还三总线控制权给CPU,于是结束一次DMA传输的过程。
DMAC内部包括四个基本寄存器 ①地址寄存器:用于存取下一个要访问的内存单元的地址,地址寄存器的内容加1或减1操作,取决于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的一部分功能,可以实现对外设的统一管理及外设与主存之间的数据交换,使整个系统的效率大大提高
习 题 6 6.1 6.2 6.3 6.8 6.10