锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

微型机输入与输出-微计算机原理-电子发烧友网站

时间:2022-12-16 15:00:00 具大电流传输的微型连接器stb11高速板到板连接器

本章概述:

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

中断是指计算机CPU暂时暂停正在执行的主程序,并将要求中断的外设或事件或事件中断服务程序, 处理后返回暂停程序。

8086可以处理256个中断,每个中断都可以通过中断类型代码来区分。这些中断源可以是硬件或软件;有些来自CPU有些内部来自外围芯片

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

第一节 微机输入输出

输入/输出是指CPU与外部设备(或"通讯")。外部设备包括输入设备(如键盘、鼠标、模具/数转换器等)、输出设备(如显示器、打印机、磁盘、数字/模具转换器等)。"外设"。

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

1.实现地址译码CPU与指定设备通信。

2.为快速传输数据提供缓冲CPU匹配慢速外设速度。

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

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

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

目前,接口电路已标准化、产品化、系列化,称为"接口芯片"。程序也可以设置或改变某些接口电路的工作条件,称为"可编程"接口芯片。

1.1.输入输出的搜址方式

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

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

1.1.1CPU与外设的接口信息

982cbdff12588931b0b816f4ea6097af.gif

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其端口地址范围为0万~FFFFH。存储器的地址也包括0万~FFFFH使用地址范围 M/IO(8088CPU是IO/W)区分端口和存储器。

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

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

当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

00~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,从而大大加快了传送速度。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章