版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《微机原理与接口技术》复旦大学第8章微型计算机的I/O接口技术
有关接口的基本概念
接口数据的传送方式8253定时/计数器并行接口芯片8255ADMA控制器8237A8.1有关接口的基本概念8.1.1接口的概念与功能CPUI/O接口I/O设备端口地址数据控制或状态信号数据状态控制I/O接口示意图1.数据信息通常为8位或16位1、数字量由键盘、光电输入机等提供的二进制形式的信息2、模拟量(连续变化的信号)由传感器、温度、电压等提供的信号,他需先经过模数(I/O)转换后,才能输入到计算机中去。3、开关量只有两个状态的量,如电机的启停、开关的开合等,只需用1位二进制数即可表示。8.1.2接口信号的分类2.状态信息
I/O接口反映I/O设备工作状态的信息。3.控制信息
CPU向I/O设备发送的控制其工作的信息。8.1.3端口的概念与编址方式2.端口编址方式
CPU寻址外设有两种方式:(1)I/O设备与存储器统一编址(2)I/O设备独立编址
1.端口地址的概念
CPU能够与内存交换数据,计算机对内存单元都进行了编址,每一个字节的存储单元占一个地址,CPU通过在其地址线上发地址信号来通知存储器要与哪一个存储单元交换数据。
CPU能够与外设交换数据,计算机对外设接口进行了编址,称为端口地址,在与I/O接口交换数据时,CPU通过在地址线上发出要访问外设接口的端口地址来指出要与哪个I/O接口交换数据。一种具体机型内I/O设备采用哪种编址方式,取决于CPU的硬件设计。外设Kou1(1)I/O设备与存储器统一编址:
将外设接口电路的一个端口作为存储器的一个单元。优点:不需要专门的输入输出指令,可用全部的存储器操作指令。(指令多且灵活)
缺点:外设占用部分内存单元地址,相对减少了内存容量。内存与外设内存026D0000000001EFFFFF0000F0001F0002FFFFF65F3020024E0(2).外设端口单独编址
优点:不占用内存缺点:CPU需设专门的I/O指令。I/O指令:若端口地址在
0~FFH范围内,则用直接寻址
INAL,端口地址(输入)
OUT端口地址,AL(输出)
如:INAL,20HOUT80H,AXOUT84H,AL若端口地址在
0100~FFFFH范围内,则用
DX间接寻址:
MOVDX,端口地址
INAL,DXOUTDX,AL
如:MOVDX,300HINAL,DX65F30200外设000000FFFFFF0100KOU1KOU2KOU311223344KOU100KOU10111323201内存00000FFFFF(2)中断方式(3)
DMA方式8.2接口数据的传送方式CPU与外设数据传送的三种方式无条件传送查询方式(条件传送)(1)程序方式8.2.1无条件传送方式
在该方式中,外设总被认为已处于准备就绪和准备接收状态,CPU不查询外设的状态,当需要与之交换数据时,直接执行输入输出指令,就开始接收和发送数据。优点:软硬件都达到最简单。缺点:外设随时处于待命状态,且处理速度能跟上CPU的速度,否则会出错。
直接I/O方式输入A0A2A1A4A3A5A7A6&A8A10A9A12A11A13A15A14&D0IOR≥1C+5VK作为无条件输入的例子,我们看一下如图所示的电路,在此例中,开关K的状态总是随时可读的。CPU可随时用如下指令读取:MOV DX,0FFF7HIN AL,DXAND AL,01HJZ L1;以下是D0=1,即K打开时的处理…L1:;以下是D0=0,即K闭合时的处理……8.2.2查询方式
CPU在进行输入输出前,先检查外设提供的READY信号是否有效,若有效:外设可以接受操作,CPU即进行输入输出操作。若无效:外设不接受操作,CPU等待。等待期间,CPU循环检测READY信号,一旦发现其变为有效,立即操作。查询方式输入过程的流程图:(1)CPU从接口(状态口)中读取状态字(2)CPU检测状态字,满足条件,CPU从数据口输入(输出)数据。(3)不满足条件,CPU重新读取状态字测试I/O设备状态是否启动结束执行数据传送准备就绪?
查询方式流程图优点:1、安全可靠2、用于接口的硬件较简单D0~D7外设CP查询方式输入E74LS273A0A2A1A4A3A5A7A6&A10A9A12A11A13A15A14A8≥1≥1IOW≥1IOR≥1Q0~Q7D0~D7BUSYD0缺点:CPU必须循环等待外设准备就绪,效率不高。8.2.3中断方式这种方式在§7中已作详细介绍8.2.4DMA方式以上三种方法可完成一般的数据交换问题,但当外设与内存间需要进行大批数据传输时(比如硬盘读写),以上任何一种方法速度都不够理想。在上面的方法中,要从外设传送一个字节的数据到内存,须先由CPU进行一次总线读操作,读取外设数据到其内部寄存器中,然后再由CPU进行一次总线写操作,将数据写入内存,这一过程至少需要8个时钟周期,当数据较多时,显然耗时太长。为了解决外设与内存之间大块数据交换时的速度问题,人们又提出了DMA方式。DMA方式是一种让数据在外设和内存之间(或者内存到内存之间)直接传送的方式,其基本特点是没有CPU参与数据传送,在DMA传送期间,CPU自己挂起,把总线控制权让出来,在DMA控制器的管理下,提供给外设和内存使用。DMA传送的基本过程如下:一个DMA控制器通常可以连接一个或几个输入/输出接口,每个接口通过一组连线和DMA控制器相连。习惯上,将DMA控制器中和某个接口有联系的部分称为一个通道。这就是说,一个DMA控制器一般由几个通道组成。
DMA控制器编程结构和外部连线控制寄存器状态寄存器地址寄存器字节计数器
DMA请求(来自外设接口)
DMA回答(送往外设接口)
计数结束信号(送往接口或中断请求线)
数据总线
控制总线总线请求总线允许地址总线
地址译码器典型的DMA操作过程:(1)外设提出DMA传送请求
由外设或外设控制电路向DMA控制器发出DMA请求信号DREQ,表示请求进行一次DMA传送。(2)DMA控制器响应请求DMA控制器接到请求后,经控制电路向CPU提出保持请求信号HOLD,并等待CPU的回答。如果控制器接有多个DMA设备,它要对各设备的请求进行排队,选择优先级别最高的请求输出,作为向CPU发出的保持请求。(3)CPU响应CPU在每个时钟上升沿都检测有无HOLD请求,若有此请求,且自身正处在总线空闲周期中,CPU就立即响应保持请求。如果CPU正在执行某个总线周期,那么要到这个总线周期结束后再响应此保持请求。(4)DMA控制器的动作DMA控制器在收到HLDA回答后,即开始对直接存储器存取的过程控制。它向外设送出DACK作为对DMA请求的响应,同时也作为外设的数据选通。8.38253定时/计数器8.3.18253的功能与引脚1、8253的基本功能:
8253的基本功能是对外部输入脉冲进行计数,若外部输入脉冲是连续而均匀的,则利用脉冲个数×脉冲周期可以计算出时间,从而实现了定时功能。
(1)计数(2)定时8253定时/计数器(2)、与外设的接口引脚CLK0-2
:计数器0、1、2的外部计数时钟输入端。GATE0-2:计数器0、1、2的门控信号输入端。OUT0-2:计数器0、1、2的计数输出端。2、8253的引脚(1)、与CPU的接口引脚D7---D0:三态双向数据线,与CPU数据总线直接相连。WR:写控制信号,输入,低电平有效。RD:读控制信号,输入,低电平有效。A1,A0:地址线,输入,用于端口选择。8253占用4个连续的端口地址,分别对应8253内部的控制寄存器和3个计数通道的计数值寄存器。
A1A0=11,选中控制寄存器端口,可以向8253送控制字。
A1A0=00、01、10分别选择计数器0、1、2,可以对它们读写计数值。CS:片选信号,输入,低电平有效。3.8253内部结构8253的内部结构如图上所示。主要由以下几部分组成:①数据总线缓冲器
该缓冲器为8位双向三态,是CPU与8253内部之间的数据传输通道。②读/写逻辑电路接收CPU送来的读写、片选及地址信号,对8253内部各部件进行控制。③控制字寄存器每个计数通道有一个控制字寄存器,用来接收CPU写入的控制字。控制字是8位的,只能写不能读出。三个计数通道的控制字寄存器共用一个控制端口,由写入的控制字的最高2位指明该控制字属于哪一个计数通道。④计数器0~28253包含3个相互独立的、内部结构完全相同的16位减法计数器。每个计数器均包含一个8位的控制字寄存器,一个16位的计数初值寄存器,一个16位的计数器执行部件和一个16位的输出锁存器。
8.3.28253的工作模式
(1)方式0——计数结束产生中断
(2)方式1——可编程单稳态(3)方式2——分频器(4)方式3——方波发生器(5)方式4——软件触发选通脉冲(6)方式5——硬件触发选通脉冲
1、方式0——计数结束产生中断(计数器在减到0时使输出端OUT变为高电平)(1)、写入控制字后,OUT变为低电平。(2)、GATE=1允许对CLK计数,GATE=0计数停止。(3)、计数值到0时计数结束,OUT变为高电平,一直保持到重新装入初值或复位时为止。2、方式1——可编程单稳态(输出一个宽度可控的负脉冲)(1)、写入控制字后,OUT变为低电平。(2)、GATE上升沿后,在CLK下降沿开始对CLK计数,OUT变为低。(3)、写入一个新的计数值,不影响原计数过程。当GATE出现新的上升沿后,才使用新的计数值重新计数。(4)、计数值到0时计数结束,OUT变为高电平。。3、方式2——分频器(对输入信号CLK进行n分频)(1)、写入控制字后,OUT变为高电平。(2)、写入初值(N=3)后,再经一个CLK信号,开始计数。(3)、GATE=1允许对CLK计数,GATE=0计数停止。遇到GATE的上升沿,结束现行计数,从下一个时钟下降沿开始按新的初始值进行计数。(4)、计数值到1时计数结束,OUT变为低电平。经一个CLK后,OUT变高,自动重新开始新一轮计数,如此反复进行。4、方式3——方波发生器(输出连续方波)(1)、若计数值N为偶数,输出对称方波,前N/2个脉冲期间为高电平,后N/2个脉冲期间为低电平。(2)、若计数值N为奇数,前(N+1)/2个脉冲期间为高电平,后(N-1)/2
脉冲期间为低电平。5、方式4——软件触发选通脉冲(1)、写入控制字后,OUT变为高电平,若GATE为高电平,开始计数。(2)、计数到0时,OUT输出一个低电平,停止计数。(3)、GATE为低电平,计数停止。GATE变为高电平时,从初值开始重新计数。6、方式5——硬件触发选通脉冲(GATE上升沿启动计数,信号由硬件电路产生)(1)、写入控制字后,OUT变为高电平,但并不计数。(2)、GATE上升沿后,在CLK下降沿开始对CLK计数。(3)、计数结束时,OUT输出一个低电平,计数停止。(4)、未结束计数之前,GATE上重新出现上升沿时,使计数器从初值开始重新计数。工作方式开始方式波型特征是否自动循环GATA作用中间改变计数值的有效性0立即(在GATA=1时)计数期间为低电平,结束后为高电平否低电平期间暂停计数立即1GATA上升沿计数期间为低电平,其余为高电平自动重置初值,但GATA上升沿才能重新开始上升沿重新计数gata上升沿2立即(在GATA=1时)在最后一个计数期间为低电平,其余为高电平是恢复高电平重新计数下一计数周期开始3立即(在GATA=1时)占空比利1:1(或近似)的方波是恢复高电平重新计数下一计数周期开始4立即(在GATA=1时)计数结束后输出一个CLK周期的低电平,其余为高电平否恢复高电平重新计数立即5GATA上升沿同方式4自动重置初值,但GATA上升沿才能重新开始上升沿重新计数gata上升沿8253的工作方式8.3.38253的控制字与编程
SC1SC0RW1RW0M2M1M0BCD1--计数值为BCD码格式0--计数值为二进制格式M2M1M0
模式选择
000模式0001模式1X10模式2X11模式3100模式4101模式500----对计数器进行锁存01----只读/写低8位字节10----只读/写高8位字节11----只读/写低8位字节,
再读/写高8位字节.00----选计数器001----选计数器110----选计数器211----无意义D7************************************************************D01.工作方式控制字2.初始化编程8253使用前,必须首先对其初始化,初始化包括写入字各计数初值,顺序为:
写入控制字写入计数值低字节写入计数值低字节
例:某系统中8253的端口地址为2F80H~2F83H,要求通道1工作在方式3,经BCD方式计数,计数初值为1000,试写出初始化程序。
此例中,在写入计数值时,可只写高8位,也可写16位,则控制字格式为:01110111B=77HMOV AL,77HMOV DX,2F83HOUT DX,ALMOV DX,2F81HMOV AL,0OUT DX,ALMOV AL,10HOUT DX,AL例8-2某系统中8253的端口地址为40H---43H,要利用其通道2对CLK2上的外部输入脉冲进行计数,计满100个后向CPU发中断请求,试写出相应初始化程序。
本例中采用二进制计数,则初值100为64H,写入时只写第8位即可。由于要向CPU发中断申请,故设置通道2工作在方式0,这样计数结束时的正跳变信号可作为中断请求信号。控制字的格式应为:10010000B=90HMOV AL,90HOUT 43H,ALMOV AL,64HOUT 42H,AL3、8253在PC/XT中的应用1片8253地址范围为40H---43H,3个CLK的输入均为1.19MHZ,GATE0和GATE1接+5V电源,GATE2有8255A的PB0控制。3个计数通道的作用及BIOS中初始化程序分别为:(1)、计数器0:编程为方式3,每55ms向中断控制器的IRQ0引脚发送1次中断请求信号,这个信号用于CPU计时和磁盘驱动器马达的定时。初始化程序如下:MOV AL,00110110BOUT 43H,ALMOV AL,0OUT 40H,ALOUT 40H,AL(2)、计数器1:工作于方式2,OUT1输出接至DMA请求触发器的CP端,每隔15.12us请求1次DMA操作,进行动态RAM的刷新。初始化程序如下:MOV AL,01010100BOUT 43H,ALMOV AL,12HOUT 41H,AL
(3)、计数器2用于产生方波,驱动扬声器发声。BIOS中有1个发声子程序BEEP,它对技术通道2的初始化代码为:MOV AL,10110110BOUT 43H,ALMOV AX,0533HOUT 42H,ALOV AL,AHOUT 42H,ALCUP与外设间的数据的数据传送是通过接口来实现的。接口与CPU的数据传输总是并行的,即一次传输8位或者16位。接口与外设间的数据传输则可分为2种情况:串行传送与并行传送。并行接口:能实现并行传输的接口。数据在多根传输线上1次以8位或16位为单位传输。串行接口:能实现串行传输的接口。数据在1根传输线上1位1位地传输。并行接口分为不可编程并行接口与可编程并行接口。8.4并行接口芯片8255A8.4.18255A概述1.8255A的主要特性8255A是intel公司生产的通用8位并行输入输出接口芯片,使用灵活,功能强大具有如下特点:①8255A具有3个8位的数据口(A口、B口和C口),其中C口还可当作两个4位口使用。3个数据口均可用来输入或输出。②8255A具有3种工作方式:方式0、方式1和方式2。可适应CPU与外设间的多种数据传输方式,如无条件传送方式,查询传送方式,中断方式等。③8255A的C口还具有按位置0与置1功能。并行接口芯片8255AA组端口A数据总线缓冲器内部控制线内部数据线D0~D7A组控制A组端口C上部B组控制B组端口BB组端口C下部读写控制逻辑PC0~PC3PB0~PB7PC4~PC7PA0~PA7RDWRA0A1CSRESET2.8255A内部结构(1).数据总线缓冲器数据总线缓冲器是一个双向三态的8位缓冲器,它与CPU系统数据总线相连,是8255A与CPU之间传输数据的必经之路。输入数据、输出数据、控制命令字都是通过数据总线缓冲器进行传送的。D7~D0:8255A的8位数据线,和CPU系统数据总线相连。(2).读/写控制逻辑CPU通过输入和输出指令,将地址信息和控制信息送至该部件,由该部件再控制8255A的动作。(3).A组和B组端口A和端口C的高4位(PC7~PC4)构成A组。端口B和端口C的低4位(PC3~PC0)构成B组。这两个控制部件各有一个控制单元,接收来自CPU数据总线写入的控制字,并根据控制字确定各端口的工作状态和工作方式。(4).端口A、端口B和端口C8255A芯片内部有三个8位端口,分别为A口、B口和C口。这三个端口可与外部设备相连接,可用来与外设进行数据信息、控制信息和状态信息的交换。端口A包含一个8位数据输出锁存器/缓冲器和一个8位数据输入锁存器。所以用端口A作为输入端口或输出端口时,数据均受到锁存。
端口B包含一个8位的数据输入缓冲器和一个8位的数据输出锁存器/缓冲器。所以端口B作为输入端口时不能对数据进行锁存,作为输出端口时能对数据进行锁存。
端口C包含一个8位数据输入缓冲器和一个8位的数据输出锁存器/缓冲器。所以端口C作为输入端口时不能对数据进行锁存,作为输出端口时能对数据进行锁存。端口C可以分成两个4位端口,分别定义为输入端口或输出端口,还可定义为控制、状态端口,配合端口A和端口B工作。3.8255A的引脚8255A是1个40引脚双列直插式封装芯片,其引脚如图:D7---D0:数据线,三态双向8位,用来读写数据和写入控制字。PA7~PA0:
A端口8位数据信号引脚;PB7~PB0:
B端口8位数据信号引脚;PC7~PC0:
C端口8位数据信号引脚。CS:片选信号。CS为低电平时,表示8255A被选中。通常该信号的控制是通过译码电路的输出端提供。RD:读信号,低电平有效,与CPU的RD控制线相连。当CPU执行IN输入指令时,该信号有效,将数据信息或状态信息从8255A读至CPU。WR:写信号,低电平有效,与CPU的WR控制线相连。当CPU执行OUT输出指令时,该信号有效,将数据信息或控制字从CPU写入8255A。A1、A0:端口选择信号,用来指明哪一个端口被选中。8255A有三个数据端口和一个控制端口。数据端口用来传送数据,控制端口用来接受CPU传送来的控制字。数据和控制字都是通过CPU的数据总线传送给8255A的。8255A
根据端口选择信号A1、A0的组合把数据总线传送来的信息传送到相应的端口。 当A1A0=00时,选中端口A; 当A1A0=01时,选中端口B; 当A1A0=10时,选中端口C; 当A1A0=11时,选中控制端口。RESET:复位信号,高电平有效。当RESET有效时,内部所有寄存器均被清零,同时A口、B口和C口被自动设为输入数据工作方式。
8255A是可编程接口芯片。可编程就是用指令的方法先对芯片进行初始化,决定芯片的端口是处于输入数据状态还是处于输出数据状态,以及每个端口的工作方式。工作方式和工作状态的建立是通过向8255A的控制口写入相应的控制字完成的。
8255A共有两个控制字,即工作方式控制字和对C口置位/复位控制字。2个控制字写入同一端口地址(A1A0=11)D7=1:表示工作方式控制字D7=0:表示按位置位/复位控制字8.4.28255A的控制字1、工作方式控制字B组工作方式0:方式01:方式1D0D1D2D3D4D5D6D7PC3~PC01:输入0:输出B口1:输入
0:输出PC7~PC41:输入
0:输出A口1:输入
0:输出A组工作方式00:方式001:方式11×:方式2D7=1特征位B组A组
例如:设8255A的端口地址为60H---63H,要求A组工作在方式0,A口输出,C口高4位输入;B组工作在方式1,B口输出,C口低4位输入。则对应的工作方式控制字为:10001101B或8DH。
初始化程序如下:
MOV AL,8DH ;设置方式字
OUT 63H,AL ;送到8255A控制字寄存器中2、C口的置位/复位字(写入A1A0=11)
D0D1D2D3D4D5D6D71:置位0:复位C口选择000:PC0001:PC1010:PC2011:PC3100:PC4101:PC5110:PC6111:PC7任选(可1可0)D7=0(特征位)方式0:基本I/O方式(查询时,任选C口做连络信号)方式1:选通I/O方式(可查询或中断,固定C口做连络信号)方式2:双向I/O方式(只用于A口,PC3~PC7做连络信号)
说明:1、仅C口可按位置位/复位,且只对C口的输出状态进行控制。2、1次只能设置C口1位的状态。3、这个控制字应写入控制口,而不是C口。例如:要使PC7置1,设8255A的地址为320H---323H,则程序为:MOV AL,0FH ;PC7置1的控制字MOV DX,323HOUT DX,ALMOV AL,06H ;PC3置0的控制字OUT DX,AL8.4.38255A的工作方式1、工作方式0------基本输入输出(适用于无条件传送和查询方式的接口电路)A、B、C口均可作输入输出用,无联络信号。功能:1、具有两个8位端口:A口、B口,2个4位端口:C口的高4位,低4位。每个端口都可以设定为输入或输出,共有16种组合,但每个端口不能同时既输入又输出。2、输出具有锁存功能,输入只具有缓冲功能,而无锁存功能。注意:在方式0下,C口的高、低4位可分别设定为输入或输出,但CPU的IN或OUT指令必须至少以1B为单位进行读写,为此必须采取适当的屏蔽措施。CPU操作高4位(A组)低4位(B组)数据处理IN输入输出屏蔽掉低4位IN输出输入屏蔽掉高4位IN输入输入读入的8为均有效OUT输入输出送出的数据只设在低4位上OUT输出输入送出的数据只设在高4位上OUT输出输出送出的数据8位均有效C口读写时的屏蔽措施2、方式1——带选通的输入输出方式(可查询或中断,固定C口做连络信号)方式1下的数据输入输出均具有锁存能力。A口联络信号是
C口的PC3、
PC4、PC5B口联络信号是
C口的PC0、
PC1、PC2(1)、工作方式1的输入仅A口、B口可工作在这种方式下,可为输入,也可为输出,C口的某些引脚作联络信号。方式1输入联络信号STB——选通信号,低电平有效。由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器。IBF——输入缓冲器满信号,高电平有效。
8255A送外设的缓冲器满信号。当其有效时,表示数据已锁存在输入锁存器。INTR——中断请求信号,高电平有效。
8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据。
INTR变高的条件:IBF=1、INTE=1。INTE——中断允许信号。
A口用PC4的按位置位/复位控制,B口用PC2的按位置位/复位控制。只有当PC4或PC2置1时,才允许对应的端口送出中断请求。(2)、工作方式1的输出D7~D0D7~D0A组控制字PC4,51=输入0=输出1010I/O╳╳╳B组控制字1╳
╳╳
╳10╳A口联络信号:C口的PC3、PC6、PC7。B口联络信号:C口的PC0、PC1、PC2。方式1输出联络信号OBF——
输出缓冲器满信号,低电平有效。
8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走。ACK——
响应信号,低有效。外设的响应信号,指示8255A的端口数据已由外设取走,是对OBF
的回答信号。INTR——
中断请求信号,高电平有效。当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据。条件:ACK、OBF、INTE均为1时,发中断请求。其由CPU的WR的上升沿复位。INTE——中断允许信号。只是A口的INTE由对PC6的置位/复位设置。B口的
INTE由对PC2的置位/复位设置。PC4,PC5——空闲。它可由控制字的D3位设置为输入或输出数据用。3、方式2——带选通的双向I/O方式(只用于A口,PC3~PC7做连络信号)WRRDD7D6D5D4D3D2D1D0B组方式0=方式01=方式1B口
1=输入
0=输出PC2~PC0
1=输入
0=输出11╳╳╳
适用于与双向传送数据的外设方式2是1种双向选通输入输出方式,只适用于A口.所谓双向输入输出就是A口既可输入,又可输出。在方式0或方式1下,虽然A口,B口也可以输入或输出,但1次只能设置为输入或输出1种状态,而不能既输入又输出。方式2下C口的5条线(PC3-PC7)作为A口的联络线.B口只能工作在方式0或1下,若B口工作在方式1下,C口3位(PC0-PC2)作为其联络线,若B口工作在方式0下,PC0-PC2可作为输入输出线。在方式2下各联络信号的含义:INTR:中断请求信号,高电平有效。不管是输入还是输出,都由这个信号向
CPU发中断申请。OBF:输出缓冲器满,低电平有效.其作用等同于方式1输出的OBF。ACK:来自外设的响应信号,低电平有效.其作用等同于方式1输出时的ACK。INTE1:A口输出中断允许,由PC6位置/复位,其作用等同于方式1输出时的
INTE。STB:来自外设的选通输入,低电平有效.其作用等同于方式1输入时的STB。IBF:输入缓冲器满,高电平有效,其作用等同于方式1输入时的STB。INTE2:A口输入中断允许,由PC4位置/复位,其作用等同于方式1输入时的
INTE。8.4.48255A的编程S+5VPB68255APC5
例8-3:如图所示,设8255A端口地址为2F80H-2F83H,编程设置82555AA组、B组均工作于方式0,A口输出,B口输出,C口高4位输入,低4位输出。然后读入开关S的状态,若S打开,则使发光二极管熄灭;若S闭合,则使发光二极管点亮。
8225A工作时首先要初始化,即要写入控制字来指定其工作方式.如果需要中断,还要用C口按位置/复位控制字将中断标志INTE置1或置0,初始化完成后,就可对三个端口进行读写。 MOVAL,88H MOVDX2F83H OUTDX,AL MOVDX,2F82H INAL,DX MOVDX,2F81H ANDAL,20H JZL1;PC5=0,S闭合
MOVAL,0 OUTDX,AL JMPEND1L1: MOVAL,40H OUTDX,ALEND1: HLT
例8-4:微型计算机的扬声器驱动系统程序。CODE SEGMENT ASSUME CS:CODESTART: MOV DX,1000H ;开关次数
IN AL,61H ;取端口61H的内容
PUSH AX ;入栈保存,以便退出时恢复
AND AL,11111100B ;将第0、1位置0SOUND: XOR AL,2 ;D1位取反
OUT 61H,AL ;输出到端口61HMOV CX,2000H ;设置延时空循环的次数DELAY:
LOOP DELAY ;空循环,延时一小会
DEC DX ;共1000H次
JNZ SOUND POP AX ;从堆栈中弹出原AX内容
OUT 61H,AL ;恢复原61H端口内容
MOV AH,ACH INT 21H ;返回DOSCODE ENDS END START例8-5:8255A在并行打印机接口中的应用设8255A的端口地址为80H---83H,能打印一个字符的程序如下:
MOV AL,81H ;8255A工作方式控制字
OUT 83H,AL MOV AL,09H OUT 83H,AL ;置PC4为高,即使STROBE*=1BUSY: IN AL,82H ;读C口
AND AL,04H ;查PC2=0? JNZ BUSY ;忙则等待,不忙则向A口发送数据
MOV AL,’A’ ;被打印字符为“A” OUT 80H,AL ;送出打印数据
MOV AL,08H ;置PC4为低,以便产生负脉冲
OUT 83H,AL NOP ;持续一小会
NOP MOV AL,09H ;再使PC4变为高,形成负脉冲
OUT 83H,AL
DMA控制器一方面可以控制系统总线,这时称它为总线主模块,另一方面又可以和其它接口一样,接受CPU对它的读写操作,这时DMA控制器就成了总线从模块。作为总线主模块时,DMA控制器必须完成以下功能:(1)能够响应外设的DMA请求,使CPU暂停工作,接管总线控制权。(2)能够按节拍提供外设和存储器工作的各种控制信号。(3)提供存储器地址。当DMA控制器在进行DMA过程的控制时,称为处于DMA周期,它就作为系统总线的主控设备。而在不进行DMA传输时,称为空闲周期,DMA控制器就作为CPU的一个外设。8237A是Intel公司生产的高性能DMA控制器,适合与Intel公司的各种微处理器配合。芯片可以用软件编程,使它能选择多种方式工作,从而大大改善了微型计算机的性能。8237A工作时钟为3MHZ,8237A-4为4MHZ,8237A-5为5MHZ。在使用上它们基本没有差别。8.5可编程DMA控制器可编程DMA控制器8.5.1概述8237A的主要技术特性:1、有4个完全独立的DMA通道,可以分别编程控制4个不同的DMA操作对象。2、能分别允许或禁止各通道的DMA请求,能对各通道的优先级进行排队。3、存储器的寻址范围为64KB,能在传送1B后地址自动加1或减1。4、可以用级联的方法无限扩展DMA通道数。5、设置有控制结束传送用的外接过程结束控制信号输入端。6、可以用软件设置DMA请求。7、允许DMA传输速度高达1.6MB/s。8237A芯片的基本结构及引脚功能8237ADMA控制器有四个通道,每个通道都可用于DMA数据传送,也就是说一片8237可以带四台外部设备。PC机系统占用了8237A通道0、通道2、通道3,分别用于刷新动态存储器、软盘控制器与存储器间交换数据、硬盘控制器与存储器交换数据,只有通道1未使用,提供给用户。
8237A的内部结构和引脚图如下图所示。为简单起见,图中通道部分只画了一个通道的情况。8237A的内部结构有四个基本部分组成,即控制逻辑单元、优先级编码单元、缓冲器和内部寄存器。8237A的内部结构8237A引脚8237A采用40引脚双列直插封装。8237A的引脚主要围绕其2种工作状态而设置,有一些引脚在两种状态下都有用,而有些则是专用的。1、8237A的引脚特点:CLK:时钟输入信号。DREQ0~DREQ3,DACK0~DACK3:DMA请求及响应信号。DREQ必须保持到DACK有效值出现后才能撤除。HRQ,HLDA:保持请求和响应信号。这是8237A与CPU联系的1对应答信号。A7~A0:低8位地址。DB7~DB0:数据总线。
2、与DMA周期有关的引脚:8.5.28237A引脚3、与CPU读写有关的引脚A3---A0,DB7---DB0,IOR、
IOW是两种状态下都用到的信号。CS:片选信号。A3~A0:地址线。DB7~DB0:数据线。IRO、IOW:外设读、写。RESET:清除信号。ADSTB:地址选通。AEN:地址使能信号。
MEMR、MEMW:存储器读、写控制。IOR、IOW:外设读、写控制。READY:就绪输入信号。EOP:过程结束信号。8.5.38237A内部结构与寄存器1、概述
8237A内部寄存器分为两大类:(1)、地址寄存器和字节数计数器(2)、控制寄存器或状态寄存器及与8237A控制有关的寄存器
CPU对8237A内部寄存器的访问是在8237A作为一般的I/O设备时,通过A3~A0的地址译码选择相应的寄存器。
具体操作是:用A3区分上述两类寄存器,A3=0选择第一类寄存器,A3=1选择第二类寄存器。8237A内部寄存器、命令与地址关系表
寄存器或命令地址基地址寄存器(16位,共4个)0H,2H,4H,6H基本字节数寄存器(16位,共4个)1H,3H,5H,7H现行地址寄存器(16位,共4个)0H,2H,4H,6H现剩字节数寄存器(16位,共4个)1H,3H,5H,7H暂存地址寄存器(16位)暂存字数寄存器(16位)状态寄存器(8位)8H(只读)控制寄存器(8位)8H(只写)暂存寄存器(8位)0DH(读操作)工作方式寄存器(8位)0BH屏蔽寄存器(4位)0AHDMA请求寄存器(4位)9H清先/后触发器命令0CH主清除命令0DH(写操作)清屏蔽寄存器命令0EH综合屏蔽命令0FH2、地址和字节数寄存器
8237A的地址和字节数寄存器包括基地址寄存器、基本字节数寄存器、现行寄存器和现剩字节数寄存器,每个通道都必须有这4个寄存器,所以总数达16个。
在DMA传输时,通常是以1个数据块作为一次传输的单位。确定这个数据块的大小以及在内存中的存放地址,以控制传送进行,就是这16个寄存器的任务。
基地址寄存器的内容是在初始化编程时,由CPU写入的,表示数据块在内存中的地址。一旦写入在整个传输进行过程中保持不变。
基本字节数寄存器中写入的是本次传输的数据块字节数,写入后在整个传输进行过程中保持不变。
两个基本寄存器写入内容时,相应的现行寄存器也写入同样的内容。在DMA传送过程中,每传送1B,这两个现行寄存器的内容就变化1次。当现剩字节数寄存器减至0时,意味着此次传输完成。
这一组寄存器的字长是16位,但是供CPU读写的数据线却只有8位,显然对1个寄存器的读写必须分两次进行。读写时高、低字节的次序由1个触发器来控制。
3、工作方式寄存器8237A的4个通道是完全独立的,它们可以根据需要编程确定各自的工作方式。所以工作方式寄存器应有4个,每通道1个。4个寄存器只占用1个I/O端口地址,不管哪个通道的方式字都用0BH地址写入,利用方式字的最低两位D1D0位的编码来指定该方式字属于哪个通道。工作方式寄存器8237A的每个通道有4种传送方式,即单字节传输方式、成组传输方式、请求传输方式和级连传输方式。D7D6:决定工作方式字中的工作方式。(1)单字节传送方式
8237A控制器每响应一次DMA申请,只传输一个字节的数据。过程是每传送一个字节的数据后,当前地址寄存器的数加1(或减1),当前字节计数器的值减1,8237A释放系统总线,总线控制权交给CPU。8237A释放控制权后,马上对DMA请求DREQ进行测试,若DREQ有效,再次发总线请求信号,进入下一个字节的传送,如此循环下去,直至计数值为0,结束DMA操作。由此可看出单字节传送方式,每传送一个字节8237A要让出一次总线控制权,因而传送两个字节之间至少要经过一个总线周期。(2)成组传送方式在这种传送方式下,8237A每响应一次DMA请求,按照当前字节计数器的设定值完成数据传送,中间并不停顿,直到计数器由0减到FFFFH或外部输入有效的EOP信号时,结束DMA传送,让出总线控制权。成组传送过程中,即使把DMA请求信号撤去,也能保证连续传送。(3)请求传送方式这种方式与成组传送方式相同,按照字节计数器的设定值进行传送,只是在这种传送方式下,要求DREQ在整个传送期间一直保持有效,每传送一个字节对DREQ进行测试,如果检测到DREQ端变为无效电平,暂停传送,让出总线控制权,但仍对DREQ端进行检测,当DREQ恢复有效电平,又重新申请CPU让出总线,CPU让出总线后,就在原来基础上继续进行传输。当计数值变为0,或由外界输入EOP有效信号,将结束DMA传送。(4)级连传送方式
这种传送方式不应定为一种传送方式,因为此种方式实际上是扩充通道数,几片8237A构成主从式DMA系统,连接方式如下图所示。级连方式最多由5块8237A组成,可以扩充成具有16个通道的主从DMA系统。主8237A只作为优先级判断、DMA请求和响应的传递,不再输出其他信号。DMA传送由从8237A完成。主从DMA系统DREQ0DRCK0
﹕
﹕
﹕DREQ3DRCK3DREQ0DRCK0
﹕
﹕
﹕DREQ3DRCK3
D5:控制地址变化方向。
D5=1,每传送一个字节数据,地址寄存器的内容减1D5=0,每传送一个字节数据,地址寄存器的内容加1。
D4:自动预置。
D4=1,允许自动预置,每当DMA传送结束,基地址寄存器自动将保存的存储器数据区首地址传送给当前地址寄存器,基字节计数器自动将保存的传送数据字节数传送给当前字节寄存器,可以进入下一轮数据传输过程。需要注意的一点是,如果一个通道被设置为自动预置方式,那么这个通道的对应屏蔽位必须为0。
D4=0,不会产生这个动作。
D3D2:数据传送方向。写传输:指数据从I/O设备写入到内存中去。读传输:指数据从内存写入到I/O设备中去。
D1D0:通道选择。
4、控制寄存器这是1个8位寄存器,用以控制8237A的一些工作信号,从而确定芯片的基本工作形态。CPU可以用指令对它写入新的命令,而对原命令的清除用总清除或软件清除命令。D6、D7:分别控制EREQ和DACK有效的极性。D6控制DREQ,D7
控制DACK。
D6、D7为0时:设定有效电平为高电平
D6、D7为1时:设定有效电平为低电平设定后,4个通道的规定是一样的。D4:选择不同的优先权。在固定优先权时,通道0优先级最高,通道3优先 级最低。另一种优先权是循环式的,刚被服务过的通道其优先权自 动将为最低,而其余各通道优先权依次顺高一级,从而使各通道的 DMA被响应的可能性相同。D3和D5:两位都与8237A的定时有关。D2:8237A是否工作的控制位。D2=0,控制器可工作。D2=1,不工作。D1:存储器间传送数据时,控制源地址变化与否。
D1=1,源地址在整个数据块传送中都保持不变。这种方式将 使一个单元的内容送到规定长度的某一内存区域中去。
D0=0时,D1位没有意义。D0:控制是否从存储器到存储器传输。
D0=1,从存储器到存储器传输;
D0=0,不是从存储器到存储器传输。
存储器间传送的操作只能用软件启动,对DMA请求寄存器写入04H,就可以用软件方法启动通道0。当通道0输出DACK后,就从存储器的源地址中取出1B数据,存入8237A的暂存寄存器中。接着通道1从暂存寄存器中取出这个字节数据,写入目的地址。地址的增、减量方式仍受各通道自己的方式字控制。传输字节数的控制使用通道1的计数器。传输结束时,以EOP输出作为标志,如果从EOP端输入一个负脉冲,将终止正在进行的传输。5.DMA请求控制字请求标志寄存器记录了DMA请求控制字的内容,该控制字的格式如下图所示。
请求标志寄存器的内容由硬件和软件两种方法来改变。硬件方法是通过DREQ引脚引入DMA请求。在8237A控制器的每个通道内有一个DMA请求触发器,4个通道共有4个DMA请求触发器,他们构成一个DMA请求标志寄存器。当8237ADMA请求引脚DREQ端有DMA请求时,请求标志寄存器D2位置1。软件方法是通过CPU设置请求控制字的方法,来设置或撤消DMA请求。请求标志的设置是通过D1、D0来指明通道号,D2位用来表示是否对相应通道设置DMA请求。如果当前字节计数器从0000H减到FFFFH时,EOP有效,则DMA操作结束;或者EOP引脚有外加低电平信号,则请求标志寄存器D2位清0,结束DMA传送。6.屏蔽控制字屏蔽控制字是记录各个通道的DMA请求是否允许的控制字。该控制字保存在屏蔽寄存器内。屏蔽控制字的格式8237A的每个通道都配备了一个屏蔽寄存器,作为屏蔽标志位。当一个屏蔽标志位的内容为1时,这个通道就不能接收DMA请求了。如果一个通道没有设置自动预置功能,当EOP信号有效时,就会自动设置屏蔽标志位。DMA的屏蔽标志位是通过往屏蔽寄存器写入屏蔽字节来设置的。D1D0:选择通道D2:屏蔽位设置,为1设置屏蔽位,为0清除屏蔽位。直接访问屏蔽寄存器,地址为0AH综合屏蔽控制字。使用综合屏蔽命令字来访问屏蔽寄存器,地址为0FH。综合屏蔽命令字7.状态寄存器状态字反映了8237A当前四个通道DMA操作是否结束,是否有DMA请求。该字保存在状态寄存器中。
8.暂存寄存器在存储器到存储器传送方式时,暂存寄存器保存从源单元读出的数据,再由它写入目的单元。完成传送时,其中保留传送的最后1B,该字节可由CPU读出,RESET之后使之复位。8.5.48237A的软件命令1.主清除命令主清除命令与硬件的RESET信号具有相同作用。执行这条命令后,命令、状态、请求、暂存寄存器以及先/后触发器都被复位,屏蔽寄存器被置位。然后,8237A处于空闲周期。主清除命令的地址是0DH。对该端口执行写操作即可发出主清除命令。
2.清先/后触发器命令
8253A寄存器的字长都是16位的,但是供CPU读写的数据通道却只有8位,为此对1个寄存器的读写必须分两次进行。由于1个寄存器只规定了1个地址,所以在芯片内规定了1个读写高低字节的次序,这个次序由1个先/后触发器来保证。当触发器为0时,读写低位字节,为1时读写高位字节。触发器在每次读写这组寄存器后都翻转1次。根据先/后触发器的这种工作特性,每次读写地址和字节书寄存器前要将其复位,以确保操作状态。要实现先/后触发器复位可以使用清先/后触发器命令,该命令是对0CH地址进行一次写操作。另外,硬件RESET信号和软件主清除命令也会使先/后触发器复位。
3.清屏蔽寄存器命令清屏蔽寄存器命令的地址为0EH,执行这个命令将清除全部4个通道的屏蔽寄存器,使它们允许接收DMA命令。8.5.58237A的工作时序8237A有两大类操作周期:空闲周期和有效(DMA)周期。空闲周期:8237在复位后还没有编程,或者已经编程但还没有接到DMA清求时的情况。这个周期中,CPU可以对8237进行编程,也可以从8237中读出状态进行检查。有效(DMA)周期:当DMA控制器接到CPU的HLDA相应信号后,8237进行DMA传输的过程。每个周期总是由若干个状态周期组成。每个状态周期都占一个时钟周期的时间,分别称为SI、S0、S1、S2、S3、S4和SW七种不同的周期。在空闲周期中只执行一种空闲状态SI,此种状态下,每个时钟周期都检查DREQ状态,以确定是否有通道请求DMA服务。同时,对CS采样,判断CPU是否要对8237进行读写操作,如CS为低电平,且HLDA也是低电平,就使芯片进入编程工作状态。8237A时序图1.正常DMA读写操作
当8237A编程后,在接到外设的DREQ请求后,就向CPU发出总线保持请求HRQ,并使芯片进入S0周期。
S0是个等待周期,这期间8237等待CPU让出总线,得到HLDA的响应,此时,8237还是可以接受CPU的读写操作控制。在接到CPU送来的HLDA信号后,8237开始传送数据的操作。1个完整的传送周期应包括S1---S44各工作状态。如果慢速存储器或外设不能在规定的4个周期中完成读写操作,可以利用REDAY端控制,在S3S4之间插入SW状态周期,以求速度匹配。
当进行存储器到存储器传送的操作时,每传送1B包括两个阶段,即从存储器中读出(第1阶段),以及写回存储器(第2阶段),每个阶段都需要4个状态周期。S1周期中,地址线变得有效,从A7---A0送出低8位地址,从DB7---DB0送出高8位地址A15---A8。同时ADSTB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 标准化MDT病例讨论模板
- 极端高温下血液成分保存液稳定性研究
- 灵丘《非遗传承师技能》培训试卷
- 极端天气下远程检验报告的时效性
- 安徽省宿州市泗县2025-2026学年七年级下学期期中质量检测地理试卷(含答案)
- 质量检测过程说课稿2025学年中职专业课-化学工艺-分析检验技术-生物与化工大类
- 小学语文绘本趣味拓展说课稿2025年第二学期
- Unit 2 He decided to be an actor.说课稿2025学年初中英语外研版2012七年级下册-外研版2012
- 第十二课 互动白板 电子书包说课稿2025年初中信息技术(信息科技)七年级下册华中科大版
- 上海工程技术大学《安全与职业防护》2025-2026学年第一学期期末试卷(A卷)
- 国际高中入学考-数学试题(英语试题)
- 2022省级政府和重点城市一体化政务服务能力评估报告
- 《小学语文新课程标准》
- 护理法律法规与纠纷防范培训
- DB32T 4954-2024现代灌区管理规范
- 广东省中考英语听说信息提问句子
- DB33T 2329-2021 农田面源污染控制氮磷生态拦截沟渠系统建设规范
- 房颤患者围术期麻醉管理
- 初中七年级体育与健康教案全册
- 2024年新高考生物湖南卷试题真题及答案详解(精校打印版)
- (高清版)DZT 0331-2020 地热资源评价方法及估算规程
评论
0/150
提交评论