一、引子
上一小节,已经介绍了总线仲裁相关的知识。
由于总线在同一时刻只能提供给一组设备使用,所以需要决定总线的控制权分配给哪一个主设备,当一个主设备获得总线控制权之后,它就可以利用总线来对某一个从设备发出相关的命令(读/写数据)。
那么这一对主设备和从设备该如何用电信号进行数据的传输呢?
如何发出命令,如何给出数据,每一步操作的时序安排又是怎么样的?
这一小节,我们就来探讨一下总线的操作与定时,即如何让占用总线的一对设备进行数据传输?
二、介绍
1.总线周期
之前我们说过总线周期有四个阶段。
也就是要用总线传一次数据。
:bookmark:解释
①申请分配阶段:某一个主设备想要使用总线,那么它需要向总线控制部件发出请求,申请总线的控制权。然后总线控制器按照一定的优先级,将总线的控制权分配给某一个主设备。也就是总线仲裁。
某一个主设备获得了总线的控制权。
②寻址阶段:当主设备获得了总线控制权之后,就进入了寻址阶段。用地址信息来指明它想读/写的那个从设备是哪一个。每一个设备都会有自己的地址编号。
所以主设备可以用地址来指明想要配合的从设备到底是哪一个。除了地址信息之外,还要有相关的命令。指定的从设备接收到相关的请求之后,就需要启动。
③传输阶段:这个阶段要进行具体的数据传输,有可能是主设备向从设备发出读命令或者写命令。那么要往什么地方读或者写?这要看上一个阶段的地址指向哪里。
④结束阶段:主模块传输完数据之后,需要把总线的控制权让出来。所以它会把地址信息、读写命令等从总线上撤除,让出总线的使用权。
2.总线定时规范
这一节要介绍的总线定时就是主模块和从模块在总线周期内,进行上述动作。
这需要时间上的配合,那么如何进行呢?这就是总线定时要探讨的问题,它实际上是一种协议或规则,让数据的发送方或者接收方都能够按照统一的规则来进行数据的交互。
这一节中,将要介绍四种总线定时的规范:
①同步通信:由总线控制器提供一种统一时钟来控制数据传送。
②异步通信:没有提供一种统一的节奏,而是让主设备和从设备在获得总线使用权之后,用应答方式来相互协商着决定工作的节奏。不会有统一的节拍。
③半同步通信:同步、异步结合。
④分离式通信:充分挖掘系统总线每一个瞬间的潜力。
三、同步定时方式
1.过程
==总线控制器采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。==
假设现在CPU是主设备,获得了总线的使用权。CPU可以选择某一个设备作为从设备。
如果想要从某一个从设备那里读入数据到主设备,那么该如何安排总线的传输周期呢?
:books: 假设某一个总线周期里面包含了4个时钟周期T1、T2、T3、T4。
<1> CPU获得总线的控制权之后。
在T1上升沿。CPU会发出地址信号,用来指明它想读的从设备的地址。
<2> 在T2上升沿。CPU会向从设备发出读命令。
在图中也可以看到,电平信号从高电平转为了低电平(此案例假设低电平有效)。
在T2时钟周期内,首先从设备可以根据地址信息来判断,主设备要读的对象是不是自己。
然后,该地址指向的设备知道是自己之后,再根据读命令的信号转为低电平可以得出,主设备是想从自己这里读出数据。
所以T2周期,从设备需要准备好主设备想要读出的数据。
<3> 在T3上升沿到来的时候,从设备就会把自己准备好的数据放到数据总线上。
那么主设备就可以从数据总线上获得自己想要的数据了。
<4> 在T4时钟周期内,主设备会撤销读命令,然后撤销地址信号来释放总线的控制权。
经过总线传输周期,每个阶段主设备和从设备都会完成相应的操作。
<5> 然后就可以进入下一个总线周期了。
2.特点
①若干个时钟产生相等的时间间隔,每个间隔构成一个总线周期。
②同步定时方式是指系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。
时钟信号是统一由总线的控制器发出的,信息的发送方和接收方都需要根据时钟给出的节拍完成相应的工作。
③在一个总线周期中,发送方和接收方可进行一次数据传送。
④因为采用统一的时钟,每个部件或设备发送或接收信息都在固定的总线传送周期中,一个总线的传送周期结束,下一个总线传送周期开始。(当然也要进行总线的申请和仲裁)
⑤同步通信适用于总线长度较短(出现信息错误的概率小)及总线所接部件的存取时间比较接近的系统(如果总线节奏太快,有的从设备速度较慢,就会跟不上总线的节奏;如果总线统一节奏搞得太慢,主设备的快速度会被浪费)。
3.优缺点
再来看一下整体的传输过程:
①优点
<1> 传送速度快,具有较高的传输速率。
只要给出时钟频率比较高,就可以使总线周期比较短。
<2> 总线控制逻辑简单。
由于任何一组主设备和从设备工作规定都是统一的,都需要根据统一的时钟信号来进行操作。所以这种总线定时方式,它的控制逻辑实现起来比较简单。只需要实现一个标准即可。
②缺点
<1> 主从设备属于强制性同步,必须根据统一的节奏进行工作。
从设备在接收到地址信息和读命令之后,T2时钟周期内,从设备需要准备好主设备想要读的数据。在T3上升沿到达的时候,从设备就可以把数据放到数据总线上。
如果从设备速度比较慢,跟不上节奏。就意味着在T3周期内,从设备不能给出数据,那么这种同步定时的方式就会出现问题。
因为同步定时方式意味着,统一时钟信号,就是固定的,每一个总线传输周期只会给4个时钟信号。如果此时从设备跟不上节奏,那么主设备和从设备的通信就会出现问题。
<2> 不能及时进行数据通信的有效性检验,可靠性差。
如果总线周期内,传送的数据中间发生了一些变动(比如二进制的跳变)。
那么对于这种同步通信方式来说,并不会留有多余时间让主从双方检测数据到底是否有效,在传输过程中有没有问题。所以数据传输可靠性差。
四、异步定时方式
1.介绍
在异步定时方式中,系统不会提供一个统一的时钟信号,也没有固定的时间间隔,完全依靠传送双方相互制约的“握手”信号来实现定时控制。
==主设备提出交换信息的“请求”信号,经接口传送到从设备。从设备接到主设备的请求后,通过接口向主设备发出“回答”信号。==
比如刚才提到的,请求信号:CPU作为主设备,它的请求信号就是“地址”、“读命令”。(因为这两个足够指明它要读的是哪一个设备,要读的是什么数据)。回答信号:将“数据”信息放到数据总线上。如下:
那么对于异步定时方式,主设备和从设备该如何配合工作呢?
2.三种方式
(1)不互锁方式
当主设备获得总线控制权,它会发出请求信号。就比如刚才说的那个例子,请求信号就是,从地址总线发出“地址信息”,从控制总线发出“读命令”。
不互锁:请求信号和回答信号的撤销动作并不会受到对方的制约。
①主设备发出请求信号之后,不管从设备有没有接收到,过一段时间便会撤销请求信号。
②从设备接收到请求信号之后,会发出回答信号,不管主设备有没有接收到回答信号,过一段时间便会撤销回答信号。
(2)半互锁方式
当主设备获得总线控制权,它会发出请求信号。
半互锁:请求信号的撤销动作会受到回答信号的制约,但回答信号的撤销动作并不会受到请求信号的制约。
①这个半互锁方式,主设备发出请求信号之后,必须等到从设备接收并给出回答信号、主设备也接收到之后,才会撤销请求信号。
②但对于从设备,它给出回答信号,不管主设备有没有接收到回答信号,一段时间后会自动撤销回答信号。
(3)全互锁方式
当主设备获得总线控制权,它会发出请求信号。
全互锁:请求信号的撤销,需要等到回答信号收到之后;回答信号的撤销,需要等到请求信号先撤销之后。请求信号和回答信号的撤销动作都会受到对方制约。
①主设备发出请求信号,不会立即撤销信号,需要等到从设备给出回答信号,并且主设备确认收到了回答信号之后,主设备才会撤销请求信号。
②当从设备给出回答信号之后,也不会立即撤销信号,而是检测到主设备的请求信号已经撤销了之后(即确认主设备已经收到了自己的回答信号),才会把回答信号撤销。
不互锁方式速度最快、可靠性最差。因为不能保证对方是否接收到自己发出的信号。全互锁方式速度最慢、最可靠。因为主设备只有获得回答信号之后,才会撤销自己的请求;从设备只有检测到主设备撤销了请求信号之后,才会撤销自己的回答信号。
3.优缺点
①优点
总线周期长度可变。
只有主设备、从设备请求回答动作完成之后,才意味着完成了一个总线周期,即完成了一次总线的数据传输。
由于主从设备可以自动适应对方工作节奏,所以能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换。
②缺点
比同步控制方式稍微复杂一些,速度比同步定时方式慢。
异步方式需要等待对方的回应,同步定时方式,每个设备只需要在给定的节拍内给出相应的动作即可,不需要管另一个设备有没有收到自己的信号。
所以同步定时方式要比异步定时方式速度更快。
五、半同步通信
1.过程
半同步通信是同步和异步的结合。
==比起同步方式,半同步方式会增加一个反馈信号WAIT
。==
看下图:
主设备在T1时间发出地址信号,在T2设备上升沿发出读命令。
如果是同步定时方式,T2之后,从设备需要准备好自己的数据,但是有的从设备跟不上这个节奏。
所以半同步方式中,当从设备跟不上节奏的时候,就会通过控制线路给总线的控制器进行一个反馈,让总线控制器等自己一会儿,所以图中的Tw
,就是总线控制器在等从设备准备数据。
经过两个Tw之后,从设备准备好了数据。
在T3上升沿,从设备就可以将自己准备好的数据,通过数据总线发送给主设备。
T4阶段,主设备撤销地址信息和读命令。
这样就完成了总线传输工作。
2.特点
同步定时方式中,每个总线传输周期都是定长的(固定为4个总线的时钟周期)。
而半同步通信结合了异步通信方式的优点,即增加了一个等待的反馈信号。
那么总线控制器就可以根据反馈信号,来动态地调节传输周期里面应该包含地时钟周期数。
半同步通信方式也有一个统一的时钟节拍,由于可以动态调整每一个传输周期内包含的时钟节拍数,因此它也能够支持速度差异比较大的主设备从设备之间进行数据的交互。
六、分离式通信
1.分析
在上述三种通信方式中,都有共同点。
还是举刚才的例子。
主设备要在从设备那里读出数据。
①当主设备获得总线控制权之后,首先会发出地址和读命令(需要使用总线);
②从设备接收到地址和读命令之后,会准备数据(不需要使用总线,但是主从设备依然会占据总线使用权);
③准备完数据之后,从设备才会通过数据总线,给主设备发送数据(需要使用总线)。
所以,以上三种通信方式,需要优化的就是第二个阶段!
当慢速的从设备在准备数据的时候,总线在这段时间是没有被使用的。然而这段时间,主从设备依然会占着总线控制权。
2.过程
因此,==分离式通信它的思想就是,会把总线传输周期,分为两个独立的子周期。==
<1> 主设备申请占用总线,并且发出地址命令等信息(即请求信号)。请求读或者写某一个设备。当请求信号发出之后,它会立即放弃总线使用权。把总线让给其他设备使用。
从设备接收到请求信号之后,就可以准备主设备想要的数据。
<2> 等从设备准备好数据之后,从设备又会主动申请占用总线,当它获取总线控制权之后,再把主设备想要的数据送到总线上。
分离式通信可以充分利用从设备准备数据的一段时间。这段时间将总线的使用权分配给其他设备来使用,这样就可以让总线传输效率变得更高。
3.特点
:book:特点
之前说过,主设备的定义,是指可以主动申请总线控制权的设备。
但是,分离式通信,也需要让从设备能够申请总线控制权。
分离式通信也要给一个统一的时钟信号,采用同步通信的方式。
主设备在规定的节拍内发出请求信号,但是不需要等待对方回答。(不需要从设备回应)
同样也在规定的节拍内释放总线的控制权。
七、总结回顾
总线传输
总共有四个阶段。
上一小节说的总线仲裁属于第一个阶段申请分配阶段,某一个主设备发出申请,由仲裁机构分配总线使用权。
当一个主设备获得总线使用权之后,就会进入寻址阶段。也就是指明它想要配合的从设备是哪一个,要读的数据地址是什么。在寻址阶段,主设备会给从设备发出请求信号,这个请求信号里面,可能包含地址信息、读写命令等。
当主设备接收到主设备的请求之后,就会进入传输阶段,这一阶段,才是实际的数据交换。
等数据交换完了,就会进入结束阶段,主设备会释放对总线的控制权,并撤销相应的控制信号。
为了让主设备和从设备能够相互协调配合工作,所以又提出了四种总线定时
方法。
同步定时方式:有一个统一的时钟节拍信号,主从设备在规定的节拍内完成规定的动作。高效但不可靠,要求主从设备之间速度差异不大。总线周期的长度是固定的。
异步定时方式:为了满足不同速度的各个部件之间通过总线进行数据交换,又提出了异步定时方式。异步定时方式又根据 请求信号和回答信号的撤销动作会不会受到对方制约划分为不互锁、半互锁、全互锁。
①对于不互锁,主设备发出请求信号之后,不管从设备有没有接收到请求信号,一段时间便会撤销请求信号。从设备给出的回答信号也只是给出一段时间,不管主设备有没有接收到回答信号,一段时间之后也会撤销回答信号;
②对于半互锁,主设备发出请求信号之后,必须收到从设备的回答信号之后,才会撤销请求信号。但是从设备的回答信号,并不会管主设备有没有接收到,一段时间后,便会自动撤销回答信号;
③对于全互锁,主设备发出请求信号,需要等到主设备收到回答信号之后,才会撤销请求信号。对于从设备来说,它的回答信号给出之后,需要等到主设备请求信号撤销之后,就是确认主设备收到自己回答之后,才会撤销回答信号。
半同步通信和分离式通信有个简单了解即可。