输入输出接口技术_第1页
输入输出接口技术_第2页
输入输出接口技术_第3页
输入输出接口技术_第4页
输入输出接口技术_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7.1 输入输出接口概述7.2 CPU与外设数据传送的方式7.3DMA控制器8237第七章输入/输出接口接口的概念接口是指CPU和存储器、外设或者两种外设之间,或者两种机器之间通过系统总线进行连接的逻辑部件(或者电路),它是CPU与外界进行信息交换的中转站。7.1概述7.1概述一、接口电路的分类和功能外设必须通过接口电路与CPU相连接数据总线控制总线地址总线数据寄存器外部设备数据线控制线状态线控制寄存器状态寄存器一、接口电路的分类和功能接口电路按通用性分为两类:通用接口和专用接口通用接口:可供多种外部设备使用的标准接口,目的是使微机正常工作通用接口通常制造成集成电路芯片,称为接口芯片。最初的IBM-PC使用了6块接口芯片:8284(时钟信号发生器)、8288(总线控制器)、8255(并行接口)、8259(中断控制器)、8237(DMA控制器)、8253(计数器/定时器)后来的微机将这些芯片(当然还集成了其它的接口芯片)集成为大规模集成电路芯片,称为芯片组。一、接口电路的分类和功能专用接口:为某种用途或某类外设而专门设计的接口电路,目的在于扩充微机系统的功能。专用接口通常制造成接口卡,插在主板总线插槽上使用。通用接口和专用接口的界限并不严格。按照可编程性,接口芯片分成硬步线逻辑接口芯片和可编程接口芯片。可编程接口芯片的功能可以由指令来控制。一、接口电路的分类和功能接口电路的功能:1)缓冲锁存数据比如外扩存储器时,使用锁存器将CPU的AD引脚上的地址数据锁存起来。当总线上挂接多个外设时,采用带三态门的缓冲器将各个外设和总线连接起来。2)地址译码通过接口的地址译码,产生选通信号,选中相应的外设。3)传递命令接口接收CPU送来的控制信号,对外设进行控制管理。同时,外设的状态和应答信号也通过它传给CPU。4)信号转换包括电平的转换,比如TTL电平和RS232电平的转换。AD/DA转换、数据编码(比如串并转换)的转换等等。5)中断、DMA管理为了提高传输速度,提高CPU利用率,接口有提出和处理中断、DMA的能力。二、接口电路的基本结构数据线控制线状态线DBCBAB数据输入寄存器(or三态门)数据输出寄存器(锁存器)状态寄存器(or三态门)命令寄存器译码电路控制逻辑二、接口电路的基本结构接口电路通常包含一组能够与处理器交换信息的寄存器,称为I/O端口寄存器,简称为I/O端口1)数据端口——存放数据信息2)状态端口——存放状态信息,即反映外设当前工作状态的信息3)控制端口——存放控制信息状态信息与控制信息可以广义地看作数据信息,因此可以通过数据总线传送外设的工作状态和CPU对外设的控制命令。三、I/O端口的编址方式I/O端口与存储单元统一编址(20bit)I/O端口独立编址(16bit)统一编址:将端口视作存储器,并赋予相应的存储器地址。指令上不区分端口还是存储器,而由程序员根据地址不同来区分。相当于端口地址被映射到内存空间中,成为其一部分。优点:1.使用上同存储器的使用,而存储器寻址方面的指令使用起来很灵活。2.可使用的I/O设备的数目更多(因为地址空间一般都很大)。3.读/写控制逻辑设计简单。缺点:1.占用了内存的一部分空间。2.指令一般较长,执行也慢。3.地址译码电路较复杂。独立编址:将I/O端口单独编址,不占用存储空间。CPU只能采用专用的I/O指令来访问I/O端口。优点:节省了内存空间。I/O译码电路简单,I/O指令执行快。但是种类少,程序设计的灵活性差些。三、I/O端口的编址方式端口地址是一种重要资源三、I/O端口的编址方式PC机中采用独立编制的I/O端口寻址方式把端口地址放在DX寄存器中,对该端口进行读写IN AL,DXOUTDX,AL——可寻址的端口号为0~65535(FFFFH)端口地址小于或等于FFH(255),可以用立即数表示端口地址INAL,42HOUT43H,AL7.2CPU与外设数据传送的方式程序传送方式中断传送方式DMA传送方式IO处理机无条件传送程序查询传送(条件传送)一、程序传送方式(一)无条件传送CPU与外设间的数据交换在程序控制下进行不查询外设状态,认为外设已经准备就绪,直接与外设传送数据适用场合:简单外设或者外设的工作时间是固定的已知的。在任何时刻均处于准备好数据或者处于接受数据的状态。由于不查询外设状态,接口电路不需要状态寄存器一、程序传送方式输入缓存输出锁存一、程序传送方式一、程序传送方式(二)程序查询传送在执行输入输出前,要先查询接口中状态寄存器的状态。输入时,状态寄存器的状态指示要输入的数据是否已经准备就绪输出时,状态寄存器的状态指示输出设备是否空闲外设准备就绪:对于输入设备,已经把数据放入接口电路的数据输入寄存器,CPU可以读取;对于输出设备,已经准备好接收数据(接口电路的数据输出寄存器已空),CPU可以向它输出数据程序查询输入DB0~DB7

