微型计算机的主要输出输入接口,微型机输入与输出

编程入门 行业动态 更新时间:2024-10-07 04:24:23

<a href=https://www.elefans.com/category/jswz/34/1768829.html style=微型计算机的主要输出输入接口,微型机输入与输出"/>

微型计算机的主要输出输入接口,微型机输入与输出

本章概述:

输入和输出是指微型机与外界之间的信息交换,即通信。微型机与外界的通信,是通过输入输出设备进行的, 它是计算机的重要组成部分。

中断是指计算机的CPU暂时中止正在执行的主程序,而转去执行请求中断的那个外设或事件的中断服务程序, 待处理完后又返回到被中止了的程序这样一个过程。

8086可以处理256种中断,用中断类型码来区分每一种中断。这些中断源可以是硬件,也可以是软件;有的来自CPU内部,有的来自外围芯片。

直接内存传送(DMA),是硬件控制外设与内存直接进行交换,而不通过CPU进行传送。

第一节 微型机输入与输出

输入/输出是指CPU与外部设备之间的信息交换(或称"通讯")。外部设备包括输入设备(如键盘、鼠标、模/数转换器等)、输出设备(如显示器、打印机、磁盘、数/模转换器等)。外部设备简称"外设"。

外设的种类繁多,可以是机械式、电子式或光、磁等形式。外设输入或输出的信息类型也不同,可以有数字量、模拟量(电压或电流)、开关量。而且传送信息的速度差异也很大。因此,外设一般不能直接与系统总线连接,应通过"接口电路"与系统总线连接。接口电路的一般功能有:

1.进行地址译码,以实现CPU与某一指定设备通讯。

2.对传送数据提供缓冲,以便使快速CPU与慢速外设速度匹配。

3.信息交换,使CPU与外设信息的格式、电平一致。

4.提供数据传送的状态协调,如设备准备好、设备忙等。

5.提供时序控制,以满足各种外设对时序的要求。

目前,接口电路已标准化、产品化、系列化,称为"接口芯片"。某些接口电路的工作情况还可由程序设定或改变,称为"可编程"接口芯片。

1.1输入输出的寻址方式

在Windows 9.X系统中,可以对接口电路使用的端口地址资源、中断号资源、DMA通道号资源进行自动分配,这种特性称为"即插即用(PnP: Plug And Play)"。获得即插即用特性的条件是:硬件本身支持即插即用,即插即用BIOS、即插即用操作系统。

在一般的硬件设计中,可以使用"地址开关(SW:Switch)"或"跳线器(JP:Jumper)"来选择硬件使用的端口地址(和/或IRQ、DMA)。

1.1.1CPU与外设的接口信息

1.数据信息

2.状态信息

3.控制信息

(1) 数据信息

数据信息可以是数字量、模拟量、开关量。键盘等外设输入的是数字量。

CPU只能处理数字量,温度、压力、速度等模拟量需要经"变送器"转换为电压或电流,再经"模/数转换器"转换为数字量,才能被处理。CPU的输出也必须经过"数/模转换器"转换为模拟电压/电流才能控制某些外部设备。

开关量表示外设开关的状态(分、合).用一位二进制可以表示一个开关的状态,如1=合、0=分。

(2) 状态信息

状态信息表示外设的工作状态,如:

"准备好(Ready)":外设已把传送给CPU的数据准备好,CPU可以读取。

"忙(Busy)":外设目前正忙,不能接收来自CPU的数据。

(3) 控制命令

控制命令是CPU传送给外设的,如启动/停止外设等。

1.1.2 接口电路

接口电路:

CPU与外设间的数据,状态,控制信息,均经过接口电路转达.一般说来,在接口电路中设计一组寄存器(称为I/O"端口"port)用于存放控制命令,状态,数据,分别称为控制寄存器(或控制端口)、状态寄存器(或状态端口)、数据寄存器(或数据端口).如上图中各端口的作用为:

端口1

数据端口

(数据寄存器)

端口2

状态端口

(状态寄存器)

端口3

控制端口

(控制寄存器)

(1)数据端口(数据寄存器)

CPU与外设间可进行双向数据传输,因此,数据端口有两种:数据输入端口(数据输入寄存器),数据输出端口(数据输出寄存器).

输出:CPU使用OUT指令把数据送至数据输出端口,数据输出端口把数据送给外设。

输入:外设把其数据送至数据输入端口,CPU使用IN指令从数据输入端口读得数据。

数据端口在CPU与外设之间起着缓冲和寄存数据的作用。

(2)状态端口(状态寄存器)

外设把其状态送入状态端口,CPU使用IN指令读入状态端口的值,以查询外设的状态。

