第5章基本输入输出系统.docx
《第5章基本输入输出系统.docx》由会员分享,可在线阅读,更多相关《第5章基本输入输出系统.docx(137页珍藏版)》请在冰点文库上搜索。
第5章基本输入输出系统
第5章基本输入输出系统
【教学目的】掌握接口的基本概念、IO端口的编址方法和基本的数据传送方式
【教学重点】IO端口的编址方法和基本的数据传送方式
【教学难点】中断方式和DMA方式
【教学方法和手段】课堂教学
【课外作业】P193习题3,4,7,10
【学时分配】6学时
【自学内容】8237的使用
【讲授内容】
5.1概述
输入输出系统包括:
①外部设备(输入输出设备和辅助存储器)
②设备控制器----主机(CPU和存储器)之间的控制部件,诸如磁盘控制器、打印机控制器等,有时也称为设备适配器或接口,其作用是控制并实现主机与外部设备之间的数据传送。
5.1.1接口的基本概念
1、什么是接口
计算机在工作过程中,CPU要不断地与其它部件交换信息。
CPU不是直接与外部设备交换信息的,而是经过一个中间电路,这个电路就称为“接口电路”,简称“接口”。
所谓接口就是主机与外部设备连接的桥梁,由它来完成CPU与外部设备之间信息的传递。
一般将外部设备与接口合称为“I/O系统”。
接口又称为“设备控制器”或“适配器”。
2、为什么要有接口电路
外部设备为什么要通过接口电路与CPU连接?
为什么不直接与CPU的总线相连接呢?
从CPU的角度来看,对外部设备的访问(读/写)与对存储器的访问是类似的,为什么存储器可以直接通过总线与CPU连接,而外部设备却要通过接口电路来与CPU连接呢?
这是因为:
存储器的基本结构简单(只有很少几种),只要求几个简单的控制信号,而且存储器的访问速度一般都比较快,CPU与存储器之间的定时与协调比较容易,因此存储器可以直接通过总线与CPU连接。
而外部设备一般具有以下特点:
⑴外部设备的品种繁多
从类型上看:
有输入设备、输出设备、输入/输出设备、测量设备、通信设备、控制设备等。
从结构上看:
有机械式的、电子式的、机电混合式的。
从原理上看:
各类设备的工作原理又是各不相同的。
⑵外部设备的工作速度分布范围宽
如:
电传打字机每秒能传输100个信息单位,温度传感器有可能长达几分钟才改变一个数据,软盘的传输速率为每秒2.5兆位,硬盘的传输速率为每秒5兆位以上。
⑶外部设备的信号类型和电平种类也各有不同
有数字量的,有模拟量的,有电压型的,有电流型的,有TTL电平的,有CMOS电平的。
⑷外部设备的信息结构格式也各不相同,需要接口电路来协调转换。
可见:
⑴CPU与外设两者的信号不兼容,信号线上的功能定义、逻辑定义、时序关系都不一致;
⑵CPU与外设的工作速度不兼容,CPU速度高,外设速度低;
⑶若无接口,CPU要直接控制对外设的操作,大量占用CPU时间,而大大降低效率;
⑷若外设直接由CPU控制,会使其硬件结构依赖于CPU,而不利于外设的发展。
所以,外部设备一般都要通过一个接口电路来与CPU连接。
5.1.2设备控制器(I/O接口)的基本功能
简单地讲,一个接口的基本功能是:
在系统总线和I/O设备之间传输信号,提供缓冲作用,以满足接口两边的时序要求。
由于外设的多样性及复杂性,对于不同的外设,接口的功能也不尽相同。
一般说来,接口应具备下述功能:
1.设备的选择(寻址)功能
首先,接口要对选择存储器和I/O的信号能够作出解释,此外,要对CPU送来的片选信号进行识别,以便判断当前本接口是否被访问,如果受到访问,还要决定接口中哪个寄存器受到访问。
这就要在接口中设置I/O端口地址译码电路对外设进行寻址。
CPU将I/O设备的端口地址代码送到接口中的地址译码电路,并经译码电路,把地址代码翻译成I/O设备的选择信号。
一般是把高位地址用于接口芯片选择,低位地址进行芯片内部寄存器的选择,以选定需要与自己交换信息的设备端口,只有被选中的设备才能与CPU进行数据交换或通信。
没有选中的设备,就不能与CPU交换数据。
⑵.输入输出功能(执行CPU的命令和返回外设的状态)
接口要根据CPU送来的读/写信号决定当前进行的是输入还是输出操作,并且随之能从总线上接收从CPU送来的数据和控制信息,或者将数据或状态信息送到总线上。
CPU并不是直接把命令送到被控对象,而是以命令代码的形式先发送到接口中的命令寄存器,称之为“命令口”。
再由接口电路对命令代码进行识别和分析,分解成若干个控制信号,传送到I/O设备,使其产生相应的具体操作通过接口电路来进行控制的。
外设的状态信号是以状态代码形式存放在接口电路的状态寄存器中,称之为“状态口”,以便向CPU报告。
⑶.数据缓冲功能
当外设速度不能与CPU速度相匹配时,由接口提供缓冲器,对传送数据进行缓冲,用以消除计算机与外设在定时或数据处理速度上的差异。
接口中一般都设置数据缓冲寄存器(简称数据缓存器),称之为“数据口”。
数据缓存器又分为输入和输出缓存器,前者暂存外设送来的数据,以待CPU将它取走;后者暂存CPU送往外设的数据。
有了数据缓存器,就可以使高速工作的CPU与慢速工作的外设协调工作。
由于数据缓存器直接连在系统数据总线上,因此它应具有三态特性。
⑷.信号转换功能
由于外设所需的控制信号和它所能提供的状态信号往往同微机的总线信号不兼容。
不兼容性表现在两者的信号功能定义、逻辑关系、电平高低以及工作时序的不一致。
因此,信号转换(包括CPU的信号与外设的信号的逻辑关系上、时序配合上以及电平匹配上的转换),就成为接口设计中的一个重要任务。
⑸.数据转换功能(数据宽度与数据格式转换)
由于外设信息格式复杂,要由接口进行计算机与外设间有关信息格式的相容性转换。
如:
正负逻辑转换;串-并转换;数/模或模/数转换等。
例如:
CPU所处理的是并行数据(8位。
16位或32位),而有的外设(如串行通信设备、磁盘驱动器等)只能处理串行数据,在这种情况下,接口就应具有数据“并-串”和“串-并”的转换能力;为此,在接口中设置移位寄存器。
CPU与有些外设交换数据时,要求按一定的数据格式传送,如串行通信中的起止式异步通信数据格式及面向字符的同步通信数据格式。
此时,需要在CPU与通信设备之间进行数据格式转换。
⑹.中断管理功能
接口应能接收中断请求并暂存中断请求,进行中断排队,发送中断请求信号。
而且还应有受送中断类型号,以供CPU识别中断类型的功能。
⑺.提供时序控制功能
接口具有自己的时序控制电路,对外设提供不同的控制时序。
有的接口设有自己的时钟发生器。
以满足计算机和各种外设在时序控制方面的广泛要求。
⑻.可编程功能
通常,大规模集成电路接口对外设可有多种控制方式,应能由软件决定到底工作于哪一种方式。
另外,该种接口对外设可发出不同的控制信号,接口可处于不同的工作状态,这些都应该能由软件来完成。
当前,几乎所有的大规模集成电路接口都是可编程的。
⑼.电气特征的匹配功能
对于由MOS工艺制造的微处理器,由于它的输出电流、电平与扇出能力不能与外部设备相匹配,其间必须加有缓冲的电路。
⑽.错误检测功能
接口应能对信息传输过程中发生的传输错误、溢出错误等进行检测。
上述功能并非要求每种接口都具备,对不同用途的微机系统,其接口功能不同,接口电路的复杂程度大不一样。
但前3种功能是接口电路中的核心部分,是一般接口都需要的。
5.2IO端口的编址方式
5.2.1I/O端口的概念
1、I/O端口
端口(port)是接口电路中能被CPU直接访问的寄存器的地址。
CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态和传送数据,因此,一个接口可以有几个端口,如命令口、状态口和数据口,分别对应于命令寄存器、状态寄存器和数据寄存器。
有的接口包括的端口多(如8255A并行接口芯片有4个端口,8237A芯片有16个端口),有的接口包括的端口少(如8251A、8259A芯片只有两个端口)。
对端口的操作也有所不同,有的端口只能写或只能读,有的既可以写也可以读。
一般一个端口只能写入或读出一种信息,但也有几种信息共用一个端口的,如8255A的一个命令口可接收两种不同的命令,8259A的一个命令口可接收4种不同的命令。
计算机给接口电路中的每个寄存器分配一个端口,因此,CPU在访问这些寄存器时,只需指明它们的端口,不需指出是什么寄存器。
这样,我们在输入输出程序中,只看到端口,而看不到相应的具体寄存器。
也就是说,访问端口就是访问接口电路中的寄存器。
2、I/O操作
通常所说的I/O操作是指对I/O端口的操作,而不是对I/O设备的操作,即CPU所访问的是与I/O设备相关的端口,而不是I/O设备本身。
5.2.2IO端口的编址方式
为了让CPU来访问这些端口,每个I/O端口都必须有确切的地址号。
就是所谓I/O接口的编址(寻址)问题。
I/O端口有两种编址方式:
一种是I/O端口地址与内部存储器地址统一编址方式,称为内存映射(象)(memorymapped)I/O编址;
另一种是I/O端口地址和内存储器分开各自独立编址,称为I/O映射(象)(I/Omapped)I/O编址。
1、IO端口和存储器统一编址
在单总线组成的体系结构中,CPU与存储器之间,或者CPU与I/O端口之间的信息交换。
一般都通过同一组地址总线和数据总线进行。
因此,可以把I/O端口寄存器看成存储区域中的某个单元,即端口占用存储区域中某个地址或者某几个地址号。
其主要优点有二:
其一:
它可以利用访问存储器的指令来访问I/O端口。
而访问存储器的指令功能比较强,不仅有一般的传送指令.还有算术、逻辑运算指令.以及各种移位、比较指令。
用户可以像对待存储器那样,直接对I/O端口内的数据进行处理,而不必采取预先将数据送入CPU寄存器等步骤,这样可以提高对端口数据的处理速度。
其二:
若CPU具有支持内存保护功能,同样也保护了I/O端口。
其主要缺点也有二:
其一:
I/O端口占用了部分存储空间,从而使用户可用的内存空间相对减少了。
其二:
存储访问指令一般比I/O访问指令长,因此指令执行时间会较长,而且I/O端口地址信息增多,使I/O端口译码电路相对复杂。
例如:
MCS51单片机就是将I/O端口与数据存储器统一编址。
对I/O的访问是采用访问数据存储器的指令来访问的。
读操作:
MOVXA,@Ri和MOVXA,@DPTR
写操作:
MOVX@Ri,A和MOVX@DPTR,A
2、IO端口单独编址
这种方式是将I/O端口单独编址,不占用主存的存储空间。
访问I/O端口使用专门的I/O指令。
其主要优点有二:
其一:
I/O端口不占用主存空间。
其二:
专门的I/O指令短,译码简单,执行速度快。
其主要缺点是:
I/O指令功能一般比较弱,只有运算处理功能,保护能力也较差。
例如:
Intel8086CPU就是将I/O端口单独编址,使用专门的I/O指令来访问I/O端口。
输入指令
INAL,nINAX,n
INAL,DXINAX,DX
输出指令
OUTAL,nOUTAX,n
OUTAL,DXOUTAX,DX
其中n是直接端口地址,DX是间接端口寻址寄存器,8086CPU能寻址1024个I/O端口。
5.2.3I/O端口地址译码
微机要对指定的I/O端口进行读写操作,就必须要提供所要操作的端口地址。
I/O端口的地址译码就是通过CPU发出的地址信号选定一个指定端口的过程。
I/O端口地址译码电路的功能就是将地址总线上的地址信号进行译码并输出有效的端口选通(片选)信号,从而使CPU选中相应的I/O端口以便进行读写操作。
地址译码电路输出的片选信号通常为低电平有效。
I/O端口地址译码电路的设计原理与存储器的地址译码电路相同,应注意的是:
I/O端口地址译码电路不仅与地址信号有关,而且与控制信号有关,通常需要把地址信号和控制信号进行组合。
例如,用IOR、IOW信号控制对I/O端口的读写,用AEN信号区分是否DMA传送等。
按照译码电路采用的元器件不同可以分为门电路译码和专用译码器译码。
1.门电路译码
门电路译码的特点主要是结构简单,使用方便灵活,适于系统中I/O端口较少的场合。
【例5.1】如图5-2所示是由门电路组成的地址为2F0H端口译码电路。
解:
2F0H=1011110000B,为了使T1输出是低电平,则要求输入的A2__A9分别是11110000,T2中AEN信号为控制信号,由DMA控制器发出,为低电平时表示CPU占用系统总线,可以访问某个端口,译码器工作;为高电平时表示DMA控制器占用系统总线,应让端口不被访问,译码器停止工作,避免在DMA传送期间DMA控制器错误访问某端口。
在本例题中应取低电平。
地址总线的A1和A1取0即地址2F0H。
再和端口读/写控制组合提供译码信号。
图5-22F0H端口地址的门电路译码电路
2.译码器译码
译码器是寻址电路的基本接口芯片,常用的译码器接口芯片有2-4线译码器74LS139、3-8线译码器74LS138和4-16线译码器74LS154。
这些不同型号的译码器接口芯片的工作原理和控制过程基本相同,这里我们就以3-8译码器74LS138为例。
3-8译码器74LS138的引脚图如图5-3所示。
图5-374LS138的引脚图
图中G1、
2A、
2B为控制端,只有在G1等于1,
2A、
2B都等于0,三个条件都满足的情况下74LS138才能工作。
只要任何一个条件不满足,译码器功能都将被禁止。
A、B、C分别是74LS138的三个输入分量,Y0-Y7是它的8个输出分量,低电平有效,当输入为A、B、C的某一个组合时,只对应一个输出有效,其余输出都是高电平。
它们的组合关系如表5-1所示。
表5-174LS138输入输出关系
【例5.2】有一片8255A并行接口芯片,已知该芯片有4个端口地址,且定为060H~063H,试设计译码电路。
图5-4译码器译码
解:
060H~063H即0001100000B~0001100011B
8255A片内4个端口,可以由地址线A1和A0直接进行寻址,而该芯片的片选信号则应由高位地址线A9~A2产生。
为了使8255A芯片4个端口的地址为060H~063H,高位地址线要满足A9~A2=00011000的要求。
5.3I/O接口与外部设备之间的数据传送方式
I/O接口与外部设备的数据传送方式是由所用外部设备决定的。
根据外部设备的特点,有以下三种数据传送方式:
1、无条件传送方式
这种方法认为外部设备同存储器一样,始终是准备好的,能随时接收或提供数据。
这种接口比较简单,只需具有选址和缓冲功能即可。
2、同步传送方式
所谓同步传送方式是指接口以某一确定的时钟速率和外设交换数据。
例如,对磁盘信息的读写,计算机外部的同步通信都采用这种传送方式。
这是一种速度较高的数据传送方式。
它适用于中等以上数据传送速率和按规则间隔工作的外部设备。
这种方法的关键是确定数据传送的起始与停止,通常采用的是使用专门信息或作出某些规定。
同步传送的原则较简单,但接口需要额外的硬件支持。
3、应答方式
应答方式又称为握手(Handshake)方式。
这种方法要安排一对握手线。
一根由接口送信号到外设,一根由外设送信号到接口。
它们可以是一位控制信号或状态信号。
5.4CPU与I/O接口之间的数据传送方式
CPU与I/O接口的数据传送方式通常称为输入/输出的控制方式。
采用何种方式和接口与外设之间的数据传送方式有很大关系。
常见的方式有以下几种:
5.4.1、无条件传送方式
无条件传送方式在数据交换时,硬件上不需要设计与外设的握手信号,软件上也不需要判别外设数据是否准备好,或外设是否处于忙状态,只需要在确定外设工作速度的前提下,插入一段定时程序执行输入/输出指令即可。
无条件传送方式的优点主要是硬件、软件的开销较小,硬件的I/O接口中只需要设置输入缓冲器或输出锁存器,以及相应的端口译码电路,而不需要状态端口和控制端口;软件只需要等待一段时间进行输入/输出即可。
无条件传送方式适用于数据变化比较缓慢的简单外设,如读取开关状态、驱动数码显示管等。
图5-5是一个无条件传送输入的接口电路,图5-6是无条件传送输出的接口电路。
图5-5无条件传送输入接口电路图5-6无条件传送输出接口电路
MOVDX,160H;三态缓冲器芯片的选中地址
INAL,DX;采集数据
MOVDX,160H;数据锁存器的选中地址
MOVAL,[BX]
OUTDX,AL;输出数据
5.4.2、查询传送方式
⑴概念:
很多外部设备,其状态不是已知的。
例如,有些与CPU异步工作的设备,其工作状态总在变化,在这种情况下,利用无条件传送方式进行数据传送就很难保证数据的可靠性,因此必须在数据传送之前,对目标设备的状态进行查询,确知外设已做好了传送数据的准备时再进行数据传送,否则,CPU等待并持续不断地查询,一旦外设准备好,则立即进行读或写操作,这种方式称为查询传送方式。
⑵硬件结构:
在查询传送方式中,外设的状态是通过其接口反映给CPU的,所以在这种方式下的接口电路中,除用于传送数据的端口外,还需要一个传送外设状态的端口。
其接口硬件如下图所示。
由图可见,查询传送方式的接口硬件由数据端口、状态端口、端口选择与控制逻辑三部分组成。
⑶数据传送过程:
对于查询传送方式来说.一个数据传送过程由三个环节组成;
●CPU从接口中读取状态字。
●CPU检测状态字的对应位是否满足“就绪”条件,如果不满足,则回到前一步,继续读状态字。
●如状态字表明外设已处于“就绪”状态,则传送数据。
输入设备在数据准备好之后便向接口发一个选通信号。
这个选通信号有两个作用,一方面将外设的数据送到接口的锁存器中;另一方面使接口中的一个D触发器输出,从而使接口中三态缓冲器的READY位置.数据信息和状态信息从不同的端口经过数据总钱送到CPU。
按数据传送过程的三个步骤CPU从外设输入数据时先读取状态字,检查状态字是否表明数据准备就绪,即数据是否已进入接口的锁存器中,如准备就绪,则执行输入指令读取数据,此时,状态位清零,这样,便开始下一个数据传输过程。
图5-7是有条件传送输入的接口电路原理图,启动ADC以后,转换结束时产生EOC信号,把转换结果锁存至锁存器,把状态触发器置为1,表示数据已经准备好。
图5-7有条件传送输入的接口电路原理图
控制端口——写164H端口,译码器输出和IOW信号同时有效,启动ADC转换。
状态端口——读162H端口,译码器输出和IOR信号同时有效,打开通过D0读取状态信息。
数据端口——读160H端口,译码器输出和IOR信号同时有效,打开三态缓冲器,从D7~D0读入数据,同时清除状态信息。
从ADC读取一个数据到AL的部分程序:
READ:
MOVDX,160H
INAL,DX;清状态
MOVDX,164H
OUTDX,AL;启动ADC
READ1:
MOVDX,162H
INAL,DX;查询状态
TESTAL,1
JZREAD1
MOVDX,160H
INAL,DX;读取数据
RET
2)有条件传送方式输出数据
图5-8是有条件传送输出的接口电路原理图
上图5-8是有条件传送输出的接口电路原理图,电路原理如下:
①写到164H端口,产生一个负脉冲来启动外设开始工作。
②写数据到160H端口,CPU输出数据到锁存器,同时置“1”状态触发器,为外设提供状态信息:
“数据已准备好”。
③读取162H端口,CPU查询状态,看外设是否取走数据。
(外设取走数据,则将发出ACK信号,清除状态触发器)
将AL中的数据通过有条件传送方式输出的部分程序:
WRITE:
MOVDX,164H
OUTDX,AL;启动外设
MOVDX,160H
OUTDX,AL;输出数据
MOVDX,162H
WRITE1:
INAL,DX;查询状态
TESTAL,1
JNZWRITE1
RET
通常,无条件方式和查询方式又称为程序方式。
5.4.3、程序中断方式
1、查询方式的不足之处:
从查询传送方式的工作过程可以看出,查询传送方式实际上是程序循环等待方式,即利用程序循环检测外设状态,直到外设准备好时才能进行数据传送的操作。
在这种方式下,CPU只能循环执行查询程序而不能进行其它工作,因此其工作效率显然是很低的。
另外,用查询方式工作时,如果一个系统中有多个外设,那么CPU只能轮流对每个外设进行查询,而这些外设的速度往往并不相同,这时CPU显然不能很好地满足各个外设随机地对CPU提出输入/输出服务的要求,所以此方式不具备实时性。
2、中断方式:
为了提高系统效率和实时性,可以采用中断传送方式。
在中断传送方式下,外设具有申请CPU服务的主动权,当输入设备已将数据准备好或者输出设备可以接收数据时,便可以向CPU发出中断请求,使CPU暂时停下目前的工作而和外设进行一次数据传输。
等输入操作完成后,CPU继续进行原来的工作。
可见,中断传送方式就是外部设备中断CPU的工作,使CPU停止执行当前程序,而去执行一个为外部设备的数据输入输出服务程序,该服务程序称为中断处理子程序或中断服务子程序。
中断子程序执行完后,CPU又转回来执行原来的程序。
被外界中断时,程序中下一条指令所在处称为断点,从中断服务程序返回时,从断点处继续执行被中断的程序。
在中断传送时,CPU和外设处在并行工作的状态下。
CPU不必在两个输入/输出过程之间对接口进行状态测试和等待,而可以去作别的处理,因为每当外部设备准备就绪时,会主动向CPU发中断请求,由此而进入一个传输过程。
此过程完成后,CPU又可以执行别的任务,而不是处在等待状态,这样就大大提高了CPU的效率。
3、中断接口电路
利用中断传送方式进行数据输入时的接口电路如图5-10所示,在输入设备准备好一个数据时,发出选通信号STB。
该选通信号把数据装入输入锁存器,同时使中断请求触发器置“1”。
如果此时中断是开放的,即中断屏蔽触发器输出为1,则允许向CPU发出中断请求信号INTR。
如果此时系统允许该设备中断请求,则CPU在现行指令执行完毕后响应该设备的中断请求,暂停现行程序的执行,发出中断响应信号INTA。
外设将中断矢量送往数据总线,从而CPU转入中断服务程序,读入数据,同时复位中断请求触发器,以避免再次发生中断申请。
在中断处理完毕后,CPU再返回执行被中断的程序。
图5-10中断传送方式数据输入的接口电路
5.4.4、直接存储器存取(DMA)方式
1、中断方式的不足之处:
比起无条件方式和查询方式来,利用中断方式进行数据传送可以大大提高CPU的工作效率。
但在中断方式下,仍然是通过CPU执行程序来实现数据传送的,每进行一次传送,CPU都必须执行一遍中断处理程序。
而每进入一次中断处理程序,CPU都要保护断点和标志寄存器;此外,在中断处理程序中,通常有一系列保护寄存器和恢复寄存器的指令,显然这些指令和数据传送没有直接关系。
但在执行时,都要使CPU花费不少时间;还有,对于8086以上的微处理器,本来取指令和执行指令是分别由总线接口部件和执行部件来完成的,它们并行工作。
当中断或从中断返回时,预取的指令全部作废,执行部件要等待总线接口部件重新装入新的指令后才开始执行。
上述几方面的因素造成中断方式下的传输效率仍然不是很理想。
如果I/O设备的数据传输率较高,那么CPU和这样的外部设备进行数据传输时,即使尽量压缩程序查询方式和中断方式中的非数据传输时间,也仍然不能满足要求。
这是因为在这两种方式下,还存在另外一个影响传输速度