650 likes | 908 Views
第 6 章 微型计算机和外设之间的 数据传输. 第 6 章 微型计算机和外设之间的数据传输. 6.1 接口及接口技术 6.2 I/O 端口的编址方式 6.3 微处理器与 I/O 设备数据传送的几种方式. 教学目的和教学要求. 通过本章的学习,使学生掌握接口电路的基本概念、接口电路的主要功能、两种 I/O 端口的编址方式、 32 位微处理器采用 I/O 编址的译码、微处理器与 I/O 设备数据传送的查询式输入输出方式以及中断方式输入输出。 熟悉 32 位微处理器保护模式下的 I/O 空间,直接存储器存取( DMA )方式以及 I/O 处理器控制方式。.
E N D
第6章 微型计算机和外设之间的数据传输 • 6.1 接口及接口技术 • 6.2 I/O 端口的编址方式 • 6.3 微处理器与I/O设备数据传送的几种方式
教学目的和教学要求 通过本章的学习,使学生掌握接口电路的基本概念、接口电路的主要功能、两种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所示:
CPU 接口 电路 I/O 设备 什么是I/O接口(电路)? • I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路 • PC机系统板的可编程接口芯片、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端口建立的地址空间与内存地址空间是两个独立的地址空间,也常称这种方式为独立编址方式。
专用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寻址方式提供不同的保护机制。 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操作。在保护模式下,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位数据线的连接
例如: 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.1I/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的工作效率。 总之,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设备是否准备就绪,直接用汇编语言或高级语言编程,实现输入或输出操作。 此种方式的接口电路是查询式输入输出方式接口电路的基础。
二、查询式输入输出方式 1.查询式输入方式 当CPU采用查询方式从外设读取数据时,CPU必须首先从状态端口查询外设的数据是否已经准备好,确认已准备好后,才能执行一次数据输入操作 。
例:假设状态端口与数据端口的地址分别为300H和301H,状态信息从数据总线上的D0位读入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中,查询式输出程序段如下: 例:假设状态端口与数据端口的地址分别为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转换为8位,而且假设、及的地址分别是302H、301H以及300H,如果要顺序采集CH0与CH1两道模拟信号,各采集100次,并将所采集的数据分别存入内存数据段内起始位置为0000H和1000H的内存空间,编写如下程序段:设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