接口技术zhangxing2004@sohu.com教材要求的先修课程数字电子技术(或逻辑设计)微型计算机原理(或计算机组成)微机接口技术实用秦鹏,王积翔清华大学出版社目的及要求•掌握外设,接口的基本概念及与CPU的连接方法,数据交换的一般性原理.•掌握PC机内常用接口电路的结构、工作原理、与CPU的硬件接口方法及软件编程.本课程的作用与意义•学会计算机硬件电路的基本设计方法和相关编程•能够编写与硬件有关的程序(如驱动程序)•为高级语言的深入编程打下基础第一章概述1.1微机接口与接口技术1.2接口功能1.3接口的组成1.4接口电路的结构形式1.5CPU与接口交换数据的方法1.1微机接口与接口技术微机接口:微处理器CPU与外部世界的连接电路微机接口技术:采用软硬件方法,以实现微处理器和外部世界最佳连接和信息交换的一门技术1.2接口功能•采用微机接口必要性•微机接口功能采用微机接口必要性通过微机接口可解决如下问题•速度不匹配•信号电平不匹配•信号格式不匹配•时序不匹配微机接口的功能•执行CPU命令的功能•返回外设状态的功能•数据缓冲功能•信号转换功能(逻辑关系、时序、电平匹配)•设备选择功能•数据宽度与数据格式转换的功能1.3接口的组成•硬件基本的逻辑电路:命令寄存器、状态寄存器、数据缓冲寄存器端口地址译码电路:用GAL芯片或普通IC逻辑芯片组成,实现设备的选择功能供选电路:根据接口要实现的功能而添加的功能模块,供用户选择涉及数据传输方式需考虑查询、中断和DMA控制三种功能的选择涉及到速度、发声等控制要考虑定时/计数器的选用涉及到数传宽度的转换时要考虑移位寄存器的选用•软件初始化程序段发送方式命令字、初始化命令字,来设置外设的工作方式和初始化外设的状态传送方式处理程序段程序控制:主要是查询方式。查外设的状态,通过访问接口电路的状态口寄存器实现(程序流程)中断方式:设置中断向量、中断源屏蔽/开放、中断优先级设置、开放CPU或外设的中断、关中断、保护现场、恢复现场等处理DMA方式:DMA通道的选择,开放或屏蔽,初始化DAM芯片,数据传送方式的设置,如:单个传送、成组传送、成块传送、DMA校验•主控程序段用于完成接口的任务,不同的接口处理不一样。•程序终止与退出程序段•辅助程序段人机对话,菜单设计等1.4接口电路的结构形式•固定式固定式结构采用SSI或MSI的IC逻辑芯片要求组合而成缓冲器74LS244和74LS245,锁存器74LS373,8282适用于接口比较简单场合•半固定式结构采用GAL或PAL器件作为接口电路特点:逻辑表达式可编程,可改写,可加密•可编程结构属通用接口芯片,但其工作、功能可编程,使用非常灵活。•智能型结构指I/O处理器或通用单片机构成智能接口特点:片内带有微处理器1.5CPU与接口交换数据的方式•程序控制方式•中断方式•DMA方式程序控制方式程序控制传送方式是指CPU与外设之间数据传送是在程序控制下完成程序控制传送分成无条件传送和条件传送无条件传送(同步传送):适用于外设操作简单外设的定时是固定或已知的场合74LS2441A11A22A41Y11Y22Y4D0D1D7+5V1G2GM/IOCSRD74LS2731Q2Q8Q1D2D8DD0D1D7M/IOCSWRCLK条件传送(查询方式)•通过执行一条输入指令,读取外设的当前状态•根据状态判别•适用于CPU不太忙,且传送速度不高的场合未准备好,重复测试准备好,进行I/O传送中断方式中断方式是指:当外设准备就绪,向CPU提出中断申请,CPU终止原中断服务程序,为外设服务,服务完毕,继续原程序运行中断方式特点:能使任意速度的外设和CPU进行数据传送中断方式优点:CPU和外设能同时工作,提高了CPU效率DMA方式DMA(直接存储器传送方式)由DMAC(DMA控制器)接管CPU的总线直接完成存储器和外设数据传送DMA是一种不需要CPU干预,不需要软件介入的高速数据传送第二章I/O端口地址译码技术2.1I/O端口及其编址方式2.2I/O端口地址分配2.3I/O端口地址译码2.1I/O端口及其操作I/O端口和I/O操作端口地址编址方式独立编址方式的端口访问I/O端口和I/O操作1.端口的概念:把I/O接口电路中能被CPU直接访问的寄存器或某些特定的器件称之为端口(Port)2.I/O端口的一般特性:I/O端口是CPU与I/O设备直接通信的地址CPU可以通过这些端口发送命令、读取状态和传送数据一个接口通常含有几个端口外设数据信息状态信息控制信息数据口状态口控制口DBABCBCPUI/O接口数据端口:完成CPU与外设数据信息传送数据信息有数字量、开关量、模拟量状态口:表示外设当前所处的状态。READY准备就绪位BUSY忙碌位表示外设空闲,还是工作ERROR错误位传送过程是否发生错误控制端口:CPU用于控制I/O接口工作方式和I/O设备启动端口地址编址方式统一编址(存储器映象编址)独立编址(I/O单独编址方式)1、统一编址CPUM或I/O接口控制逻辑MEMRMEMWCBDBABI/O端口1M存储单元•统一编址特点:M或I/O共用一个地址空间对M和I/O的读写操作均MEMR和MEMW•统一编址优点:不需要设置专用的I/O指令I/O空间是存储器的一部分,可大可小•统一编址缺点:内存空间减少访问I/O时指令长,地址长,访问时间增加2、独立编址DBABMI/OMERMEWIORIOW控制逻辑CPU内存空间I/O空间1M64K•独立编址特点:M和I/O端口用两个独立的地址空间用MER和MEW对存储器读写,用IOR和IOW对I/O读写•独立编址优点:I/O端口地址译码简单,M和I/O操作指令不同I/O端口不占用M的地址•独立编址缺点:设置专用的I/O指令,因指令较简单,程序设计灵活性较差独立编址方式的端口访问1.汇编语言中的I/O语句IN累加器,{端口地址|DX}OUT{端口地址|DX},累加器其中累加器可以是AL或AX。当累加器是AL时,端口是8位数据传送;当累加器是AX时,端口是16位数据传送。{端口地址|DX}中的符号“|”表示前后两者之间只能选其一。寻址方式有两种:(1)直接寻址:指令中直接访问端口地址,只能表示0~255范围内的端口。(2)间接寻址:指令中的端口地址放于DX中,通过DX访问端口。可以访问端口地址大于255的端口例:从300H端口读入一个字节或一个字,在发给20H端口的指令为:MOVDX,300HINAL,DXINAX,DXOUT20H,ALOUT20H,AX2.C语言中的端口读写函数在PC系列微机上运行的几种C语言版本,都支持端口的输入输出操作,C语言中有专门的访问端口的库函数。这些库函数实际上是调用了汇编的IN/OUT指令常用到的TurboC函数如下:(1)inportb()(2)outportb()(3)clrscr()(4)getch()(5)kbhit()(6)delay()(7)sound()•例利用inportb()函数从所指定的输入端口2F0H读取一个字节的数据,并显示在屏幕上。intportb()的原型为:inportb(intport),头文件为dos.h。main(){unsignedcharc;c=inportb(0x2f0);printf(data=%0x,c);}•例将一个字节输出到输出端口360H。outportb()的原型:voidoutportb(intport,unsignedcharvalue);头文件为dos.h。程序:main(){outportb(0x360,0x55);}2.2I/O端口地址分配PC系列微机系统支持的端口数目及占用空间:端口数为1024个;其端口地址空间是从000~3FFH,采用非完全译码,高6位地址线不考虑,因此,其有效的译码地址是地址线A0--A9。PC系列微机系统中I/O接口分类:按照PC系列微机系统中I/O接口电路的复杂程度及应用形式,可以把I/O接口的硬件分为两大类:(1)系统板上的I/O接口芯片(2)扩展槽上的I/O接口控制卡PC机A9=PC/AT前256个系统板后768个为扩展槽0系统板前512地址1扩展槽(1)系统板上的I/O接口芯片•这些芯片大多都是可编程的大规模集成电路,完成相应的接口操作。如定时器/计数器、中断控制器、并行接口等。•在PC/AT微机中,这些接口芯片是由如8259、8237A等芯片组成。随着PLD技术的发展,目前PC机系统主板上的所有I/O接口功能,已集成在一片或几片大规模集成电路芯片中,常见的主板外围集成芯片有82380、82C26、82C391等等。(2)扩展槽上的I/O接口控制卡这些接口控制卡是由若干个集成电路按一定的逻辑功能组成的接口部件,如多功能卡、图形卡、串行通信卡、网络接口卡等。表2.1系统板上接口芯片的端口地址表2.2扩展槽上接口芯片的端口地址I/O端口地址选用原则:•系统使用的地址用户不能用•未使用的地址如是保留地址也尽量不要用•用户可使用300H~31FH,且使用地址开关可进行地址选择•每个芯片占一个地址区域,这主要是设计上方便2.3I/O端口地址译码当CPU执行IN或OUT指令时,CPU地址总线上输出的是16位的端口地址,控制总线上输出与I/O相关的控制信号如/IOR、/IOW、AEN信号等,数据总线上送出或读入要传送的数据。问题提出:怎样利用这些信号来选通某一个端口并实现数据的传送?由接口来完成。即对地址信号译码,将产生的译码信号同/IOR或/IOW结合起来一同控制来选通端口,并对I/O端口进行读或写操作。并将数据从数据总线送出或读入。I/O地址译码电路译码电路中用到的信号线:输入信号:地址信号和控制信号地址信号:A0~A9控制信号:SBHE:控制奇偶地址I/OCS16:控制8位还是16位AEN:控制非DMADT/R:传送方向控制IOR:读IOW:写输出信号:地址信号和控制信号逻辑组合产生选中信号I/O地址的译码方法I/O端口地址译码的方法灵活多样,通常可由地址信号和控制信号的不同组合来选择端口地址,与存储器的地址单元类似。一般是把地址信号分为两部分:1.一部分是高位地址线与CPU或总线的控制信号组合,经过译码电路产生一个片选信号/CS,选择某个I/O接口芯片,从而实现接口芯片的片间选择。2.另一部分是低位地址线直接连到I/O接口芯片,经过接口芯片内部的地址译码电路选择该接口电路的某个寄存器端口,即实现接口芯片的片内寻址。I/O端口地址译码电路设计I/O端口地址译码分类:1.按照地址译码电路采用的元器件来分(1)门电路译码(2)译码器译码(3)GAL、PLD译码。2.按照译码电路的形式来看(1)固定式(2)可选式译码。固定式端口地址译码:(1)用门电路进行端口地址译码•特点:是一种最简单最基本的端口地址译码方法,一般多采用与门、与非门、反相器及或非门等。•如74LS0074LS08、74LS04、74LS32、74LS30等74LS308输入与非门74LS204输入与非门74LS32四2输入或门74LS04六反向器74LS20&&A9A8A7A3A2A1A0AENIOR或74LS3074LS3274LS04例1:使用74LS20/30/32和74LS04设计I/O端口地址为2F8H的只读译码电路(单端口)A11A00010111110002F8电路说明:A、AEN参加译码,对端口地址译码进行控制:只有当AEN=0时,即不是DMA操作时译码才有效;当AEN=1时,即是DMA操作时,使译码无效。避免了在DMA操作时,对这些I/O端口地址进行读/写操作。B、地址信号A9A8A7A6A5A4A3A2A1A0=1011111000B时,译码电路才有效。C、对端口进行读操作,所以/IOR=0,只有/IOR=0时,译码电路才有效。例2:同样的端口地址2F0H,实现对端口2F0H进行读和写两种操作。电路如图2.2。&&A9A8A7A3A2A1A0AEN≥174LS3074LS3274LS04IORIOW≥1≥1读