1 / 48

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

第 5 章 输入输出与接口技术. 张明武 scauzhang@hotmail.com. 华南农业大学信息(软件)学院. 5.1 接口概述. 5.1.1 I/O 接口基本概念. 1. 接口的概念. 定义:接口 是 CPU 与“外部世界”的 连接电路 ,负责“ 中转 ”各种 信息 。. 分类: 存储器接口和 I/O 接口。. 位置: 介于系统总线与外部设备之间。. 2. 为什么要引入接口. 微机和 I/O 设备的信息类型和格式可能不一样。 微机和 I/O 设备信号传输处理的速度可能不匹配。

alta
Télécharger la présentation

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

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. 第5章 输入输出与接口技术 张明武 scauzhang@hotmail.com 华南农业大学信息(软件)学院

  2. 5.1 接口概述 5.1.1 I/O接口基本概念

  3. 1.接口的概念 定义:接口是CPU与“外部世界”的连接电路,负责“中转”各种信息。 分类:存储器接口和I/O接口。 位置:介于系统总线与外部设备之间。

  4. 2.为什么要引入接口 • 微机和I/O设备的信息类型和格式可能不一样。 • 微机和I/O设备信号传输处理的速度可能不匹配。 • 不用接口, I/O直接接CPU,随着外设增加,会大大降低CPU的效率。 • I/O直接接CPU,会使外设硬件结构过于依赖CPU,对外设本身发展不利。

  5. 3.I/O接口与I/O设备 不同I/O设备对应I/O接口不同。 I/O接口受CPU控制,I/O设备受I/O接口控制。 为增加通用性,I/O接口电路一般均具有可编程功能。 微机的应用离不开外部设备接口的设计、选用和连接。 可能是单向的 数据 数据 控制信号 控制信号 外设 接口 CPU 状态信号 状态信号

  6. 5.1.2、I/O接口功能 数据缓冲功能:通过寄存器或锁存器实现。 存放数据的寄存器或锁存器称之为数据口。 接受和执行CPU命令功能: 存放CPU命令代码的寄存器称之为命令口, 存放执行状态信息的寄存器称之为状态口。 设备选择功能:CPU通过地址译码选择不同外设。 即CPU通过地址译码选择不同I/O接口和I/O接口中连接的不同的设备。 信号转换功能:协调总线信号与I/O设备信号。 转换包括信号的逻辑关系、时序配合和电平转换。 可编程功能:增加接口的灵活性和智能性。

  7. 5.1.3、I/O接口组成 核心部分 接口由接口硬件和接口软件组成。 1.接口硬件

  8. CPU侧引脚信号: 地址信号:选择I/O接口中的不同寄存器(端口); 数据信号:命令或数据写入到相应寄存器,或者从相关寄存器读出数据或状态; 控制信号:控制命令的执行、时序、信号同步和片选; 状态信号:接口的部分工作状态信号。 数据信号:接口缓冲寄存器与外设间的数据交换; 状态信号:外设工作状态送给接口的状态寄存器; 控制信号:接口的内部控制逻辑控制外设工作的控制信号和同步信号。 外设侧引脚信号: 内部控制逻辑: 根据控制寄存器、状态寄存器、总线控制信号及外设状态信号控制I/O接口的工作。

  9. 常见接口插槽 串行口 10/100M网卡 PS2鼠标 MIDI/游戏接口 并行口 PS2键盘 音箱/线入接口/麦克风 1394a USB 显示器接口 千兆网 1394

  10. 2.接口软件(设备驱动程序) 初始化程序段:设置接口工作方式及初始条件。 传送方式处理程序段:CPU针对不同的I/O设备有不同的处理方式。如设置中断向量等。 主控程序段:完成接口任务的程序。 程序终止与退出程序段:对接口电路硬件保护及操作系统中数据恢复。 辅助程序段:提供人-机对话手段。

  11. 5.2 数据传输控制方式 特点:I时假设外设已准备好,O时假设外设空闲。 要求:接口I时加缓冲器,O时加锁存器。 应用:对简单外设的操作。 工作原理:CPU查询外设已准备好后,才传送数据。 特点:CPU与外设间自然同步。 要求:需要增加表示外部设备状态的简单硬件电路。 应用:适用在CPU不太忙且传送速度要求不高时。 5.2.1 程序控制方式 1. 无条件传送方式 2.条件传送方式(查询方式)

  12. 特点:CPU与外设可同时工作。 要求:接口中需要中断控制逻辑支持。 应用:适用与非高速度大量数据传送时。 特点:数据的传送不经过CPU而由DMA负责,但I/O设备管理由CPU控制,简化CPU对I/O的控制。 要求:需要DMA控制器及相关逻辑支持。 应用:适用与高速度大量数据传送时。 3.中断传送方式 5.2.2 直接存储器存取(DMA)方式

  13. 5.2.3 I/O处理机方式 特点: I/O处理机接管了CPU的各种I/O操作及I/O控制功能,CPU能与IO处理机并行工作。I/O处理机有自己的指令系统,能独立地直接存取主存储器、对外设和I/O过程进行管理。 要求:需要IO处理机支持。 应用:高速I/O归IO处理机管理,低速I/O设备归CPU管理。

  14. 5.3 I/O编址与访问 5.3.1 I/O端口 1.I/O端口 I/O端口是供CPU直接存取访问的接口中的寄存器或电路。 接口中的命令口、状态口和数据口均为I/O端口。 2.I/O端口地址 是对接口中的不同寄存器或电路的编号,该编号加上该接口的基地址称为该端口的I/O端口地址。 CPU通过向命令端口发命令来对接口,最终对设备进行控制。访问设备实际上是访问相关的端口。 3.命令、接口与I/O端口关系 一个接口中有多个I/O端口; 一个I/O端口可接受多种命令,对应多个寄存器。

  15. 5.3.2 I/O端口编址 N-1 K K-1 0 I/O空间 MEM空间 存储类指令 1.I/O统一编址(存储器映象I/O编址) 一个I/O端口等同于一个存储器单元。存储单元和I/O端口统一编址。 应用:Motorola系列和Apple 系列均采用此方式 优点: • 对I/O端口的访问命令与对存储器单元访问相同,不必使用专用I/O指令; • 外设数目或I/O寄存器数几乎不受限制。 • 系统读写控制逻辑较简单。 缺点: • I/O端口占用部分MEM空间,可用MEM空间减小; • 对MEM访问指令较长,执行速度较慢; • I/O端口地址译码时间较长。

  16. 2.I/O独立编址 I/O端口地址空间与存储器地址空间相互独立。 应用:Z-80系列和x86系列均采用此方式。 优点: • MEM地址空间不受I/O端口地址空间影响; • I/O端口数量不多,占用地址线少,地址译码简单,速度较快,使得此类指令执行速度快; • 使用专用I/O命令(IN/OUT),与MEM访问命令(LOAD/STORE、MOV)有明显区别,便于理解和检查。 N-1 0 MEM K-1 0 I/O设备 存储类指令 I/O类指令

  17. 专用I/O指令增加指令系统复杂性,且I/O指令类型少,寻址方式也少,程序设计灵活性较差;专用I/O指令增加指令系统复杂性,且I/O指令类型少,寻址方式也少,程序设计灵活性较差; 要求处理器提供MEMR#/MEMW#和IOR#/IOW#两组控制信号,增加了控制逻辑的复杂性。 缺点: 3.Intel系列微机I/O编址 Intel系列微处理器支持I/O独立编址方式和I/O统一编址(存储器映象编址)方式。 Intel系列微机系统仅支持I/O独立编址方式。

  18. 5.3.3 PC系列I/O端口访问 I/O端口地址信号:借用地址线信号和IOW#/IOR#信号线以及表示DMA正在工作的AEN的反相信号组成。 1.I/O端口地址空间 I/O端口地址空间:理论上有64K个独立编址的8位端口空间。两个连续8位端口可作为16位端口,4个连续的8位端口可作为32位端口处理。注意端口地址对齐。 2.I/O端口地址寻址方式 I/O端口支持直接寻址和间接寻址方式。 直接寻址是使用一字节立即数寻址,端口寻址范围为00H~FFH共256个。 间接寻址是使用DX寄存器间接给出I/O端口地址,可寻址的范围是0000H~FFFFH共64K个端口。

  19. 3.I/O端口与累加器间I/O指令——寄存器I/O指令 格式:IN、OUT。 结果:完成I/O端口和EAX、AX、AL之间的数据传送,可使用直接寻址和间接寻址方式。 举例:mov dx, 3fdh mov al, 36h in al, dx out 43h, al 4.I/O端口与存储器间I/O指令——块I/O指令 格式:INSB/W/D、OUTSB/W/D。 参数:用DX指定I/O端口地址,输入/输出时的目的/源RAM地址用ES:DI(EDI)/DS:SI(ESI)指定。EFLAG寄存器中DF位来决定地址加和减。 结果:通过前缀REP在I/O端口和连续的存储器空间之间传送数据。

  20. OUT 43H, AL A19~A16/S6~S3 0H 00H [AL] 43H IO/M# 或 WR #( IOW# ) CS8254 #

  21. 作业1 请参照课件P20上OUT 43H, AL 指令的时序图画出IN AL,21H的时序图,假设从21H端口中读到的数据是02H,21H是8259芯片的一个端口地址。

  22. 5.3.4 Pentium的I/O保护 I/O保护在保护模式下有效,在实地址模式下无效。 1.I/O特权级IOPL保护 保护通过比较当前任务的特权级CPL和标志寄存器的IOPL字段实现的。 若CPL ≤ IOPL,可执行IN、OUT、INS、OUTS、CLI、STI等敏感指令(对IOPL敏感);否则不行。 每个任务都有自己的IOPL,用以表示指定的I/O操作处于特权级的哪一级。它在EFLAGS中。 0级特权的过程可通过POPF和IRET指令修改任务的IOPL。

  23. 2.I/O允许位映象保护 I/O允许位映象用来修正IOPL对I/O敏感指令的影响,允许低特权的程序访问某些I/O端口。 I/O允许位映象是一个位向量,每位对应一个端口的操作权限(0表示允许)。 操作系统可通过改变任务TSS中的I/O允许映象来为某任务分配端口。(一定是在0级) 思考:如何让普通任务访问I/O端口? 思路:设法进入到0级 • 通过操作系统提供的接口函数; • 通过设备驱动程序(其运行在0级上); • 通过操作系统的漏洞。

  24. 3. 保护模式下的I/O端口访问 IOPL用以表示指定的I/O操作处于特权级的哪一级。它在EFLAGS中。 CPL当前段的I/O优先级,它实际上是CS段选择符的第0~第1位。 执行in, out指令 是 CPL ≤ IOPL? 否 是 IOPM是对所有VM都起作用的权限机制,它以位(bit)来代表每个端口。某位为1,则该代表的端口被禁止访问;某位为0;则允许访问该位所代表的端口。 IOPM相关位=0? 否 产生一个一般保护异常 进行I/O操作

  25. V86模式下(DOSVM)的I/O端口访问 执行in, out指令 是 IOPM相关位=0? 否 进行I/O操作 产生一个一般保护异常

  26. 5.4 接口分析与设计方法 4.4.1 x86系列微机接口分析 1.I/O接口硬件分类 系统板上I/O芯片和I/O扩展槽接口卡。 2.I/O端口地址分配 PC系列I/O地址线有16根,对应64K空间; I/O端口译码只使用了A0-A9,共1024个端口,地址范围为0000H~03FFH。 不同的微机系统对I/O端口地址的分配不同。 初期:A9=0端口(512个)为系统板所用,其他端口(512个)为扩展槽所用。

  27. PC/AT/Pentium:A8=A9=0端口(256个)为系统板所用,其他端口(768个)为扩展槽所用。PC/AT/Pentium:A8=A9=0端口(256个)为系统板所用,其他端口(768个)为扩展槽所用。 系统板I/O接口芯片端口地址(0000H-00FFH): 返回34页

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

  29. I/O接口芯片片选(CS#)信号: IOW#/IOR#信号(有效)、AEN信号(无效)和I/O端口地址高位经过译码得到。 用户I/O端口地址选用原则: 系统配置占用的端口地址一律不能用; 厂家声明保留的端口地址不要用; 其余端口地址可用,为避免冲突最好采用DIP。 3.I/O端口地址译码方法 一个I/O接口中的多个端口地址是连续的。 I/O接口芯片内部端口地址: I/O端口地址低位直接组成。

  30. 4.I/O端口访问 CPU通过I/O指令对I/O接口进行访问。 汇编语言指令:IN、OUT。 C语言指令:inportb(inport)、outportb(outport)。 VC++指令:_inp(_inpw)、_outp(_outpw)。

  31. 例:读取CMOS信息。 ;功能:读取CMOS信息 ;调用:AL=CMOS地址 ;返回:AL=CMOS内容 proc_read_cmos proc cli or al,80h ;屏蔽NMI out 70h,al jmp $+2 ;延迟 in al,71h ;读CMOS数据 sti ret proc_read_cmos endp main() { short int i, j; unsigned char c_CmosMessage[64]; for (i=0;i<=63;i++) { j=i|0x80 outportb(0x70,j); c_CmosMessage[i]=inportb(0x71) ; } printf("CMOS信息读取完毕。\n"); }

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

  33. 74LS138真值表

  34. G2B G2A 74LS138在PC机系统板端口译码的应用: 15 1 Y0 A5 A DMACS#(8237) 14 2 A6 INTRCS#(8259) B 74LS138 13 3 T/C CS#(8253) A7 C 12 PPICS#(8255) 5 11 A8 WRTDMAPG# ≥1 4 10 A9 WRTNMIREG# ≥1 6 9 G1 AEN# 7 Y7 IOW# 软件上和信号上如何区别访问I/O还是MEMORY? 为何中断控制1端口地址为0020H-003FH? 转27页

  35. 00H CPU MEM : 1FH 20H : 3FH 40H : 5FH 60H : 7FH 3FFH D7-D0 数据总线 A15-A0 地址总线 控制总线 IOR# IOR# IOW# IOW# D7-D0 D7-D0 A5 15 Y0 A 设 备 侧 信 号 14 A6 设 备 侧 信 号 B WR# 74LS138 WR# 13 A7 C 12 RD# RD# A8 11 G2B# CS# A9 CS# 10 8259 G2A# A0 9 A0 AEN# G1 7 Y7 A1 A0 8253 A1 A0

  36. 2.可选式端口地址译码 (1)使用比较器+地址开关方法 比较器和地址开关产生一个信号参与片选。 74LS688比较器: 当P0~7≠Q0~7时, P=1,输出高电平。 当P0~7=Q0~7时, P=0,输出低电平。 注意:门电路与IOR#/IOW#信号延迟不能太大。

  37. 14 13 12 11 10 9 8 VCC =1 =1 74LS136 =1 =1 GND 4 5 1 2 3 6 7 (2)使用异或门+地址开关方法 用异或门代替比较器和地址开关比较。 如用3片74LS136代替74LS688。 74LS136: 逻辑: 3=1⊙2;6=4⊙5; 8=9⊙10;11=12⊙13; 连线: 异或门的输入端分别接地址线和开关线。 片选:各异或门的输出“或”的结果。

  38. 思考题1 ?

  39. 思考题1 的答案 300H 301H 302H 303H 304H 305H 306H 307H

  40. G2B G2A 思考题2 15 1 00~1FH 40~5FH 80~9FH _________ 100~11FH _________ _________ _________ __ Y0 A 14 2 __ B 74LS138 13 3 __ C 12 5 11 __ 4 10 __ 6 9 G1 AEN# 7 Y7 A9~A0共10根线参与地址译码,请将上图的空填对。

  41. 思考题2的答案 A6 A7 A8 15 1 Y0 A C0~DFH 14 2 B A5 74LS138 13 3 C A9 12 140~15HH 5 11 180~19FH # 4 10 1C0~1DFH # 6 9 G1 AEN# 7 Y7 G2A G2B A9A8A7A6A5A4A3A2A1A0 第一步 ? ? ? ? ? ×× ××× 第二步 0 ? ? ? 0 ×× ××× 第三步 0 C B A 0 × × ××× 00~1FH 40~5FH 80~9FH 100~11FH

  42. A B 74LS138 某接口芯片 C G1 Y6 CS# A2 A1 A0 IOR# & IOW# G2A # G2B # 思考题3 要求接口芯片的端口地址范围为260H,262H,264H,266H,268H,26AH,26CH,26EH,请问A0~A9这10根线需要怎么连。

  43. 0000 0010 0100 0110 1000 1010 1100 1110 × × × 0 A4 A5 A6 A9 A8 ≥1 A7 A3 A0 A2 A1 G2A # G2B # 思考题3答案 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 260H 262H 264H 266H 268H 26AH 26CH 26EH 1 0 0 1 1 0 A B 74LS138 某接口芯片 C G1 Y6 CS# A2 A1 IOR# A0 & IOW#

  44. A A3 A4 B 74LS138 A5 C 某接口片 IOR# Y2 & CS# IOW# A8 ≥1 A0 A0 A9 A6 A1 A1 G1 & A7 G2A # G2B # 思考题4 按图上的连接方法,该接口芯片一共有几个端口?每个端口的地址分别是多少?

  45. 思考题4答案 A9A8A7A6A5A4A3A2A1A0 D0H D4H 0 0 1 1 0 1 0 × 0 0 共4个端口 地址是: D1H 或 D5H 0 1 A A3 D2H D6H 1 0 A4 B 74LS138 D3H D7H 1 1 A5 C 某接口片 IOR Y2 & CS# IOW A8 ≥1 A0 A0 A9 A6 A1 A1 G1 & A7 G2A # G2B #

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

  47. 注意点: 资源冲突问题; 时序问题及缓冲、锁存措施; 负载与总线驱动问题。 抗干扰措施。 与数据总线相连的器件必须有三态功能。 接口卡插脚与I/O槽引角对应关系要正确。接口卡的几何尺寸要正确。

  48. 2.接口软件设计方法 直接对硬件编程: 设计者必须对接口硬件细节十分熟悉; 尽可能用汇编语言编写程序。 间接对硬件编程: 调用标准接口驱动程序。 BIOS调用、DOS调用、Win32 API、DirectX等

More Related