总线的分类
1.片内总线 芯片内部的总线
2.系统总线 计算机各部件之间的信息传输线
系统总线分为:
数据总线 双向 与机器字长、存储字长有关 (比如一台64位的计算机,8位数据总线,那么传一次信息数据总线要传8次)
地址总线 单向 因为要进行寻址,所以与存储地址,IO地址相关
控制总线 有出 有入 如存储器的读、写操作,总线允许,中断确认等,都是控制总线
3.通信总线 用于计算机系统之间,或计算机系统与其它设备(如仪表等)进行通信。
按传输方式分为串行通信总线和并行通信总线
总线控制
一、总线判优控制
分为主设备和从设备。
主设备(模块) 对总线有控制权
从设备(模块) 响应从主设备发来的总线命令
1.链式查询
链式查询除了总线控制部件,数据线,地址线外,主要用到三条线,总线请求BR,总线同意BG,总线忙BS。
之所以叫链式查询是因为BG线是一个一个IO接口进行查询的。
链式查询的过程:首先挂接在总线上的IO接口通过BR这条线发出总线占用请求。上图中是IO接口1和n发出了占用请求。
当总线通过BR线收到请求时,如果此时可以被占用,则通过BG线,从IO接口0开始逐个查询。图中先查IO0,发现IO0没有申请。此时信号向下传送,查询到IO1时,IO1获得了总线使用权。
此时IO1通过BS线设置总线忙。
链式查询特点:
其中各个设备的优先级,与BG的查询顺序,也就是各IO的连接方式有关。
链式查询对故障特别敏感。尤其是当BG线在向下传送的过程中,如果某个IO口出现故障,信号无法向下个IO传输,传输就会出现故障。这种查询的优点是结构简单,可靠性好设计(将BG等线接两条即可)。
2.计数器定时查询方式
用到数据线,地址线,设备地址线,BS,BR.
设备地址线上的地址是通过计数器给出的。
这种传输方法也是先由各IO接口发出占用请求,总线收到请求时,如果可以被占用,则启动计数器,图中计数器初值为0,那就从地址0开始,即图中的IO0,查询,若不是IO0,则计数器初值+1,查到IO1。是IO1,那么发出总线忙信号。
这种方法的特点是更灵活,通过设置计数器初值可以灵活改变优先级,甚至可以将初值设为上一次调用计数器剩下的值。提高查询效率。
3.独立请求方式
这种方式由各个接口的BR独立发出请求,那么相应的总线控制部件中有一个排队器,可以按照用户自设的顺序,对这些请求进行排队,排到的IO设备通过对应的BG线占用总线。该方式更方便快捷就是需要的线过多。
二、总线通信控制
首先是申请分配阶段。主模块(主设备)发出申请,由总线进行如上所述的判优控制,再执行。
执行时首先是寻址阶段,主设备要寻找从设备,所以发出地址找到从设备,再通过命令控制从设备。
接下来主从设备进行数据交换。交换结束后主从设备撤销相关申请。
总线通信有四种方式:
同步通信。 由统一的时钟来控制数据传输。
异步通信。 采用应答方式,没有公共时钟标准。
半同步通信。 同步异步结合。为解决不同速度两模块间的通讯。
分离通信。 可以充分利用总线。
同步通信:特点:要有定宽,定距的时钟信号;要在给定的时间点完成相应的操作。
以同步数据输入为例,过程分为四个时钟周期T1-T4。
在T1的上升沿必须给出地址信号,该信号由主设备给出。图中是由CPU给出。
在T2的上升沿必须给出读命令信号,告诉从设备CPU要从 从设备中读入数据。
在T3的上升沿从设备必须通过数据总线给出数据信号。
在T4上升沿数据信号和控制信号(图中为读命令)撤销。
T4结束时,地址信号也撤销。
同步数据输出如下。
T1上升沿给出地址。T1的下降沿给出数据。
T2上升沿给出写命令向从设备进行数据写入。
T3时钟内都进行写入操作。
T4上升沿撤销数据,写命令.T4下降沿撤销地址信号。
同步方式中,主从模块强制同步。对于速度不同的模块则必须按速度最慢的模块进行设计传输。
异步通信:特点:不需要定宽定距的时钟但是要增加两条线。一条是请求线主设备发出请求信号,另一条是应答线。
第一种方式,不互锁。先由主设备发出通信请求,从设备应答,之后主设备撤销请求信号,从设备也撤销应答信号。这一过程中主设备不管从设备是否接收到请求信号,一段时间后会取消请求信号,从设备反之同理。所以通信可靠性需要改进。
第二种方式,半互锁。主设备发出请求,从设备接收到请求后,发出应答信号,一段时间后,不管主设备是否收到,从设备的应答信号自动取消。主设备收到应答后撤销请求,没收到则保持请求信号。问题是当主设备没收到回答,可能会造成请求信号一直高电平。
第三种,全互锁。主设备发出请求,从设备接收到请求后,发出应答信号。主设备收到应答后撤销请求。主设备撤销后,从设备才会撤销应答信号。如果传输中数据出错,可以请求从设备重新发送和接收信号。
异步通信就是通过请求和回答两次握手进行通信的。
半同步通信:特点:同步异步结合既有同步通信利用定宽定距时钟信号通信的特点,同时增加一条“WAIT”信号,使两个速度不同的设备可以通信。
如下图:
T1开始时CPU给出地址信号,T2开始时给出读命令信号,第三个时钟周期开始前,从设备如果不能准备好要传送的数据,就通过WAIT信号给出一个低电平告诉CPU进行等待。CPU检测到后会在T3到来前,插入TW周期。
在下一个时钟周期开始前,CPU依然先检测WAIT信号是否高电平。若高电平则继续等待。
当WAIT变高时,T3周期开始,接收数据,T4开始时撤销读命令和数据信号,T4结束时撤销地址信号。
总结:三种通信的共同特点:
在一个总线周期内(以输入信号为例):
主模块发地址命令(期间要占用总线)->从模块准备数据(期间总线空闲)->从模块向主模块发送数据(期间要占用总线)
实际在CPU和硬盘的通信中,整个过程大部分时间都被硬盘用来准备,查找数据。所以为了利用从模块准备数据期间的总线空闲,采用分离式通信.
分离式通信:特点:各模块都能成为主模块,即都有权申请占用总线;实际上采用同步通信方式,不等对方回答;各模块准备数据时不占用总线,相应的,总线被占用时无空闲时间。
分离式通信过程分为两个周期:
子周期1:主模块申请占用总线(期间发出地址和命令),使用完毕即放弃总线使用权。
子周期1结束后从模块准备接收/发送数据。从设备准备好后进行子周期2。
子周期2:从模块申请占用总线,此时从模块相当于变成了主模块,因为它发出了总线占用请求(期间进行数据传输),使用完毕即放弃总线使用权。