总线控制

看了网络上的文章,质量真的不太行,就自己结合着整理一下。

总线控制主要是两个大方面,总线判优控制和总线通信控制

一、总线判优控制

总线上同一时刻只允许一个设备进行占用,为了防止冲突,我们引入了判优逻辑,仲裁谁可以先占用。

(实际上我也没有想到居然不是这里提出排队器的,排队器要到IO中断那里。)

总线判优控制的集中式方式有三种:链式查询、计数器定时查询、独立请求方式。

1.链式查询方式

实际上就是最简单的方式。通过三个单向的信号进行控制。

基本的流程也是按照从上到下。

信号 (英文名我随便取的) 描述 控制信号经过控制总线
BR (Bus Request) 总线请求申请 多个设备共用一条总线申请线(一条控制总线),当需要占用总线的时候,就向这个发出申请信号。
BG (Bus Grant) 总线允许 当总线控制设备收到BR信号后,从BG线上发出BG信号。但是这个的优先权的决定就是由这个BG线决定的,BG线是类似于一个链式结构,只有经过了前一个,才会到达下一个。当信号到达有需求的设备,那么就会被拦截。所以离总线近的会有高优先权。
BS (Bus Suspend) 总线忙 在截获BG信号后,设备要向总线设备控制器发出BS信号,说明匹配成功。

注:在查询链中离总线控制器最近的部件具有最高优先权,离总线控制器越远,优先权越低。

链式查询通过接口的优先权排队电路实现。

优点:结构简单,主要运用在简单的嵌入式系统中

缺点:速度慢,需要一直向下查询,对电路故障特别敏感

2.计数器定时查询方式:

实际上就是一种轮询的思想,跟Clock算法可以有点像。

去除了BG线,加上了一组设备地址线(LogN条,为的是覆盖所有地址)

与链式查询的早期的流程一样,就是有需求就发出请求,当匹配成功就发出BS信号。

但是匹配方式发生了改变,现在是按照设备的地址进行扫描,也就是在控制器内部加入了一个计数器(数电PTSD),回忆一下计数器是干嘛的,进行的就是一个一个数字的遍历,二进制的形式输出到我们的设备地址线。

也就是控制器不管外面发生了什么,就一直在向外面报数。

如果这个时候外面的一个想要占用总线的设备被叫到了名字,那么它就马上回应给控制器(BS信号),然后就占用了。

  • 注:计数器的初值可用程序设置,以方便地改变优先次序。当然这种灵活性是以增加控制线数为代价的。

  • 如果计数器的初值是从0开始,各部件的优先次序与链式查询法相同。

  • 如果从中止点开始,则每个设备使用总线的优先级相等

3.独立请求方式

这个就是最奢侈的方式了,对每个设备都连上一个BR和BG,然后我们就可以直接上排队器了。或者可以用软件控制。

二、总线通信控制

总线通信控制主要负责管理双方是什么时候开始通信,什么时候结束。

总线周期

通常将完成一次总线操作的时间称为总线周期。

阶段
申请分配阶段 也就是我们的主设备发出请求,判优,是否拿到使用权
寻址阶段 获得了使用权的主设备,发出地址与信息,启动我们的从设备
传数阶段 数据交换阶段
结束阶段 撤出主模块

下面讲讲我们的四种方式

同步通信

同步通信的主要特征就是我们的主从设备是使用同一时标(同一CP)

  • 主模块发出命令需要占用总线
  • 从模块准备数据不需要占用总线
  • 从模块发出数据占用总线

在同步方式下,读操作过程:

  • 在第一个时钟周期的上升沿,CPU发出地址。
  • 在到第二个时钟周期的上升沿,CPU发出读命令。
  • 在到第三个时钟周期的上升沿,内存会内部寻址,把存储单元中的数据送往数据总线。
  • CPU对内存的工作速度心知肚明,经过一个时钟周期,CPU就在数据总线上采样,取走数据,内存要在数据总线撤销数据信号,CPU要在控制总线撤销读信号。
  • 要确保数据在传送过程无误,地址信息要在地址总线多保持一个周期,最终才会在地址总线上撤销地址信息,这样就经过一个完整的第四个时钟周期。

