微机原理与接口技术-第8章 常用可编程接口芯片_24_第1页
微机原理与接口技术-第8章 常用可编程接口芯片_24_第2页
微机原理与接口技术-第8章 常用可编程接口芯片_24_第3页
微机原理与接口技术-第8章 常用可编程接口芯片_24_第4页
微机原理与接口技术-第8章 常用可编程接口芯片_24_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

,微机原理与接口技术,常用的可编程接口芯片,第八章,主要内容,8.1并行通信与并行接口8.2可编程并行通信接口芯片8255A8.3串行通信与串行接口8.4可编程串行通信接口芯片8251A8.5可编程定时/计数器接口芯片82538.6DMA控制器8237A8.7小结,DMA控制器8237A,8237A性能含有4个相互独立的通道,每个通道有独立的地址寄存器和字节数寄存器,而控制寄存器、状态寄存器为4个通道所共用。每个通道的DMA请求可以分别被允许/禁止。每个通道的DMA请求有不同的优先权,可以通过程序设置为固定或旋转的方式。通道中地址寄存器的长度为16位,因而一次DMA传送的最大数据块的长度为64KB。8237有4种工作方式,分别为单字节传送、数据块传送、请求传送和级连方式。允许用输入信号来结束DMA传送或重新初始化,8237可以级连以增加通道数。,DMA控制器8237A,8237A的内部结构定时和控制逻辑命令控制逻辑优先权控制逻辑寄存器组地址/数据缓冲器等部分,8237A的内部逻辑图,DMA控制器8237A,4个独立的DMA通道每个通道都有一个16位的基地址寄存器,一个16位的基字节数计数器,一个16位的当前地址寄存器和一个16位的当前字节数计数器及一个8位的方式寄存器,方式寄存器接收并保存来自于CPU的方式控制字,使本通道能够工作于不同的方式下。定时及控制逻辑电路对在DMA请求服务之前,CPU编程对给定的命令字和方式控制字进行译码,以确定DMA的工作方式,并控制产生所需要的定时信号。优先级编码逻辑对通道进行优先级编码,确定在同时接收到不同通道的DMA请求时,能够确定相应的先后次序。通道的优先级可以通过编程确定为是固定的或是旋转的。,DMA控制器8237A,8237的内部寄存器,DMA控制器8237A,DMA控制器8237A,8237A的外部引脚,8237A内部寄存器及读写操作,基地址寄存器用来存放DMA传送的存储器首址。在初始化时,由CPU以先低字节后高字节的顺序写入。传送过程中,基地址寄存器的内容不变,其作用是在自动重装时,将它的内容重新装入当前地址寄存器,只能写,不能读。当前地址寄存器用来存放DMA传送过程中的当前存储器地址,在每次传送后,地址自动增1(或减1),它的初值与基地址寄存器的内容相同,并且两者是由CPU同时在同一端口写入的。在自动重装时,信号使其内容重新置为地址基值,该寄存器内容可读可写。,8237A内部寄存器及读写操作,基字节计数寄存器用来存放DMA传送的总字节数。在初始化时,由CPU以先低字节后高字节的顺序写入。传送过程中,基字节数计数器的内容不变,当自动重装时,将它的内容重新装入当前字节数计数器。在写计数初值时应注意,如果要传送N个字节,初始化编程时,写入字节数寄存器的值应为N-1。该寄存器内容只能写,不能读。当前字节计数寄存器用来存放DMA传送的剩余字节数,在每次传送之后,字节数计数器减1,当它的值由0减到FFFFH时终止计数,便产生信号,表示字节数传送完毕。它的初始值与基字节数计数器的内容相同,并且两者由CPU同时在同一端口写入的。自动重装时,信号使当前字节数计数器的内容重新置为计数初值。可读可写。,8237A内部寄存器及读写操作,命令寄存器用来控制8237A的操作,其内容由CPU写入,可由复位信号RESET和总清除命令清除。该寄存器只能写,不能读。,命令字格式,8237A内部寄存器及读写操作,方式寄存器方式字用于设置DMA的传送类型、操作方式、地址改变方式、自动重装以及选择通道。,8237方式字格式,方式寄存器,D1D0为工作通道选择位。D1D000选择0通道;D1D001选择1通道;D1D010选择2通道;D1D011选择3通道。D3D2位为传送类型选择位。D3D2=00是校验传送,D3D2=01DMA写传送:数据从I/O设备中读入,写到内存D3D2=10DMA读传送:数据从内存中读出,写到I/O设备D3D2=11无意义,未使用。,方式寄存器,D4位是自动重装选择位。D4=0选择自动重装,D4=1时不能自动重装。D5位是存储器地址生长方向选择位。D5=0表示每传送一个字节地址加1,D5=1表示每传送一个字节地址减1。D7D6位是传送方式选择位。D7D6=00为查询传送方式。D7D6=01为单字节传送方式。D7D6=10为数据块传送(或叫连续传送)方式。D7D6=11为8237A芯片级联方式。,8237A内部寄存器及读写操作,屏蔽寄存器屏蔽寄存器用来禁止或允许通道的DMA请求。屏蔽命令有两种格式:单通道屏蔽字和多通道综合屏蔽字。对于单通道屏蔽寄存器,每次只能屏蔽一个通道,通道号由D1D0位决定。通道号选定后,若D2置1,则禁止该通道请求DREQ;若D2置0,则开通请求DREQ。该寄存器只能写,不能读。,单通道屏蔽寄存器,8237A内部寄存器及读写操作,屏蔽寄存器对于多通道综合屏蔽寄存器,4个通道屏蔽位可同时屏蔽4个通道。若用程序使寄存器的低4位全部置1,则禁止所有的DMA请求,直到写清多通道综合屏蔽寄存器命令(软件命令)的执行(或低4位清0),才允许DMA请求。该寄存器只能写,不能读。,多通道综合屏蔽寄存器,8237A内部寄存器及读写操作,例:开放通道0,可采用下述方法:;使用单个通道屏蔽寄存器MOVAL,00000000B;最低3位=000,开放通道0OUTDMA+10,AL;写单通道屏蔽寄存器;使用多通道综合屏蔽寄存器MOVAL,00001110B;最低4位=1110,仅开放通道0OUTDMA+15,AL;写多通道综合屏蔽寄存器,8237A内部寄存器及读写操作,请求寄存器用于由软件来启动DMA请求,存储器到存储器传送就是利用软件DREQ来启动的。这种软件请求DMA传输的操作必须是数据块字节传送方式,并且在传送结束后,信号会清除相应的请求位,每执行一次软件请求DMA传送,都要对请求寄存器编程一次。RESET信号清除整个请求寄存器。软件请求位是不可屏蔽的。该寄存器只能写,不能读。,请求寄存器,8237A内部寄存器及读写操作,状态寄存器该寄存器用来存放8237A的状态,包括通道已终止计数、通道有DMA请求等状态信息,该寄存器只能读出,不能写入。,状态寄存器,8237A内部寄存器及读写操作,暂存寄存器和软件命令暂存寄存器用于存储器对存储器传送时暂时保存从源地址读出的数据。8237A专门设计了3条软件命令。复位命令清除先/后触发器命令清除屏蔽寄存器命令,8237A初始化编程,8237A的工作方式单字节方式连续方式请求方式级联方式,8237A初始化编程,8237A的工作时序8237A的工作过程由两部分组成,即空闲周期和工作周期。从时间顺序来看,可看成两种操作周期:DMA空闲周期(被动态)和DMA有效周期(主动态)。每个操作周期由一定数量的时钟状态组成。8237A共有7种状态周期:SI、S0、S1、S2、S3、S4及SW。每个时钟状态是一个完整的时钟周期T。,8237A初始化编程,8237A的DMA时序,8237A初始化编程,空闲周期SI也称为空闲状态。8237A在上电之后未初始化之前、或已初始化但还没有外设(或软件)请求DMA传送时,进入空闲周期SI,此时8237A处于被动状态。在空闲周期内连续执行SI时钟状态,个数不限。在进入DMA传输之前,或任何两次DMA服务之间,8237一直处于连续的SI状态。8237A在每个时钟周期进行两种检测:检测它的输入引脚DREQ是否有外设请求DMA服务。对CS#引脚端进行采样,以确认CPU是否要对DMA控制器进行初始化编程或从它读取信息。,8237A初始化编程,过渡周期S08237A被初始化过后,若检测到DREQ请求有效,则表示有外设要求DMA传送,此时,DMAC就向CPU发出总线请求信号HRQ。DMAC向CPU发出HQR信号之后,DMAC的时序从SI状态跳出进入S0状态,并重复执行S0状态,直到收到CPU的应答信号HLDA,才结束S0状态,进入S1状态,开始DMA有效周期。真正的DMA传送是从S1开始的。,8237A初始化编程,DMA有效周期在收到CPU的应答信号HLDA后,8237A就成为系统的主控者,进入DMA传送有效周期,开始传送数据。一个完整的DMA传送周期包括S1、S2、S3和S4共4个状态。在S1状态,8237A发出地址输出允许信号AEN并送出高8位地址,使CPU等其他总线器件的地址线与系统总线地址线断开,而接通8237的地址线A15A0。在S2状态,输出16位存储器地址并发DACK信号给被响应的I/O设备。如果存储器或外设的速度跟不上,可在S2和S3之间插入等待状态周期SW。在S3状态,是读周期。在此状态,产生出MEMR#(读存储器)或IOR#(读外设)信号。在S4状态,是写周期。在此状态,发出IOW#(写向外设)或MEMW#(写向存储器)信号。如果存储器或外设的速度跟不上,可在S4之后插入等待状态周期SW。,8237A初始化编程,初始化编程对8237A进行编程,实际上就是对8237A的寄存器写入命令字,使8237A处于指定的操作方式并完成指定的操作。要对8237A进行编程,除了要知道8237A各寄存器的格式外,还需要知道8237A各寄存器的端口地址。每片8237占16个连续的端口地址,这16个端口地址由8237的地址线A3A0确定。,8237内部端口地址及操作,8237A初始化编程,8237A的初始化步骤写入复位命令,使8237处于复位状态,以便接收新命令。写模式控制寄存器,设置8237工作方式和数据传送类型。写命令寄存器,以控制8237工作。根据所选通道,写当前基地址寄存器和当前基字节寄存器的初值。写屏蔽寄存器,设置要屏蔽的DMA通道。写请求寄存器,可由软件启动DMA数据传送,否则由DREQ信号启动。,8237A初始化编程,例:设从通道2的外设输入1KB的一个数据块,传输至内存为4000H开始的空间,增量传送,块连续传送,传送完不自动初始化,外设的DREQ和DACK信号都是高电平,8237的地址为50H5FH。,8237A初始化编程,模式寄存器的控制字为10000110B;命令寄存器的格式字为10000000B。初始化程序为:OUT5DH,ALMOVAL,10000110BOUT5BH,ALMOVAL,10000000BOUT58H,ALMOVAX,4000HOUT52H,ALMOVAL,AHOUT52H,ALMOVAX,1000OUT53H,ALMOVAL,AHOUT53H,ALMOVAL,0OUT83H,ALMOVAL,00000010BOUT5EH,AL,8237A初始化编程,DMAC8237传送数据到接口的电路框图,8237A初始化编程,DMA初始化程序如下:INITADM:OUTDMA+13,AL;总清MOVAL,40HOUTDMA+2,AL;送地址低字节到通道1MOVAL,74HOUTDMA+2,AL;送地址高字节到通道1,7440H为通道基地址MOVAL,08HOUTPAG,AL;送页地址1000BMOVAL,64HOUTDMA+3,AL;送传送字节数低字节到通道1MOVAL,0;0064H表示100个字节OUTDMA+3,AL;送传送字节数高字节到通道1MOVAL,59H;通道1方式字:读操作,单字节传送OUTDMA+11,AL;地址递增,自动预置MOVAL,0;命令字:允许工作,固定优先级OUTDMA+8,AL;DACK有效OUTDMA+15,AL;写入四通道屏蔽寄存器,规定允许4个通道均可请求DMA传送,8237A应用举例,PC/AT机DMA系统连接

温馨提示

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

评论

0/150

提交评论