A7A6A5A4A3A2A1A0G1CBA输入设备8bit缓冲器数据Ready状态数据808638译码器程序查询输入上图中,要获取设备的数据,需访问端口地址80H,要获得设备的工作状态,需访问端口地址81H.要求从外设中读取10B个数据,依次存入DATA数组中:MOVCX,0AHMOVDI,OFFSETDATAX1: IN AL,81H ;读取状态 TEST AL,80H ;Ready? JZX1 ;No,继续查询 IN AL,80H ;Yes,读取1B的数据 MOV [DI],AL ;保存到DATA数组 INC DI; LOOP X1 ;循环10次 HLT程序查询输出DB0~DB7

A7A6A5A4A3A2A1A0G1CBA输入设备8bit锁存器Ready状态808638译码器数据数据程序查询输出上图中,要向设备输出数据,需访问端口地址80H,要获得设备的工作状态,需访问端口地址81H.要求向外设输出10B个数据,数据存放于DATA数组中:MOVCX,0AHMOVSI,OFFSETDATAX1: IN AL,81H ;读取状态 TEST AL,80H ;Ready? JZX1 ;No,继续查询 MOV AL,[SI] ;Yes,读取1B的数据 OUT 80H,AL ;输出到外设 INC SI; LOOP X1 ;循环10次 HLT二、中断传送方式使用查询方式,CPU必须检测接口电路的状态寄存器,如果设备未准备好,CPU就要不断地查询,降低了CPU的运行效率中断方式:当外设作好传送准备后,主动向CPU请求中断,CPU响应中断后在中断处理程序中与外设交换数据。若外设未准备好,CPU可以执行其他程序,而不必像查询方式那样一直等待,所以提高了CPU的利用率.每条指令完成后,CPU均可响应中断,因此当设备准备好时,可及时与CPU交换数据,提高了实时性。有关中断的控制方式,我们在下一章中会深入讲解。三、DMA传送方式对于高速外设(如磁盘、高速A/D),中断方式不能满足数据传输速度的要求。原因:中断过程,包括中断服务子程序还是靠CPU的参与才能工作DMA=DirectMemoryAccess——直接存储器访问DMA方式是一种由专门的硬件电路执行I/O的数据传送方式,它可以让外设接口直接与内存进行高速的数据传送,而不必经过CPU。这种专门的硬件电路称为DMA控制器,简称DMAC三、DMA传送方式CPU内存外设数据通道数据通道非DMA方式(包括程序控制方式和中断方式)DMAC内存外设数据通道DMA方式三、DMA传送方式DMAC具有独立的控制三大总线来访问存储器和I/O端口的能力,它能像CPU一样提供数据传送所需的地址信息和读写控制信息DMAC和CPU都挂在系统总线上,当进入DMA方式时,DMAC成为总线主控。在总线上,可以控制其他部件的部件称为总线主控或主控(busmaster),被控部件称为从控(slave)。任意时刻,总线上只有一个主控。三、DMA传送方式DMA操作之前,应先对DMAC编程,把要传送的数据块长度、数据块在存储器中的起始地址,数据传送方向等信息发送给DMACDMA操作过程包括三个阶段:DMA请求DMA响应和数据传送传送结束当外设要求以DMA方式为它服务时,发DMA请求信号DREQ到DMACDMAC检查该信号是否被屏蔽及其优先权,如确认该信号有效则向CPU发送总线请求信号HRQ(连到CPU的HOLD)DMA请求阶段CPUDMACHRQ外设DREQ地址总线数据总线存储器每个总线周期结束时CPU检测HOLD,如为高电平,则响应HOLD请求进入保持态,使三态总线CPU侧呈高阻状态,并以总线保持响应信号HLDA通知DMAC,DMAC接管总线,并以DACK信号通知外设,使之成为DMA传送时被选中的设备,同时DMAC给出内存地址以及I/O读写和存储器读写控制信号,在外设和存储器之间完成数据传送DMA响应和数据传送阶段CPUDMACHLDA外设DACK存储器地址总线数据总线IOR/IOWMEMR/MEMW传送结束阶段传送完成后,DMAC放弃总线,撤消总线请求(HRQ为低),CPU检测到HRQ(HOLD)为低后,撤消HLDA,CPU重新获得总线控制权CPUDMACHRQ外设EOP地址总线数据总线存储器DMA控制器的功能从前面的描述中可以看出,当外设需要进行DMA方式传输数据时,DMAC要向CPU提出请求,使CPU让出总线控制权,交由DMAC来接管总线,这样就可以完成外设和内存之间的数据交换。完毕后,DMAC释放总线,将总线控制权交由CPU。所以,DMA控制器必须具备以下的功能:能向CPU发出要求控制总线的DMA请求信号HRQ(接CPU的HOLD引脚);当收到CPU发出的HLDA信号后能接管总线,进入DMA模式;能发出地址信息对存储器寻址并能修改地址指针;能向存储器和外设发出读、写控制信号;决定传送的字节数,并能判断DMA传送是否结束;接受外设的DMA请求信号和向外设发出DMA响应信号;能发出DMA结束信号,使CPU恢复正常。PC系列微机使用可编程DMA控制器8237A(简称8237)实现DMA功能8237有四个通道,每个通道都有独立的与相应外设接口相联系的信号,四个通道共享与CPU相连的控制信号、地址信号、数据信号8237有两种工作状态:主态方式 8237获得总线控制权,控制外设和内存间的数据交换.2. 从态方式

