微机原理:第七章 输入输出接口2_第1页
微机原理:第七章 输入输出接口2_第2页
微机原理:第七章 输入输出接口2_第3页
微机原理:第七章 输入输出接口2_第4页
微机原理:第七章 输入输出接口2_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

7.1 概述7.2 CPU与外设数据传送的方式7.3 可编程计数器/定时器82537.4 串行通讯和串行接口7.5并行接口7.6DMA控制器82377.7D/A和A/D转换技术第七章输入/输出接口7.6DMA控制器82371.概述2.8237的引脚功能3.8237的编程结构4.8237对内存和I/O的寻址概述DMA=DirectMemoryAccess,直接存储器存取CPU内存外设数据通道数据通道非DMA方式(包括程序控制方式和中断方式)DMAC内存外设数据通道DMA方式概述DMAC具有独立的控制三大总线来访问存储器和I/O端口的能力,它能像CPU一样提供数据传送所需的地址信息和读写控制信息DMAC和CPU都挂在系统总线上,当进入DMA方式时,DMAC成为总线主控。在总线上,可以控制其他部件的部件称为总线主控或主控(busmaster),被控部件称为从控(slave)。任意时刻,总线上只有一个主控。概述DMA操作之前,应先对DMAC编程,把要传送的数据块长度、数据块在存储器中的起始地址,数据传送方向等信息发送给DMACDMA操作过程包括三个阶段:DMA请求DMA响应和数据传送传送结束当外设要求以DMA方式为它服务时,发DMA请求信号DREQ到DMACDMAC检查该信号是否被屏蔽及其优先权,如确认该信号有效则向CPU发送总线请求信号HRQ(连到CPU的HOLD)DMA请求阶段CPUDMACHRQ外设DREQ地址总线数据总线存储器概述每个总线周期结束时CPU检测HOLD,如为高电平,则响应HOLD请求进入保持态,使三态总线CPU侧呈高阻状态,并以总线保持响应信号HLDA通知DMACDMAC接管总线,并以DACK信号通知外设,使之成为DMA传送时被选中的设备,同时DMAC给出内存地址以及I/O读写和存储器读写控制信号,在外设和存储器之间完成数据传送DMA响应和数据传送阶段CPUDMACHLDA外设DACK存储器地址总线数据总线IOR/IOWMEMR/MEMW概述传送结束阶段传送完成后,DMAC放弃总线,撤消总线请求(HRQ为低),CPU检测到HRQ(HOLD)为低后,撤消HLDA,CPU重新获得总线控制权CPUDMACHRQ外设EOP地址总线数据总线存储器概述概述PC系列微机使用可编程DMA控制器

8237A(简称8237)实现DMA功能8237有四个通道,每个通道都有独立的与相应外设接口相联系的信号,四个通道共享与CPU相连的控制信号、地址信号、数据信号PC/AT以上的微机使用两片8237,Pentium微机系统中没有独立的8237芯片,其功能集成在芯片组中8237的引脚功能8237的引脚功能请求/应答信号外设接口电路向8237的请求信号:DREQ3~DREQ08237对外设接口电路的应答信号:DACK3~DACK08237向CPU申请总线的信号:HRQ(连至CPU的HOLD)CPU向8237传送的允许使用总线信号:HLDA8237的引脚功能地址信号: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的引脚功能地址允许信号:AEN8237作为主控时(8237控制总线),输出AEN=1。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的就绪信号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使源地址保持不变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引脚若主8237的某通道(DREQ)连接从8237的HRQ,主8237的该通道应设置为级联传输模式,但从8237不设置级联传输模式,而是设置其它三种模式之一模式寄存器8237的编程结构8237的编程结构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。当计数值减到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,设置屏蔽;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对内存和I/O的寻址存储器寻址

在主控模式下,8237可以产生16位存储器地址信号,地址引脚A7~A0输出地址低8位,高8位地址由数据引脚DB7~DB0输出,经地址锁存器后形成存储器地址的A15~A8。用ADSTB启动地址锁存器。当系统的存储器地址多于16位时,多余位地址由一个称为DMA页面寄存器的接口电路提供8237对内存和I/O的寻址存储器寻址在PC/AT系统中,需要24位地址,高8位地址A23~A16由DMA页面寄存器电路74LS612提供。在DMA传输之前,用指令将高8位地址送入页面寄存器,在DMA传输过程中,由AEN信号使页面寄存器输出该8位地址。存储器寻址8237对内存和I/O的寻址在Pentium微机中,DMAC和相关页面寄存器的功能由多功能芯片组实现I/O寻址8237对内存和I/O的寻址8237的四个通道,每一个只接一个外设接口电路,不使用I/O地址来区分I/O设备I/O设备的端口地址只用于CPU对I/O设备的寻址I/O寻址8237对内存和I/O的寻址8237的应用初始化编程写入控制寄存器写入屏蔽寄存器——屏蔽要初始化的通道写入模式寄存器先后触发器置0写入基地址和基本字节寄存器解除屏蔽写入请求寄存器8237的应用例:ROM-BIOS对通道2初始化编程的代码片段DMA EQU 0 ;DMA通道起始端口1)系统在启动时,对控制寄存器进行初始化