在同步方式下,写操作过程:

  • 在T1的上升沿,CPU发出地址信息;
  • 在到T1的下降沿,CPU发送数据到数据总线。
  • 再到T2的上升沿,CPU发出写命令信号,这时内存就知道CPU要将一个数据写入内存,于是就从地址总线取走要写入的地址信息,从数据总线取走数据,将数据写到指定的存储单元中。
  • 这个过程持续了相当长的过程,经历T2,T3这两个时钟周期,写完后,CPU撤销数据总线的数据信息,及控制总线的写信号。
  • 为了确保数据能完整写入内存,地址信息要在地址总线多保持一个时钟周期。最终撤销在地址总线的地址信息。

异步通信

异步通讯克服了同步通信的缺点,允许各模块的速度不一致,给设计者充分的灵活性和选择余地。它没有公共的时钟标准,不要求所有部件严格的统一操作时间,而是采用应答方式(又称握手方式),即当主模块发出请求信号时,一直等待从模块反馈回来“响应”信号后,才开始通信。这要求主从模块之间增加两条应答线

异步通讯又称应答通讯,是一种建立在应答式或互锁机制基础上的通讯方式。即后一事件出现在总线上的时刻取决于前一事件的出现。在这种系统中,不需要统一的公共时钟信号,总线周期的长度是可变的,不把响应时间强加到功能部件上,因而允许快速和慢速的功能部件都能连接到同一总线上,但这是以增加总线的复杂性和成本为代价的。

异步通讯中根据应答信号是否互锁,即请求和回答信号的建立和撤消是否互相依赖,异步通讯可分为三种类型:非互锁通讯、半互锁通讯和全互锁通讯。

不互锁

  • 主模块发出请求信号后,不必等待接到从模块的回答信号,而是进过一段时间,确认从模块已收到请求信号后,便撤销其请求信号;
  • 从模块接到请求信号后,在条件允许时发出回答信号,并且经过一段时间(这段时间的设置对不同设备而言是不同的)确认主模块已经收到回答信号后,自动撤销回答信号。
  • 可见通信双方并无互锁关系。

半互锁(一次握手)

  • 主模块发出请求信号,必须待接到从模块的回答信号后再撤销其请求信号,或互锁关系;
  • 而从模块在接到请求信号后发出回答信号,但不必等待获知蛛魔款的请求已经撤销,而是隔一段时间后自动撤销其回答信号,无互锁关系。
  • 由于一方存在互锁关系,一方不存在互锁关系,故称半互锁方式。

全互锁(二次握手)

  • 主模块发出请求信号,必须待从模块回答后再撤销其请求信号;
  • 从模块发出回答信号,必须待获知主模块请求信号已经撤销后,再撤销其应答信号。
  • 双发存在互锁关系,故称全互锁方式。

半同步通信

半同步通信集同步与异步通信之优点,既保留了同步通信的基本特点,如所有的地址、命令、数据信号的发出时间,都严格参照系统时钟的某个前沿开始,而接收方都采用系统时钟后沿时刻来进行判断识别。同时又像异步通信那样,允许不同速度的模块和谐地工作。为此增设了一条“等待”响应信号线。

以读命令为例,在同步通信中,主模块在T1发出地址,T2发出命令,T3传输数据,T4结束传输。

倘若从模块工作速度较慢,无法在T3时刻提供数据,则必须在T3之前通知主模块,使其进入等待状态,此刻,从模块置 为低电平有效。

主模块在T3测得“等待”有效,则不立即从数据线上取数,这样一个时钟周期、一个时钟周期地等待,直到主模块测得为高电平即等待无效时,主模块即把此刻的下一周期当作正常周期T3,即时获取数据,T4结束传输。

