接口设计

长平狐 发布于 2013/06/03 14:53
阅读 1K+
收藏 1

接口设计

什么是接口?

接口是CPU和外设之间的连接设备,用于缓存和转发数据。


为什么需要接口?

1)解决主机CPU和外围设备之间的时序配合和通信联络问题

         主机的CPU是高速处理器件,比如8086-1的主频为10MHz1个时钟周期仅为100ns,一个最基本的总线周期为400ns。而外围设备的工作速度比CPU的速度慢得多。如常规外围设备中的电传打字机传送信息的速度是毫秒级;工业控制设备中的炉温控制采样周期是秒级。为保证CPU的工作效率并适应各种外围设备的速度配合要求,应在CPU和外围设备间增设一个I/O接口电路,满足两个不同速度系统的异步通信联络。

          I/O接口电路为完成时序配合和通信联络功能,通常都设有数据锁存器、缓冲器、状态寄存器以及中断控制电路等。通过接口电路,CPU通常采用查询或中断控制方式为慢速外围设备提供服务,就可保证CPU和外围设备间异步而协调的工作,既满足了外围设备的要求,又提高了CPU的利用率。

    (2)解决CPU和外围设备之间的数据格式转换和匹配问题

             CPU是按并行处理设计的高速处理器件,即CPU只能读入和输出并行数据。但是,实际上要求其发送和接收的数据格式却不仅仅是并行的,在许多情况下是串行的。例如,为了节省传输导线,降低成本,提高可靠性,机间距离较长的通信都采用串行通信。又如,由光电脉冲编码器输出的反馈信号是串行的脉冲列,步进电动机要求提供串行脉冲等等。这就要求应将外部送往计算机的串行格式的信息转换成CPU所能接收的并行格式,也要将CPU送往外部的并行格式的信息转换成与外围设备相容的串行格式,并且要以双方相匹配的速率和电平实现信息的传送。这些功能在CPU控制下主要由相应的接口芯片来完成。

    (3)解决CPU的负载能力和外围设备端口选择问题

              即使是CPU和某些外围设备之间仅仅进行并行格式的信息交换,一般也不能将各种外围设备的数据线、地址线直接挂到CPU的数据总线和地址总线上。这里主要存在两个问题,一是CPU总线的负载能力的问题:二是外围设备端口的选择问题。因为过多的信号线直接接到CPU总线上,必将超过CPU总线的负载能力,采用接口电路可以分担CPU总线的负载,使CPU总线不致于超负荷运行,造成工作不可靠。CPU和所有外围设备交换信息都是通过双向数据总线进行的,如果所有外围设备的数据线都直接接到CPU的数据总线上,数据总线上的信号将是混乱的,无法区分是送往哪一个外围设备的数据还是来自哪一个外围设备的数据。只有通过接口电路中具有三态门的输出锁存器或输入缓冲器,再将外围设备数据线接到CPU数据总线上,通过控制三态门的使能(选通)信号,才能使CPU的数据总线在某一时刻只接到被选通的那一个外围设备的数据线上,这就是外围设备端口的选址问题。使用可编程并行接口电路或锁存器、缓冲器就能方便的解决上述问题。

             此外,接口电路可实现端口的可编程功能以及错误检测功能。一个端口通过软件设置既可作为输入口又可作为输出口,或者作为位控口,使用非常灵活方便。同时,多数用于串行通信的可编程接口芯片都具有传输错误检测功能,如可进行奇/偶校验、冗余校验等。

接口硬件包含哪些部分?

(1)基本逻辑电路
  •  命令寄存器
  • 状态寄存器
  •  数据缓冲寄存器
(2)端口地址译码电路
根据地址总线上的信号确定是否选中该接口的某个寄存器(端口)
(3)供选电路
与其它部件的连接电路,如与中断控制器连接以实现中断方式的数据传送。

接口软件有什么功能?

一个完整的设备接口程序包括:
(1)初始化程序段
(2)传送设置程序段
(3)主控程序段
(4)结束程序段
(5)人机接口程序段
设备驱动程序就是一种标准化的接口软件。

接口电路有哪些形式?

  • 固定式结构:SSI,MSI (IC)
  • 半固定结构:GAL, PAL
  • 可编程结构:可编程芯片
  • 智能型结构:带微处理器

CPU如何与接口进行数据交换?

  • 查询方式: CPU<>接口           先确认外设已准备好,才进行传送
  • 中断方式: CPU<>接口           为避免不断读取状态位检查设备是否已准备好而造成等待循环,当输入设备准备好时,才向CPU发中断请求,CPU响应后转入执行中断服务程序。
  • DMA方式: 存储器<>接口     接口<>接口           存储器<>存储器

I/O端口