MOV AL,0 OUT DMA+8,AL2)清除先/后寄存器 OUTDMA+12,AL 3)设置模式寄存器

MOV AL,46H …… OUT DMA+11,AL

4)送内存地址计算内存的物理地址,将20位地址的高4位送页面寄存器,低16位先送低8位,再送高8位 …...

OUT DMA+4,AL ;低8位 …… OUT DMA+4,AL ;高8位 ……

OUT 81H,AL ;20位地址的高4位5)送传送字节数 …... 6)送屏蔽位

MOV AL,2 OUT DMA+10,AL

8237的应用8237的应用例:利用主板上的8237通道1,将内存起始地址为80000H的300H字节直接输出给外设MOV AL,0;清除先/后触发器OUT 0DH,AL;写地址OUT 02,ALOUT 02,ALMOV AL,8OUT 83H,AL;传送的字节数MOV AX,300HDEC AXMOV 03,ALMOV AL,AHOUT 03,AL;写模式寄存器MOV AL,49HOUT0BH,AL;清除通道1屏蔽MOV AL,1OUT 0AH,AL;读通道1状态WAIT: IN08AND AL,02JZ WAIT;完成后屏蔽通道1MOV AL,5OUT 0AH,AL7.7D/A和A/D转换技术数模转换D/A转换器D/A转换器简称DAC=DigitaltoAnalogConverterDAC把数字量转换为模拟量(电压或电流)。数模转换原理DAC的核心是解码网络,如T型解码网络数模转换DAC0832数模转换DAC0832DAC0832是8位DAC,内部有两级缓冲。当LE1有效时,数据进入第一级(数据输入寄存器),当LE2有效时,数据输入寄存器的值进入第二级(DAC寄存器)。由于DAC寄存器的输出直接送D/A转换器,使LE2有效的命令又称转换命令DAC0832的输出为两个电流信号IOUT1和IOUT2(IOUT1+IOUT2=常数),内部提供了一个反馈电阻R,只需加一个运算放大器,利用内部的反馈电阻R即可获得电压输出数模转换DAC0832的接口设计1.使数据输入寄存器工作在锁存状态,DAC寄存器工作在不锁存状态(LE2始终有效,DAC寄存器直通)。只使用一级缓冲。设D/A转换端口号为PORTA,设需转换的数据放在1000H单元,则D/A转换程序为:MOVBX,1000HMOVAL,[BX]MOVDX,PORTAOUTDX,AL数模转换DAC0832的接口设计2.使用两级缓冲数模转换DAC0832的接口设计设CS’由A15~A1经译码产生,当A15~A1=A0832时,CS’有效。在CPU执行OUT指令时,若A0=0,DAC0832内部LE1有效,数据总线上的值(AL)送入数据输入寄存器;若A0=1,DAC0832内部LE2有效,数据输入寄存器的值送DAC寄存器。A0832EQU200HMOVDX,A0832+0;A0=0OUTDX,AL;AL的值为待转换的数字MOVDX,A0832+1;A0=1OUTDX,AL;AL的值无关数模转换DAC0832的接口设计模数转换模数转换原理方法有计数法、逐次逼近法等计数式A/D转换转换原理:由计数器对固定频率信号CLK进行计数,计数输出值送DAC,DAC的输出模拟量Vo与输入模拟量Vi在比较器中进行比较,随着计数的进行,Vo不断增加,当Vo>Vi,计数器停止计数,此时的计数值即是模拟量Vi对应的数字量。模数转换模数转换原理计数式A/D转换模数转换模数转换原理逐次逼近型A/D转换模数转换模数转换原理逐次逼近型A/D转换转换原理:数字量由逐次逼近寄存器SAR产生。SAR使用对分搜索法产生数字量,以8位数字量为例,SAR首先产生8位数字量的一半,即10000000B,试探模拟量的大小,若Vo>Vi,清除最高位,若Vo<Vi,保留最高位。在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位)试探模拟量的大小。重复这一过程,直到最低位bit0被确定,转换结束模数转换ADC08098位ADC,逐次逼近型,8路模拟量输入内部有“8选1”MUX。当ALE信号有效时,ADD_C、ADD_B、ADD_A选择IN0~IN7。例如ADD_C、ADD_B、ADD_A分别为011时,选择IN3通道。数字输出:有三态缓冲器,当Enable有效时,从D7~D0引脚输出转换后的数字。启动信号:START。负脉冲启动。转换结束信号:EOC,高电平有效。模数转换ADC0809模数转换ADC0809的接口设计模数转换ADC0809的接口设计

温馨提示

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

评论

0/150

提交评论