590 likes | 795 Views
第 6 章 输入和输出. 在微型计算机系统的应用中, CPU 除与内存交换信息外,还必然要经常与各种外部设备交换信息。 主机与外设进行信息交换过程主要是完成数据输入或输出的传送操作。输入或输出操作的确切含义是有选择地启动被微处理器选中的外部设备,以便使其接收来自 CPU 的数据或向 CPU 送入数据。 数据传送的方向标准通常以微处理器为中心,当数据是由外部设备,如键盘、纸带读入机、光笔等设备向 CPU 送入时,称为输入传送;而当数据自 CPU 送到如发光二极管、七段显示器、 CRT 显示器、点阵打印机、绘图仪等设备时,称为输出传送。
E N D
第6章输入和输出 • 在微型计算机系统的应用中,CPU除与内存交换信息外,还必然要经常与各种外部设备交换信息。 • 主机与外设进行信息交换过程主要是完成数据输入或输出的传送操作。输入或输出操作的确切含义是有选择地启动被微处理器选中的外部设备,以便使其接收来自CPU的数据或向CPU送入数据。 • 数据传送的方向标准通常以微处理器为中心,当数据是由外部设备,如键盘、纸带读入机、光笔等设备向CPU送入时,称为输入传送;而当数据自CPU送到如发光二极管、七段显示器、CRT显示器、点阵打印机、绘图仪等设备时,称为输出传送。 • 当实现一个数据的输入输出操作时,CPU必须在众多的外部设备中寻找一个确定的设备,而如何寻找这一特定的外部设备就是输入输出寻址方式所解决的问题。当找到一个确定的外部设备以后,接下来的问题就是如何同它进行信息交换,这就是输入输出控制方式所解决的问题。
计算机的接口 • CPU侧引脚信号: 地址信号:选择I/O接口中的不同寄存器; 数据信号:根据命令类型,送到对应的寄存器中,或从寄存器中取得数据或状态; 控制信号:控制命令的执行、时序、信号同步和片选; 状态信号:接口的部分工作状态信号。 • 外设侧引脚信号: 数据信号:接口缓冲寄存器与外设间的数据交换; 状态信号:外设工作状态送给接口的状态寄存器; 控制信号:接口的内部控制逻辑控制外设工作的控制信号和同步信号。 内部控制逻辑: 根据控制寄存器、状态寄存器、总线控制信号及外设状态信号控制I/O接口的工作。
6.1 输入输出的寻址方式 • I/O接口的编址方式:I/O映象方式和存储器映象方式 存储器映象方式 • 把一个I/O端口看作是一个存储单元,相当于给每一个I/0端口分配一个存储器地址 • 优点:指令丰富,I/O端口空间大,寻址的控制逻辑比较简单 • 缺点:内存空间相对减少,地址译码电路比较复杂,存储器操作指令字节长,降低了I/O操作速度。分析程序困难 I/O映象方式 • I/O端口空间与存储器空间各自独立,互不干涉 • 优点:I/O空间与存储器空间可分开设计,采用单独的I/O指令,程序清晰。I/O地址线较少,所以译码电路简单。I/O指令格式短,执行时间快
I/O端口地址的译码(1) • I/O数据的传送方式:并行传送、串行传送 • 常见的端口地址选择方法有三种:门电路组合法、译码器译码法、比较器比较法 • 门电路组合法:用门电路确定I/O端口地址。
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 ≥1 WRTDMAPG 4 10 A9 ≥1 WRTNMIREG 6 9 G1 AEN’ 7 Y7 IOW G2B G2A I/O端口地址的译码(2) • 译码器译码法:利用译码器芯片对地址进行译码,PC/XT系统板上接口芯片端口地址译码采用一个74LS138译码电路,其地址范围依次是: 8237 000H ~ 01FH 8259 020H ~ 03FH 8253 040H ~ 05FH 8255 060H ~ 07FH DMA页面寄存器 080H ~ 09FH NMI屏蔽寄存器 0A0H ~ 0BFH 保留 0C0H ~ 0DFH 保留 0E0H ~ 0FFH
I/O端口地址的译码(3) • 比较器比较法:利用数码比较器把地址线上的地址同预定的地址相比较,进而确定地址是否相符。如果比较后两个地址相等,则表示地址总线送来的端口地址就是该端口的地址 • 74LS688比较器:当P0~7≠Q0~7时,P=1,输出高电平。当P0~7=Q0~7时,P=0,输出低电平。
简单接口应用 例:开关K按下显示“0”, 抬起显示“1”。 X1: MOV DX, 0F1H IN AL, DX TEST AL, 1 MOV AL, ‘0’代码 JZ X2 MOV AL, ‘1’代码 X2: MOV DX, 0F0H OUT DX, AL JMP X1
接口设计基本方法 1. 接口硬件设计方法 • 接口主要完成数据、地址、控制总线与外设信号的转换和连接任务。 • 分析接口两侧的情况: CPU侧:数据线宽度、地址线宽度、控制线逻辑定义及时序; 外设侧:工作原理与特点,引脚信号逻辑定义、时序和电平差异。 • 进行信号转换:找出差异并进行信号转换与改造。 • 选择合理外围接口芯片构成接口电路。 • 考虑问题:资源冲突问题;时序问题及缓冲、锁存措施;负载与总线驱动问题;抗干扰措施;与数据总线相连的器件必须有三态功能;接口卡插脚与I/O槽引角对应关系要正确;接口卡的几何尺寸要正确。 2. 接口软件设计方法 • 直接对硬件编程: 设计者必须对接口硬件细节十分熟悉;尽可能用汇编语言编写程序。 • 间接对硬件编程: 调用标准接口驱动程序。BIOS调用、DOS调用、Win32 API、DirectX等
6.2 CPU与外设数据传送的方式 • I/O控制方式有四种:无条件传送方式、查询方式、中断方式、DMA控制方式 • 无条件传送方式:CPU可在任何时刻与I/O设备交换数据,对CPU而言,I/O设备总是处于准备就绪状态 • 查询方式:CPU通过查询I/O设备的状态,断定哪个设备需要服务,然后转入相应的服务程序 • 中断方式:当I/O设备需要CPU为其服务时,可以发生中断请求信号INTR,CPU接到请求信号后,中断正在执行的程序,转去为该设备服务,服务完毕,返回原来被中断的程序并继续执行 • 直接存储器存取(DMA)方式:在DMA控制器的管理下,I/O设备和存储器直接交换信息,而不需要CPU介入
无条件传送方式(1) • 无条件传送方式又称同步方式,是最简单的一种I/O控制方式 • 多用于CPU与低速接口之间的信息交换。如开关、继电器、LED显示器,它们总是被认为处于“待命”状态 • 特点:输入时假设外设已准备好,输出时假设外设空闲。 • 要求:接口输入时加缓冲器,输出时加锁存器。 • 应用:对简单外设的操作。
查询方式(1) • 查询方式是有条件的传送控制方式 • 所谓查询,就是询问外部设备的工作状态,通过这一状态来判定外设是否已具备了与CPU交换数据的条件 • 程序查询方式的硬件接口部分应包括数据端口,状态端口,端口选择及控制逻辑等三个部分 • 程序对每个I/O设备的查询,是通过检查该设备的状态标志来实现的 • 查询方式特点:I/O操作由CPU启动,即CPU是主动的而I/O是被动的,所有的传送都是与程序的执行同步的 • 工作原理:CPU查询外设已准备好后,才传送数据。 • 要求:需要增加表示外部设备状态的简单硬件电路。 • 应用:适用在CPU不太忙且传送速度要求不高时。
查询方式(2) • 对多个外设的查询 • 最简单的查询方法是用输入指令IN逐个读取I/O设备的状态标志,并对状态标志进行相应的测试
中断方式 • 中断方式:CPU对一个随机的请求进行处理的过程 • 中断方式解决了快速的CPU与慢速外设之间的矛盾,实现了信息的实时处理,提高了计算机使用效率 特点: CPU与外设可同时工作。 要求: 接口中需要中断控制逻辑支持。 应用: 适用与非高速度大量数据传送时。
直接存储器存取方式 • DMA方式:即直接存储器存取方式,是一种不需要CPU干预也不需要软件介入的高速数据传送方式 • CPU只是启动DMA过程,但是不干预这一过程,整个DMA过程是由硬件自动完成的,也不需要软件的介入 • 在DMA控制器的控制下,外设和存储器利用数据总线直接进行数据交换 特点:数据的传送不经过CPU,I/O设备管理由CPU控制,简化CPU对I/O的控制。 要求:需要DMA控制器及相关逻辑支持。 应用:适用与高速度大量数据传送时。
DMA传送的工作过程 • DMA传送的工作过程: 1)I/O设备向DMAC发出DMA请求; 2)DMAC向CPU发出总线请求; 3)CPU在执行完当前指令的当前的总线周期后,向DMAC发出总线响应信号; 4)CPU脱离对系统总线的控制,由DMAC接管对系统总线的控制; 5)DMAC向I/O设备发出的DMA应答信号; 6)DMAC进行一个字节的传送; 7)完成设定的字节数据传送,CPU恢复对系统总线的控制。 • DMA传送方式通常用来高速传送大批量的数据块。如: 硬盘和软盘I/O;快速通信通道I/O;多处理机和多程序数据块传送;在图像处理中,对CRT屏幕送数据;快速数据采集;DRAM的刷新操作。
6.3 DMA控制器 • 8237A是一个高性能的40个引脚双列直插式可编程DMA控制器,其主要功能有: 1.在一片内有4个独立的DMA通道。 2.每个通道的DMA请求可分别编程允许或禁止。 3.每个通道的DMA请求有不同的中断优先级(即DMA操作优先权),优先级有两种:固定优先级和循环优先级,由编程决定。固定优先级的顺序是通道0最高,依次是通道1,通道2和通道3。 4.可在外设与存储器,存储器与存储器之间传送数据,存储器地址寄存器可以加1或减1。 5.可由软件编程改变DMA读写周期长度。 6.有四种工作方式:单字节传送方式、数据块传送方式、请求传送方式和级连方式。 7.可以多片级连,扩展通道数。 8.DMA操作结束有两种方法:一是字节计数器减1由0变为FFFFH;二是外界通过输入负脉冲,强制DMA操作结束。 9.DMA操作启动有两种方法:一是外设输入DMA请求信号DREQ;二是通过软件编程从内部启动。
8237寄存器组 • 8237A芯片内部共有12种寄存器,它们的名称和个数如下: ⑴ 基地址寄存器 16位×4 ⑵ 基字节数计数器 16位×4 ⑶ 当前地址寄存器 16位×4 ⑷ 当前字节数计数器 16位×4 ⑸ 方式字寄存器 6位×4 ⑹ 暂存地址寄存器 16位×1 ⑺ 暂存字节数计数器 16位×1 ⑻ 状态寄存器 8位×1 ⑼ 命令寄存器 8位×1 ⑽ 暂存寄存器 8位×1 ⑾ 屏蔽寄存器 4位×1 ⑿请求寄存器4位×1
8237的引脚功能(1) 1.A3~A0(Address,输入/输出) 双向三态信号线。在空闲周期,它们是地址输入线,CPU用这四根地址线选择8237A内部不同的寄存器。 2.A7~A4(Address,输出) 三态地址输出线,仅在DMA操作周期内使用。 3.DB7~DB0(Data Bus,输入/输出) 双向三态数据总线,与系统数据总线相连。 4.(Chip Select,输入) 芯片选择信号,低电平有效。当8237A在空闲周期内,有效时,CPU可以通过数据线对8237A进行读写操作。可读写的寄存器端口地址由低4位地址线来选择,其对应的端口地址如表4.5.1所示。 5.CLK(Clock,输入) 时钟信号,5MHz/3MHz。 6.RESET(Reset,输入) 复位信号,高电平有效。当芯片被复位时,除了屏蔽寄存器被置位(4个通道均禁止DMA请求)外,其余寄存器均被清零。 7.READY(Ready,输入)就绪信号,高电平有效。当选用慢速存储器或I/O设备时,READY变为低电平。
8237的引脚功能(2) 8.DREQ3~DREQ0(DMA Request,输入) 外设发出的四个通道的DMA服务请求信号,有效电平由编程决定。在固定优先级情况下,DREQ0优先级最高,依次减小,DREQ3优先级最低,但优先级可由编程改变。 9.DACK3~DACK0(DMA Acknowledge,输出) 8237A每个通逍的DMA响应信号,有效电平由编程决定。 10.HRQ(Hold Request,输出) 总线请求信号,高电平有效。 11.HLDA(Hold Acknowledge,输入)总线响应信号,高电平有效。CPU在每个总线周期的最后一个T状态检查是否有总线请求,当发现HRQ有效后,就暂停执行程序,让出总线,并使HLDA有效(高电平)。 12. (I/0 Read,输入/输出)I/O读,双向,三态,低电平有效。在8237A空闲周期,它是一条输入控制信号,CPU利用这个信号读取8237A内部寄存器状态。在DMA传送时,它是一条输出控制信号,令外设把数据送上数据线,由信号将数据写入存储器。 13.(Memory Read,输出) 存储器读信号,三态,低电平有效。只用于DMA传送。
8237的引脚功能(3) 14.(I/O Write,输入/输出) I/O写,双向,三态,低电平有效。在8237A空闲周期,它是一条输入控制信号,CPU利用这个信号把控制字写入8237A内部寄存器。在DMA传送时,这是一条输出控制信号,利用从存储器读出数据,写入外设。 15.(Memory Write,输出) 存储器写信号,三态,低电平有效。只用于DMA传送。 16.AEN(Address Enable,输出) 地址允许信号,高电平有效。它将在锁存器中锁存的高8位地址A15~A8送上系统地址总线,与芯片输出的低8位地址A7~A0组成16位地址,也就是说,在AEN=1期间,芯片输出的16位地址有效。 17.ADSTB(Address Strobe,输出) 地址选通信号,高电平有效。在DMA操作时,它将芯片内数据缓冲器送出的高8位地址通过DB7~DB0送到外部地址锁存器中锁存。 18. (End of Process,输入/输出)过程结束信号,双向,低电平有效。作为输入,如果外部输入一个低电平信号,将强迫DMA传送结束;作为输出,当字节数减1产生TC时(即减1由0变为FFFFH),在上输出一个有效的负脉冲,表示DMA传送结束。
8237的工作方式 • 8237A有多种工作方式,包括主从模态、传送方式、传送类型、优先级编码、工作周期、读写时序、自动初始化方式、存储器到存储器的传送、级联方式等。
8237主从模态 • DMA控制器既可以作为I/O端口接受CPU的读写操作,也可以代替CPU占有总线,控制外设与存储器之间传送数据,它充分体现了DMA控制器的两大特性,即总线的主控性和总线的从属性,按这两大特性,它也就有两种工作模态:主态方式和从态方式。 (1)主态方式 在主态方式时,DMA控制器是总线的控制者,此时,它如同CPU一样,掌握总线的控制权,可对涉及的外设端口或存储器单元进行读写操作。 (2)从态方式在从态方式时,CPU是总线的控制者,而DMA控制器不过是普通的一个外部设备,有若干个端口而已,它的地位同一般的I/O接口芯片是一样的。
8237传送方式 • 8237A通过编程,可选择4种传送方式,分别是单字节传送方式,数据块传送方式,请求传送方式和级连方式。 (l)单字节传送方式 单字节传送方式时,一次只传送一个字节,然后释放总线。若又有外设DMA请求,8237A再向CPU发下一次总线请求HRQ,获得总线控制权后,再传送下一个字节数据。 (2)数据块传送方式 数据块传送方式时,响应一次DMA请求,将完成设定的字节数的全部传送。当字节数计数器减l由0变为FFFFH时,产生TC有效信号,使8237A将总线控制权交还给CPU从而结束DMA操作方式,外部有效的信号也可以终结DMA传送。 (3)请求传送方式 请求传送方式又称查询方式,类似数据块传送,但每传送一个字节后,检测DREQ状态,若无效则停止,若有效则继续DMA传送。在下述情况之一发生时,将停止传送: ① DREQ变为无效。 ② 字节数计数器减1由0变为FFFFH,产生TC信号。 ③ 外界输入有效信号。 (4)级连方式 这种方式允许连接一个以上的芯片来扩展DMA通道的个数。
8237传送类型 • DMA系统无论是工作在单片方式,还是多片级连,也不管采用单字节传送,数据块传送,请求传送中的哪种传送方式,都可以对每个通道的方式字寄存器进行设置,采用DMA读,DMA写,DMA校验等三种不同的传送类型。 • (1)DMA读 8237A输出有效的和信号,把存储器的数据读到I/O设备。 • (2)DMA写 8237A输出有效的和信号,把I/O设备的数据写到存储器。 • (3)DMA校验 这是一种伪传输,实际上是校验8237A芯片内部的读写功能。在这种传送类型中,8237A芯片的操作如同DMA读和DMA写一样,产生地址信号以及对响应等,但对存储器和I/O设备的控制线( , , , )均处于无效状态,禁止实际传送。
8237优先级编码 • 8237A芯片可设定为两种优先级编码:固定优先级和循环优先级。 • 固定优先级中4个通道的优先级顺序是固定的,DREQ0最高,DREQ3最低。 • 循环优先级中4个通道的优先级顺序是可变的,但其变化仍有一定的规律。当某一个通道申请DMA请求并被响应服务后,它就被指定为最低优先级,它的下一级就成为最高优先级。值得注意的一点是,无论在任何情况下,DMA请求禁止嵌套服务。当一个通道的DMA请求被响应并服务后,其它3个通道的DMA请求将都被禁止,无论它们的优先级是高还是低。优先权排队只在DMA响应之前有效,DMA响应之后则无效。
8237工作周期 • 8237A有两类工作周期:空闲周期和操作周期。操作周期也叫有效周期。全部工作周期分为7种时钟状态(时钟周期):空闲状态SI、起始状态S0、传送状态S1、S2、S3、S4以及等待状态SW。 • (1)空闲周期 在没有DMA请求时,8237A就处于空闲周期,执行连续的空闲状态SI。在空闲周期内,每个SI状态都要进行两种检测: ① 检测有无信号,以确定有无CPU对8237A的操作要求。若信号有效,则表明CPU要对8237A进行读写操作,此时,8237A以从态方式工作,作为CPU的一个I/O接口,进入编程状态,受CPU的控制。对8237A的DMA初始化工作就是在这种状态下实现的。 ② 检测有无DREQ信号,以确定是否有I/O设备送来有效的DMA请求。若DREQ有效,则产生总线请求HRQ,从SI状态进入S0状态,此时,8237A以主态方式工作,以后的工作都由8237A来控制。 • (2)操作周期 8237A在空闲周期内检测出DMA请求DREQ有效后,便进入操作周期(有效周期),操作周期有6种状态:S0起始状态、S1工作状态1、S2工作状态2、S3工作状态3、S4工作状态4、SW等待状态。
8237工作状态转换 • SI:空闲状态,检查CS、DREQ • S0:起始状态,过渡,HLDA有效前状态 • S1:工作状态1,准备高8位地址 • S2:工作状态2,提供16位地址,DACK有效 • S3:工作状态3,发读信号 • S4:工作状态4,发写信号 • SW:等待状态,同步 • 正常时序:S1~S4,通常为S2、S3、S4。 • 压缩时序:S2、S4。读信号压缩到写时序。 • 扩展时序:S2、S3、S4。写信号扩展到读时序。
8237读写时序 • DMA控制器可在两种操作时序中任选一种:正常时序和压缩时序。读写时序方式的实质是在控制读、写脉冲发出的时间与时钟信号CLK的对应关系。 • (1)正常时序 正常时序传送一个字节的数据包含4个时钟脉冲周期,即S1~S4状态。产生的读写脉冲信号与这4个状态有确定的对应关系。若是数据块传送中不改变高8位地址,则省去SI,只占用S2、S3、S4已三个时钟周期。 • (2)压缩时序 压缩时序方式时所占用的脉冲数将减少。压缩时序操作把读命令的宽度压缩到等于写命令的宽度,省掉了S3,即由S4完成读和写的操作。所以,在一段压缩时序方式下传送一个字节的数据需要占用3个时钟周期,即S1、S2、S4,而在大多数情况下高8位地址并不改变,于是省掉了S1,因此,在数据块传送中大多数情况占用2个时钟周期,即S2和S4。在系统性能允许的范围内,压缩时序能获得较高的数据吞吐量。
8237自动初始化方式 • 通过对方式字寄存器的编程,可设置某个通道为自动初始化方式。 • 自动初始化方式的功能是,当该通道完成一个数据传送并产生信号时(可能是由内部的TC产生,也可能是外部产生),用基地址寄存器和基字节数计数器的内容,使相应的当前地址寄存器和当前字节数计数器恢复初值,当前地址寄存器和当前字节数计数器的最初值,是由CPU在初始化编程时写入的(这个最初值同时也写入到基地址寄存器和基字节数计数器),但在DMA传送过程中,当前地址寄存器和当前字节数计数器的内容被不断修改,而基地址寄存器和基字节数计数器的内容维持不变(除非重新编程)。 • 在自动初始化以后,通道就作好了进行另一次DMA传送的准备。
8237存储器到存储器的传送 • 利用这种方式,可以使数据块从一个存储空间传送到另一个存储空间,将程序的影响和传输时间减到最小。 • 这种方式需要占用8237A的2个通道。由通道0的地址寄存器提供源地址,通道1的地址寄存器提供目的地址,通道1的字节数计数器编程为传送的字节数,传送由设置一个通道0的软件DREQ启动,8237A按正常方式向CPU发出HRQ,当CPU发出总线响应信号HLDA后,DMA传送即可开始。
8237扩展寻址空间 3 8237某通道
8237A的编程 • 8237A依靠它的可编程特性实现它的各种工作方式的选择和设定。假设以DMA代表16个端口地址的首地址,那么写通道2基字节数计数器的端口地址可表示为DMA+05H,写方式寄存器的端口地址可表示为DMA+0BH。16个端口地址分为两部分: • (1)00H~07H分配给4个通道的相应的16位寄存器,它们的端口地址分配如下: 基和当前地址寄存器端口 基和当前字节数计数器端口 通道0 DMA+0 DMA+1 通道1 DMA+2 DMA+3 通值2 DMA+4 DMA+5 通道3 DMA+6 DMA+7 • (2)08H~0FH分配给其他寄存器,其中包括3条不使用数据总线而只利用端口地址进行操作的清除命令。 • 8237A的初始化编程命令字总共有8条,其中控制命令有5个:方式字、命令字、请求字、屏蔽字、状态字;清除命令有3个:清除字节指针触发器、主清除命令、清除屏蔽寄存器。
8237A控制命令字(1) • 方式字写入端口地址0BH,其主要功能是:选择传送方式和传送类型,设置自动初始化方式和地址增量方向。 • 命令字写入端口地址08H,其主要功能是:选择DREQ、DACK有效极性,读写时序,优先级编码方式等。 • 请求字写入端口地址09H,其主要功能是:发生软件DMA请求。 • 屏蔽字写入端口地址0AH或0FH,其主要功能是:允许或禁止通道的DMA请求。 • 状态字从端口地址08H读出,其主要功能是:反映通道DMA请求状态和是否有TC信号。