半同步通信时序可为:

  • T1 主模块发地址;
  • T2 主模块发命令;
  • Tw 当 为低电平有效时,进入等待,其间隔与T统一;
  • Tw 当 为低电平有效时,进入等待,其间隔与T统一;
  • ……
  • T3 从模块提供数据(若属读命令);
  • T4 从模块撤消数据。

半同步通信适用于系统工作速度不高,但又包含了许多工作速度差异较大的各类设备的简单系统。半同步通信控制方式比异步通信简单,在全系统内各模块又在统一的系统时钟控制下同步工作,可靠性较高,同步结构较方便。其缺点是对系统时钟频率不能要求太高,故从整体上来看,系统工作的速度还是不很高。

总结:半同步通信的核心就是加入了一个等待线(因为从模块准备的过程可能会比较慢,需要几个周期),如果没有准备好,主模块就等从模块,但是按照以周期为步长。

分离式通信

同步通讯、异步通信和半同步通信都是从主模块发出地址和读写命令开始,直到数据传输结束。在整个传输周期中,系统总线的使用权完全有占有使用权的主模块和由他选中的从模块占据。进一步分析读命令传输周期,发现除了申请总线这一阶段外,其余时间主要花费在如下3个方面。

  • 1.主模块通过传输总线向从模块发送地址和命令。
  • 2.从模块按照命令进行读数据的必要准备。
  • 3.从模块经数据线向主模块提供数据。

对系统总线而言,从模块内部读数据过程并无实质性的信息传输,总线纯属空闲等待。

为了克服和利用这种消极等待,尤其在大型计算机系统中,总线的负载已经处于饱和状态,充分挖掘系统总线每瞬间的潜力,对提高系统系能起到极大作用。

为此提出了“分离式”的通信方式。


基本思想:即将一个传输周期(或总线周期)分解为两个子周期。

在第一个子周期中,主模块A在获得总线使用权后将命令、地址以及其他有关信息,包括主模块编号(当有多个主模块时,此编号尤为重要)发到系统总线上,经过总线传输后,由有关的从模块B接收下来。

主模块A向系统总线发布这些信息只占用总线很短的时间,一旦发送完成,立即放弃总线使用权,以便其他模块使用。

在第二个子周期中,当B模块接收到A模块发来的有关命令信号后,经过选择、译码、读取等一系列内部操作,将A模块所需的数据准备好,便由B模块申请总线使用权,一旦获准,B模块便将A模块的编号、B模块的地址、A模块所需的数据等一系列信息送到总线上,供A模块接收。很显然,上述两个子周期都只有单方向的信息流,每个模块都变成了主模块。

这种通信方式的特点如下:

  • 1.个模块占用总线使用权都必须提出申请。
  • 2.在得到总线使用权后,主模块在限定的时间内向对方发送信息,采用同步方式传送,不再等待对方的回答信号。
  • 3.各模块在准备数据的过程中都不占用总线,是总线可以接受其他模块的请求。
  • 4.总线被占用时都在做有效工作,或者通过他发送命令,或者通过他传送数据,不存在空闲等待时间,充分地利用了总线的有效占用,从而实现了在多个主、从模块间进行交叉重叠并行式传送,这对大型计算机是极为重要的。

这种方式控制比较复杂,一般在普通微型计算机系统很少采用。

