1教学建议,本章重点为:为什么要用接口;•CPU和输入/输出设备之间的信号;•接口的功能以及在系统中的连接;•中断传输的原理;•DMA方式的原理;•输入/输出过程中接口部件和地址总线错位连接的原理。第5章微型计算机和外设的数据传输25.1为什么要用接口1、接口的基本概念所谓接口是指CPU、存储器、外设之间通过总线进行连接的电路部分,是CPU与外界进行信息交换的中转站。不同的外设有不同的输入/输出接口电路。例如,键盘输入有键盘接口电路,CRT显示器有显示器输出接口电路,打印机也有打印输出接口电路等等.3微型计算机各种接口框图:45.1为什么要用接口I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路I/O接口的硬件分成两类:1.系统板上的I/O芯片如定时/计数器、中断控制器、DMA控制器、并行接口等。2.I/O扩展槽上的接口控制卡如软驱卡、硬驱卡、图形卡、声卡、打印卡、串行通信卡等。CPU接口电路I/O设备55.1为什么要用接口2、接口按功能分为两类使CPU正常工作所需要的辅助电路输入/输出接口3、外部设备为什么一定要通过接口和主机相连?外部设备功能多种多样,工作原理不同外部设备的信息不同,有数字量、模拟量、开关量串并行方式不同外设速度比CPU低得多65.1为什么要用接口4、接口技术的发展及分类微型计算机接口技术的发展,基本上是与微处理器的发展同步进行的。按照接口技术与接口随着微处理器的发展,可将接口电路分为四类:固定式接口电路可编程接口电路智能接口与通用外围接口功能接口板71)、固定式接口电路早期的微处理器多采用PMOS工艺,集成度低,系统结构与指令系统均比较简单,受半导体工艺的限制,接口芯片的集成度也不高,大都采用TTL与MSI工艺,计算机接口由小规模或中规模集成电路组合而成,要改变其功能与工作方式必须改变硬件连线才能实现,将这种简单接口电路称之为固定式接口电路82)、可编程接口电路16位微处理器(例如8086CPU)的出现,使微型计算机的发展进入了第二代,第二代微处理器采用了NMOS工艺,集成度明显提高,Intel公司推出的与此相适应的接口芯片有中断控制器8259A,并行I/O接口芯片8255A,定时/计数器8253/8254,DMA控制器8237A以及串行通信接口芯片8250等,这些芯片都是采用NMOS工艺的大规模集成(LSI)芯片,而且都是可编程的接口芯片,用户可以通过对接口芯片的在线编程,方便灵活地改变接口的工作方式93)、智能接口与通用外围接口Intel公司于1985年首次推出第三代微处理器80386,1989年又推出X86系列的第四代微处理器80486,这时代的芯片大都是采用了NMOS或CMOS工艺的超大规模集成(VLSI)芯片。与此相应,也开发出了大批集成度更高的接口器件。这一时期接口芯片的显著特点是应用了单片机作通用接口,使接口电路智能化智能化接口集单片机技术与接口技术于一体,可直接与外围设备相连,它是一种结构与功能接近于CPU的专用控制器,有独立的指令系统,通过编写完整的I/O管理程序和预处理程序,来实现对许多外设频繁的I/O进行管理,从而减轻了CPU管理I/O设备的负担,大大提高了微机系统的运行速度104)、功能接口板由于微型计算机使用了各种统一的总线标准,例如:ISA、PCI、SCSI、USB等各种总线,因而从电气特性、机械特性及通信协议等方面都已标准化,开发商已为各种总线开发出了不同功能的专用接口板,可供用户选购,例如:PCI总线的ADC和DAC功能板,PCI的网卡,基于PCI的RS-232串行通行卡等115.2CPU和输入/输出设备之间的信号数据信息数字量模拟量开关量状态信息控制信息CPUI/O设置数据状态控制都是通过数据总线传送三种信息对应不同的寄存器125.3接口部件的I/O端口I/O端口是I/O接口中可通过编程实现寻址并进行读写的寄存器。CPU与外设之间交换信息具体是通过I/O端口来进行的。一个外设与CPU交换信息往往需要几个端口:数据端口控制端口状态端口编址方式有两种有时可以合用135.3接口部件的I/O端口145.3接口部件的I/O端口ABDBCBCPUI/O接口I/O设备端口数据控制状态CPU与外设通过I/O接口通信示意图15I/O端口地址分配PC微机是根据上述I/O接口的硬件分类,把I/O空间分成两部分。PC微机I/O地址线可有16根,对应的I/O端口编址可达64K字节,其端口地址译码是采用部分译码法,即只使用了低10位地址线一个A0~A9,故其I/0端口地址范围是0000H~003FFH,总共只有1024个端口。16表1系统板上接口芯片的端口地址I/O芯片名称端口地址DMA控制器1000~01FHDMA控制器20C0~0DFHDMA页面寄存器080~09FH中断控制器1020~03FH中断控制器20A0~0BFH定时器040~05FH并行接口芯片(键盘接口)060~06FHRT/CMOSRAM070~07FH协处理器0F0~0FFH17表2扩展槽上接口控制卡的端口地址I/0接口名称端口地址游戏控制卡200~20FH并行口控制卡1370~37FH并行口控制卡2270~27FH串行口控制卡13F8~3FFH串行口控制卡22F0~2FFH原型插件板(用户可用)300~31FH同步通信卡13A0~3AFH同步通信卡2380~38FH单显MDA3B0~3BFH彩显CGA3D0~3DFH彩显EGG/VGA3C0~3CFH硬驱控制卡1F0~1FFH软驱控制卡3F0~3F7HPC网卡360~36FH18I/O端口地址选用的原则①凡是被系统配置占用了的地址一律不能使用;②未被占用的地址,用户可以使用,但申明保留的地址,不要使用。③用户可使用300H~31FH地址。191、接口的功能寻址功能输入/输出功能数据转换功能联络功能中断管理功能复位功能可编程功能错误检测功能5.4接口的功能以及在系统中的连接20•2、接口与系统的连接21用读信号、写信号和地址A0区分4个寄存器•高位地址和M/IO信号经译码器形成片选信号22例1:使用74LS20/30/32和74LS04设计I/O端口地址为2F8H的只读译码电路。分析:若要产生2F8H端口地址,则译码电路的输入地址线就应具有如下所示的值。译码电路输入地址线的值地址线00A9A8A7A6A5A4A3A2A1A0二进制001011111000十六进制2F823译码电路输入:地址线:10根,地址值:2F8HA9~A0=1011111000B控制线:AEN=0IOR=0译码电路输出:Y=0为译码选中。/AEN是总线选通信号24A9A8A7A3A2A1A0AENIOR&&≥Y25当执行指令:MOVDX,2F8HINAL,DX时,Y=0,对应端口被选中26•4、32位微处理器采用I/O编址的译码电路A、8位数据端口与低8位数据线的连接27B、8位数据端口与32位数据线的连接28例如:MOVDX,3E0HINAL,DX;BE0*有效,只读端口0INAX,DX;BE1*、BE0*有效,;读端口1与读端口0INEAX,DX;BE3*~BE0*均有效,;读端口3~端口0295.5CPU和外设之间的数据传送方式程序方式无条件传送方式条件传送方式中断方式DMA方式305.5.1程序方式无条件传送方式•最简单的I/O控制方式,CPU可以随时根据需要无条件地读写I/O端口•外设要求:简单,数据变化缓慢,操作时间固定,如一组开关或LED显示管。外设被认为始终处于就绪状态•接口特点–CPU的DB→I/O接口(输出锁存器)→外设–CPU的DB←I/O接口(输入缓冲器)←外设31无条件传送方式编程例START:MOVDX,INPORTINAL,DX;读入按键状态TESTAL,01H;判断最低位按键JNZK1;最低位按键没闭合,转MOVAL,01H;最低位发光JMPDISPK1:TESTAL,02H;JNZK2;次低位按键没闭合,转MOVAL,03H;最低2位发光JMPDISP………………….DISP:MOVDX,OUTPORTOUTDX,AL;JMPSTART31325.5.1程序方式条件传送方式也叫查询方式接口特点:避免了对端口的“盲读”、“盲写”,数据传送的可靠性高,并且硬件接口相对简单。缺点是CPU工作效率低,I/O响应速度慢;外设要求:状态口和数据口在有多个外设的系统中,CPU的查询顺序由外设的优先级确定一种CPU主动、外设被动的I/O操作方式,很好地解决了CPU与外设之间的同步问题335.5.1程序方式条件传送方式的三个环节CPU从接口中读取状态字。CPU检测状态字如“就绪”状态,则传送数据。READY?读取状态端口读/写数据端口YN状态端口复位345.5.1程序方式图5.4查询式输入的接口12345????355.5.1程序方式图5.5查询式输出的接口365.5.1程序方式图5.6查询式输入过程的流程图37查询的例子1DATA_SEGSEGMENTMESSAGEDB′BUFFEROVERFLOW′,0DH,0AHATA_SEGENDSCOM_SEGSEGMENTBUFFERDB82DUP(?)COUNTDB?COM_SEGENDSCODESEGMENTASSUMEDS:DATA_SEG,ES:COM_SEG,CS:CODESTAT:MOVAX,DATA_SEGMOVDS,AXMOVAX,COM_SEGMOVES,AXMOVDI,OFFSETBUFFERMOVCOUNT,DIMOVCX,81CLD38查询的例子2NEXT_IN:INAL,56HTESTAL,02HJZNEXT_ININAL,52HORAL,0JPENO_ERRORJMPERRORNO_ERROR:ANDAL,7FHSTOSBMOVCX,17LOOPNENEXT_INJNEOVERFLOWMOVAL,0AHSTOSBSUBDI,COUNTMOVCOUNT,DI39查询的例子3OVERFLOW:MOVSI,OFFSETMESSAGEMOVCX,17NEXT_OUT:INAL,56HTESTAL,01HJZNEXT_OUTLODSBOUT54H,ALLOOPNEXT_OUT40多个入设备轮流查询的例子TREE_IN:MOVFLAG,0INPUT:INAL,STAT1TESTAL,20HJZDEV2CALLPROC1CMPFLAG,1JNZINPUTDEV2:INAL,STAT2TESTAL,20HJZDEV3CALLPROC2CMPFLAG,1JNZINPUTDEV3:INAL,STAT3TESTAL,20HJZNO_INPUTCALLPROC3NO_INPUT:CMPFLAG,1JNZINPUT413个设备处于相同优先级的循环查询程序,INTREE:MOVFLAG,0INPUT:INAL,STAT1TESTAL,20HJZDEV2CALLPROC1DEV2:INAL,STAT2TESTAL,20HJZDEV3CALLPROC2DEV3:INAL,STAT3TESTAL,20HJZNO_INPUTCALLPROC3NO_INPUT:CMPFLAG,1JNZINPUT42多个外设的查询CPU周期性地依次查询每个外设的状态优先权决定了查询次序不具有实时性42435.5.2中断方式接口特点:避免了CPU反复低效率的查询,适用于CPU任务繁忙、而数据传送不太频繁的系统中。缺点是硬件电路和处理过程都比较复杂;(中断控制芯片)CPU被动而外设主动的I/O操作方式,较大地提高了CPU的工作效率,并使系统具有了实时处理功能445.5.2中断方式中断传送方式的原理图5.7中断方式输入的接口455.5.2中断方式中断传送方式的原理图5.8可屏蔽中断的响应和执行465.5.2中断方式中断优先级问题的解