外设的状态一般采用编码表示,编码值称为外设的"状态字"。

状态字可以编码为8位或16位,用一位或几位表示外设的一种状态,取决于状态端口的具体设计,如,可以这样设计:

用bit0表示外设是否已把输入数据准备好(数据已放入数据输入端口):

bit0

=1,准备好,CPU可以读取

=0,未准备好

用bit1表示外设是否可以接收新的数据(数据输出端口是否为空):

bit1

=1,可以,数据输出端口为空,CPU可以再输出数据

=0,外设不能接受新的数据,输出端口还有数据

(3)控制端口(控制寄存器)

CPU使用OUT指令把控制命令送至外设的控制端口,外设从控制端口获得命令。

控制命令采用编码表示,编码值称为外设的"控制字"或"命令字"。控制字可以编码为8位或16位,用一位或几位表示控制命令及其参数,取决于控制端口的具体设计。

结论:CPU对外设的各种操作(向外设发出控制命令、查询外设的状态、向外设输出数据、从外设获得数据),均归结为对接口电路中各端口的读/写操作(IN/OUT指令)。当然,不同操作对应的IN/OUT指令的端口不同。

注意,某些设备不是通过接口电路直接连接到CPU上,而是通过接口电路直接连接到系统总线上,如下图:

1.1.3 I/O端口地址寻址方式

3.I/O端口寻址方式

系统中的端口用"端口地址"来区分,端口地址的编码方式有两种:"独立I/O编址"和"存储器I/O统一编址"。

Intel X86系列CPU及其兼容CPU使用独立I/O编址方式,其端口地址范围是0000~FFFFH。存储器的地址也包含0000~FFFFH地址范围,使用 M/IO(8088CPU是IO/W)来区分端口和存储器。

M/IO=1,地址信号表示存储器地址;

M/IO=0,地址信号表示端口地址;

当CPU执行端口访问指令IN/OUT时,产生M/IO=0信号。当执行存储器访问指令时,产生M/IO=1信号。

在某些CPU中,使用存储器统一I/O编址。在这种编址方式中,CPU使用相同的指令访问存储器和I/O,仅由地址信号来区分访问存储器或I/O。

1.1.4 输入/输出指令IN/OUT

4.输入/输出指令IN/OUT

把端口地址放在DX寄存器中,可对该端口进行读/写。

IN AL,DX ;从DX端口读入8位,放在AL寄存器中

IN AX,DX ;从DX端口读入8位,放在AL寄存器中

;从DX+1端口读入8位,放在AH寄存器中

OUT DX,AL ;把AL的8位值送DX端口

OUT DX,AX ;AL的值送DX端口,AH的值送DX+1端口

如果端口地址小于或等于FFH,在IN/OUT指令中可用立即数表示端口地址,如:

IN AL,42H

IN AX,42H

OUT 43H,AL

OUT 43H,AX

接口电路用端口地址(I/O地址)来区分CPU需访问的端口。一个接口芯片可以有几个端口,地址信号的高位译码后作为芯片的片选信号CS,地址信号的低位用于选择该芯片的端口,如下图:

在接口电路的设计中,也可把几个端口设计为相同的端口地址,这有以下几种情况:

(1).CPU对数据输入端口只进行读操作(IN),对数据输出端口仅进行写操作(OUT),因此,数据输入端口和数据输出端口可使用相同的地址,接口电路用IOR和IOW来区分。(最小模式时为RD,WR )。

与此类似,由于CPU对状态端口只进行读操作(IN),对控制端口仅进行写操作(OUT),因此,状态端口和控制端口可使用相同的地址。

(2).多个数据端口也可使用相同的端口地址,接口电路根据CPU对该端口地址访问的先后顺序确定具体的端口。

(3).多个控制端口也可使用相同的端口地址,接口电路根据CPU对该端口地址写入的先后顺序确定具体的端口。

1.1.5 微机中I/O端口地址的使用

5.微机中I/O端口地址的使用

端口地址是微机的一种重要资源,一般作如下分配:

DMA控制器1

000~01FH

8237

DMA控制器2

0C0~0DFH

8237

中断控制器 1

020~03FH

8259

中断控制器 2

0A0~0BFH

8259

定时/计数器

040~05FH

8253

键盘控制器

060~06FH

8042

RT/CMOS

070~07FH

1287

数学协处理器

0F0~0FFH

8087

并行接口1

370~37FH

LPT1,PRN

并行接口2

270~27FH

LPT2

串行接口 1

3F8~3FFH

COM1

串行接口 2

2F8~2FFH

COM2

显示接口

3C0~3CFH

