10 I/O接口芯片

学习笔记
作者: MingXiao

10.1 为什么需要接口

为什么

  • CPU和外设速度不匹配
  • CPU和外设信号电平不匹配(CPU是TTL,即0为低5为高,外设各有不同)
  • 信号格式不匹配(CPU是8b,16b等并行数据,外设不一定)
  • 时序不匹配

接口电路的解决方法

  • 数据缓冲:锁存器,缓冲器等
  • 加入电平转换电路
  • AD/DA转换器
  • 以握手联络信号(Ready)保证同步

端口分类:数据端口;状态端口;命令端口

I/O端口的寻址方式

  1. 存储器映象寻址:将每一个I/O端口看作一个存储单元,所有的访问内存的指令都能直接访问端口

    优点:不用专门的I/O指令

    缺点:占用了大量存储单元的地址空间

  2. I/O单独编址方式

    优点:程序更加明确;不占用内存空间;指令短,译码电路简单

    缺点:IN,OUT的功能不如访存指令强;CPU需要提供M/IO信号

    8086/8088都是这个方式

CPU与外设之间的数据传送方式

  • 程序控制方式(软件)

    • 分为无条件(同步)传送和有条件(查询式)传送

    • 前者用于简单外设的操作;后者需要先握手

    • 传输完一个字符,CPU持续发送请求,直到外设准备完;CPU不能干别的事

  • 中断方式(软件)

    • 只有当输入设备的数据准备好了(READY),或数据缓冲器已空时,才会发送中断

    • 传输完一个字符,CPU发送请求并回到原来干的事,直到外设发送中断,继续传输

  • DMA方式(硬件),Direct Memory Access

    • DMA临时接管CPU的地址、数据和控制总线,实现批量的数据传送
    • CPU可以继续干别的事

10.2 两种通信方式

并行通信:一次性直接传输

优点:速度快

缺点:需要的线很多,远距离不现实

串行通信:在单根线上按顺序传送一段数据

微机和远程终端进行数据交换都用这个方式

10.3 可编程并行接口芯片8255A

8255A并行接口芯片

含有3个独立的8bit并行In/Out端口,其中PA,PB是8bit端口,PC可以拆分为两个4bit端口

基本操作

其中控制字寄存器是每个IO设备都有的,决定工作模式的寄存器

RESET让系统复位,控制寄存器清0,各端口工作于输入模式

与CPU的连接方式

在8bit系统中,A1A0地址线与芯片的A1A0连接。若基地址是60H,A、B、C和控制口的端口分别是60H,61H,62H,63H

在16bit系统中,A0地址线用来选取奇偶位,故使用A2A1地址线,注意计算端口时A0位也要计算,相邻端口相隔2H

控制字的设置

在进行初始化时必须先输入

根据标志位的不同有两个状态:

注意到只有PA有方式2,PC只能工作在方式0,但是设置D7=0可以任意输出PC的引脚为1/0

三种方式:基本I/O,选通工作,双向传送

例:检查8个开关,要求不断检测开闭状态,当开端断开时对应的LED灯点亮

解:使用8086CPU,8255A,74LS138提供全译码

​ 设置PA用于读取,PB用于输出,都工作在方式0,8086是16bit系统,AD2D1接入A1A0

​ 那么PA对应于1111 0000BPB对应于1111 0010BPC对应于1111 0100B,控制字对应于1111 0110B

​ 接下来为全译码选择合适的信号,74LS138有3个门,3个选择信号,\(\mathsf{M/\overline{IO}}\)占一个\(\mathsf{\overline{G2A}}\)

​ 由于16bit的芯片,故一定要指明高低字节,A0一定作为一个选择信号,剩下的选两个不变的就行,这里选择A4A3A0作为选择信号,始终为100B=4D,因此\(\mathsf{\overline{Y4}}\)连接到\(\mathsf{\overline{CE}}\),剩下的就是门

​ 硬件电路如下图:

​ 还需要软件,一开始需要设置控制字,观察每个bit对应的信息

mov dx, 0F6H		;指向控制字
mov al, 10010000B
out dx, al			;写入

​ 然后检测开关状态

watch:
	mov dx, 0F0H		;指向PA
    in al, dx			;读取状态
    mov dx, 0F2H		;指向PB
    out dx, al			;写入状态
    call delay			;为了人看清楚需要延迟亮灯
    jmp watch			;持续检测

10.4 串行通信

数据传输方向

  1. 单工:单向通信,A只能发送,B只能接受;广播
  2. 半双工:双向通信,但只有一根传输线,同一时间只能单工;对讲机
  3. 全双工:两个通路,可以同时收发;电话

基本工作方式

  • 异步方式

    • 数据规格:起始位1b;数据位5-8b,D0在先;奇偶校验位1b(可选);停止位1/1.5/2b

    • 传输效率低

  • 同步方式

    • 数据规格:1/2b同步字符(单/双同步)/外同步无同步字符,5-8b数据,2b校验字符

    • 接受方利用同步字符,将周期与发送方同步,直接接受后面的数据段

    • 效率高很多,但是错误率也高很多

波特率:每秒传输的数据的位数,异步远低于同步

调制解调

串行接口不适合远距离传送,可以用标准电话线传送

首先要调制为音频信号,然后解调

根据调制的不同分为调频,调幅,调相,多路载波等

10.4 可编程串行接口芯片8251A

8251A接口芯片

是通用同步/异步数据收发器(USART)

编程流程

看ppt上的编程流程

  1. 向控制口写入复位

  2. 写入方式字,确定工作方式

  3. 若是同步,则写入1/2个同步字符,后面写入命令字

    若是异步,则直接写入命令字

  4. 要是想改变方式,需要重复1-3

在工作中可以随时使用IN读取状态字,检查错误

方式字的定义如下

其中异步方式的x1, x16, x64表示的是波特率系数,这是一个人为定义的概念,没有实际意义

实际传输过程中的\(收发波特率=\frac{收发时钟频率}{波特率系数}\)

初始化前需要先复位,复位字为0100 0000B = 40H,在写入控制字,然后再写入命令字0001 0101B,具体看ppt



Comments