什么是I/O端口?
CPU与外设通信时,传送的数据信息,状态信息和控制信息分别进入接口电路中不同的寄存器,通常将这些寄存器和它们的控制逻辑统称为I/O端口(Port),CPU可对端口中的信息直接进行读写。
  • 数据端口:存放数据,是主机和外设之间交换的基本信息,长度一般为1-2字节,主要起数据缓冲的作用。
  • 状态端口:指示外设的当前状态,每种状态用1位表示,每个外设可以有几个状态位,由CPU读取以测试或检查外设的状态。最常用的状态位有准备就绪位(Ready),忙碌位(Busy)和错误位(Error)。
  • 命令端口:也称为控制端口,用来存放CPU向接口发出的各种命令和控制字,以便控制接口或设备的动作。常见的命令信息位有启动位,停止位,允许中断位等。

I/O端口编址方式

数据信息,状态信息和控制信息的含义各不相同,但在微机系统中,CPU通过接口与外设交换数据时,只有输入(IN)和输出(OUT)两种指令,所以只能把状态信息和命令信息也都当作数据信息来传送。
I/O端口的编址方式: 存储器映象寻址方式和I/O指令寻址方式。
  • 存储器映象寻址方式(Memory Mapped I/O):把每一个I/O端口都看作一个存储单元,并与存储单元一样统一编址,可使用访问存储器映象的所有指令来访问I/O端口。
  • I/O单独编址方式:对系统中的输入输出端口地址单独编址,构成一个I/O地址空间,不占用存储空间,用专门的IN和OUT指令来访问这种具有独立地址空间的端口。8080/Z80/8088和8086等都采用此种方式。8086用地址总线的低16位来寻址I/O端口,可寻址的端口数最大可达到65536个。
I/O指令
如何访问I/O端口?通过执行I/O指令。
Intel 8086的I/O指令有哪些?
IN AL, PORT8 ;AL《(PORT8)
IN AL, DX ;AL《(DX)
OUT PORT8, AL ;(PORT8)《AL
OUT DX, AL ;(DX)《AL
其中,PORT8表示8位端口地址, PORT16表示16位端口地址,AX可以替代AL。
例如,
MOV DX, 300H ; DX《300H
IN AL, DX ; AL《(DX)
MOV DX, 301H ; DX《301H
OUT DX, AL ; (DX)《AL
IN AX, 80H ; AL 《80H   AH 《81H

I/O端口地址译码原理

  • 如何在CPU执行I/O指令时可以访问到相应端口地址的I/O端口?设计I/O端口地址译码线路。
  • 如何设计I/O端口地址译码电路?通过地址总线和控制总线产生端口芯片的选择信号(CS)


I/O端口地址译码电路分类

  •  端口地址译码电路的种类:
  1. 固定式单端口地址译码 采用门电路或译码器进行译码,设计完毕后端口地址不能更改。
  2. 可选式端口地址译码  通过比较器和译码器等组成,端口地址可以通过DIP开关进行更改。
  • 采用可编程逻辑阵列实现逻辑电路

固定式单端口地址译码(1)


固定式单端口地址译码(2)


固定式单端口地址译码(3)

3-8译码器译码电路

接口的输入输出方法

(1)无条件传送方式
也称为同步传送方式,主要用于对简单外设进行操作。对这类外设,在任何时刻均已准备好数据或处于接收数据状态,如LED显示器的明灭控制(如下图所示)

(2)查询方式
执行读端口指令不断查询接口状态,若接口准备好, 则可以执行I/O指令输出数据到接口或或从接口读入数据。


(3)中断方式
接口准备好之后,便请求CPU中断现在执行的程序,转而为之服务。

(4) DMA方式
当外设有大量数据需要与主存储器交换时,DMA控制器向CPU申请接管总线,若成功,则控制外设与主存储器直接交换数

DMA方式读磁盘的过程
  • 系统启动时,3个开关打向上端,总线与CPU/存储器/外设连接,并由CPU来控制,进行DMA传输前,首先初始化8237A DMA控制器,设定传送数据的计数器,起始地址,DMA通道和传送方式。
  • CPU向磁盘控制器发出读盘命令,磁盘控制器读出数据。
  • 磁盘控制器准备好数据后,向DMA控制器发送一个DMA请求信号DREQ,DMA控制器送一个保持请求信号HRQ到CPU的HOLD输入端,CPU发回保持响应信号HLDA信号,中止当前程序运营。DMA控制器收到HLDA后,将3个总线开关置向下方,让总线与CPU脱开而与DMA控制器相连。
  • DMA控制器取得总线控制权后,通过地址总线向存储器发送地址信号,并向磁盘控制器发出DMA确认信号DACK。
  • DMA控制器使控制总线上IOR#和MEMW#信号有效,使得磁盘控制器能向数据总线输出数据字节,并使存储器单元能够被写入。
  • 完成一个字节传送后,DMA控制器自动修改内部寄存器的内容并指向下一个字节的地址,通过计数器的递减完成所有数据的传送。
  • DMA传送结束后,DMA控制器撤销它对CPU发出的保持信号HRQ,并释放总线。
  • CPU在每一个非锁定时钟周期结束后,都检测HOLD引脚看是否有DMA信号。


原文链接:http://blog.csdn.net/ce123/article/details/6983406
加载中
返回顶部
顶部