超全总线控制方式总结相关推荐

  1. 简单工程验收单表格_中铁超大型工程项目-123个精细化管理手册配套表格附件,超全...

    中铁超大型工程项目-123个精细化管理手册配套表格附件,超全! 什么是项目精细化? 答:工程项目精细化管理是一个系统的管理体系,包含一系列管理制度和办法,除了<工程项目精细化管理办法>这个 ...

  2. 计算机组成原理,计算机系统总线,总线分类、特性、性能指标、结构以及总线控制,判优控制通信控制

    文章目录 总线的基本概念 总线的分类 总线特性及性能指标 总线结构 总线控制 一.总线判优控制 二.总线通信控制 总线的基本概念 一.总线是连接各个部件的信息传输线,是各个部件共享的传输介质. 二.总 ...

  3. 总线控制与脉冲控制的区别以及开环、半闭环、闭环控制方式的区别

    一.开环.半闭环.闭环控制方式的区别? 开环:发出指令后,不再管了,执行到位没有,不再过问. 半闭环:发出指令后,只检测电机运转情况,不管最终执行元件是否到位. 全闭环:发出指令后,检测最终执行元件是 ...

  4. pwm超详细解读,大佬细说pwm的控制方式

    pwm,也就是常说的脉冲宽度调制脉冲宽度调制技术.目前,pwm技术的应用是非常多的.为了增进大家对pwm的认识,本文将对pwm​​​​​​​​​​​​​​的几种控制方法进行详细的阐述,保证大家彻底理解 ...

  5. 基恩士PLC KV8000+XH16EC总线控制,全ST程序实例

    基恩士PLC KV8000+XH16EC总线控制,全ST程序实例,本人自己开发全程序无加密,公司级框架,功能齐全,提供项目源码框架FB源码,触摸屏源码. 需要一定ST基础才能看懂. 重在分享编程思想 ...

  6. 基恩士PLC KV8000+XH16EC总线控制,全ST程序实例 全程序无加密,公司级框架,功能齐全,提供项目源码框架FB源码

    基恩士PLC KV8000+XH16EC总线控制,全ST程序实例,本人自己开发全程序无加密,公司级框架,功能齐全,提供项目源码框架FB源码,触摸屏源码. 需要一定ST基础才能看懂. 重在分享编程思想 ...

  7. 超全!iOS 面试题汇总

    超全!iOS 面试题汇总 2015-10-20 CocoaChina 作者:Job_Yang 之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排,现在分享给大家. ...

  8. 分享超全的 Linux 渗透测试命令速查表

    如下是一份 Linux 机器的渗透测试速查表,是在后期开发期间或者执行命令注入等操作时的一些典型命令,设计为测试人员进行本地枚举检查之用. 此外,你还可以从这儿阅读到许多关于渗透测试的文章. 命令 描 ...

  9. ***入门基础知识(超全)

    ***入门基础知识(超全) [sell=2]  DOS 常用命令: dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 de ...

最新文章

  1. 多线程(一、线程安全案例)
  2. linux下nginx安装与设置开机启动
  3. 网络编程中使用float型数据要注意
  4. 今天我们聊聊,小程序开发的入手门槛还是比较低的
  5. ansible自动化运维必备工具详解
  6. paip.提升用户体验---提取FLASH中图片
  7. 241.为运算表达式设计优先级
  8. java帮助文档中文怎么下载,看完必懂
  9. matlab之在坐标区上添加图例函数legend
  10. 谷歌浏览器开启深色模式
  11. Excel中IF函数的嵌套用法(多条件)
  12. 电脑软件单击打开切换为双击打开
  13. 如何选择物联网服务商
  14. 浅谈电力系统短路故障的分析
  15. 想自己做个网站,常用的自助建站哪个好呢?需要注意什么
  16. 详解FindBugs的各项检测器
  17. 混凝土抗压弹性模量自动计算表_2011混凝土弹性模量试验.doc
  18. 宇宙工大路由器APP2021版使用教程
  19. 各编程语言 + aardio 相互调用示例
  20. 【AI视野·今日Robot 机器人论文速览 第七期】Tue, 15 Jun 2021

热门文章

  1. Java基于ssm开发的古董竞标拍卖系统也可以改成拍卖品网站
  2. [Python] 随机抽样
  3. Swift上写百度地图记录
  4. Jenkins构建maven项目失败
  5. matlab偏导数方程,[转载]Matlab求解微分方程(2)——偏微分方程的求解
  6. Nature子刊 定制饮食去除半胱氨酸和蛋氨酸可诱导细胞自毁进而治疗脑瘤?
  7. 今日头条信息流广告怎么做?(今日头条信息流广告费用解析)
  8. (转)五年教学实践与思考的结晶——推荐邹欣老师的《现代软件工程讲义》目录
  9. 去哪儿12306候补购票怎么用?
  10. DS1302时钟(进阶版)可调日期和时间等