版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微型计算机原理与接口技术第1页/共134页教学提示:微处理器同外设的连接和信息交换,是微型机系统要解决的主要问题之一。本章描述了输入输出的基础知识,包括外设接口的一般结构、I/O端口的寻址方式和数据传送的控制方式,以及PC机I/O地址空间、基本输入和输出接口等内容。另外还描述了DMA控制器8237A的结构、功能及实际应用。第2页/共134页教学目标:了解微处理器同外设接口交换的3种信息;清楚端口与接口的区别;了解I/O端口的编址方式。深刻理解程序控制传送方式的原理、特点及应用场合,能够编写简单的应用程序。深刻理解PC机I/O地址空间、基本输入和输出接口、地址译码器等内容。理解DMA方式数据传输的基本工作原理。熟知8237A芯片内部结构以及外部引脚的连接方法;熟知8237A的4种工作方式;熟知8237A内部寄存器的作用;能够读懂并编写简单的初始化程序和应用程序。第3页/共134页5.1概述5.1.1接口的功能如图5.1所示,用户可以根据自己的需要,选择不同类型的外设,配置相应的接口电路,通过接口将不同类型的外设连接到系统总线上,构成不同用途、不同规模的应用系统。
第4页/共134页一般情况下,存储器接口电路及相应的控制比较单一,而I/O设备种类和型号繁多,相应I/O接口电路逻辑不同,控制较复杂。因此本章及后续章节接口多指I/O接口,也称为外设接口。虽然接口因外设的种类繁多而结构各异,但作为连接计算机系统总线与外部设备的桥梁,一般均有如下的功能:第5页/共134页图5.1CPU与外设连接示意图第6页/共134页1.数据缓冲功能和接口状态的表示数据缓冲功能主要解决CPU的高速度与外设的低速度之间的矛盾,从而避免了因速度不一致而导致的数据丢失。一般在接口中通过设置数据缓冲器或锁存器解决此类矛盾,通常把具有缓冲或锁存数据能力的寄存器称为数据端口。接口从系统总线或外设接收一个数据,通过发出“准备好”联络信号,通知外设或CPU取走数据。一次数据传输完成后,接口又可发出“数据缓冲区空”信号,准备进行下一次传输。接口有向CPU提供接口状态或外设工作状态的能力。在接口电路中这些用于表示“空”、“满”、“准备好”、“忙”、“闲”等状态信号的寄存器称为状态端口。第7页/共134页2.接收和执行CPU命令的功能CPU对I/O设备的控制命令一般均以代码的形式发送到接口的命令寄存器,命令寄存器称为控制端口或命令端口。接口电路将这些命令代码进行识别和分析,产生若干个控制信号。这些控制信号的作用一般有两个:一是控制所连接外设的工作,二是用于设置接口的工作方式。第8页/共134页3.信号转换功能因为外设所需的控制信号与外设提供的状态信号往往与微型机总线的信号不匹配,信号转换是不可以避免的。信号转换的主要内容是对信号之间的逻辑关系、时序配合以及电平匹配进行转换。第9页/共134页4.设备选择功能微型机系统中可能带有多种外设,或者多台同种外设,需要CPU通过地址信号来标识和选择不同的接口。因此接口应对系统总线上传输的地址进行译码,检测到本端口地址时,产生相应的“选中”信号,并按CPU的要求进行信息传输。一般情况下,端口寻址方法类似存储器的寻址方法,通过高位地址译码产生片选信号选择外设接口芯片,低位地址选择芯片内部寄存器或锁存器。第10页/共134页5.中断管理功能外设需要及时得到CPU的服务,所以接口必须要有简单的中断管理功能。如:发出中断请求,提供中断类型码等。在PC机中,有些功能由专门的中断控制器实现。6.数据格式转换功能CPU能直接处理的是并行数据,如8位、16位和32位等。而有些外设只能处理串行数据,如串行通信设备、终端机等。所以当外设使用的数据格式与CPU数据格式不同时,接口要进行两种数据格式之间的相互转换。第11页/共134页7.可编程功能目前接口芯片大部分是可编程的,可以用命令字或控制字来设定其工作方式、工作参数。所以在不改动硬件电路的情况下只修改相应的命令字或控制字,就可以改变接口的工作方式,大大增加了接口的灵活性和可扩充性。第12页/共134页8.错误检测及复位功能许多数据传输量大、传输速率高的接口,具有检测信号传输错误的功能。常见的信号传输错误有以下两种:物理信道上的传输错误(主要由干扰造成)和数据传输中的覆盖错误(主要由数据收发不及时造成)。在数据传输的过程中接口应能及时检错和纠错。常用的检错方法有奇偶校验法、方阵码校验法和CRC冗余校验法等。同时,接口在收到系统的复位信号后,应能将接口电路和所连的外部设备置为初始状态。第13页/共134页5.1.2接口与端口图5.2所示的I/O接口,称为输入/输出接口,也称为外设接口。外设接口是CPU与外设之间传送信息的一个界面、一种连接电路。外设接口一端通过系统三总线(数据总线、地址总线、控制总线)与CPU相连,另一端与外设相连并与外设交换三种信息:数据信息、状态信息和控制信息。第14页/共134页图5.2I/O接口典型结构第15页/共134页1.数据信息数据信息是CPU与外设接口交换信息的主要部分。外设有数字量、模拟量和开关量三种信号。接口电路将输入设备的输入信号,转变成CPU能够接收的数据信息,保存在寄存器中等待CPU读取;接口电路将CPU输出到外设的数据信息,转变成外设能够接收的信号,送往外设。第16页/共134页2.状态信息状态信息表明外部设备或接口当前所处的工作状态,用来协调CPU与外部设备之间的输入/输出操作。输入设备在完成一次输入操作后,发出就绪信号(READY),表明输入设备已经把数据送到接口,等待CPU给予处理。输出设备接口在接收从CPU送出的一批数据信息进行输出的过程中,发出忙信号(BUSY),表明目前接口不能接收新的数据信息。状态信息用于协调CPU与外设之间的通信。第17页/共134页3.控制信息控制信息是CPU向接口发出的命令,用于控制外设及接口的工作方式以及外设的启动或停止。控制信息的格式因设备及接口而异。控制信息也可以设置接口芯片的工作方式。第18页/共134页数据信息、状态信息和控制信息通常都通过接口与CPU交换,这些信息分别存放在外设接口的不同的寄存器中。CPU同外设之间的信息传送,实际上是CPU对接口中的寄存器进行读或写操作。接口中这些可以由CPU进行读或写的寄存器被称为端口。第19页/共134页按存放信息的不同类型,这些端口可以分为:
“数据端口”
“状态端口”
“控制端口”分别存放数据信息、状态信息和控制信息。CPU通过向控制端口发送控制字,对接口工作方式进行设置。CPU访问设备是通过访问相关的端口来实现的。第20页/共134页5.1.3I/O端口的编址方式在一个外设接口中往往有多个I/O端口。将接口中的端口进行编号,将编号加上所在接口的基地址即为该端口的I/O端口地址。对I/O端口的编址有存储器映象编址和独立编址两种方式。第21页/共134页1.存储器映象编址(存储器与I/O端口统一编址)存储器映象编址的地址空间分配如图5.3所示。这种编址方式的特点是存储器和I/O端口共用统一的地址空间,它把内存的一部分地址分配给I/O端口,一个8位端口占用一个内存单元地址。已经用于I/O端口的地址,存储器不能再使用。第22页/共134页图5.3统一编址方式地址空间分配第23页/共134页这种编址方式的优点是:访问内存单元和I/O端口可以使用相同的指令,不需要专用的I/O指令,这有助于降低CPU控制电路的复杂性,同时可使系统变得比较灵活;I/O端口的地址空间是内存空间的一部分,其地址空间可大可小,从而使连接外设的数目几乎不受限制。但是,这种编址方式也存在着一定的缺点,即I/O端口占用内存地址,相对减少了内存的可用空间;而且难以区分指令是访问内存还是访问I/O,降低了程序的可读性和可维护性。第24页/共134页2.独立编址(I/O端口单独编址)独立编址方式的地址空间分配如图5.4所示。这种方式的特点是内存储器和I/O端口各自有自己独立的地址空间。访问I/O端口需要专门的I/O指令。8086CPU采用这种编址方式。第25页/共134页图5.4单独编址方式地址空间分配第26页/共134页这种编址方式的优点是:
I/O端口地址码较短,译码电路较简单;存储器和I/O端口的操作指令不同,程序比较清晰;存储器和I/O端口的控制结构相互独立,可以分别设计;指令执行速度较快。其缺点是:需要专用的I/O指令,这些指令的功能一般不如存储器访问指令丰富,导致程序设计的灵活性较差。第27页/共134页5.2数据传送的控制方式计算机的各种操作中最基本和最频繁的操作是数据传送,在微型机系统中,数据传送主要在CPU、存储器和I/O接口之间进行。由于CPU与外设的工作速度相差很大,所以在CPU与外设的数据传送过程中,需要解决数据传送的控制方式,即CPU何时从输入设备读取数据以及何时向输出设备写入数据。按照I/O控制组织的发展顺序以及外设与CPU并行工作的程度,微型机系统中数据传送的控制方式主要有两种:程序控制传送方式和直接存储器存取(DMA)方式。第28页/共134页5.2.1程序控制传送方式1.无条件传送方式第29页/共134页图5.5无条件传送方式电路原理图第30页/共134页例如:要求某数据采集系统每秒钟定时采样某点的温度信号2次。温度传感器已经将温度信号转换成电信号,经过A/D转换器转变为数字量送入输入端口。当CPU读取端口数据时,端口中的温度数字量已“准备好”。若端口地址为40H,2次采集之间需要适当延时,并且读端口数据同时启动了下一次A/D转换。相应的采集程序如下:第31页/共134页ADSTART:MOV CL,2 ;置采集次数
MOV BX,2000H ;置存放温度值首地址LOOPA IN AL,40H ;取温度值
MOV [BX],AL ;存入内存
INC BX ;修改内存偏移地址
CALLDELAY ;调用延时子程序
DEC CL ;修改采集次数
JNZ LOOPA ;未采完返回LOOPA继续
RET第32页/共134页2.查询传送方式查询传送方式也称为条件传送方式。在这种传送方式下,当CPU需要与一个I/O设备进行数据传送时,它首先通过程序不断读取并测试接口的状态。如果输入设备处于准备好状态,则CPU执行输入指令从对应端口输入数据,反之CPU就等待。输出时,当输出设备处于空闲状态,CPU向该设备接口对应端口输出数据。第33页/共134页为此,接口电路除了有传送数据的端口外,还应有传送状态的端口。对于输入过程来说,外设将数据送到接口时,同时使接口状态端口中“准备好”标志位置1。对于输出过程来说,外设取走一个数据后,接口便将状态端口的对应标志位清零。表示当前输出寄存器已经处于“空”状态,可以接收CPU传送的下一个数据。第34页/共134页查询方式输入接口电路原理图见图5.6。从图中可以看出:当输入设备将准备好的数据传送到接口的锁存器的同时,发出一个选通信号,该选通信号一方面将数据锁入锁存器,同时通过D触发器置1表示数据准备好。CPU在输入数据前,应先通过状态端口读取状态信息(在此系统中,使用数据总线的D0位),以便查询输入设备的数据是否准备好。若未准备好,则CPU处于等待外设的状态;如准备好,则执行输入指令,该指令同时将D触发器清0,表示数据已被CPU读取。相应的汇编语言程序段如下:第35页/共134页LOOP1:INAL,STATUS_PORT ;读状态端口,;D0=1表示“数据就绪”
TESTAL,01H;判断“数据就绪”位
JZLOOP1;未就绪,循环读状态端口等待
IN AL,DATA_PORT;已就绪,
;从数据端口读取数据
…第36页/共134页图5.6查询方式输入接口电路原理图第37页/共134页图5.7表示用查询方式进行输出的接口电路工作原理图。输出传送的工作原理及编程方式与输入传送有许多的类似之处。当CPU需要向外设输出数据时,先读取状态端口中的状态位(在此系统中使用数据总线的D0位),如果状态位表明外设空闲(或不忙),则执行输出指令,向外设输出数据,否则CPU需查询等待。相应的汇编语言程序段如下:第38页/共134页LOOP2:INAL,STATUS_PORT
;读状态端口,D0=1表示“空闲”
TESTAL,01H ;判断“空闲”位
JZ
LOOP2;忙,再读状态端口循环等待
MOVAL,DATA ;空闲,取数据准备输出
OUTDATA_PORT,AL
;将数据输出至数据端口
…第39页/共134页图5.7查询方式输出接口电路原理图第40页/共134页进行多个数据的输入/输出时,每进行一次输入/输出都要首先查询它的状态字,只有当设备就绪时才可以进行数据的传输。图5.8所示为一个查询方式输入的流程图。第41页/共134页图5.8查询方式输入流程图第42页/共134页如果系统有多个外设需要使用查询方式进行输入/输出,则可采用循环查询的方式。如假定有三个设备(A、B、C),分别用状态端口的D7、D6、D5
位表示它们的状态信息,则CPU可周期性逐个查询,测试状态端口的相应位是否准备好。其流程如图5.9(p201)所示,相应的汇编语言程序如下:第43页/共134页PRO: INAL,STATUS-PORT1;读设备A的状态端口
TESTAL,80H;测试状态位,
;如果为0表示没准备好
JZ PROB1;没准备好,
;转移去读设备B的状态端口
CALLPROAINOUT;准备好了,
;调子程序进行数据交换PROB1:INAL,STATUS-PORT2 TESTAL,40H JZ PROC1 CALLPROBINOUT第44页/共134页PROC1:IN AL,STATUS-PORT3 TEST AL,20H JZ INPUT1 CALLPROCINOUTINPUT1:…第45页/共134页3.中断传送方式为了提高CPU的工作效率,同时又能及时地传送数据,可以采用中断传送方式。当CPU需要与外设进行数据传送时启动外设。在外设准备数据的同时,CPU继续执行程序,此时CPU与外设并行工作。
第46页/共134页当外设将传送数据准备好,通过接口向CPU发出中断请求信号,CPU收到中断请求信号并予以响应,CPU暂停正在执行的原程序(主程序),而转去执行中断请求对应的输入输出中断处理程序,待处理完成,CPU返回原程序继续运行。由于CPU的工作速度很快,传送一次数据(包括进入中断、退出中断程序)所需的时间很短。第47页/共134页图5.10中断传送方式电路原理图第48页/共134页5.2.2直接存储器存取(DMA)方式所谓直接存储器存取(DirectMemoryAccess,DMA)是指在存储器和外设接口之间、存储器和存储器之间直接进行数据传送(如磁盘接口与内存交换数据、高速数据采集卡与内存交换数据、内存与内存的高速数据块传送等),传送过程无需CPU介入。第49页/共134页使用DMA方式传输时,仍然使用系统的数据总线、地址总线和控制总线。但系统总线原来由CPU或者总线控制器管理,在用DMA方式进行数据传输时,接口电路要向CPU发出申请,使CPU让出总线的控制权,交由控制DMA传输的接口电路。这个接口电路就是DMA控制器,简称DMAC。第50页/共134页DMAC控制DMA传输过程时,应具备如下功能:(1)当外设准备就绪,需要进行DMA操作时,通过外设接口向DMA控制器发出“DMA请求信号”。DMA控制器收到此信号后,向CPU发“总线请求”信号。CPU收到总线请求信号后,如果允许,会在当前总线周期结束后,发出“总线响应”信号,同时放弃对总线的控制。这时DMA控制器开始实行对总线的控制。第51页/共134页(2)DMAC得到总线控制权后,要向地址总线发送地址信号。为此,DMA内部设有地址寄存器,事先由程序往此寄存器中设置DMA首地址。对于数据输入过程,向外设接口发出“I/O读”控制信号,同时向存储器发出“存储器写”信号。在这两个信号的作用下,一字节的数据从外设接口送往数据总线,而存储器从数据总线接收这个数据,写入由地址总线上的地址指定的内存单元。对于数据输出过程,情况正好相反。DMAC向存储器发读命令,向外设接口发写命令,一字节数据从存储器传送到外设接口,完成一次输出操作。第52页/共134页(3)传送1个字节之后,DMAC自动对地址寄存器的内容进行修改,指向下一个要传送的字节。同时,为了判断DMA传送是否结束,在DMA内部必须有一个字节计数器,用来存放所传送的字节数,即数据块长度。在开始传送前,由程序设置数据块长度,在DMA传送过程中,每传送一个字节,字节计数器减1,当减到0时,DMA传送结束。第53页/共134页(4)一次数据传输结束,DMA控制器向CPU申请撤销“总线请求”信号,于是CPU撤销允许使用总线的“总线响应”信号,并且收回对总线的控制权。以上过程完全由硬件电路实现,速度很快。用DMA方式进行一字节数据传输所经历的时间称为“DMA周期”,大体上相当于一次总线读写周期的时间。第54页/共134页在DMAC的内部,为了实现内存与I/O接口间传送数据,应包括如下寄存器:一个地址寄存器,存放内存和I/O交换数据时内存的起址;一个字节计数器,存放交换字节的个数;一个用于存放CPU设定DMA传输方式及各种控制信息的控制寄存器;一个用于存放DMAC当前的状态,包括有无DMA请求、是否结束等状态信息的状态寄存器。第55页/共134页图5.12DMAC内部基本结构及在系统中的连接第56页/共134页在系统中,DMAC有如下特点:它一方面是一个接口电路,因为它也有I/O端口地址,CPU可以通过端口地址对DMAC进行读写操作,以便对DMAC进行初始化或读取状态。另一方面,DMAC在得到总线控制权后,能够控制系统总线,它可以提供一系列控制信号,像CPU一样控制外设和内存之间的数据传输,此时,DMAC又不同于一般的接口电路。所以,它在系统中具有总线从模块和总线主模块双重功能。第57页/共134页(1)总线从模块:当CPU对DMAC进行预置参数,即向DMAC写入内存传送区的首地址、传送字节数和控制字时,DMAC相当于一个外设接口,称为总线从模块。(2)总线主模块:当进行DMA传输时,CPU暂停对系统总线的控制,DMAC取得了对总线的控制权,这时的DMAC称为总线主模块。第58页/共134页5.3PC机I/O地址空间及基本输入、输出接口5.3.1I/O地址空间1.I/O地址空间基于8086/8088CPU的I/O地址空间为64KB,每个地址可以访问1字节数据,从偶地址开始相邻的两个地址中的2字节数据,也可以使用1条指令访问。例如:INAL,20H ;I/O端口地址20H中的数据,读入AL,访问1字节INAX,20H ;I/O端口20H、21H中的数据,读入AX,访问2字节
;20H端口数据读入AL、21H端口数据读入AH第59页/共134页指定I/O端口地址的方法有2种。一种是在指令中直接给出地址,但是要求地址小于等于255;另一种是由DX内容作为地址,地址范围为0~65535。例如:OUT40H,AL;AL内容输出到40H地址指定的I/O端口MOVDX,200H;I/O端口地址为200H,送入DXOUTDX,AX;AX内容送I/O端口,地址为200H、201H的单元
;AL内容送200H单元,AH内容送201H单元第60页/共134页错误格式举例:
INAL,100H
;地址100H超过了255
OUT200H,AX;地址200H超过了255对于上述2条指令,必须先把地址送入DX:
MOVDX,100H
INAL,DX
MOVDX,200H
OUTDX,AX第61页/共134页2.有固定用途的I/O地址在使用8088CPU的PC/XT机中,有一些I/O端口地址已经有了固定用途,如表5.1所示。第62页/共134页5.3.2PC机I/O指令下述指令是8086/8088CPU支持的指令。输入指令,指的是从I/O端口读数据,通过数据总线,传输到CPU中AL或AX中的指令;输出指令,指的是从CPU中AL或AX中,将数据传输到I/O端口。I/O端口的地址要在I/O指令中直接或间接给出。第63页/共134页I/O指令格式如下:INAL,PORT8;输入指令,从端口地址PORT8,读入一字节数据,;PORT8为8位端口地址,范围为0~255INAX,PORT8;输入指令,从端口PORT8,PORT8+1;读入2字节数据INAL,DX;DX内容作为I/O端口地址,范围为0~65535INAX,DX;DX内容作为I/O端口地址,范围为0~65535OUTPORT8,AL;输出指令OUTPORT8,AX;输出指令OUTDX,AL;输出指令OUTDX,AX;输出指令第64页/共134页5.3.3基本输入、输出接口1.基本输入接口图5.13是一个与8个开关相连的基本输入接口,可以将74LS244三态缓冲器输入端1A1~2A4的状态(高电平表示1,低电平表示0),由输入指令读入AL中。74LS244的输出端1Y1~2Y4与数据总线连接,-SEL信号是由另外的译码器产生的,当指令中指定的地址不为0F0H时,译码器输出-SEL为高电平,1Y1~2Y4处于高阻状态,74LS244与数据总线相当于断开;当指令中指定的地址为0F0H时,译码器输出-SEL为低电平,74LS244输出1Y1~2Y4与数据总线接通。第65页/共134页图5.13与8个开关连接的基本输入接口第66页/共134页2.基本输出接口图5.14是一个与8个LED发光二极管相连的基本输出接口。第67页/共134页图5.14与8个LED灯相连的基本输出接口第68页/共134页5.3.4地址译码器地址译码器一端与CPU地址总线、控制总线连接,另一端是产生的选择信号,用于输入接口使缓冲器处于接通状态(非高阻),或者用于输出接口作为锁存器锁存信号。译码器可以连接全部16位地址,这种方式称为全译码;或者只连接部分低位地址,称为部分译码。第69页/共134页图5.15是使用74LS138作为译码器的一个例子。图5.15地址为F0H时能够产生Y0有效的译码电路(读)第70页/共134页通过指令:INAL,0F0H能够将图5.13中74LS244连接的状态,读入AL。第71页/共134页图5.16是使用74LS138的另外一个例子图5.16地址为F1H时能够产生Y1有效的译码电路(写)第72页/共134页通过指令:OUT0F1,AL能够将AL中数据送图5.14中74LS374。第73页/共134页5.3.580386以上微处理器I/O指令及I/O地址1.I/O指令INEAX,PORT8;输入32位数据,PORT8指定的I/O地址范围为0~255INEAX,DX;输入32位数据,DX指定的I/O地址范围为0~65535INSB;输入8位数据,DX指定端口地址,数据;送ES:DI内存单元,DI=DI±1INSW;输入16位数据,DX指定端口地址,数据
;送ES:DI内存单元,DI=DI±2INSD;输入32位数据,DX指定端口地址,数据
;送ES:DI内存单元,DI=DI±4第74页/共134页OUTPORT8,EAX;输出32位数据,PORT8指定的I/O地址范围为0~255OUTDX,EAX;输出32位数据,DX指定的I/O地址范围为0~65535OUTSB;从DS:SI寻址的内存单元,输出8位数据,DX;内容指定端口地址,SI=SI±1OUTSW;从DS:SI寻址的内存单元读数据输出,输出16
;位数据,DX内容指定端口地址,SI=SI±2OUTSD;从DS:SI寻址的内存单元读数据输出,输出;32位数据,DX内容指定端口地址,SI=SI±4第75页/共134页上述INS、OUTS指令均可以加REP指令前缀。另外传送前应该设置标志寄存器FR中的方向标志DF位。第76页/共134页2.I/O地址80386以上微处理器I/O地址空间为0~65535。80386以上微处理器I/O指令允许使用的数据总线宽度为8位(字节)、16位(字)和32位(双字),不允许使用64位。第77页/共134页5.4可编程DMA控制器8237A(DMAC)5.4.18237A的结构和基本功能1.8237A芯片的主要特点(1)在一个8237A中,有4个独立的DMA通道。(2)每一个通道的DMA请求有不同的优先权,优先权可以固定,也可以循环(由编程确定)。(3)对每一个通道的DMA请求都可以分别允许和禁止。第78页/共134页(4)每一个通道传送数据的最大长度可以达到64KB,可以在存储器与外设间进行数据传送,也可以在存储器的两个区域间进行传送。(5)8237A的DMA传送有四种方式可供选择:单字节传送方式、块传送方式、请求传送方式、级联方式。第79页/共134页(6)结束处理的信号-EOP有两种用途,用途一表示DMA内部某一通道指定长度的数据传送完毕,是8237A输出信号;用途二把对应引脚作为输入端,由8237A片外发送信号,强制结束DMA传送或重新初始化。(7)8237A可以级联,扩展通道数。第80页/共134页2.8237A的内部结构与外部连接DMA控制器一方面可以控制系统总线,在系统中处于总线主模块的地位;另一方面,又可以接受CPU对它的读写操作,在系统中处于总线从模块的地位。DMA控制器8237A的内部结构和外部连接与它在系统中所处的地位是密切相关的。8237A的内部编程结构和外部连接如图5.17所示。第81页/共134页由图5.17可知,8237A由两部分构成:一部分是4个DMA通道以及与外设的连接;另一部分是读/写控制逻辑、控制逻辑、锁存缓冲器和页面地址寄存器(另见图5.25)。1)DMA通道8237A有四个相互独立的通道(CH0~CH3)。图5.17中给出了通道0的内部编程结构,通道1~通道3与通道0相同。第82页/共134页图5.178237A的内部编程结构和外部连接第83页/共134页由图5.17可知,每个通道都包含:一个基本地址寄存器和一个当前地址寄存器、基本字节计数器和当前字节计数器。还有一个6位的方式寄存器(模式寄存器),一个1位的DMA请求触发器及一个1位的屏蔽触发器。同时,每个通道都有两个与外设相连的引脚,DREQ(引入外设的DMA请求信号)和DACK(送给外设的DMA应答信号)。4个通道共用一个控制寄存器和一个状态寄存器。在DMA通道工作之前,必须对相应的寄存器进行初始化设置。第84页/共134页
2)读/写控制逻辑读/写控制逻辑主要用于控制数据的传送方向。在DMA传送期间,8237A作为“主模块”控制总线。读写控制逻辑发出-IOR、-MEMW或-IOW、-MEMR信号,控制数据从外设接口读出后写到存储器单元,或数据从存储器单元读出后写到外设接口。
第85页/共134页8237A在系统中作为“从模块”时,CPU控制总线,8237A只作为一般的I/O接口,此时,读/写逻辑电路接收CPU对I/O接口发出的读(-IOR)或写(-IOW)信号,将所寻址的寄存器内容送到数据总线或将数据总线的内容写入所寻址的寄存器。第86页/共134页
3)控制逻辑控制逻辑主要用于控制8237A的工作方式。初始化时,通过对方式寄存器及各种命令字的编程,确定DMA如何工作。在DMA周期内,控制逻辑根据设定的方式产生相应控制信号对各个通道进行控制。第87页/共134页
4)锁存缓冲器(外接)使用8237A工作时,需要外接一个8位的地址锁存缓冲器,它通过可控的三态门连接系统地址总线A8~A15,在DMA传送时,8237A将高8位地址A8~A15通过DB0~DB7送入这个锁存器。在DMA周期里,锁存器将锁存的地址送往系统地址总线A8~A15,同时从A0~A7发送地址的低8位。第88页/共134页
5)页面地址寄存器(外接)由上文可以看出,8237A产生的地址总线为16位,所以最多只能寻址64KB。但是8086存储器空间使用20条地址线,因此需要外接一个4位的“页面地址寄存器”。寄存器的值由CPU事先写入,8237A发送低16位地址时,高4位的地址从页面地址寄存器发往地址总线的A16~A19。在DMA传送期间,此寄存器在地址允许信号AEN的作用下保持恒定的4位地址输出。第89页/共134页3.8237A的工作时序
8237A使用独立的时钟信号,工作过程可以分为SI、S0、S1、S2、S3、SW、S4几个状态,见图5.18。每个状态占用1个时钟周期,因此状态也可以称为周期。第90页/共134页图5.188237A工作状态第91页/共134页
1)空闲状态
2)有效周期
3)扩展写与压缩时序
4)8237A工作时各信号的配合
(1)作为从模块工作时
(2)作为主模块工作时第92页/共134页4.8237A的外部引脚
1)请求与响应信号引脚(1)DREQ(DMARequest,输入)——DREQ0~DREQ3。每个通道对应一个DREQ信号引脚,此引脚连接外设的DMA请求信号。(2)HRQ(HoldRequest,输出)——8237A收到外设接口发来DREQ信号后,如果该通道的DMA请求没有被屏蔽,则DMA控制器的HRQ端输出有效电平,向CPU发出总线请求。
第93页/共134页(3)HLDA(HoldAcknowledge,输入)——DMAC向CPU发总线请求信号HRQ以后,CPU发回的总线响应信号。(4)DACK(DMAchannelAcknowledge,输出)——DACK0~DACK3。这是DMAC送给I/O接口的回答信号,每个通道对应一个DACK信号引脚。
第94页/共134页
2)DMA传送控制信号引脚(作为主模块时使用的接口信号)(1)A0~A3(Address,输入/输出)(2)A4~A7(Address,输出)(3)DB0~DB7(DataBus,输入/输出)(4)ADSTB(AddressStrobe,输出)(5)AEN(AddressEnable,输出)(6)-IOR(I/ORead,输入/输出)
第95页/共134页(7)-IOW(I/OWrite,输入/输出)(8)READY(Ready,输入)(9)-MEMR(MemoryRead,输出)(10)-MEMW(MemoryWrite,输出)(11)-EOP(EndofProcess,输入/输出)第96页/共134页3)与处理器连接的信号引脚(作为从模块时使用的接口信号)(1)RESET(Reset,输入)——复位信号(2)-CS(ChipSelect,输入)——片选信号(3)A3~A0(Address,输入/输出)——低4位地址线(4)-IOR(I/ORead,输入/输出)——设备读信号(5)-IOW(I/OWrite,输入/输出)——设备写信号(6)DB7~DB0(DataBus,输入/输出)(7)CLK(Clock,输入)——时钟信号
4)其他信号引脚
VCC电源,VSS地表5.2给出了8237A引脚信号的分类(p217)。
第97页/共134页5.4.28237A的传送方式和传送类型1.8237A的传送方式
8237A的每个通道有4种传送方式可以选择。可以通过后面介绍的方式寄存器进行设置。
1)单字节传送方式在这种方式下,8237A每传送1个字节,修改当前字节计数器及当前地址寄存器,然后释放系统总线,结束一次DMA传送。如果收到新的一个DMA请求,则重新申请总线,重复上述过程。在这种方式下,CPU可以在每个DMA周期结束后控制总线。第98页/共134页
2)块传送方式在这种方式下,DMA控制器获得总线控制权后,可以连续进行多个字节的传送(最多64K字节)。只有当字节计数器减为0,或者收到外部输入的结束命令(从-EOP引脚输入一个低电平信号)时,8237A才释放总线而结束传送。显然,这种模式的数据传送速度很高。但在数据传送期间,CPU不能访问总线。如果一次传送的数据较多,会对系统产生一定的影响。第99页/共134页
3)请求传送方式这种方式与块传送方式类似,申请一次总线可以连续传送多个数据。与块传送方式的区别在于每传送1个字节后,8237A都对外设接口的DMA请求信号线DREQ进行测试,如果检测到DREQ端变为无效电平,则马上暂停传送。当DREQ又变为有效电平时,就继续进行下一个数据的传送。当外设由于某种原因传送的数据不连续时,可采用此方式。第100页/共134页
4)级联传送方式几个8237A可以进行级联,一片8237A用作主片,其余用作从片,构成主从式DMA系统。在级联方式下,从片收到外设接口的DMA请求信号后,向主片发出申请,而主片再向CPU申请。即从片的DREQ端和DACK端与外设相连;从片的HRQ端连接至主片的DREQ端。主片的DACK端连至从片的HLDA端。而主片的HRQ和HLDA通过系统总线与CPU相连。一片主片最多可以连接4片从片。第101页/共134页2.8237A的传送类型
8237A提供四种类型的传送:
(1)DMA写传送:指I/O设备到存储器的传送。
(2)DMA读传送:指存储器到I/O设备的传送。
(3)DMA检验
(4)存储器到存储器传送:可通过编程设置,在这种传送类型下,通道0的地址寄存器设置为存储器源数据区地址。通道1的地址寄存器存放存储器目标地址,字节计数器为传送字节数,可通过软件启动传送。传送开始后,用4个时钟周期从存储器源地址将数据读入8237A的内部暂存寄存器,另4个时钟周期再将暂存寄存器的内容写入到目标地址的存储单元中。第102页/共134页5.4.38237A内部寄存器含义
8237A是一个可编程的DMA控制器芯片,内部共有10种不同的寄存器,见表5.3(p219)。每个寄存器都起着不同的作用,在进行DMA传送前必须对8237A进行初始化编程,对各寄存器进行设置以满足所要求的功能,下面分别介绍这10种寄存器的含义。第103页/共134页1.8237A通道内寄存器
1)当前地址寄存器
2)当前字节计数器
3)基本地址寄存器和基本字节计数器
4)方式寄存器第104页/共134页图5.198237A方式控制字格式第105页/共134页2.8237A公用寄存器和命令
1)控制寄存器
8237A控制寄存器用于控制8237的工作,可以通过编程改变控制字的内容。其格式如图5.20所示。第106页/共134页图5.208237A控制字格式第107页/共134页
2)状态寄存器图5.218237A状态寄存器格式第108页/共134页
3)请求寄存器与请求命令字图5.228237A请求命令字格式第109页/共134页4)屏蔽寄存器图5.238237A屏蔽命令字格式第110页/共134页图5.248237A综合屏蔽命令字格式第111页/共134页
5)主清除命令(软件复位)软件复位命令的功能和RESET功能相同。即执行复位命令后使控制寄存器、状态寄存器、暂存寄存器、DMA请求寄存器以及高/低触发器复位,屏蔽寄存器置位,同时使8237A进入空闲周期,便于编程。复位命令的执行是通过对端口地址为起始地址+13的端口实施一次写操作,也就是对该端口执行一条输出指令,与输出的具体内容无关,即可完成对8237A的复位操作。第112页/共134页
6)清除高/低触发器命令
8237A内部有一个“高/低触发器”,当这个触发器为0时,与16位寄存器的低字节进行数据通信;为1时,访问高字节。每访问一次16位寄存器后,能自动翻转,0变1或1变0。在写入存储器起始地址到基本、当前地址寄存器,以及写入基本、当前字节计数器初值之前,应将这个触发器清0,然后就可以按照先低后高的字节顺序写入初值。第113页/共134页5.4.48237A的应用编程1.8237A端口地址及通道分配
8273A端口地址及通道分配见表5.4(p224)。第114页/共134页2.8237A的编程步骤对8237A编程的一般步骤如下:
(1)输出主清除命令。
(2)清除高/低触发器。
(3)写入存储器起始地址(先写低字节,后写高字节)。
(4)写入传送的字节数,其值为传送的字节数减1(先写低字节,后写高字节)。
(5)写控制字,设置8237A的工作方式。
(6)写方式字,设置使用通道的工作方式。
(7)对该通道的屏蔽位进行清除。
(8)启动外部设备,如果是内存到输出设备,用软件设置第一次DMA请求。第115页/共134页3.应用举例在IBM-PC/XT微型机中,8237A占据00H~0FH共16个端口地址。对8237A控制器的4个通道安排如下:
(1)CH0:用在系统板上,作为动态存储器的刷新控制。
(2)CH1:用于扩展选件上,为用户预留的DMA通道。
(3)CH2:用于扩展选件上,作为软盘驱动器数据传送用的DMA控制。
(4)CH3:用于扩展选件上,作为硬盘驱动器数据传送用的DMA控制。第116页/共134页对于IBM-PC系列微型计算机,它的8237A通道0、2、3已分配使用,而且在开机时已对8237A作了初始化。在这种情况下,不允许再对它重新初始化和重新设置控制字,也不允许修改屏蔽寄存器。只允许对通道1进行设置。
DMAC8237A只能向存储器提供16位地址值即A15~A0。而8086/8088系统的存储器需要20位地址值即A19~A0。在有些系统中,高4位地址A19~A16由页面地址寄存器提供,通道1的页面地址寄存器的输入端口号为83H。第117页/共134页
【例5.1】假设用系统板上的8237A通道1,将内存起始地址为02000H的300H字节内容直接输出给外部设备,DMA端口地址从00H到0FH。程序如下:
MOVAL,4 ;控制字,禁止8237A工作
OUT08,AL ;写控制寄存器
MOVAL,0
OUT0DH,AL;主清除,同时清除高/低触发器
OUT02,AL ;写低位地址00H第118页/共134页
MOVAL,20H
OUT02,AL ;写高位地址20H
MOVAL,0 ;页面地址为0
OUT83H,AL ;写入页面地址寄存器
MOVAX,300H ;传输字节数
DECAX
OUT03,AL ;写字节数低位
MOVAL,AH
OUT03,AL ;写字节数高位第119页/共134页
MOVAL,49H ;方式字:单字节读,地址加1
OUT0BH,AL
MOVAL,40H ;控制字:DACK和DREQ低电平有效,
;启动8237A工作
OUT08H,AL ;普通时序,固定优先级
MOVAL,01 ;清除通道1屏蔽
OUT0AH,ALWAITF:IN AL,08 ;读通道1状态
ANDAL,02 ;传输完成否
JZ WAITF ;没完成则等待
MOVAL,05 ;完成后屏蔽通道1
OUT0A,AL
…第120页/共134页
【例5.2】编写用8237A实现存储器至存储器传送数据的程序,把从物理地址
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 顾问式销售(二)经典案例
- 全球经济形势与趋势评估研究
- 现代物流管理 第07章 第三方物流与第四方物流
- 大学生反诈骗安全
- 单位附属绿地规划设计案例
- 会计信息系统实训-供应链篇(用友U8 V10.1)(第2版) 课件 单元4 财务各子系统初始化
- 吴王夫差剑课件
- 2024-2025学年年七年级数学人教版下册专题整合复习卷26.2 用函数观点看一元二次方程(1)课课练(含答案)
- 弦歌不辍-阳关三叠 课件 2024-2025学年西交大版(2024)初中音乐七年级上册
- 2024届江西省抚州市临川区一中高三年级三月线上月考数学试题试卷
- 服装店合伙协议书
- 颈椎前路零切迹手术
- PRP注射治疗膝关节炎
- 小区垃圾清运管理规章制度模版(2篇)
- 6S精益实战手册
- me设备工程师年终总结
- 泌尿外科主要护理措施
- GB/T 7247.1-2024激光产品的安全第1部分:设备分类和要求
- 清代八旗制度学习通超星期末考试答案章节答案2024年
- 中医院先住院后付费服务开展情况自查报告
- 古代小说戏曲专题-形考任务2-国开-参考资料
评论
0/150
提交评论