




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机接口技术NanjingUniversityofScience&TechnologyNanjingUniversityofScience&Technology本课程主要内容第2章总线技术第5章人机接口技术第4章串行通信及接口技术第3章DMA与DMA控制器第1章接口技术基础第6章D/A、A/D转换及接口技术NanjingUniversityofScience&Technology
高速外部设备和存储器在进行数据交换时,一般是在CPU的控制下进行的,即CPU首先执行一条输入指令,发出访问源数据所在地的地址码和读信号,并将传送的数据通过数据总线读入CPU的累加器中暂存,然后再执行一条输出指令,发出访问目的数据所在地的地址码和写信号,将暂存的这些数据送入外部设备或送入存储器。用此方法的传输速率约为几十KB/s,速度太慢,对于大量的数据传送很费时。DMA(DirectMemoryAccess)概述NanjingUniversityofScience&Technology为此,产生了直接存储器存取技术。它是采用一个DMA控制器,在进行DMA存取时,CPU让出总线控制权,不再采用输入、输出指令的方法进行数据存取,而用硬件方法由DMA控制器控制地址总线、控制总线和数据总线,存储器和外设直接交换数据,减少了中间环节,提高了传送速度,传送速率可达1.6MB/s。DMA(DirectMemoryAccess)概述NanjingUniversityofScience&TechnologyDMA控制器的原理图NanjingUniversityofScience&Technology外部设备向DMA控制器发出DMA请求。如果DMA控制器未被屏蔽,则在接到DMA请求后,向CPU发出总线请求,希望CPU让出总线控制权,由DMA控制器控制。CPU执行完现行的总线周期,若CPU同意让出总线控制权,向DMA控制器发出响应请求的回答信号。DMA控制器接管系统总线,向外部设备发出DMA请求响应的应答信号。进行DMA传送。DMA控制器给出传送数据的内存地址,传送的字节数及发出RD/WR信号;在DMA控制下,每传送一个字节,字节计数器减1,直至计数器之值为0。传送结束,DMA控制器撤除要求CPU让出总线控制权的申请,CPU重新控制总线,恢复CPU的工作。DMA方式的数据传输过程NanjingUniversityofScience&Technology
DMA传送不仅用于高速外部设备与存储器之间的数据传送,还可用于存储器与存储器之间,外部设备与外部设备之间的数据传送。通常在微机系统中,图像显示、磁盘存取、磁盘间的数据传送和高速的数据采集系统均可采用DMA数据交换技术。DMA方式的数据传输过程NanjingUniversityofScience&TechnologyIntel8237ADMA控制器
DMA控制器8237A是Intel86系列微处理器的配套芯片,可用来接管CPU对总线的控制权,在存储器与高速外设之间建立直接进行数据块传送的高速通路。8237ADMA控制器有四个通道,每个通道都可用于DMA数据传送,也就是说一片8237可以带四台外部设备。在IBMPC/XT微型机中,8237A占据00H~0FH共16个端口地址。对8237A控制器的4个通道安排如下:
CH0:用作动态存储器的刷新控制;
CH1:为用户预留;
CH2:软盘驱动器数据传输用的DMA控制;
CH3:硬盘驱动器数据传输用的DMA控制;NanjingUniversityofScience&Technology
8237DMA控制器是一个40引脚的双列直插封装芯片。8237A主从两面性:作为DMAC,即8237A控制总线时是主模块。这是8237工作的主方式;作为I/O芯片,8237A可被CPU读写,是系统总线的从设备,是8237A的从方式。运行时注意8237A主/从地址的变化。8237可编程DMA控制器Intel8237ADMA控制器的结构图NanjingUniversityofScience&TechnologyRESET——复位输入端,高电平有效。复位时,屏蔽寄存器被置1,其他寄存器均清0。CS#——片选输入端,低电平有效,由A4~A15译码得到。为低电平时,8237A被选中,CPU可以对8237A进行读写(进行预置或读取工作状态)。A3~A0
——最低的4位地址线,它们是双向信号引脚。DMA控制器作为从模块时,A3~A0作为输入端,用来选择DMAC内部的16个端口地址。IOR#——输入/输出设备读信号,双向、三态、低电平有效。在DMA控制器作为从模块时,IOR为输入控制信号。此信号有效时,CPU读取DMA控制器中内部寄存器的值。IOW#——输入/输出设备写信号,和IOR类似,在DMA控制器作为从模块时,是输入信号。此信号有效时,CPU向DMA控制器的内部寄存器中写入信息,即进行编程。DB7~DB0——8位双向三态数据线。在DMA控制器作为从模块时,CPU通过DB7~DB0对8237A进行读写。8237A作为从模块时的引脚信号NanjingUniversityofScience&Technology地址相关信号:A3~A0——DMAC为主模块时,这4个信号端工作于输出状态,提供存储器的最低4位地址。A7~A4——这4位地址线始终工作于输出状态或者浮空状态。它们在DMA传输时提供存储器的中间4位地址。DB7~DB0——DMAC为主模块时,DB7~DB0输出当前地址寄存器中的高8位地址,并通过信号ADSTB打入外部锁存器,这样,和A7~A0输出的低8位地址一起构成16位地址。ADSTB——地址选通信号,输出,高电平有效。此信号有效时,将DMA控制器的当前地址寄存器中的高8位地址经DB7~DB0送到外部锁存器。AEN——地址允许信号,输出,高电平有效。AEN使地址锁存器中锁存的高8位地址以及页面地址寄存器的4位地址一起送到地址总线上,与芯片直接输出的低8位地址共同构成内存单元地址的20位地址。AEN信号也使与CPU相连的地址锁存器无效。这样,就保证了地址总线上的信号是来自DMA控制器,而不是来自CPU。8237A作为主模块时的引脚信号NanjingUniversityofScience&Technology对存储器/外设接口的读写控制信号:IOR#——DMAC作为主模块时,IOR输出外设接口的读控制信号,此信号有效时,I/O接口部件中的数据被读出送往数据总线。IOW#——DMAC作为主模块时,IOW输出外设接口的写控制信号,此信号有效时,存储器中读出的数据被写入I/O接口中。READY——准备就绪信号输入端,高电平有效。当所用的存储器或I/O接口的速度比较慢,需要延长传输时间时,使READY端处于低电位,8237A会自动插入等待周期。数据准备就绪时,READY端为高电平,表示可以进行数据传输。MEMR#——存储器读信号,低电平有效。此信号有效时,所选中的存储器单元的内容被读到数据总线。MEMW#——存储器写信号,低电平有效。此信号有效时,数据总线上的内容被写入选中的存储单元。8237A作为主模块时的引脚信号NanjingUniversityofScience&TechnologyDMA联络信号DREQ——通道DMA请求信号,输入。每个通道对应一个DREQ信号端。DREQ的极性可以通过编程来选择。当外设接口要求DMA传输时,便使DREQ处于有效电平,直到DMAC控制器送来DMA响应信号DACK以后,I/O接口才撤除DREQ的有效电平。DACK——通道DMA应答信号,输出。这是DMAC送给I/O接口的回答信号,每个通道对应一个DACK信号端。DMAC获得CPU送来的总线允许信号HLDA以后,便产生DACK信号送到相应的外设接口。DACK信号的极性可以通过编程选择。在进行DMA传输时,系统地址总线上传送的是存储器地址,该信号相当于IO接口的地址选择信号。8237A作为主模块时的引脚信号NanjingUniversityofScience&TechnologyDMA联络信号HRQ(holdrequest)——总线请求信号,输出。8237A收到外设接口发来DREQ信号后,如果该通道的DMA请求没有被屏蔽,则DMA控制器的HRQ端输出有效电平,向CPU发出总线请求。HLDA(holdacknowledge)——总线响应信号,输入。DMAC向CPU发总线请求信号HRQ以后,CPU发回的总线响应信号。8237A收到该信号后,便获得了总线控制权。HLDA也称为总线保持回答信号。EOP(Endofprocess)——DMA传输过程结束信号,双向。从外部往DMAC送一个EOP信号时,DMA传输过程被强制性地结束。另一方面,当DMAC的任一通道中计数结束时,会从EOP输出一个有效电平,作为DMA传输结束信号。不论是从外部终止DMA过程,还是内部计数结束终止DMA过程,都会使DMA控制器的内部寄存器复位。可以使用EOP信号向CPU申请中断,以便及时处理这一事件。8237A作为主模块时的引脚信号NanjingUniversityofScience&Technology其它引脚信号:CLK——时钟输入端,8237A的时钟频率为3MHz,8237A-4的时钟频率为4MHz,8237A-5的时钟频率为5MHz。后面两种DMA控制器是8237A的改进型,工作速度比较高,但工作原理及使用方法和8237A完全一样。电源,地——提供8237A工作所需要的+5V电源和接地信号。8237A作为主模块时的引脚信号NanjingUniversityofScience&Technology8237的工作周期
Intel8237有两种主要的工作周期,即空闲周期和有效周期,每一个周期又由若干个时钟周期组成。1、空闲周期SI(IdleCycle)8237A复位后就处于空闲周期,在此周期,CPU可对8237A作初始化编程,或者虽然已经初始化,但还未有DMA请求输入。空闲周期中,8237A要检查DREQ的状态,以确定是否有通道请求DMA服务。同时也对CS端采样,判定CPU是否要对8237A进行读写操作,如CS为低电平,且HLDA也为低电平,就使芯片进入编程工作状态。NanjingUniversityofScience&Technology8237的工作周期2、有效周期(ActiveCycle):由S0~S4五种周期组成。1)S0:等待周期。它是8237A接到外设的DREQ请求,并向CPU发出了HRQ后进入的一个周期,在此期间等待CPU让出总线控制权。在得到来自CPU的HLDA响应后,结束S0状态,准备进入DMA操作过程。在S0期间,8237A仍可以接受来自CPU的读写操作。一个完整的DMA传输(完成一个字节传输)应包括4个时钟周期,即S1~S4。对于速度稍慢的外设,也可以用READY信号在S3与S4之间产生等待周期Sw。NanjingUniversityofScience&Technology8237的工作周期2)S1周期:8237用DB0~DB7送出高8位地址A8~A15,同时使ADSTB有效,将高8位地址送入锁存器(在S2的下降沿信号被锁存)。由于S1是CPU已经释放总线后进入的状态,所以8237A还使AEN有效。但是,在传输一段连续的数据时,存储器地址总是相邻的,它们的高8位地址往往是不变的。这样在进行下一个字节的传输时,就没有必要再把高位地址锁存一次,这种情况下S1可以省略。3)S2期间:8237A首先向外设送出DACK信号,启动外设开始工作。同时开始送出读数据的控制信号。如果是DMA读操作,就送出MEMR到存储器。反之,就把IOR送到外设。4)S3期间:送出写操作所需的控制信号。如DMA读,就将IOW送外设;反之则将MEMW送存储器。S3状态结束时,在下降沿检测READY端的状态,若为低电平,就在S3后产生一个Sw
周期,延续S3的各种状态。在S3或Sw结束处若检测到高电平,就进入S4周期。NanjingUniversityofScience&Technology8237的工作周期
4)S4周期:结束本次一个字节传输。如果整个DMA传输结束,后面紧接的是SI周期,如果还要继续进行下一个字节传输,再次重复进行S1~S4的过程。如果进行存储器之间数据传输,一个字节的传输要经过两个阶段:第一阶段是从源地址中读出一个字节,存入8237A的暂存寄存器,第二阶段将这个字节写入目的地址中。每个阶段的完成都要经过4个周期时间。此外由于READY的作用,还使8237A增加了一个Sw
周期,使全部周期分为7种。8237A的典型时序NanjingUniversityofScience&Technology
8237A是一个可编程的集成电路芯片,共占用了16个端口地址。其中每个通道有2个专用的地址,其余8个地址由各通道共用。与之配合工作的还有地址锁存器,用来锁存数据线DB7~DB0上分时送出的地址信号A15~A8;还有页面寄存器,端口地址为83H,用来产生地址信号A19~A16,与8237A发出的16位地址组合得到20位地址信号。8237A的编程使用Intel8237ADMA控制器的结构图NanjingUniversityofScience&Technology1、基地址寄存器和基字节数寄存器
基地址寄存器(16位):存放需传送的数据块的第一个字节的地址。故DMA控制器一次可以传输的最大数据块是64KB。基字节数寄存器(16位):存放需传送的数据块的字节数。8237的寄存器组和编程这两个寄存器的内容在对8237初始化时由程序写入,先写低字节,后写高字节,其内容在整个数据块的DMA传输过程中保持不变。这两个寄存器的内容只能写入,不能读出。写入后,其内容还同时传送到当前地址寄存器和当前字节数寄存器。NanjingUniversityofScience&Technology2、当前地址和当前字节数寄存器(16位)当前地址寄存器:存放DMA传送的当前地址值,每次DMA传送后,该寄存器的值自动增量或减量。该寄存器的值可由CPU读出(先低位,后高位)。若设置为自动预置,则在每次计数结束后,自动恢复为它的初始值(即保存在基地址寄存器中的初值)。当前字节数寄存器:每次传送后,该寄存器的值自动减1。该寄存器的值可由CPU读出。若设置为自动预置,则在每次计数结束后,自动恢复为它的初始值(即保存在基字节数寄存器中的初值)。8237的寄存器组和编程NanjingUniversityofScience&Technology8237的内部寄存器通道寄存器操作CS#I0R#I0W#A3A2A1A0内部触发器DB0~DB70基/当前地址写
010010
0000000001A0~A7A8~A15当前地址读
001001
0000000001A0~A7A8~A15基和当前字节数写
010010
0001000101W0~W7W8~W15当前字节数读
001001
0001000101W0~W7W8~W151基/当前地址写
010010
0010001001A0~A7A8~A15当前地址读
001001
0010001001A0~A7A8~A15基和当前字节数写
010010
0011001101W0~W7W8~W15当前字节数读
001001
0011001101W0~W7W8~W15NanjingUniversityofScience&Technology8237的内部寄存器通道寄存器操作CS#I0R#I0W#A3A2A1A0内部触发器DB0~DB72基/当前地址写
010010
0100010001A0~A7A8~A15当前地址读
001001
0100010001A0~A7A8~A15基/当前字节数写
010010
0101010101W0~W7W8~W15当前字节数读
001001
0101010101W0~W7W8~W153基/当前地址写
010010
0110011001A0~A7A8~A15当前地址读
001001
0110011001A0~A7A8~A15基/当前字节数写
010010
0111011101W0~W7W8~W15当前字节数读
001001
0111011101W0~W7W8~W15NanjingUniversityofScience&Technology例:某外设通过通道1传送100个字节的数据到起始地址为8000H的内存区域,8237A芯片的片选地址是00H,CPU为8088。则初始化程序如下: MOV AL,00H;写入存储区首地址低8位 OUT 02H,AL;02H为通道1的基地址寄存器的端口地址 MOV AL,80H;写入存储区首地址高8位 OUT 02H,AL MOV AL,64H;传送字节数的低8位 OUT 03H,AL;03H为通道1的基字节寄存器的端口地址 MOV AL,00H;传送字节数的高8位 OUT 03H,AL
8237的寄存器组和编程NanjingUniversityofScience&Technology8237A每个通道都有一个模式寄存器,用于控制本通道的工作方式,CPU可通过XBH端口地址将控制字写入该寄存器。模式寄存器(ModeRegister)模式选择请求传输模式00单字节传输模式001111块传输模式级联传输模式地址增量选择地址加10地址减11自动预置功能选择禁止0
允许1
通道选择
0选0#
Channel
00
1
11
01选1#
Channel选2#
Channel选3#
Channel传输类型选择
00校验传输001111
XX写传输
读传输非法D7D6=11D0D1D2D3D4D5D6D7NanjingUniversityofScience&Technology
8237A一共有四种工作模式,分别是单字节传输模式、块传输模式、请求传输模式和级联模式。单字节传输模式
8237A完成1个字节传输后,8237A释放系统总线,一次DMA传输结束。如果收到新的DMA请求,则重新申请总线,重复上述过程。这种方式下,CPU可以在每个DMA周期结束后控制总线,进行数据传输,所以不会对系统的运行产生大的影响。模式寄存器(ModeRegister)NanjingUniversityofScience&Technology
8237A一共有四种工作模式,分别是单字节传输模式、块传输模式、请求传输模式和级联模式。块传输方式
DMA控制器获得总线控制权后,可以连续进入多个DMA周期,进行多个字节的传输(最多64KB)。当字节计数器减为0,或者收到外部输入的强制停止命令(从EOP引脚输入一个低电平信号)时,8237A才释放总线而结束传输。在数据传输期间无需保持DREQ为有效电平。显然,这种方式可以获得最高的数据传输速度。在数据传输期间,CPU不能访问总线(包括取指令)。如果一次传输的数据较多,这种方式会对系统工作产生一定的影响。模式寄存器(ModeRegister)NanjingUniversityofScience&Technology
8237A一共有四种工作模式,分别是单字节传输模式、块传输模式、请求传输模式和级联模式。请求传输模式这种方式与块传输类似,申请一次总线可以连续进行多个数据的传输,直到DREQ为无效电平或计数结束。但是,在每传输1个字节后,8237A都对外设接口的DMA请求信号线DREQ进行测试,如果检测到DREQ端变为无效电平,则马上暂停传输。当DREQ又变为有效电平时,就接着进行下一个数据的传输。这种方式允许外设由于某种原因发生的数据不连续,按照外设的最高速度进行数据传输,使用比较灵活。模式寄存器(ModeRegister)NanjingUniversityofScience&Technology
8237A一共有四种工作模式,分别是单字节传输模式、块传输模式、请求传输模式和级联模式。级联传输方式几个8237A可以进行级联,一片8237A用作主片,其余用作从片,构成主从式DMA系统。所谓级联,就是从片收到外设接口的DMA请求信号后,不是向CPU申请总线,而是向DMA控制器主片申请,再由主片向CPU申请。一片主片最多可以连接四片从片。这样,五片8237A构成的二级DMA系统,可以得到16个DMA通道。级联时,通过编程使主片的模式寄存器设置为级联传输方式,从片设置成上面的三种方式之一。模式寄存器(ModeRegister)NanjingUniversityofScience&Technology主从DMA系统NanjingUniversityofScience&Technology在前三种工作模式下,DMA传送有三种类型:DMA读传送(存储器到I/O接口的传送)
把数据由存储器传送至外设,操作时由MEMR#有效从存储器读出数据,IOW#有效把数据传送给外设。(2)DAM写传送(I/O接口到存储器的传送)
把外设输入的数据写至存储器中,操作时由IOR#有效从外设输入数据,MEMW#有效把数据写入内存。(3)校验传送校验传送实际上不传送数据,主要用来对读传送或写传送功能进行校验。在校验传送时8237A保留对系统总线的控制权,但不产生对I/O接口和存储器的读写信号,只产生地址信号,计数器进行减1计数,响应EOP信号。校验传送一般用于器件测试。注意DMA的读写方向是以外设为参考设备的。模式寄存器(ModeRegister)NanjingUniversityofScience&Technology例如:PC机软盘读写操作,选择用8237的通道2作DMA传输,若采用单字节传送,地址增量,不自动预置,则:从软盘读(I/O→M,DMA写传输)模式控制字为:01000110B=46H向软盘写(M→I/O,DMA读传输)模式控制字为:01001010B=4AH校验软盘模式控制字为:01000010B=42H模式寄存器(ModeRegister)NanjingUniversityofScience&Technology8位的寄存器,用来控制8237的工作,必须由CPU编程写入至X8H端口地址。可通过RESET信号或DMA的主清除指令使其复位。控制寄存器(CommandRegistered)MEM传输DACK有效电平低电平有效0高电平有效1
01DREQ有效电平高电平有效扩展写
MEM0
11
0
低电平有效不扩展写
0扩展写1D3=1
X优先级类型01固定优先级循环优先级禁止允许Channel0地址保持不变
X源地址可变保持源地址不变
D0=08237A工作01
Enable8237A
Disable8237A时序类型01
X普通时序压缩时序D0=1D0D1D2D3D4D5D6D7NanjingUniversityofScience&Technology存储器到存储器传送通道0:地址寄存器:为源区的地址字节数寄存器:为要传送的字节数通道1:地址寄存器:为目的区的地址字节数寄存器:要传送的字节数传送过程:传送由通道0的软件DREQ启动,8237按正常方式向CPU发出DMA请求信号HRQ,待CPU用HLDA回答后,传送就可以开始了。传送时先将源区的数据放入8237的临时寄存器中,然后再传送到目的区,每传送一个字节需要8个时钟周期。控制寄存器(CommandRegistered)NanjingUniversityofScience&Technology8237A的启动和停止:D2=0启动8237A工作,D2=1停止8237的工作。该位影响所有通道,一般情况下应使它为0(启动工作)时序类型普通时序:每传输一个字节一般需要3个时钟周期,S1用于锁定高8位地址,在高8位地址不变时,S1是可以省略的。S3是一个延长周期,以保证可靠的读写操作。压缩时序:在追求高速传输,且器件的读写速度又可以跟得上时,S3也是可以省略的。于是一个字节的传输可压缩到2个时钟周期(S2,S4)就可完成。但是,使用压缩时序时,8237A只改变低8位地址,因此传输的字节数限制在256个字节以内。扩展写:通常写控制信号在S3才变得有效,扩展写表示读、写脉冲同时产生,在S2就开始变得有效。这种做法可以使一些需要较长时间写入的设备能得到足够的写入时间。使用压缩时序时,这一位无意义。控制寄存器(CommandRegistered)NanjingUniversityofScience&Technology例如:要求8237按如下要求工作:禁止存储器到存储器传送,按正常时序,不进行扩展写,通道按固定优先权排序,允许8237进行DMA操作,DREQ和DACK均为高电平有效。则命令字为:
10000000B程序段为:
MOVAL,80H OUTDMA+8,AL控制寄存器(CommandRegistered)NanjingUniversityofScience&Technology8位的寄存器,只读,端口地址和控制寄存器相同。D0~D3:用来指出4个通道的计数结束(TC,TerminalCount)状态。如D3=1表示通道3计数到0,因而计数结束。D4~D7:表示4个通道当前有无DMA请求。比如D6=1,表示通道1当前有DMA请求需要处理。D7D6D5D4D3D2D1D0状态寄存器(StatusRegister)1:通道0已达到TC1:通道1已达到TC1:通道2已达到TC1:通道3已达到TC1:通道3请求1:通道2请求1:通道1请求1:通道0请求NanjingUniversityofScience&Technology不用0清除MASK位建立MASK位1通道选择整个8237芯片的启动和停止由控制寄存器的D2位设置。每个通道的DREQ是否能被响应可以由单通道屏蔽寄存器单独控制。当一个通道的DMA屏蔽标志为1时,这个通道就不能接收DMA请求了。这时,不管是硬件的DMA请求,还是软件的DMA请求,都不会被受理。CPU可通过写控制字至XAH端口使其生效。单通道屏蔽寄存器(singlemaskregister)D7D6D5D4D3D2D1D000Channel001Channel110Channel211Channel3NanjingUniversityofScience&Technology不用0清Channel3M位设Channel3M位10清Channel2M位1设Channel2M位
8237A还允许使用综合屏蔽命令字来设置所有通道的屏蔽触发器。这样,用综合屏蔽命令可以一次完成对4个通道的屏蔽设置。CPU可通过写控制字至XFH端口使其生效。0清Channel0Mask位1设Channel0Mask位0清Channel1Mask位1设Channel1Mask位综合屏蔽寄存器(allmaskregister)D7D6D5D4D3D2D1D0NanjingUniversityofScience&Technology例如:对软盘读写操作前,在进行DMA初始化时,都必须解除通道2的屏蔽,以便响应硬件DREQ2的DMA请求,可以采取下面两种方式之一清除屏蔽寄存器:使用单一通道屏蔽命令
MOVAL,00000010B OUTDMA+0AH,AL使用综合屏蔽命令
MOVAL,00001011B OUTDMA+0FH,AL屏蔽应用实例NanjingUniversityofScience&Technology不用0清除DMA请求位建立DMA请求位100Channel001Channel110Channel211Channel38237A的每个通道都配备1个DMA请求触发器和1个DMA屏蔽触发器,分别用来设置DMA请求标志和屏蔽标志。DMA请求寄存器(RequestRegister)D7D6D5D4D3D2D1D0一般的情况下,DMA请求由硬件发出,通过DREQ引脚引入DMA请求。但也可以由软件发出,由软件来启动DMA传输。DMA请求寄存器中的D1、D0位用来指出通道号,D2位用来表示是否对相应通道设置DMA请求,如D2为1,则使相应通道的DMA请求触发器置1,于是产生DMA请求,如D2为0,则无请求。NanjingUniversityofScience&Technology8237A的软件命令有3条:主清除命令(复位命令)、清除高/低触发器和清除屏蔽标志主清除(masterclear)命令:该命令的功能和Reset相同,它使控制寄存器、状态寄存器、DMA请求寄存器、暂存器以及高/低触发器都清0,而使屏蔽寄存器置1,使8237A进入空闲周期。对端口地址为XDH的端口实施一次写操作,也就是对该端口执行一条输出指令,就可以实现对8237A的复位操作。清除高/低触发器:8237A内部有一个“高/低触发器”,当这个触发器为0时,访问16位寄存器的低字节;为1时,访问高字节。该触发器在访问一次16位寄存器后,能自动翻转,0变1或1变0。在写入内存储器起始地址或字节计数器初值之前,将这个触发器清0,就可以按照先低位字节,后高位字节的顺序写入初值。CPU通过写XCH端口地址使其有效。清除屏蔽标志(clearmaskregister):清除4个通道的屏蔽标志,使各通道均能接受DMA请求。CPU通过写XEH端口地址使其有效。软件命令(SoftwareCommand)NanjingUniversityofScience&Technology写0C号地址:清除高/低触发器,使将装入数据的顺序为先LSB后MSB。写0D号地址:总清除命令(软件复位命令),屏蔽寄存器被置为1,其它寄存器被置为0,软件复位。写0E号地址:清除屏蔽标志。关于3个软件命令:只与端口号有关,与DB线上的内容无关。软件命令(SoftwareCommand)NanjingUniversityofScience&Technology8237的内部寄存器通道寄存器操作CS#I0R#I0W#A3A2A1A0内部触发器DB0~DB70基/现行地址写
010010
0000000001A0~A7A8~A15现行地址读
001001
0000000001A0~A7A8~A15基和现行字节数写
010010
0001000101W0~W7W8~W15现行字节数读
001001
0001000101W0~W7W8~W151基/现行地址写
010010
0010001001A0~A7A8~A15现行地址读
001001
0010001001A0~A7A8~A15基和现行字节数写
010010
0011001101W0~W7W8~W15现行字节数读
001001
0011001101W0~W7W8~W15NanjingUniversityofScience&Technology8237的内部寄存器通道寄存器操作CS#I0R#I0W#A3A2A1A0内部触发器DB0~DB72基/现行地址写
010010
0100010001A0~A7A8~A15现行地址读
001001
0100010001A0~A7A8~A15基/现行字节数写
010010
0101010101W0~W7W8~W15现行字节数读
001001
0101010101W0~W7W8~W153基/现行地址写
010010
0110011001A0~A7A8~A15现行地址读
001001
0110011001A0~A7A8~A15基/现行字节数写
010010
0111011101W0~W7W8~W15现行字节数读
001001
0111011101W0~W7W8~W15NanjingUniversityofScience&Technology控制及状态寄存器的寻址及有关命令端口地址A3A2A1A0操作寄存器CS#I0R#I0W#备注08H
10001000写读命令寄存器状态寄存器
01000109H
10011001写读请求寄存器非法
0100010AH
10101010写读单通道屏蔽寄存器非法
010001对单一通道进行屏蔽0BH
10111011写读模式寄存器非法
0100010CH
11001100写读清高/低触发器非法
010001软件命令0DH
11011101写读主清除命令临时寄存器
010001软件命令0EH
11101110写读清除所有通道屏蔽非法
010001软件命令0FH
11111111写读屏蔽所有通道非法
010001NanjingUniversityofScience&Technology8237的内部口地址及操作(小结)口地址读(IOR)写(IOW)00,02,04,06通道0~3当前地址寄存器通道0~3基地址、现行地址寄存器01,03,05,07通道0~3当前字节寄存器通道0~3基字节、现行字节寄存器08H状态寄存器控制寄存器09H——请求寄存器0AH——单一通道屏蔽0BH——模式寄存器0CH——清除高/低后触发器0DH暂存器主清除命令0EH——清通道屏蔽位0FH——综合屏蔽标志NanjingUniversityofScience&Technology8237的编程步骤关闭8237A,以保证对8237A初始化编程结束后才响应DMA操作请求;或对通道进行屏蔽。发主清除(软件复位)命令;将内存起始地址送基地址和现行地址寄存器,先写低位,后写高位;将要传送的字节数送基字节数和现行字节数寄存器,先写低位,后写高位;写方式字,设置需使用的通道的工作方式;启动8237A,并将对8237的操作方式控制字写入控制寄存器,控制8237A工作。清除该通道的屏蔽位,准备接受DMA请求;可用软件方法将请求DMA操作控制字写入请求寄存器,或用硬件方法,等待DREQ引线端发出DMA操作申请。NanjingUniversityofScience&Technology对8237A的编程举例例1:某外设通过通道1传送100个字节的数据到起始地址为8000H的内存区域,8237A芯片的片选地址是00H,CPU为8088。编写初始化程序。MOV AL,04H;关闭8237A,令控制寄存器D2=1OUT 08H,AL;控制寄存器的端口地址OUT 0D,AL;复位命令,只要地址正确,与传送数据无关MOV AL,00H;写入存储区首地址低8位OUT 02H,ALMOV AL,80H;写入存储区首地址高8位OUT 02H,ALMOV AL,64H;传送字节数的低8位OUT 03H,ALMOV AL,00H;设置传送字节数的高8位OUT 03H,ALMOV AL,55H;设置通道1工作方式控制字OUT 0BH,AL;单字节传送,地址加1,自动预置MOV AL,02H;只允许通道1进行DMA传送OUT 0FH,ALMOV AL,00H;DACK低电平有效,DREQ高电平有效OUT 08H,AL;固定优先级,启动8237A工作NanjingUniversityofScience&Technology对8237的编程举例例2:假设要利用通道0的单字节写模式,由外设输入一个数据块到内存,数据块长度为8K,内存区首地址为2000H,采用地址加1变化,不进行自动预置。外设的DREQ与DACK均为低有效,普通时序,固定优先级。试完成初始化程序与应用程序。设8237A的口地址为0010H~001FH模式寄存器:01000100(44H)控制寄存器:01000000(40H)
OUT1DH,AL;软件复位
MOVAL,00H;基地址OUT10H,ALMOVAL,20H;OUT10H,ALMOVAL,00H;基字节OUT11H,ALMOVAL,20HOUT11H,AL
MOVAL,44H;模式OUT1BH,AL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信阳涉外职业技术学院《职业生涯规划指导与创新创业(四)》2023-2024学年第一学期期末试卷
- 2025-2030年中国IC卡行业运行态势及发展规划研究报告
- 2025-2030年中国ABS行业市场规模分析及投资建议研究报告
- 甘肃省武威市凉州区洪祥镇重点名校2023-2024学年中考试题猜想数学试卷含解析
- 2025新员工入职安全培训考试试题加答案解析
- 2024-2025车间安全培训考试试题7A
- 2025年公司厂级员工安全培训考试试题及答案 完整
- 2025管理人员安全培训考试试题答案研优卷
- 2024-2025员工安全培训考试试题答案基础题
- 2024-2025企业员工岗前安全培训考试试题附参考答案(B卷)
- 团结协作青春展新姿
- 防灾减灾培训(安全行业讲座培训课件)
- 2024年《BIM技术介绍》课件
- 情景教学法在小学英语课堂中的有效运用研究(开题报告)
- 核心素养视域下小学道德与法治生活化教学策略探究
- 花键计算公式DIN5480
- 《荷塘月色》课件+2024-2025学年统编版高中语文必修上册
- 软著著作权单位与个人合作开发协议书(2篇)
- 2024年江苏省南通市中考英语试卷(含答案解析)
- 下学期八年级期中考试家长会课件
- 幼儿园教师资格考试面试2024年下半年试题及解答
评论
0/150
提交评论