CPU读写8237,相当于DMA是个外设。四、8237A可编程DMA控制器8237的引脚功能8237的引脚功能请求(输入)/应答(输出)信号外设接口电路向8237的请求信号:DREQ3~DREQ08237对外设接口电路的应答信号:DACK3~DACK08237向CPU申请总线的信号:HRQ(连至CPU的HOLD)CPU向8237传送的允许使用总线信号:HLDA8237的引脚功能地址信号(双向,作用随8237的工作模式而不同):CPU初始化8237或读8237状态时所需的片选信号A7~A0(输出):8237访问存储器的地址信号的低8位。A3~A0(输入):CPU初始化8237或读8237状态时,用于寻址8237内部寄存器8237的引脚功能数据信号(双向):DB7~DB0CPU为主控时,可以通过I/O读命令查询8237的状态寄存器的内容,或通过I/O写命令对8237的内部寄存器进行编程,数据传送通过DB7~DB08237为主控时,DB7~DB0输出要访问的内存地址的高8位,并通过ADSTB锁存到外部地址锁存器中,和A7~A0输出的低8位地址一起构成16位地址8237的引脚功能地址允许信号:AEN(输出)8237作为主控时(8237控制总线),输出AEN=1。表示16位的偏移地址已经由8237生成。8237作为从控时(CPU控制总线),输出AEN=0。DMA传输结束信号:(双向)当DMAC内部任一通道传输结束,8237发出若由外部给DMAC送入有效的,则强制DMAC内部所有通道结束传输。8237的引脚功能MEMR/MEMW:(输出)8237发出的存储器读/写信号IOR/IOW:(双向)8237作为主控时,输出I/O读/写信号。8237作为从控时,CPU发出的I/O读/写信号,用于读/写82378237的引脚功能ADSTB:地址选通信号(输出)用于启动地址锁存器READY:存储器或I/O的就绪信号(输入)如果外设和存储器速度慢的话,可以将Ready无效,使得8237在DMA周期中插入等待周期。8237的编程结构8237的编程结构控制寄存器(命令寄存器,从态方式写入)8位,4个通道共用,用于设定8237的信号形式、工作时序、传输方向。端口地址08H信号形式:DREQ/DACK信号的有效形式。工作时序:普通时序(3个时钟周期完成一次传输) 压缩时序(2个时钟周期完成一次传输)传输方向:内存I/O(常用) I/O内存(常用) 内存内存(PC系列机未用)8237的编程结构D7:0=DACK高电平有效;1=DACK低电平有效D6:0=DREQ高电平有效;1=DREQ低电平有效D5:1=扩展写信号,IOW/MEMW比正常时序提前一个周期;0=不扩展写信号D4:0=固定优先级,通道0优先级最高,通道3优先级最低;1=循环优先级D3:0=正常时序1=压缩时序D2:0=启动(指允许)8237工作;1=停止(指禁止)8237工作D1:内存到内存传输时,D1=1使源地址(0通道)保持不变D0:0=内存I/O间的传输;1=内存内存间的传输控制寄存器8237的编程结构PC系列微型机中,BIOS初始化时将控制寄存器设为00H——禁止内存内存的传送,允许读/写操作,使用正常时序固定优先级不扩展写信号DREQ高电平有效DACK高电平有效8237的编程结构状态寄存器(从态方式读取)8位,4个通道共用,与控制寄存器共用一个端口地址端口地址08H记录每个通道是否有请求、传输是否结束D3~D0:分别对应通道3~0,指出4个通道的DMA传送是否结束,结束为1D7~D4:分别对应通道3~0,表示4个通道是否有DMA请求,有DMA请求为1暂存寄存器8位,端口地址0DH在内存内存传输时,暂存数据。注意:内存I/O传输时,数据不进入8237内部,只存在于数据总线上8237的编程结构8237的编程结构工作方式寄存器(也称作模式寄存器)8位,设定DMA的传输模式,4个通道的工作方式寄存器共用一个端口地址,端口地址0BH传输模式:单字节传输模式数据块传输模式请求传输模式级联传输模式单字节传输模式:每次DMA操作只传送一字节后,接着8237释放总线块传输模式:8237获得总线控制权后,连续传送多个字节,每传输一个字节,当前字节计数器减1,当前地址寄存器加1或减1,直到所要求的字节数传输完(当前字节计数器减至0),8237在EOP引脚上发出结束信号,然后释放总线。在块传输过程中,若向8237的EOP引脚上输入低电平,可强行结束传输。工作方式寄存器8237的编程结构请求传输模式:在传输过程中,8237要检测DREQ信号(询问外设),当DREQ为低时,8237暂停传输(不释放总线),当DREQ再次有效后,继续进行传输。级联传输模式:多片8237级联时,可以构成主从式DMA系统。级联的方式是把从片的请求线HRQ连至主片的DREQ引脚,主片的DACK联至从片的HLDA引脚.此时,主片输出的信号除了HRQ外都被禁止。若主8237的某通道(DREQ)连接从8237的HRQ,主8237的该通道应设置为级联传输模式,但从8237不设置级联传输模式,而是设置其它三种模式之一。工作方式寄存器8237的编程结构二级8237A级联HOLDHLDAHRQHLDA8237AHRQHLDAHRQHLDA8237A8086……主片从片DREQ0DACK0DREQ3DACK382378237的编程结构D7,D6:模式选择00=请求传输模式01=单字节传输模式10=块传输模式11=级联传输模式D5:存储器地址增减选择,0=地址增1,1=地址减1D4:自动预置功能,0=禁止,1=允许自动预置:在当前字节计数器到达0时,当前字节计数器和当前地址寄存器从基本字节计数器和基地址寄存器中自动获得新的初值8237的编程结构D3,D2:传输类型选择01=写传输(I/O内存),10=读传输(内存I/O)00=校验传输,11=无意义校验传输用来对读传输和写传输功能进行校验,它是一种虚拟传输,8237也会产生存储器地址信号,但不产生存储器读/写、I/O读/写信号,校验传输一般用于器件测试D1,D0:通道选择00=通道001=通道110=通道211=通道38237的编程结构基地址寄存器和当前地址寄存器每个通道一个基地址寄存器,一个当前地址寄存器,16位,占用相同的端口地址基地址寄存器:DMA传输的内存地址初值,在初始化时由CPU分两次写入。当前地址寄存器:DMA传输过程中,内存地址的当前值。每传输一字节,该寄存器的值增1或减1。CPU可分两次读出其值。基地址寄存器和当前地址寄存器的写入端口相同,运行时,基地址寄存器的值不能再被修改。当执行自动预置操作时,使当前地址寄存器能恢复到初始值。8237的编程结构基本字节计数器和当前字节计数器每个通道一个基本字节计数器,一个当前字节计数器,16位,占用相同的端口地址基字节计数器:DMA传输的字节数初值,在初始化时由CPU分两次写入。8237规定,初值比实际传输的字节数少1当前字节计数器:DMA传输过程中,当前的计数值。每传输一字节,该寄存器的值减1。当计数值从0减到FFFFH时,8237发出结束信号EOP。CPU可分两次读出其值。8237的编程结构先/后触发器端口地址0CHCPU写入基地址寄存器、基本字节计数器时,均分两次写入,先/后触发器用于控制写入的值是低8位还是高8位写入过程:①使先/后触发器=0。②写入低8位,先/后触发器自动置1。③写入高8位,先/后触发器自动置0。8237的编程结构请求寄存器

