1 / 46

第三章 输入输出与接口技术

第三章 输入输出与接口技术. 第一节 接口概述. 一、 I/O 接口基本概念. 1 、接口定义. 定义: 是计算机系统中各部件与 “ 外部世界 ” 的 连接电路 ,负责 “ 中转 ” 各种 信息 。. 分类: 存储器接口和 I/O 接口。. 位置: 介于系统总线与外部设备之间。. 2 、 I/O 接口与 I/O 设备. 不同 I/O 设备对应相同或不同 I/O 接口。. I/O 接口受 CPU 控制, I/O 设备受 I/O 接口控制。. 为增加通用性, I/O 接口一般均具有可编程功能。. 微机应用离不开与 I/O 接口的设计、选用和连接。

Download Presentation

第三章 输入输出与接口技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章 输入输出与接口技术

  2. 第一节 接口概述 一、I/O接口基本概念 1、接口定义 定义:是计算机系统中各部件与“外部世界”的连接电路,负责“中转”各种信息。

  3. 分类:存储器接口和I/O接口。 位置:介于系统总线与外部设备之间。 2、I/O接口与I/O设备 不同I/O设备对应相同或不同I/O接口。 I/O接口受CPU控制,I/O设备受I/O接口控制。 为增加通用性,I/O接口一般均具有可编程功能。 微机应用离不开与I/O接口的设计、选用和连接。 微机接口技术是编程人员的一项基本技能。

  4. 二、I/O接口功能 数据缓冲功能:通过寄存器或锁存器实现。 接口中存放数据的寄存器或锁存器称之为数据口 接收和执行CPU命令功能: 存放来自CPU的命令信息的寄存器称之为命令口 存放来自外设的状态信息的寄存器称之为状态口 信号转换功能:协调总线信号与I/O设备信号。 转换包括信号的逻辑关系、时序配合和电平转换 可编程功能:增加接口的灵活性和智能性。 编程指改变I/O接口的工作模式、实现具体操作

  5. 三、I/O接口组成 I/O接口由接口硬件和接口软件组成。 1、接口硬件 回下页 回7页 回8页

  6. (1)CPU侧引脚信号 思考:CPU对接口有哪些操作?总线如何表示?这些信号由谁处理? 地址总线信号(入):接口判断自己是否被选中的主要依据,并可区分对哪个REG(端口)操作; 数据总线信号(入/出):被选中时,按端口地址和操作类型,数据总线信号←/→对应REG; 控制总线信号(入):接口是否被选中的辅助依据,及数据期接口控制执行(数据方向)的依据; 状态总线信号(出):为完成总线命令,接口给出的符合总线协议的相关信号(如响应)。 转上页

  7. (2)外设侧引脚信号 数据信号:接口的缓冲REG(分输入缓冲和输出锁存)与外设间的数据交换信号,有串行/并行、I/O分离/合并等形式; 状态信号:外设→接口的工作状态/握手信号; 控制信号:接口→外设的控制/握手信号。 控制信号与状态信号的时序配合是I/O接口与外设有效通信的保证; ☆控制信号、状态信号、数据信号可以合并,通过信号线时序或数据特性区分。 转5页

  8. (3)内部控制逻辑—I/O接口的核心 a1.识别总线状态功能: 能够识别出总线空闲、命令的地址期和数据期; a2.被选中检测功能:—总线命令地址期 主动检测总线控制信号和地址信号; a3.控制端口选择功能:—总线命令地址期和数据期 地址期—控制是否进行地址锁存、内部端口地址译码; 数据期—控制端口与总线缓冲器间传输方向。 b.控制联络/数据信号功能:—根据控制REG实现 根据状态REG,控制联络信号的输出; 根据联络信号的输入,控制状态REG和I/O数据REG的改变。 回下页 转5页

  9. CPU 总线 REG间命令 空闲 REG-I/O接口命令 I/O接口总线命令 REG-MEM命令 MEM总线命令 CPU侧 外设侧 未选中,无通信 按相关REG控制 选中时通信,改变相关REG 按相关REG(旧)控制 未选中,无通信 按相关REG(新)控制 I/O接口 控制逻辑 I/O设备 按联络信号通信 按联络信号通信 按联络信号通信 ①全部地址线+全部数据线+部分控制线; ②片选引脚CS+内部地址引脚—代替全部地址线; WR+RD+外部门电路—代替部分控制线引脚。 时间 I/O接口、总线、外设间时序关系: CPU对接口的控制与接口对外设的控制是独立的! 例:某I/O接口有三个独立的8位外设端通道,①其CPU侧引脚应有哪些?②如何提高接口通用性? 转上页

  10. 接口芯片CPU侧引脚: 片选CS、内部地址、数据、读/写等引脚 RD RD CS WR CS WR D0-D7 数据总线 D0-D7 RD WR 外设侧 引脚 外设侧 引脚 RESET RESET I0/M A15~Ax Ax-1 Ax-1 Ax-1 … … … … A0 A0 A0 接口的相关门电路: 片选引脚CS连接—控制线与地址高位线的门电路 (4)接口与接口芯片 接口芯片为接口的核心电路; 接口一般由接口芯片及相关门电路组成。

  11. 2、接口软件(设备驱动程序) 设备驱动程序是一个驱动设备功能的函数集。 初始化程序段:提供设置接口工作方式及初始条件功能; 传送方式处理程序段:提供对I/O设备的不同数据传输控制方式的处理功能(简单的通信功能); 主控程序段:提供完成与设备通信功能(复杂的通信功能),传送方式处理程序段是其子集; 终止与退出程序段:提供接口电路硬件保护及操作系统中数据恢复功能; 辅助程序段:提供人-机对话等内容。 设备驱动程序的各部分可单独使用,为应用程序提供友好的支持。

  12. 第二节 数据传输控制方式 一、程序控制方式 1、无条件传送方式 输入时外设已准备好,输出时外设空闲 要求:I/O接口输入时需缓冲器,输出时需锁存器; I/O接口与外设间无联络(控制和状态)信号。 应用:适用于对简单外设(如LED显示器)的操作。 回下页

  13. 2、条件传送方式(查询方式) 查询外设已准备好后,才传送数据 要求:I/O接口与外设间需联络(控制和状态)信号; 特点:程序查询状态与I/O传送串行、自然同步; (CPU在查询期间不可完成其他任务) 应用:适用于CPU不太忙、且传输速度要求不高时。 3、中断传送方式 外设准备好后,I/O接口产生中断请求,请求处理 要求:I/O接口中须有中断控制逻辑; 特点:CPU处理其他任务与I/O传送可同时进行; 应用:适用于非高速度、大批量数据传输时。 转上页 回下页

  14. 二、直接存储器存取(DMA)方式 I/O设备-I/O接口-总线-MEM间直接传输。 要求:需要DMA控制器(主设备)及相关逻辑支持; 特点:I/O传输不经过CPU,简化CPU对I/O的控制,I/O设备的管理照样归CPU实现; 应用:适用于高速度、大批量数据传输时。 三、I/O处理机(IOP)方式 I/O设备-I/O接口-总线-MEM间传输、I/O设备管理 要求:需要IOP支持(实现I/O设备管理功能)。 特点:IOP接管了设备管理功能,CPU与IOP可并行; 应用:高速I/O设备归IOP、低速I/O设备归CPU管理。 转上页

  15. 第三节 I/O编址与访问 一、I/O端口 1、I/O端口 供CPU直接访问的I/O接口中的REG或电路。 接口中的I/O端口有:命令口、状态口和数据口。 2、I/O端口地址 标识所有接口中各个端口的统一编号。 CPU通过命令中地址(I/O端口地址)可寻址某接口的某I/O端口。 关系1:接口:I/O端口地址:命令——1:m:2*m 关系2:I/O端口:I/O端口地址——1:1或2:1或n:1 回下页

  16. 3、I/O端口地址空间 若CPU对I/O接口的操作命令中地址位数为n; 则I/O端口地址空间大小为N=2n; I/O端口地址范围为0~N-1。 所有接口的所有I/O端口的地址<N。 △避免各接口的I/O端口地址重叠的方法: 不同接口占用不同的I/O端口地址段。 转上页

  17. N X X-1 0 I/O接口 X-1 0 MEM N-X 0 MEM I/O接口 MOV指令 MOV指令 IN/OUT指令 二、I/O端口编址方式 1、I/O统一编址(存储器映象I/O编址) 一个I/O端口等同于一个MEM单元,操作指令相同。 2、I/O独立编址 I/O端口地址空间与MEM地址空间相互独立。 必须通过不同的指令(操作码)区分。 应用:Z-80系列和x86系列均采用独立编址方式; 68000系列和Apple 6502均采用统一编址方式。

  18. 3、I/O两种编址方式比较 4、Intel系列微机I/O编址 Intel系列微处理器—支持I/O独立编址方式和I/O统一编址方式(I/O统一编址时,I/O地址不能缓存)。 Intel系列微机系统—仅支持I/O独立编址方式。

  19. 三、PC系列微机I/O端口访问 1、I/O端口地址空间 I/O端口地址空间:64K个8位I/O端口空间。 I/O端口地址信号线:由A15~A0组成。 I/O端口地址空间的使用约定: 不同I/O接口占用不同的地址空间段; 同一接口的不同I/O端口地址是连续的。 2、I/O端口地址寻址方式 I/O端口支持直接寻址和间接寻址两种方式。 直接寻址时地址仅8位,间接寻址时可支持16位。 OUT 60H,AL ;直接寻址 OUT DX,AL ;间接寻址 转I/O命令寻址方式

  20. 3、I/O端口与CPU的REG间的I/O指令 指令种类:IN、OUT。 指令格式:IN AL,DX OUT DX,AL 4、I/O端口与MEM间的I/O指令 种类:INSB(W、D)、OUTSB(W、D); INS时MEM为目的操作数,OUTS时为源操作数 参数:I/O端口地址用DX指定, 目的MEM地址用ES:DI(EDI)指定, 源MEM地址用DS:SI(ESI)指定; 扩展:通过REP前缀实现连续传送(MEM地址自动增加)。

  21. FFFFH … 0040H … 0020H … 0000H 5、I/O端口与存储器单元访问的区别 6、I/O端口访问例题 写出向8255A第0和第1个端口写数据的 指令,说明接口CPU侧信号变化过程。 MOV AL,50H OUT 20H,AL MOV AL,51H OUT 21H,AL 回下页

  22. MOV AL,50H MOV AL,51H 命令 OUT 20H,AL OUT 21H,AL T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 CLK A15-A8 00H 00H 50H 51H AD7-AD0 20H 21H ALE CS8255A CS其他 IO/M RD WD 注意:接口的CS#无效期间,接口与外设间仍在通信。 转上页 回36页 回33页

  23. 四、Pentium的I/O保护 I/O保护在保护模式下有效,在实地址模式下无效。 1、I/O特权级IOPL保护 通过当前任务TSS中段REG的特权级CPL与标志REG(当前任务的标志REG副本)的IOPL字段比较实现I/O保护。 CPL、IOPL值越小,优先级越高 注:TSS结构可查阅《计算机系统结构》课件 保护—若CPL≤IOPL,可执行IN/OUT、INS/OUTS、CLI/STI等敏感指令(对IOPL敏感);否则不允许执行。 IOPL修改—每个任务均有自己的IOPL,0级特权的过程可通过POPF和IRET指令修改任务的IOPL。

  24. 2、I/O允许位映像保护 I/O允许位映像保护可修正IOPL对I/O敏感指令的影响,允许低特权的程序访问某些I/O端口。 I/O允许位映像是一个位向量(在任务TSS中),每位对应一个端口的操作权限(0表示允许,1表示禁止); I/O允许位映像不必说明所有I/O地址,说明范围为0~(TSS界限-I/O映像域基地址)。 I/O允许位映像修改—操作系统可修改。 思考:如何让普通任务访问I/O端口? 通过操作系统提供的接口函数; 通过设备驱动程序(其运行在0级上); 通过操作系统的漏洞。

  25. I/O指令 保护模式 实模式 虚拟8086模式 Y N CPL≤IOPL Y N I/O允许位映象 允许 允许访问 不允许访问 3、不同模式下的I/O保护

  26. 第四节 接口分析与设计方法 一、X86系列微机接口分析 1、I/O接口分类 系统板上I/O接口芯片和I/O扩展槽接口卡。 2、I/O端口地址空间及分配 不同微机系统的I/O端口地址空间及分配不同。 PC/XT/AT—I/O地址线只使用A9~A0,共1K个端口空间(地址范围为0000H~03FFH); PC/286起—I/O地址线使用A15~A0,共有64K个端口空间。 回下页 回44页

  27. PC/XT:前512个端口(A9=0)为系统板所用,其他端口为扩展槽所用。PC/XT:前512个端口(A9=0)为系统板所用,其他端口为扩展槽所用。 PC/AT:前256个端口(A9=A8=0)为系统板所用,其他端口为扩展槽所用。 PC/AT系统板I/O接口芯片端口地址(0000H-00FFH): 转上页 回下页 回36页

  28. PC/AT扩展槽I/O接口卡端口地址(0100H-03FFH): 转上页

  29. A15…AX AX-1…A0 固定   0…0~1…1 I/O接口芯片片选(CS)的实现: IO/M高电平、AEN无效、地址线高位与分配相同; 用户扩展卡I/O端口地址选用原则: 系统配置占用的端口地址一律不能用; 厂家声明保留的端口地址不要用; 其余端口地址可用,为避免冲突最好采用DIP。 3、I/O端口地址分配(主动译码)的实现 基本原则:一个I/O接口对应多个连续的I/O端口。 I/O接口芯片内部I/O端口的实现: 地址线低位与内部地址引脚连接。 回下页

  30. 数据总线 D0-D7 PA0-7 RD WR PB0-7 RD CS 控制 总线 RESET RESET WR PC0-7 IO/M AEN =00000000011000 A15~A2 8255A 地址 总线 A1 A1 A0 A0 例1:并行接口使用8255A芯片,地址空间60H-63H,试实现信号线连接。 思考:多个I/O接口同时存在时,如何简化接口的门电路? 转上页 回下页 回39页

  31. FFFFH CPU MEM … … 数据总线 地址总线 0080H 控制总线 … 0060H D7-D0 D7-D0 … Y0 A 设 备 侧 信 号 设 备 侧 信 号 0040H B C … 0020H 74LS138 G2B RD WR CS RD WR CS … G2A A1-A0 A0 0000H G1 Y7 8259 8253 例2:根据多个I/O接口的I/O端口地址分配,实现简化的I/O接口信号线连接—集中译码。 转上页 回33页

  32. 4、I/O端口访问 CPU通过I/O指令对I/O接口进行访问。 汇编语言指令:IN、OUT C语言指令:inportb(inport)、outportb(outport) VC++指令:_inp(_inpw)、_outp(_outpw) 例3:读取CMOS信息。 ;功能:读取CMOS信息 ;调用:AL=CMOS地址 ;返回:AL=CMOS内容 PROC_READ_CMOS PROC CLI OUT 70H,AL JMP $+2 ;延迟 IN AL,71H ;读CMOS数据 STI RET PROC_READ_CMOS ENDP main() { unsigned char c_CmosMsg[64]; for (int i=0;i<=63;i++) { outportb(0x70,i); c_CmosMsg[i]=inportb(0x71) ; } printf("CMOS信息读取完毕。\n"); }

  33. 控制总线:IO/M有效、AEN无效、WR有效、RD无效;控制总线:IO/M有效、AEN无效、WR有效、RD无效; 译码器:根据控制信号、地址高位译码,Y2有效,其他Yx无效; 例4:根据课件31页的连接,说明下列指令执行时总线、接口的信号变化情况:MOV AL,8AH OUT 42H,AL 地址总线:地址期将0042H写入A15~A0; 接口芯片:8253被选中,其他接口芯片未被选中; 8253芯片:地址期—根据地址低位选择相应REG; 数据期—接收数据总线(D7~D0)的数据(8AH),写入地址期所选REG。 转31页 转22页

  34. 15 1 Y0 A 14 2 B 74LS138 13 3 C 12 5 11 4 10 6 9 G1 7 Y7 G1=1,G2A=G2B=0。 G2B G2A 二、I/O端口地址译码电路的几种形式 1、固定端口地址的译码 应用:系统板中接口的地址译码,只有一个接口时可采用门电路构成。 常见的译码器有74LS138、74LS154等。 74LS138译码器: 工作条件: 工作原理: 将复合的输入信号(CBA)变为枚举(分离)的输出信号。

  35. CBA连续时,Y0~Y7的有效亦为连续的。 74LS138输入/输出真值表:

  36. Y0 DMA CS(8237) A5 A Y1 INTR CS(8259) A6 B T/C CS(8253) A7 C 74LS138 PPI CS(8255) ≥1 WRTDMAPG A8 G2B A9 ≥1 WRTNMIREG G2A AEN G1 Y7 WR IO/M 思考2:译码器无总线操作的地址期和数据期,指令执行期间,对于A/D线的复用,如何保证Yx有效? 例1:74LS138在PC机/AT系统板端口译码的应用 思考1:为何中断控制器端口地址为020H-03FH? 转27页 转22页

  37. A3 A Y0 ?~? A4 Y1 B A5 C 74LS138 A6 ≥1 ?~? G2B A8 A9 G2A AEN G1 Y7 IO/M 例2:对74LS138已知入端(10根地址线),计算出端口地址 8个 08H(88H)、20H(A0H) 每个出端对应的端口数量? Y1#、Y4#对应开始端口地址? 回下页

  38. 300H~ A Y0 Y1 B C 74LS138 330H~ G2B GND G2A AEN G1 Y7 每个输出对应端口数量? C、B、A对应地址线? G2B前与非门对应地址线? IO/M 例3:对74LS138已知出端,设计入端(10根地址线)连接。 16个(10H个) A6、A5、A4 A9、A8,A7取反 练习:若Y0#不变、Y4#为318H~,则如何连接? 转上页

  39. A9和A8或后接74LS138的G2B,A7A6A5接CBA。 Y1 + 8259A CS A4~A1 Y2 Y2 A4 A3 A2 A4 A3 A2 8253 CS + 8253 CS + 例4:用74LS138实现前256个I/O端口为系统板所用 例5:续上例,使8259A(2个端口)开始地址为20H 分析—Y1#有效时覆盖范围为20H~3FH 实现—必须使地址为22H~3FH时,8259A CS#无效 例6:续例4,使8253(4个端口)开始地址为44H、48H 练习:续例4,使8259A、8253开始地址为20H和24H 回下页 转30页

  40. I/O地址空间 0000H … 译码器 =S0 —选择区域 共215-Y+1个区域 A15-A0=S00…0 … … 选定 区域 … AY-1~A0 … A15-A0=S01…1 A15-AY AY-1-AZ AZ-1-AX AX-1-A0 选择段 共2Y-Z个段 选择片 共2Z-X个片 FFFFH A15-AY=S0 译码输出=YX AZ-1-AX=P0 CS AZ-1-AX=0…0 … RD/WR 控制信号 AX-1-A0 AX-1-A0 AZ-1-AX=1…1 接口地址范围= S0 X P0 0…0~1…1 思考:I/O地址、译码器及接口电路地址三者关系? 转上页 回下页 回44页

  41. Y0 Y1 + 8259A CS 8253 CS + Y2 8250 CS A2 A1 A2 Y0 Y0 + 8259A CS Y1 A3 A2 A1 8253 CS + A3 A2 + 8250 CS A3 例7:用73LS138实现8259A、8253、8250(8个端口)地址分别为40H~41H、48H~4BH、50H~57H 实现方法一: 分析1—译码器输出端步距可为08H,故其CBA与A5A4A3连接 分析2—译码器输入应固定A15~A6,为0000000001B 译码器输出为40H~47H、48H~4FH、50H~57H、… 分析3—各接口根据地址及端口数,实现CS#的门电路连接 实现方法二:译码器输出端步距为10H,故其CBA与A6A5A4连接,A15~A7=000000000B,各接口根据要求进行CS#连接 实现方法三:译码器输出端步距为20H,作为练习完成 转上页

  42. P0 P1 P2 P3 P4 P5 P6 P7 A3 A4 A5 A6 A7 A8 A9 AEN I0/M 74LS688 G1 P=Q DIP CS Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 SW0 SW1 SW2 SW3 SW4 SW5 A2 RD WR RD WR A1 A0 A1 A0 +5V 2、可选端口地址的译码 应用:扩展槽中接口板的地址译码。 (1)使用比较器(如74LS688)+地址开关方法 思考1:如何实现DIP步距(SW0变化-接口开始地址变化)为4? 思考2:如何实现接口板开始地址为200H、DIP步距为8? 回下页

  43. 14 13 12 11 10 9 8 VCC =1 =1 74LS136 =1 =1 GND 4 5 1 2 3 6 7 逻辑:3=1○2,6=4○5,8=9○10,11=12○13; + + + + (2)使用异或门+地址开关方法 用异或门代替比较器与地址开关比较。 74LS136: 连线:异或门的输入端分别接地址线和地址开关线; 结果:各异或门的输出再“或”后与比较器等效。 转上页

  44. 三、与接口电路相关的主板设计问题 1、确定I/O接口的编址方式及I/O空间 统一/独立编址,使用地址信号数量。 延伸:I/O指令,相关控制信号种类。 2、约定并实现各I/O接口地址空间 I/O空间分配表,译码器选择及级联,各固定地址接口的CS#连线。 3、确定数据、地址总线是否复用 地址总线信号锁存及接口芯片地址引脚信号锁存。 转26页 转40页

  45. 四、接口电路分析与设计基本方法 1、接口硬件设计方法 接口主要完成数据、地址、控制总线与外设信号的转换和连接任务。 分析接口两侧的情况: CPU侧:数据线宽度、地址线宽度、控制线逻辑定义及时序、实现端口空间划分或选择; 外设侧:I/O设备工作原理与特点,引脚信号逻辑定义、时序和电平差异。 进行信号转换:找出差异并进行信号转换与改造。 选择合理外围接口芯片构成接口电路。

  46. 设计注意点: 资源使用冲突问题; 时序、缓冲、锁存措施; 负载与干扰问题。 2、接口软件设计方法 直接对硬件编程: 设计者必须对接口硬件细节(特别是总线接口)十分熟悉; 尽可能用汇编语言编写程序。 间接对硬件编程: 调用标准接口驱动程序。

More Related