CRT

硬盘接口

1F0~1FFH

HDD

软盘接口

3F0~3F7H

FDD

在使用和设计接口电路时,应遵循如下原则:

①凡是已被系统使用的端口地址,如上表的地址,不能作为它用。

②凡是被系统声明为保留(reserved)的地址,尽量不要作为它用,否则,可能与其它或未来的产品不兼容。

1.2 输入输出传送方式

输入/输出方式是指CPU与外设传送数据的方式,重点讨论:

①各种输入/输出方式的执行过程。

②接口电路硬件动作与CPU软件的关系(已知硬件动作要求,设计出对应的软件,或已知软件,分析在该软件控制下的硬件动作情况).

③接口电路的设计。

1.2.1 传送方式

1、 程序方式

在程序控制下进行外设的信息传送。通常的方法是在程序中安排一段有IN/OUT指令和其他指令组成的程序段,用来控制外设的工作。根据外设的特点,可以采用无条件传送方式或条件传送方式(查询方式).

(1)无条件传送方式

无条件传送时指:不查询外设的状态,认为外设已经准备就绪,直接与外设传送数据。

外设准备就绪是指:对于输入设备,它已经把数据放入接口电路的数据输入端口(数据输入寄存器),CPU可以读取;对于输出设备,它已经准备好接收数据(接口电路的数据输出寄存器已空),CPU可以向它输出数据。

由于不查询外设状态,接口电路不需要状态寄存器,只需要数据输入寄存器和数据输出寄存器。 要求数据输入寄存器仅在CPU读(IN指令)该寄存器时才送出数据,因此,应使用三态缓冲器设计数据输入寄存器。 CPU把数据输出至数据输出寄存器后,数据输出寄存器应保持该数据,直到CPU向其送入新的数据,因此,应使用锁存器设计数据输出寄存器。

三态缓冲器的工作情况:

当STB=0,选通,缓冲器输出Do=输入Di。

当STB=1,无论Di如何变化,缓冲器输出Do悬空。

锁存器的工作情况:

当LATCH=1,锁存器输出Do=输入Di。

当LATCH由1到0跳变,输入Di被锁存。

当LATCH=0,无论Di如何变化,锁存器输出Do维持不变。

无条件传送方式的输入接口电路:

外设把数据送到三态缓冲器,CPU执行IN指令从三态缓冲器中读得外设的数据。

IN AL,Addr

CPU执行IN指令时RD=0,IO/M=1(8088CPU为IO/M,8086CPU为M/IO),地址总线A7~A0上出现地址Adrr。地址信号经地址译码器后输出高电平,与非门输出EN=0,选通三态缓冲器,三态缓冲器把其存放的数据送出至数据总线D7~D0,从而CPU的AL获得该数据。

无条件传送方式的输出接口电路:

CPU执行OUT指令把数据送到锁存器,锁存器把数据送给外设。

OUT Addr,AL

CPU执行OUT指令时,WR =0,IO/M =1,地址总线A7~A0上出现地址Addr,数据总线D7~D0上出现AL的值。地址信号经地址译码器后输出高电平,它与IO/M 、WR 一起使与非门输出STB=0,把数据总线D7~D0上出现的数据(AL的值)锁存到锁存器中,外设从锁存器获得该数据。

例、打印机字体设置和步进电机控制。在打印机上,有一组DIP开关,用于设置字体、国别等,程序使用IN指令读入DIP开关的状态,从而获得这些设置。在打印时,程序控制步进电机的正转/反转,从而控制字车的左、右行进。

START:MOV DX, DATA_PORT ; 端口地址

MOV AL, 03H ; AB相加电

OUT DX, AL

CALL DELAY ; 延时子程序

MOV AL, 06H ; BC相加电

OUT DX, AL

CALL DELAY

MOV AL, 0CH ; CD相加电

OUT DX, AL

CALL DELAY

MOV AL, 09H ; DA相加电

OUT DX, AL

CAL DELAY

JMP START

读入DIP开关的状态:

MOV DX, DATA_PORT

IN AL, DX

(2) 查询方式(条件传送方式)

CPU从接口电路的状态寄存器读取外设的状态,当外设准备好,则与外设传送数据,否则,应继续查询状态。

由此可见,查询式传送的接口电路除了需要数据端口外,还需要状态端口。

(1)、查询式输入的接口电路

设状态寄存器的端口地址为STATUS_PORT,数据输出寄存器的端口地址为DATA_PORT。状态寄存器的D6=0表示输出设备可以接收数据(准备好,不"忙",数据锁存器为"空"),D6=1表示输出设备"忙"。则查询式输出的程序为:

