0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

读懂命令寄存器状态寄存器在接口设计中的作用

GReq_mcu168 来源:互联网 作者:佚名 2017-11-16 09:50 次阅读

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

为什么需要接口?

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

主机的CPU是高速处理器件,比如8086-1的主频为10MHz,1个时钟周期仅为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端口地址译码电路分类

端口地址译码电路的种类:

固定式单端口地址译码 采用门电路或译码器进行译码,设计完毕后端口地址不能更改。

可选式端口地址译码 通过比较器和译码器等组成,端口地址可以通过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信号。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口设计
    +关注

    关注

    2

    文章

    196

    浏览量

    29664
  • dma
    dma
    +关注

    关注

    3

    文章

    533

    浏览量

    98915
  • 状态寄存器
    +关注

    关注

    0

    文章

    35

    浏览量

    6994
  • 命令寄存器
    +关注

    关注

    0

    文章

    1

    浏览量

    1233

原文标题:接口设计

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    寄存器是什么?怎么操作寄存器点亮LED灯?

    寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口寄存器这两
    的头像 发表于 07-21 16:59 2794次阅读
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>点亮LED灯?

    寄存器与移位寄存器

    寄存器与移位寄存器 寄存器是用来寄存数码的逻辑部件,所以必须具备接收和寄存数码的功能。任何一种触发器都可以构成
    发表于 03-12 15:19 59次下载

    ARM I2C 总线接口寄存器设置

    ARM I2C 总线接口寄存器设置 控制ARM 12C总线接口需要配置总线控制寄存器(rIICCON)、总线状态
    发表于 03-14 18:00 1640次阅读

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定义  寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用
    发表于 03-08 14:26 2.1w次阅读

    寄存器作用有哪些?

    寄存器作用有哪些? 寄存器用途  1.可将寄存器内的数据执行算术及逻辑运算;  2.存于寄存器内的地址可用来指向
    发表于 03-08 14:35 1.5w次阅读

    数据寄存器,数据寄存器是什么意思

    数据寄存器,数据寄存器是什么意思 数据寄存器数据寄存器包括累加器AX、基址寄存器BX、计数寄存器
    发表于 03-08 14:38 1.2w次阅读

    ARM寄存器详解

    ARM有37个寄存器,其中31个通用寄存器,6个状态寄存器。   这里尤其要注意区别的是ARM自身寄存器和它的一些外设的
    发表于 07-10 10:04 2608次阅读

    寄存器与移位寄存器

    寄存器与移位寄存器:介绍寄存器原理和移位寄存器的原理及实现。
    发表于 05-20 11:47 0次下载

    51寄存器的所有寄存器名称,(包括寄存器每一位的作用及用法)资源详解

    51寄存器的所有寄存器名称,(包括寄存器每一位的作用及用法)资源详解
    发表于 10-16 13:04 14次下载
    51<b class='flag-5'>寄存器</b>的所有<b class='flag-5'>寄存器</b>名称,(包括<b class='flag-5'>寄存器</b>每一位的<b class='flag-5'>作用</b>及用法)资源详解

    移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途

    移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。本文主要介绍了移位寄存器的用途以及移位
    发表于 12-22 15:49 1.9w次阅读

    零基础学ARM:程序状态寄存器访问指令解析

    一、程序状态寄存器访问指令ARM微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用
    的头像 发表于 12-24 13:36 2244次阅读

    GPIO寄存器

    ,一般高16位保留BSRR寄存器32位分为低16位BSRRL和高16位BSRRH,BSRRL配置一组IO口的16个IO口的状态(1),BSRRH配置复位状态(0)。每组GPIO端口的寄存器
    发表于 12-08 17:06 5次下载
    GPIO<b class='flag-5'>寄存器</b>

    ARM通用寄存器状态寄存器详解

    笔者来聊聊ARM通用寄存器以及状态寄存器的认识与理解。
    的头像 发表于 01-06 14:58 4597次阅读

    浅析寄存器作用及应用

    寄存器是计算机内部最快的存储器件之一,其在计算机中具有重要的作用。本文将从寄存器作用、应用和分类等方面对寄存器进行详细介绍。
    的头像 发表于 04-09 18:44 6461次阅读

    CPSR寄存器和APSR寄存器的组成

    程序状态寄存器作用就是反映处理器的状态信息。在程序运行期间我们可以通过查看程序状态寄存器
    的头像 发表于 10-20 11:38 1561次阅读
    CPSR<b class='flag-5'>寄存器</b>和APSR<b class='flag-5'>寄存器</b>的组成