1、计算机接口技术 庄琴生 编著 西安电子科技大学出版社,Name:唐启见 Tel:15874245670 E-mail:,简单回顾,1、汇编程序的作用 2、由汇编源程序到执行文件的处理过程 3、数制转换将十进制数0.625分别转换成二、八、十六进制数。 4、8088支持的数据类型及其有效范围 5、系统总线 6、内存与物理地址 7、8086微处理器的组成及寄存器结构,8086CPU结构示意图,相关科目,计算机文化基础 C语言程序设计 汇编语言程序设计 单片机原理及应用 DSP原理及应用 PLC原理及应用 ARM嵌入式开发,本书的主要内容,一、计算机接口技术概述 二、总线技术 三、中断接口技术 四、
2、定时器/计数器接口电路 五、并行接口 六、串行通信接口 七、模/数(A/D)与数/模(D/A)转换 八、DMA技术 九、人机交互接口与常用标准接口,第1章 计算机接口技术概述,1.1 接口技术的基本概念 1.2 计算机与外设之间的数据传送方式 1.3 无条件传送接口实验 习题1,1.理解微机接口的基本概念、接口的功能、接口信息及接口的编址方式。 2.熟练掌握四种计算机与外设之间的数据传送方式;,本章主要教学目的及要求,1.1 接口技术的基本概念 1.2 计算机与外设之间的数据传送方式 1.3 无条件传送接口实验,本章主要教学内容,1.1 接口技术的基本概念,在计算机系统中除了CPU以及基本硬件
3、之外,还有各种外部设备,比如显示器、键盘、打印机、磁盘驱动器、光盘驱动器等。这些外部设备需要与CPU进行大量的信息交换,根据CPU的要求进行各种操作。进行信息交换时,由于各种原因(比如电平、时序等的不同),这些外部设备不能与CPU直接相连,它们之间的信息交换必须经过一个中间电路,也就是接口电路。,外部设备多种多样,可以是机械式、电子式或其它形式的;输入/输出的信息不相同,可以是数字量、模拟量或开关量;信息传输的速度也不相同,键盘输入的速度是秒数量级,而磁盘输入的速度最高可达百兆位/秒以上。另外,与CPU进行交换的信息的来源也不相同,它们可以来自于计算机的系统硬件(比如键盘、显示器、磁盘机等),
4、也可以来自于外部控制系统或现场采集到的信息。,1.1.1 接口的功能与基本结构接口(Interface)是两个部件之间的连接点或界面。计算机接口技术就是研究CPU如何与外部设备进行连接、耦合、匹配,以便实现CPU与外部设备之间高速、可靠地进行信息交换的一门技术,是计算机系统应用的关键课题之一。,1接口应具有的功能1) 对外部设备的寻址功能计算机系统中往往有多种类型的外部设备,相同类型的外部设备也可能不止一台。CPU在同一时刻只能与一台外设通信(当然可以通过分时、轮询等,实现逻辑上的并行操作)。 2) 信号转换功能外部设备的信号电平可能不是TTL电平或CMOS电平,因此需要由接口电路来完成信号电
5、平的转换。,TTL与CMOS相比,电平不同,需要有转换电路才能连接。区别是TTL电流大,速度快,功耗大,CMOS电流小,速度稍慢,功耗小,对称性好,在CMOS里也没有悬空表示高电平的说法,而是不定态,在应用中输入信号要避免悬空,3) 数据缓冲功能 外部设备的工作速率远远低于CPU的速率,为了提高CPU的工作效率并避免丢失数据,接口中必须有数据缓冲器。 4) 联络功能接口应当具备握手信号或者能够提供状态信息。CPU送来的控制信号、外部设备的工作状况以及应答信号都要通过接口与CPU以“握手联络”的方式进行交互。,5) 中断管理功能CPU与外设之间的通信采用中断方式,有利于提高CPU的利用率。 6)
6、 可编程功能为了使接口具有较强的灵活性、可扩充性以适应多种工作方式或工作状态,接口应具有可编程的特性。,2接口电路的基本结构接口电路的基本结构如图1-1所示。在与CPU相连的一侧,接口电路通过地址总线AB、数据总线DB以及控制总线CB与CPU连接。地址总线(AB)用来提供访问接口电路的地址信息。数据总线(DB)用来与接口电路交换数据信息、状态信息和命令信息。控制总线(CB)包括IO/M、 、 、INTR等信号线。,在与I/O设备连接的一侧,接口电路通过数据线DATA、状态线STATUS、控制线CONTROL与I/O设备相连。 接口电路处于CPU与外部设备之间,是CPU与外部设备之间进行通信的桥
7、梁。接口电路内部一般包括数据I/O缓冲器、状态寄存器、命令控制寄存器和中断控制逻辑等部分。,图1-1 接口电路的基本结构,1.1.2 接口信息与端口的编址方式1CPU与外设之间的接口信息CPU与外设之间传送的信息通常包括数据信息、状态信息和控制信息。1) 数据信息数据信息是最基本,也是最重要的一种信息,它包括数字量、模拟量和开关量。数字量:通常为8位、16位或32位的二进制数据或ASCII码数据。,模拟量:当计算机用于控制系统或数据采集系统时,大量的现场信息(比如温度、压力、流量和速度等)是连续变化的物理量。这些物理量经过传感器被转换成电信号,再经过放大、整形等处理后得到电流或电压,这些电流或
8、电压仍旧是模拟量。 开关量:是一些只有两个状态的量,如开关的闭合与断开、继电器触点的打开与吸合等,用一位二进制数“0”或“l”表示。,2) 状态信息状态信息反映当前外部设备所处的工作状态。输入时,CPU常要先查询输入设备是否准备好(Ready1?),准备好了才可以输入;输出时,CPU常要查询输出设备是否空闲(Busy0 ?),如果输出设备不忙(Busy0),则CPU向该外部设备输出数据。CPU根据接口电路提供的输入/输出设备的状态信息,决定是否进行数据的输入或输出。,3) 控制信息控制信息是控制输入/输出设备启动、停止或执行某种特定操作的信息。综上所述,接口电路传送三种不同类型的信息,即数据信
9、息、状态信息和控制信息。三种信息的性质不同,要通过不同的端口分别传送。,2端口的编址方式输入/输出端口(即I/O端口)的编址方式主要有两种:内存和I/O端口统一编址及I/O端口单独编址。1) 内存和I/O端口统一编址I/O端口和存储单元统一编址是在整个存储空间中划分出一部分地址空间给外设端口使用。 I/O端口和存储单元统一编址方式的优点在于I/O端口的地址空间较大,对端口进行操作的指令功能较强,使用时灵活方便。,2) I/O端口单独编址I/O端口的地址空间单独编址,与内存单元的地址空间相互分开,各自独立。8086/8088系统中就采用这种编址方式。 8086/8088系统的8位I/O端口地址空
10、间是064 KB,地址总线中A15A0就可提供寻址64 KB I/O端口地址空间的能力。 I/O端口单独编址方式的优点是:不占用内存单元的有效地址空间,地址译码器较简单,端口操作指令长度较短,执行速度较快。,1.2 计算机与外设之间的数据传送方式,1.2.1 无条件传送方式无条件传送方式是最简单的数据传送方式。在这种传送方式中,假设外设已处于就绪状态。 图1-2 为无条件传送方式输入/输出接口示意图。图中经地址总线把选中外设的地址信息送往端口译码器,当IO/M为高电平时可以进行输入/输出操作。,图1-2 无条件传送方式输入/输出接口示意图,例1.1 一个无条件传送输入和输出的具体实例如图1-3
11、所示。图中八个开关可以看成是输入设备,八个发光二极管(LED)可以看成是输出设备,用集成电路芯片和与非门等组成接口电路。输入设备和输出设备具有相同的端口地址,通过 和 来区别是进行输入还是输出操作。假设输入设备和输出设备的端口地址为218H。要求根据八个开关的通断状态点亮或熄灭对应的发光二极管,开关可以根据需要随时拨动。,图1-3 开关状态读取与LED显示接口电路,解 作为输入设备的八个开关连接由三态缓冲器(三态门)74LS244构成的输入口。八个开关的另一端都接地,同时74LS244的输入端I1I8通过电阻接到高电平。 8D三态锁存器74LS373构成输出口,连接到作为输出设备的八个发光二极
12、管(LED)。八个发光二极管的另一端都经电阻连接到高电平。,程序的执行过程是:CPU读取各开关的状态数据,然后把读入的开关状态数据输出到74LS373;重复执行上述过程以满足八个开关可以随时拨动的需要。程序如下: LOP:MOV DX, 218H ;DX指向端口地址IN AL, DX ;从输入口读取开关状态OUT DX, AL ;把读入的开关状态数据送到输出口显示CALL DELAY ;延时10 ms的子程序JMP LOP程序中DELAY是延时10 ms的子程序,未单独列出。,1.2.2 查询传送方式无条件传送方式中程序不查询外设的状态,直接用输入/输出指令进行数据传送,在外设不处于就绪状态或
13、外设发生故障时就会产生数据错误或数据丢失。为了解决这一问题,人们考虑采用查询传送方式。,1查询输入查询输入的工作流程如图1-4所示。CPU读入输入设备的状态信息,判断输入设备是否准备好,如果输入设备没有准备好,则继续查询输入设备的状态,直至输入设备准备好后才输入数据。,图1-4 查询传送输入流程图,查询输入的接口电路如图1-5所示。查询输入的具体工作过程如下:(1) 当输入设备准备好输入数据时,发出选通信号,使输入数据锁存入8位锁存器;并使D触发器置1,作为输入设备的READY信号,送到三态缓冲器8位中的某一位上。(2) 当CPU准备输入数据时,从地址总线发出该设备的状态端口地址,使IO/ 为
14、有效高电平,使 为有效低电平,读出三态缓冲器中的8位信息并检测状态位(1位)的READY信息。,(3) 如果READY1,则表示输入设备准备好,执行(4),否则继续执行(2)。(4) CPU从地址总线发出该设备的数据端口地址,使IO/ 为有效高电平,使 为有效低电平,经数据总线读出8位数据缓冲器中的信息,并使D触发器清0,READY信号回到未准备好状态。IO/ 和 的有效电平,会在CPU执行IN指令时自动发出。,图1-5 查询输入的接口电路,例1.2 设输入设备的状态端口(8位)地址为S_PORT,状态端口的D7位为1,表示输入设备准备好。数据端口(8位)的地址为D_PORT,以查询传送方式从
15、该外设输入1个字节的数据并存入D_BUF内存单元。程序如下:,MOV DX,S_PORT LOP:IN AL,DXTEST AL,80HJE LOPMOV DX,D_PORTIN AL,DXMOV D_BUF,AL,例1.3 设系统中有三个独立的输入设备,三个输入设备的状态端口(8位)地址分别为STATUS1、STATUS2和STATUS3。若状态端口STATUS1的D7位为1,状态端口STATUS2的D6位为1,状态端口STATUS3的D5位为1,则分别表示各输入设备准备好。三个输入设备的数据端口(8位)的地址分别为DATA_PORT1、DATA_PORT2和DATA_PORT3,以轮流查询
16、的传送方式从三个输入设备分别输入数据,并存入各自的内存输入缓冲区BUFFER1、BUFFER2和BUFFER3。程序如下:,MOV SI,OFFSET BUFFER1 ;SI指向第一个设备的输入缓冲区 MOV DI,OFFSET BUFFER2 ;DI指向第二个设备的输入缓冲区 MOV BX,OFFSET BUFFER3 ;BX指向第三个设备的输入缓冲区 MOV CX, 255 MOV AL, 0 LOP: MOV SI,AL MOV DI,AL MOV BX,AL,INC SI INC DI INC BX DEC CX JNZ LOP ;以上程序使输入缓冲区清0 MOV SI,OFFSET
17、BUFFER1 ;SI指向第一个输入设备的输入缓冲区 MOV DI,OFFSET BUFFER2 ;DI指向第二个输入设备的输入缓冲区 MOV BX,OFFSET BUFFER3 ;BX指向第三个输入设备的输入缓冲区,LOP1:IN AL,STATUS1 ;输入第一个输入设备的状态端口信息 TEST AL,80H JE LOP2 ;未准备好则转LOP2 IN AL,DATA_PORT1 ;从第一个输入设备的数据口输入数据 MOV SI,AL ;存入第一个设备的输入缓冲区 INC SI,LOP2:IN AL,STATUS2 ;输入第二个输入设备的状态端口信息 TEST AL,40H JE LOP
18、3 ;未准备好则转LOP3 IN AL,DATA_PORT2 ;从第二个输入设备的数据口输入数据 MOV DI,AL ;存入第二个设备的输入缓冲区 INC DI LOP3:IN AL,STATUS3 ;输入第三个输入设备的状态端口信息 TEST AL,20H,JE LOP4 IN AL,DATA_PORT3 ;从第三个输入设备的数据口输入数据 MOV BX,AL ;存入第三个设备的输入缓冲区 INC BX LOP4:INC CXCMP CX, 255 JNZ LOP1,该程序首先使三个输入设备的输入缓冲区清0,然后依次查询每一个输入设备的状态端口,若输入设备准备好,则执行输入操作;若没有准备好
19、,则转向下一个输入设备进行查询。对于每一个输入设备,无论是输入了255个数据或是查询了255次都会退出程序的执行。循环次数由程序尾部的CX中的值进行控制。,2查询输出查询输出的工作流程如图1-6所示。首先CPU准备好要输出的数据,CPU读入输出设备的状态信息,判断输出设备是否“忙”。如果输出设备“忙”,则继续输入该设备的状态信息,直至输出设备“不忙”,CPU才向输出设备输出数据。查询输出的接口电路如图1-7所示。,图1-6 查询传送输出流程图,图1-7 查询输出的接口电路,查询输出的具体工作过程如下:(1) 输出设备输出完数据后发出应答信号,清D触发器,使BUSY线为0,表示输出设备处于“空闲
20、”或“不忙”状态。(2) 当CPU准备输出数据时,从地址总线发出该外部设备的状态端口地址,使IO/ 为有效高电平, 使 为有效低电平,读出三态缓冲器中的8位信息,并检测状态位BUSY(1位)的信息。,(3) 如果BUSY0,则表示输出设备“不忙”,执行(4),否则继续执行(2)。(4) CPU从地址总线发出该外设的数据端口地址,使IO/ 为有效高电平,使 为有效低电平,经数据总线把8位数据送往8位锁存器并输出到外设。同时,使D触发器置1,即BUSY1,表明外设又处于“忙”的状态。IO/ 和的有效电平,会在CPU执行IN或OUT指令时自动发出。,例1.4 设输出设备的状态端口(8位)地址为SOU
21、T_PORT,状态端口的D7位为0,表示输出设备“不忙”。数据端口(8位)的地址为DOUT_PORT,以查询传送方式把内存单元DATA_OUT中1个字节的数据向该外设输出。程序如下:,OUT_PORT BUSY: IN AL,DXTEST AL,80HJNE BUSYMOV AL,DATA_OUTMOV DX,DOUT_PORTOUT DX,AL,1.2.3 中断传送方式在查询传送方式中,CPU需要不断地查询外设的状态,极大地降低了CPU的利用率。为了提高CPU的利用率,提高输入/输出系统的可靠性以及实时性,可以采用中断传送方式。在中断传送方式中,当外设就绪时就向CPU发出中断请求,请求CPU
22、处理输入或输出操作。 1中断处理过程主程序与中断处理过程的关系如图1-8所示,中断处理过程的流程如图1-9所示。,图1-8 主程序与中断处理过程,图1-9 中断处理过程,中断处理过程的具体步骤如下:(1) CPU执行指令,当执行完一条指令后检测是否有中断请求。 来自于外部设备的中断请求。 由硬件故障引起的中断请求。 在80x86系统中,中断请求也可以由软件中断指令INT n或CPU内部产生的某些运算错误引起,例如,除法错误、运算溢出等。 程序调试时的单步中断、断点中断等也会产生中断请求。,(2) CPU检测到有中断请求,如果CPU可以响应中断,就进行响应中断的准备工作,也就会进入中断响应周期。
23、CPU可响应中断请求的条件如下: 现行指令周期内无其他主设备的总线请求。 中断源的中断请求没有被屏蔽(即被禁止)或者中断源为非屏蔽中断(不可禁止的中断请求)。 在80x86系统中,对于外部可屏蔽中断,要求中断允许标志IF1(即允许中断)。如果CPU可响应中断源提出的中断请求,且中断请求不是外部可屏蔽中断,而是其他类型的中断,则直接执行(3)。,对于外部可屏蔽中断,CPU在当前指令执行结束时,就进入中断响应周期,并自动执行如下操作。 发出一个中断应答信号( ),表明CPU已经允许了该中断请求,并准备进行进一步的处理。 关中断,在80x86系统中使中断允许标志IF0,以便使中断响应周期中必须进行的
24、一些操作不会受到其它中断源提出的新的中断请求的干扰,能够正确地转入相应的中断服务程序。 把提出中断请求的中断源的中断类型号(也被称为中断矢量)送到数据总线,以便CPU据此能找到中断服务程序的入口地址。,(3) 保护现场,保护断点。即把当前的机器状态(也就是响应中断时的标志寄存器的内容)压入堆栈,实现现场的保护。 (4) 形成中断服务程序的入口地址。在80x86系统中,根据中断矢量将中断服务程序入口地址的段地址送入CS,中断服务程序入口地址的偏移量送入IP后,就转入中断服务程序并开始执行。(5) 在中断服务程序中,CPU执行中断源所要求的具体的输入/输出或控制操作。,(6) 执行完中断服务程序中
25、的中断处理工作后,如果在中断服务程序中还未曾执行过开中断指令,在中断返回前必须开中断,以便使其它中断源可以提出中断申请。(7) 中断返回。中断服务程序的最后一条指令是中断返回指令IRET,当中断处理结束时,CPU执行这条中断返回指令,CPU自动将保护在堆栈中的标志寄存器的内容和断点地址弹回到相应的寄存器中,也就是所谓的恢复现场,恢复断点。,2中断接口电路中断输入方式的接口电路如图1-10所示,该电路的工作过程如下:,图1-10 中断输入接口电路,(1) 当输入设备准备好输入数据,输入设备就发出STB选通信号。 (2) 如果中断允许触发器为0,则禁止该中断请求;如果中断允许触发器为1,则处于中断
26、允许状态。 (3) CPU收到来自INTR线上的中断请求,如果允许响应中断,就发出中断响应信号, 表示CPU可以处理该输入设备的中断请求,并暂停原来执行的程序。,(4) 信号使与输入设备相对应的中断矢量送往数据总线,CPU根据该中断矢量可以找到中断服务程序的入口地址,从而转入中断服务程序,执行输入设备所要求的输入操作。(5) 在中断服务程序中,CPU执行从输入设备输入数据的操作。,采用中断传送方式进行数据传送,只有当外设处于就绪状态时才向CPU请求输入或输出服务,不需要CPU花费大量时间去主动查询外设的工作状态,减少了大量的CPU等待时间。,1.2.4 DMA传送方式采用中断传送方式进行数据传
27、送,每次进行数据传送时CPU都要执行一些与数据传送没有直接关系的附加操作指令。在低速外设或数据传送量不大的情况下,这些附加的操作指令对数据传送效率的影响不太明显。,DMA传送方式与无条件传送方式、查询传送方式、中断传送方式都不相同,它不是在CPU的控制之下与外设进行数据传送的,而是在专用的接口电路DMA控制器的控制之下直接进行外设与存储器之间的高速数据传送的。,DMA进行数据传送时不需要CPU干预,从而节省了中断传送方式中保护现场,保护断点,恢复现场,恢复断点的时间。DMA控制器必须具备以下功能:(1) 能向CPU发出要求掌握总线控制权的DMA请求信号HRQ(Hold Request)。(2)
28、 当收到CPU发出的允许出让总线的应答信号HLDA(Hold Acknowledge)后能接管总线控制权,进入DMA方式。,(3) 能发出地址信息对存储器寻址,并能修改地址指针。(4) 能发出读/写控制等信号。(5) 能设定DMA传送的数据字节个数,并能判断DMA传送是否结束。(6) 能发出DMA结束信号,释放总线控制权,让CPU收回总线控制权。DMA控制器掌握总线控制权后的工作过程如图1-11所示。,图1-11 DMA控制器的工作流程,1.3 无条件传送接口实验,1. 实验目的(1) 理解无条件传送方式。(2) 掌握无条件传送简单并行接口的工作原理与使用方法。,2. 实验内容详细的实验环境请
29、参阅附录A。(1) 按图1-12简单并行输出接口电路图连接线路,74LS273插入通用插座, 74LS32用实验台上的或门。 (2) 编程从键盘输入一个字符或数字,将其ASCII码通过这个输出接口输出,根据八个发光二极管的发光情况验证正确性。(3) 按图1-13简单并行输入接口电路图连接电路,74LS244插入通用插座,74LS32用实验台上的或门。,(4) 用逻辑电平开关K7K0预置某个字母的ASCII码,编程输入这个ASCII码,并将对应字母在屏幕上显示出来。,图1-12 简单并行输出接口电路图,图1-13 简单并行输入接口电路图,3编程提示(1) 上述并行输出接口的地址为2A8H,并行输
30、入接口的地址为2A0H,通过上述并行接口电路输出数据可使用如下三条指令:,MOV AL, 数据MOV DX, 2A8HOUT DX, AL从键盘输入数据可使用1号DOS系统功能调用。 通过上述并行接口输入数据可使用如下两条指令: MOV DX, 2A0H IN AL, DX,(2) 参考流程图,用8D触发器输出的参考流程如图1-14所示。用8缓冲器输入的参考流程如图1-15所示。,图1-14 并行输出流程图,图1-15 并行输入流程图,习 题 1,1.1 在计算机系统中何时需要使用接口电路,接口电路应具备哪些功能?1.2 简述接口电路的基本结构。CPU与接口电路交换的信息有哪几种,接口电路与外
31、设交换的信息有哪几种?1.3 I/O端口有几种编址方式,各有什么优缺点?,1.4 CPU与外设之间有几种数据传送方式?计算机与外设之间有几种数据传送方式,各有什么优缺点?在实际应用中应如何对这几种数据传送方式进行选择?1.5 在一个计算机系统中,如果 CPU采用 MOV指令读入I/O端口的数据,说明该系统采用的是哪种I/O端口编址方式。1.6 中断传送方式与查询传送方式相比,为什么中断传送方式能提高CPU的利用率?1.7 在DMA传送方式中进行数据传送时,数据的传送是不是由CPU执行输入/输出指令来实现的?,1.8 设输入设备的状态端口地址为IN_SLOT,状态端口的D0位为1,表示输入设备准备好。数据端口的地址为DATA_SLOT,采用查询传送方式从该设备输入1个字节的数据并存入DATA_SAVE内存单元,请编写程序。1.9 设输出设备的状态端口地址为OUT_STATUS,状态端口的D1位为1,表示输出设备“忙”。数据端口的地址为DATA_OUT,以查询传送方式向该外设输出内存单元DATA_OUT中1个字节的数据,请编写程序。,