POLL:IN AL,STATUS_PORT ;读状态

TEST AL, 40H ; 忙?

JNZ POLL ; D6(BUSY)=1,输出设备忙

MOV AL,STORE(数据)

OUT DATA_PORT,AL ; 输出数据

结合查询式输出的程序,分析查询式输出接口电路的动作情况:

"IN AL,STATUS_PORT"指令产生的信号为:RD=0、IO/M=1、地址总线上出现的信号为STATUS_PORT,地址译码输出Y1=1,与非门1=0,选通状态寄存器,状态寄存器把D触发器输出(反应输出设备状态)送至数据总线,从而在AL中获得输入设备的状态(D6位).D6(BUSY)=0,表示输出设备不忙,CPU可向其输出数据。D6(BUSY)=1,表示输出设备忙,CPU不能向其输出数据。

当输出设备不忙(BUSY=0),CPU用指令"OUT DATA_PORT,AL"向其输出数据,该令产生的信号为:WR=0、IO/M=1、地址总线上出现的信号为DATA_PORT,数据总线上出现数据(AL的值)。端口译码输出Y2=1,选通数据输出寄存器,把AL的值保存在锁存器中。同时,D触发器被置1,产生OBF信号(输出缓冲器满,Output Buffer Full),它一方面通知输出设备,锁存器中已有数据,另方面给出输出设备忙的信号。

1.2.2 中断传送方式

2.中断传送方式

使用查询方式时,CPU读取状态寄存器并检测状态字,如设备未准备好,CPU不断地查询(读取状态寄存器并检测状态字),浪费了大量CPU时间,CPU的利用率低。

使用中断方式,CPU不查询设备状态,当设备准备好时,主动向CPU提出中断请求,CPU响应中断后,在中断处理程序中与设备交换信息。如果设备未准备好,CPU可以执行其他程序,大大提高了CPU的利用率。

在每条指令执行完后,CPU均可响应中断,因此,当设备准备好时,CPU可以及时与设备交换信息,大大提高了CPU对设备响应的实时性。

因此,中断方式被广泛使用。

中断方式输入的接口电路:

中断方式输入的接口电路除了必须的输入锁存器和三态缓冲器外,还必须包含产生中断请求信号(INTR)的电路,当CPU响应中断请求后,接口电路应撤消中断请求。另外,在应用中,通常需要禁止某设备申请中断,因此,一般还要设计一个中断屏蔽触发器(MASK),当中断屏蔽触发器置1时,允许该设备申请中断,否则禁止该设备申请中断。第三,CPU响应中断后,发出INTA 信号,接口电路收到该信号后,应送出中断类型码。中断类型码标识该接口电路对应的输入设备。

该接口电路的工作原理是:

当输入设备准备好一个数据供输入时,它发出一个选通信号STB,该信号一方面把数据打入锁存器,另方面使中断请求触发器INTR置1。如果允许该接口电路发出中断申请,中断屏蔽触发器MASK为1(Q=1),则接口电路发出中断请求信号INTR。

CPU收到中断请求信号后,如果CPU内部允许中断(标志寄存器中IF位=1),CPU在执行完当前指令后,响应中断。中断响应信号INTA选通缓冲器,送出中断类型码。CPU根据中断类型码进入相应的中断处理程序。

在中断处理程序中,CPU执行输入指令(IN),读取输入寄存器中的数据。IN指令产生的信号为:RD=0、地址总线上出现的信号为输入寄存器的地址,地址经译码后的输出Y2与RD,IO/M一起,选通输入寄存器,把输入数据送到数据总线,AL寄存器获得该数据。输入指令同时对中断请求寄存器INTR复位。

在该接口电路中,以下指令使接口电路允许请求中断(置MASK=1):

MOV AL,01H ;D0至MASK的D输入端

OUT DX,AL ;DX的值使译码器输出Y1=1

1.2.3 直接存储器存取方式(DMA)

3.直接存储器存取方式(DMA)

中断传送方式提高了CPU利用率和系统工作的实时性,但它通过中断处理程序完成数据的输入/输出,在中断处理程序中,要保存段点、保护现场,需要较多指令,因而传送一次数据需要较长时间,这对于高速外设及成组数据交换(如磁盘与内存间的数据交换)速度显得太慢了。

DMA方式(Direct Memory Access)由DMA控制器(DMAC,典型芯片是Intel 8237A)控制外设与内存直接进行数据交换,不经过CPU,从而大大加快了传送速度。

更多推荐

微型计算机的主要输出输入接口,微型机输入与输出

本文发布于:2024-02-27 23:30:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1767059.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:微型机   微型计算机   输入接口

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!