四个通道的请求触发器构成一个请求寄存器(8位)一般情况下,DMA请求由硬件信号DREQ发出,也可由软件设置请求触发器来发出DMA请求。D2=1设置DMA请求D1~D0:指定软件DMA请求的通道端口地址09H8237的编程结构屏蔽寄存器

四个通道的屏蔽触发器构成一个屏蔽寄存器(8位)当屏蔽寄存器的屏蔽标志置1时,将禁止该通道的硬件DMA请求和软件DMA请求。D2=1,设置屏蔽;D2=0,清除屏蔽;D1~D0:选通道端口地址0AH8237的编程结构综合屏蔽寄存器

8237可以一次完成四个通道的屏蔽设置D3~D0:分别对通道3~0设置屏蔽1,设置屏蔽,禁止DREQ;0,清除屏蔽;端口地址0FH清除屏蔽寄存器

对端口0EH写入0,可以一次清除四个通道的屏蔽触发器端口地址0EHMOVDX,DMA+0EHMOVAL,0OUTDX,AL8237的编程结构8237的编程结构复位命令寄存器

对端口0DH写入0,使8237复位,其功能等同于硬件复位端口地址0DH8237复位后的状态为:控制寄存器 状态寄存器请求寄存器暂存器先/后触发器

清0屏蔽寄存器置18237的编程结构一片8237占用连续16个端口地址,用DMA+00H~DMA+0FH表示。其中,DMA表示该片8237的基地址。在AT以上的微机中,使用2片8237,其地址为:第一片8237,基地址DMA=0000H,使用0000H~000FI/O地址。第二片8237,基地址DMA=00C0H,使用00C0H~00CFI/O地址。8237的编程结构8237的应用8237A编程写入控制寄存器写入屏蔽寄存器——屏蔽要初始化的通道写入工作方式寄存器先后触发器置0写入基地址和基本字节寄存器解除屏蔽写入请求寄存器8237的应用例:用一片8237A设计了DMA传输电路,8237A的基地址为00H。要求利用它的通道0,从外设输入1KB的数据块,传送到内存中6000H开始的区域中,每传送一个字节,地址增1,采用数据块连续传送方式,禁止自动预置,外

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论