资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,大连理工大学自动化系,微机原理,第六章 输入,/,输出接口,6.1,基本概念,6.2 CPU,与外设的连接,6.3,输入,/,输出实例,外设,输入,/,输出设备是外部设备,简称,外设,。微机与外设之间的信息交换称为,输入和输出,。,CPU,RAM,ROM,I/O,接口,外设,6.1,基本概念,为什么需要,I/O,接口(电路)?,微机的外部设备多种多样,工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大,它们不能与,CPU,直接相连,必须经过中间电路再与系统相连,这部分电路被称为,I/O,接口电路,多种外设,多种多样的外设,工作原理不同,机械、电子、机电、电磁,传送信息类型多样,数字量、模拟量、开关量,传送速度差别极大,传送方式不尽相同,串行、并行,编码方式不同,二进制、,BCD,码、,ASCII,码,返回,接口,接口:,外设与总线之间的中间环节,是计算机与外设交换信息的控制电路。,I/O,接口是位于系统与外设间、用来协助完成,数据传送和控制,任务的,逻辑电路,。,PC,机系统板的可编程接口芯片、,I/O,总线槽的电路板(适配器)都是接口电路,端口:,端口泛指,I/O,地址,通常对应,接口电路中可以被寻址访问的存储单元。,一个接口电路可以具有多个,I/O,端口(寄存器),每个端口用来,保存和交换不同的信息,可分为数据端口、状态端口、控制端口,,用于保存数据、状态和控制信息,。,输入、输出端口可以是同一个,I/O,地址,接口的功能,数据缓冲,:外设数据输入到总线时需要缓冲。,数据锁存,:总线数据输出到外设时的锁存,解决,CPU,与外设速度不匹配问题。,传输控制命令和状态信息,:计算机与外设有时需使用硬件握手。例如:计算机利用查询输出到打印机。,信息转换,:串并转换、数模转换、电平格式转换,对,I/O,端口寻址:,对各设备的,I/O,端口译码寻址,控制总线,CB,地址总线,AB,I/O,接口电路,数据,控制,状态,数据总线,DB,CPU,外设,控制寄存器,状态寄存器,数据寄存器,1.,接口电路的内部结构,2.,接口电路的外部特性,3.,接口电路芯片的分类,4.,接口电路的可编程性,I/O,接口的典型结构,接口电路的内部结构,CPU,与外设主要有数据、状态和控制信息需要相互交换,于是从应用角度看内部:, 数据寄存器,保存外设给,CPU,和,CPU,发往外设的数据, 状态寄存器,保存外设或接口电路的状态, 控制寄存器,保存,CPU,给外设或接口电路的命令,接口电路的外部特性,主要体现在引脚上,分成两侧信号,面向,CPU,一侧的信号:,用于与,CPU,连接,主要是数据、地址和控制信号,面向外设一侧的信号:,用于与外设连接,提供的信号五花八门,功能定义、时序及有效电平等差异较大,3.,接口电路芯片的分类,接口电路核心部分往往是一块或数块大规模集成电路芯片(接口芯片):,通用接口芯片,支持通用的数据输入输出和控制的接口芯片,如支持并行传送的,8255,、,8155,面向外设的专用接口芯片,针对某种外设设计、与该种外设接口,如键盘,/,显示器接口芯片,8279,、,CRT,控制芯片,MC6845,面向微机系统的专用接口芯片,与,CPU,和系统配套使用,以增强其总体功能,如中断控制芯片,8259,4.,接口电路的可编程性,许多接口电路具有多种功能和工作方式,可以通过编程的方法选定其中一种,接口需进行物理连接,还需编写接口软件,接口软件有两类:,初始化程序段,设定芯片工作方式等,数据交换程序段,管理、控制、驱动外设,负责外设和系统间信息交换,I/O,端口的编址方式,I/O,端口与存储器统一编址,把一个外设端口看作存储器的一个单元,占用存储器的地址空间,,利用对存储器的读写操作完成数据的输入和输出。,优点,不需要专门的输入输出指令,可使用全部对存储器操作的指令,指令数量多,端口数量多,缺点,占用存储器空间,寻址时地址线数多,译码复杂,0,地址空间,(,共,1MB),内存地址,(960KB),I/O,地址,(64KB),FFFFFH,EFFFFH,F0000H,I/O,端口独立编址,计算机单独给外设端口编址,,I/O,端口具有独立的地址空间,。计算机需用控制信号区分存储器空间和,I/O,端口空间(例,8086 CPU,的,M/IO,)。,优点,I/O,空间较存储器空间小,地址线少,译码电路相对简单,。,不占用存储器空间,缺点,要有专门输入输出指令,寻址方式少,不灵活,80x86,采用,I/O,端口独立编址,00000H,内存地址空间,内存空间,(1MB),FFFFFH,I/O,空间,(64KB),FFFFH,I/O,地址空间,0000H,8086 I/O,空间,8086,系统使用,16,根地址线(,A15A0,)寻址,I/O,端口,可寻址,64KB,个,I/O,端口;,偶地址端口数据使用低,8,位数据总线传送,奇地址端口数据使用高,8,位数据总线传送;,奇、偶地址端口的数据传送由,BHE,和,A0,控制;,I/O,端口的读,/,写选通信号为,IOR,和,IOW,。,计算机系统中,多使用,8,位端口。,8086,系统的,8,位端口使用数据线的低,8,位传送信息,所以端口地址的编址多为偶地址。现代的计算机体系中,通过转换电路,8,位端口地址可以连续编址。,IOR,IOW,M/IO,RD,WR,注:,IBM PC/XT,机实际只使用低,10,位数据线寻址,I/O,端口,寻址,1KB,个端口。,例如:,8088/8086,系统,8,0,8,6,总,线,A19-A0,A9-A0,MEMR,、,MEMW,IOR,、,IOW,存储器访问,I/O,访问,8086 CPU,的,I/O,编址方式,采用,I/O,独立编址方式,(,但地址线与存储器共用,),地址线上的地址信号用 来区分:,时为,I/O,地址,I/O,操作只使用,20,根地址线中的,16,根:,A,15,A,0,可,寻址的,I/O,端口数为,64K(65536),个,I/O,地址范围为,0,FFFFH,IBM PC/XT,只使用了,1024,个,I/O,地址,(0,3FFH),M/IO=0,M/IO,I/O,端口地址的译码,、 、,A,15,A,0,OUT,指令,将使总线的 信号有效,IN,指令,将使总线的 信号有效,当接口只有一个端口时,,16,位地址线,一般,应,全部参与译码,译码输出直接选择该端口;当接口具有多个端口时,则,16,位地址线的高位,参与译码(决定接口的基地址),而低位则用于确定要访问哪一个端口。,例如: 某外设接口有,4,个端口,地址为,2F0H,2F3H,,则其基地址为,2F0H,,由,A,15,A,2,译码得到,而,A,1,、,A,0,用来确定,4,个端口中的某一个。,8086,输入,/,输出指令,输入指令,(,IN,:将外设数据传送给,CPU,内的,AL/AX),IN AL, PORT,IN AX, PORT,IN AL, DX,IN AX, DX,输出指令,(,OUT,:将数据,CPU,内的,AL/AX,传送给外设,),OUT PORT, AL,OUT PORT, AX,OUT DX, AL,OUT DX, AX,下一页,IN AL, 21H (,上图处理器为,8088),返回,OUT 43H, AL (,上图处理器为,8088),返回,808,6,只能通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(,Port,),即,I/O,地址,8086,用于寻址外设端口的地址线为,16,条,端口最多为,2,16,65536,(,64K,)个,端口号为,0000H FFFFH,808,8/8086,的,端口有,64K,个,无需分段,设计有两种寻址方式,直接寻址,:只用于寻址,00H FFH,前,256,个端口,操作数,Port,(i8),表示端口号,间接寻址,:可用于寻址全部,64K,个端口,,DX,寄存器的值就是端口号,对大于,FFH,的端口只能采用间接寻址方式,如果输入输出一个字节,利用,AL,寄存器,如果输入输出一个字,利用,AX,寄存器,输入一个字,实际上是从连续两个端口输入两个字节,分别送,AL,(对应低地址端口)和,AH,(对应高地址端口),输出一个字,实际上是将,AL,(对应低地址端口)和,AH,(对应高地址端口)两个字节的内容输出给连续两个端口,IN,指令实例(从,20H,端口输入一个字),;方法,1,:直接寻址,,;方法,3,:直接寻址,字节量输入,in al,21h,mov,ah,al,in al,20h,字量输入,in ax,20h,;,方法,2,:间接寻址,,字量输入,mov,dx,20h,in,ax,dx,;,方法,4,:间接寻址,字节量输入,mov,dx,21h,in,al,dx,mov,ah,al,dec,dx,in,al,dx,OUT,指令实例(向,300H,端口输出一个字节),;唯一的方法:间接寻址,字节量输出,mov,al,bvar,;,bvar,是字节变量,mov,dx,300h,out,dx,al,6.2 CPU,与外设的连接,CPU,与外设的一般接口电路,(一)端口,数据口:,用于完成数据的输入或输出。包括:,数字量 如用,ASCII,码表示的数和字符,模拟量 如经,DAC,转换输出的电流,开关量 如以一位二进制表示的量,数据口,状态口,控制口,D15,D0,A15,A0,A0,BHE,IOR,IOW,I/O,装置,控制口,控制口为一个输出接口,用于控制外设的启动(,START,)、停止(,STOP,)或数据的选通(,STB,)等,具体由外设的要求而定。,状态口,CPU,通过,状态口,了解外设状态。,如:,输入外设是否准备好(,READY,),转换是否结束(,EOC,),输出装置是否忙(,BUSY,),控制信息和状态信息一般也由数据总线传送。,(,二,),简单接口电路,数据输入接口,必须具有三态输出能力,以便与总线挂接,外设有数据保持能力时,可用三态门实现,外设无数据保持能力时,用三态输出的锁存器实现,数据输出接口,常用锁存器实现,三态门:高电平、低电平、,高阻态,通常一个器件中包含,8,个三态门,常用芯片:,74LS244,应用例子:开关接口,工作波形图如下:,A0A15,IOR#,译码输出,D0D7,开关状态,地址有效,CPU,与外设的数据传送方式,程序控制下的数据传送,通过,CPU,执行程序中的,I/O,指令来完成传送,又分为:无条件传送、查询传送、中断传送,直接存储器存取(,DMA,),传送请求由外设向,DMA,控制器(,DMAC,)提出,后者向,CPU,申请总线,最后,DMAC,利用系统总线来完成外设和存储器间的数据传送,(一)无条件传送,传送数据之前,,CPU,不需要检测外设是否准备就绪,,程序中直接使用,IN,和,OUT,命令来完成输入和输出。也叫注入式或,命令式,。,在,CPU,与慢速变化的设备交换数据时,可认为它们总是处于,“,就绪,”,状态,随时可进行数据传送,这就是无条件传送,或称立即传送、同步传送,适合于简单设备,如,LED,数码管、按键或按钮等,无条件传送的接口和操作均十分简单,这种传送有前提:外设必须随时就绪,无条件输入,MOV DX, 0160H,IN AL, DX,接口,电路,IOR,三态,缓冲,器,OE,I/O,装置,地址,译码,器,CS,D7,D0,A15,A1,A0,160H,若将,IOR,换作,MEMR,则可使用,MOV AL, 160H,无条件输出,T1,T2,T3,T4,T1,地址,状态,地址,数据,CLK,M/IO,A,BHE,AD,ALE,WR,DT/R,DEN,READY,150,1916,S3S6,I/O,输出周期时序,MOV DX, 0160H,MOV AL, BX,OUT DX, AL,BX,中存放需要输出到,I/O,接口的内容,地址,译码,器,数据,锁存,器,A15,A1,IOW,A0,CS,160H,输出,设备,D7,D0,无条件传送方式(,简单接口),三态缓冲器,地址,译码器,O,&,O,O,O,地址总线,M/IO,RD,去,CPU,数据,(,来自外设,),输入加三态缓冲器,锁存器,地址,译码器,O,O,O,O,数据总线,数据,(,来自,CPU),地址总线,M/IO,WR,到外设去,输出加锁存器,&,锁存器:由,D,触发器构成,通常一个器件包含,8,个,D,触发器,常用芯片:,74LS273,74LS374,应用例子:发光二极管接口,简单的输出接口举例,译,码,器,1,1,.,.,.,.,.,.,.,.,.,+5V,R,D0,D7,CP,Q0,Q7,.,.,.,D0,D7,A0,A15,IOW,74LS273,R,(二)查询传送,传送数据之前,,CPU,需要检测外设的状态,(即握手信号的联络),只有外设条件满足时,(就绪),才传送数据,否则继续检测,直到满足。,对多个外设的情况,则,CPU,按一定顺序依次查询(轮询)。先查询的外设将优先进行数据交换,查询传送的特点是:工作可靠,适用面宽,但传送效率低,就绪,(,Ready,),在输入场合,“就绪”说明输入接口已准备好送往,CPU,的数据,正等着,CPU,来读取,该状态可用接口中数据缓冲器已“满”来描述,在输出场合,“就绪”说明输出接口已做好准备,等待接收,CPU,要输出的数据,该状态也可用接口数据缓冲器已“空”、或者用接口(外设)“闲”或不“忙(,Busy,)”来描述,返回,就绪:满,空、闲、不忙,输入状态,判断,传输数据,不满足,条件,满足,条件,查询传送的两个环节,查询环节,寻址状态口,读取状态寄存器的标志位,若不就绪就继续查询,直至就绪, 传送环节,寻址数据口,是输入,通过输入指令从数据端口读入数据,是输出,通过输出指令向数据端口输出数据,通常接口电路中用状态端口的某一位或某几位表示外设的状态。也叫,问答式,。,如果外设工作情况无法预先知道或无规律,一般采用查询或中断工作方式,优点:可解决速度匹配问题,电路和程序都比较简单。,缺点:,CPU,检查外设状态,需要占用大量,CPU,时间,影响系统效率。,示例,查询传送流程,返回,查询输入,三态,缓冲,器,OE,160H,D7,D0,D0,IOW,地址,译码,器,A15,A1,CS,A0,IOR,162H,164H,C,EOC,ADC,DB,锁,存,器,R,Q,C,D,+5V,查询输入接口电路原理图,状态触发器,控制口,:口地址为,0164,H,,只完成,ADC,的启动,不用传递其他控制信息。,0164,H,IOW,状态口,:,ADC,转换结束后,由,EOC,产生负脉冲,把,ADC,输出数据锁存到锁存器中,并置状态触发器为“,1”,,表示数据已准备好。状态信息由数据线,D0,传送,口地址为,0162,H.,0162,H IOR.,数据口,:查询状态,条件具备,则选中数据口输入数据,同时清状态,表示数据已读走,防重读。数据口地址为0160,H,。,0160,H IOR,从,ADC,读取一个数据子程序(数据,存放,在,AL,中),READ PROC,MOV DX, 0160H,IN AL, DX ;,清状态,MOV DX, 0164H,OUT DX, AL ;,启动,READ1:,MOV DX, 0162H,IN AL, DX ;,查询状态,TEST AL, 01H,JZREAD1,MOVDX, 160H,INAL, DX ;,读取数据,RET,READ ENDP,查询输出,D7,D0,D0,160H,IOW,地址,译码,器,A15,A1,CS,A0,162H,164H,RDY,DB,锁,存,器,Q,C,D,+5V,R,C,ACK,IOR,外设,控制口,:由输出口164,H,产生一个负脉冲启动外设工作,。,数据口,:地址160,H,,,CPU,输出数据到锁存器,同时置“1”状态触发器,通知外设数据已准备好。,状态口,:地址0162,H,,,CPU,查询状态,看外设是否取走数据。若外设取走数据,则发,ACK,信号,清除状态触发器。,输出一个数据子程序(输出数据在,AL,中),WRITE PROC,MOV DX, 0164H,OUT DX, AL;,启动外设,MOV DX, 0160H,OUT DX, AL;,输出数据,MOV DX, 0162H,WRITE1:,IN AL, DX;,查询状态,TEST AL, 01H,JNZ WRITE1,RET,WRITE ENDP,查询方式的流程图,超时,?,READY?,与外设进,行数据交换,超时错,读入并测试外设状态,Y,N,Y,N,传送完?,防止死循环,复位计时器,N,Y,(三)中断传送方式,外设“准备好”后,向,CPU,发中断请求,CPU,响应请求,停止正运行的程序,去执行请求处理,处理完请求后,回到断点处继续执行,数据交换在中断服务程序中完成,中断服务程序,返回,完成数,据交换,断点,正常程序,中断传送是一种效率更高的程序传送方式,进行传送的,中断服务程序是预先设计好的,中断请求是外设随机向,CPU,提出的,CPU,对请求的检测是有规律的,:一般在每条指令的最后一个时钟周期采样中断请求输入引脚,优点:,CPU,主动查询变为被动中断,提高了系统效率,缺点:,需要专门的中断申请电路,程序设计复杂,不适合对大量数据的传输。,(四),DMA,方式(,Direct Memory Access,),传统方式:,DMA,方式:,DMA,方式适合大量数据高速传输。,例如:,DRAM,刷新等,优点:,速度高,不需要,CPU,参与。,缺点:,硬件接口复杂,,DMAC,价格高。,MEM,CPU,I/O,MEM,CPU,I/O,DMAC,DMA,控制器或,DMA,通道一般是,8237,芯片,一片,8237,有,4,个通道,两片级连有,7,个通道。,DMA,传送原理示意,图,系统总线,CPU,DMAC,存储器,外设接口,AEN,IOW,MEMW,MEMR,IOR,MEMW,MEMR,IOW,IOR,AEN,HOLD,HLDA,DRQ,DACK,AEN,IOW,IOR,MEMW,MEMR,外设发出,DMA,请求,DMAC,向,CPU,申请总线,CPU,完成当前总线周期后,响应,并释放总线控制权,DMAC,得到总线控制权,并发出,DMA,响应信号, 由,DMAC,发出各种控制信号,控制外设与存储器之,间的数据传送, 数据传送完后,,DMAC,撤销,HOLD,信号,CPU,释放,HLDA,信号,并重新控制总线,DMA,控制器的工作过程,1,)当外设准备好,可以进行,DMA,传送时,外设向,DMA,控制器发出,“,DMA,传送请求,”,信号(,DRQ,);,2,),DMA,控制器收到请求后,向,CPU,发出,“,总线请求,”,信号,HOLD,,表示希望占用总线;,3,),CPU,在完成当前总线周期后会立即对,HOLD,信号进行响应。响应包括两个动作:一是,CPU,将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权。另一方面,,CPU,向,DMA,控制器发出,“,总线响应,”,信号(,HLDA,)。,4,),DMA,控制器收到,HLDA,信号后,就开始控制总线,并向外设发出,DMA,响应信号,DACK,;,DMA,控制器的工作过程(续),5,),DMA,控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送;,例如,向,I/O,接口发出读信号,同时往地址总线上发出存储器的地址和存储器写信号和,AEN,信号,即可从外设向内存传送一个字节。,6,),DMA,控制器自动修改地址和字节计数器,并判断是否需要重复传送操作。当规定的数据传送完后,,DMA,控制器就撤销发往,CPU,的,HOLD,信号。,CPU,检测到,HOLD,失效后,紧接着撤销,HLDA,信号,并在下一时钟周期重新开始控制总线。,6.3,输入,/,输出实例,例,1,设计一个输出接口,控制,8,个发光二极管,每隔,1,秒钟点亮一只(只有一只亮),从上到下循环往复。,Y0,160H,说明:,74,LS273,为上升沿锁存的锁存器,其输出灌电流可达8,mA,,能够点亮发光二极管。,74,LS,133,为,13,输入的“与非”门,由它和反相器,74LS04,及三八译码器,74,LS,138,对地址线,A15,A0,进行译码,决定端口地址。,A,0,接,74LS138,的片选,G2B,仅偶地址选中,数据由数据总线的低,8,位传输。,端口地址,输 出,范 围,160H,A15A14A13A12A11A10A9A8A7A6A5A4 A3A2A1A0,方 向,0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0,程序:,DISPLAY PROC,MOV AL, 7FH,MOV DX, 160H,DISPLAY1:,OUT DX, AL ;,显示,CALL D1S ;,延时1,S,ROR AL, 1,JMP DISPLAY1,RET,DISPLAY ENDP,习题,1.,一般的,I/O,接口电路安排有哪几类寄存器?各自的作用是什么?,2.,如果有一个输入设备,其数据口地址为,0FFE0H,,状态口地址为,0FFE2H,,当状态标志,D0=1,时,表明一个字节的输入数据就绪。采用查询方式传送数据,请画出相应的硬件电路,并编程实现数据传送,要求从该设备独取,100,个字节并写到从,2000H:1000H,开始的内存中。,3.,如果有一个字符输出设备,其数据口地址和状态口地址均为,80H,,当状态标志,D7=1,时,表明设备闲,可以接收一个字符。采用查询方式传送字符串,请画出相应的硬件电路,并编程实现数据传送,要求将存放于符号地址,ADDR,处的字符串输出给该设备。,
展开阅读全文