目录
1.同步通信(同步定时方式)
同步通信方式(比如SPI),是把许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,在每组信息(通常称为信息帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。同步方式下,发送方除了发送数据,还要传输同步时钟信号,信息传输的双方用同一个时钟信号确定传输过程中每1位的位置。见下图所示:
同步通信的过程:
假设:CPU作为主设备,某个输入设备作为从设备。并且一个总线传输周期包含4个总线时钟周期:
• CPU在T1时刻的上升沿给出地址信息
• 在T2的上升沿给出读命令(低电平有效),与地址信息相符合的输入设备按命令进行一系列的内部操作,且必须在T3的上升沿来之前将CPU所需的数据送到数据总线上。• CPU在T3时钟周期内,将数据线上的信息传送到其内部寄存器中。
• CPU在T4的上升沿撤销读命令,输入设备不再向数据总线上传送数据,撤销它对数据总线的驱动。
在此例中的作为从设备的输入设备,没有按照主设备的时钟信号来工作,就会出现数据传输错误。例如没有在T3的上升沿来之前将CPU所需的数据送到数据总线上。
总结:
1.若干个时钟产生相等的时间间隔,每个间隔构成一个总线周期。这些时钟信号是统一由总线控制器发出的。信息的发方与接收方必须按照统一的时钟信号工作。
2.在一个总线周期中,发送方和接收方可进行一次数据传送。
3.因为采用统一的时钟,每个部件或设备发送或接收信息都在固定的总线传送周期中,一个总线的传送周期结束,下一个总线传送周期开始。
优点:传送速度快;具有较高的传输速率;总线控制逻辑简单。
缺点:主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差。
同步通信适用于总线长度较短(总线长度越短,信息传送越稳定)及总线所接部件的存取时间比较接近(若从设备是慢速的设备,跟不上时钟节拍,那么就会导致数据传输错误或者主从设备能在一个总线周期完成数据传输,并且其中一个设备存取速度非常快,另一个存取速度较慢,那么就会导致存取速度较快的设备性能被浪费)的系统。
2.异步通信(异步定时方式)
在异步通信方式(比如RS232)中,两个数据字符之间的传输间隔是任意的,所以,每个数据字符的前后都要用一些位来作为分隔位。从下图中可以看到,按标准的异步通信数据格式(叫做异步通信帧格式),1个字符在传输时,除了传输实际数据字符信息外,还要传输几个外加位:
在1个字符开始传输前,输出线必须在逻辑上处于“1”状态,这称为标识态。传输一开始,输出线由标识态变为“0”状态,从而作为起始位。起始位后面为5~8个信息位,信息位由低往高排列,即先传字符的低位,后传字符的高位。
信息位后面为校验位,校验位可以按奇校验设置,也可以按偶校验设置,或不设校验位。最后是逻辑的“1”作为停止位,停止位可为1位、1.5位或者2位。
如果传输完1个字符以后,立即传输下一个字符,那么,后一个字符的起始位便紧挨着前一个字符的停止位了,否则,输出线又会进入标识态。
在异步通信方式中,发送和接收的双方必须约定相同的帧格式,否则会造成传输错误。在异步通信方式中,发送方只发送数据帧,不传输时钟,发送和接收双方必须约定相同的传输率。当然双方实际工作速率不可能绝对相等,但是只要误差不超过一定的限度,就不会造成传输出错。
2.异步通信
在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠传送双方相互制约的“握手”信号来实现定时控制。
主设备提出交换信息的“请求”信号(包含地址和读/写信号),经接口传送到从设备;从设备接到主设备的请求后,通过接口间主设备发出“回答”信号。
根据“请求”和“回答”信号的撤销是否互锁,分为以下3种类型:
(1)不互锁方式主设备发出“请求”信号后,不必等到接到从设备的“回答”信号,而是经过一段时间,便撤销“请求”信号。
而从设备在接到“请求”信号后,发出“回答”信号,并经过一段时间,自动撤销“回答”信号(不会理会主设备有没有收到这个回答)。双方不存在互锁关系。
速度最快,可靠性最差
(2)半互锁方式主设备发出“请求”信号后,必须待接到从设备的“回答”信号后,才撤销“请求”信号,有互锁的关系。
而从设备在接到“请求”信号后,发出“回答”信号,但不必等待获知主设备的“请求”信号已经撤销,而是隔一段时间后自动撤销“回答”信号,不存在互锁关系。
(3)全互锁方式
主设备发出“请求”信号后,必须待从设备“回答”后,才撤销“请求”信号;
从设备发出“回答”信号,必须待获知主设备“请求”信号已撤销后,再撤销其“回答”信号。双方存在互锁关系。速度最慢,可靠性最好
关于异步通信:
优点:总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换,自动适应时间的配合。
缺点:比同步控制方式稍复杂一些,速度比同步定时方式慢。因为发送方需要等待接收方的回应,而对于同步定时方式而言,每个设备只需要在给定的节拍内完成相应的操作即可。
3.半同步通信
是同步通信与异步通信的结合,在统一时钟的基础上,增加一个“等待”响应信号。
对于同步通信而言,在T2的上升沿给出读命令(低电平有效),与地址信息相符合的输入设备按命令进行一系列的内部操作,且必须在T3的上升沿来之前将CPU所需的数据送到数据总线上。
但有的从设备跟不上时钟节拍,所以设置了"等待"响应时间。当从设备跟不上时钟节拍时,就会通过控制总线给总线控制器进行反馈,让总线控制器等待几个节拍,经过几个节拍后,从设备准备好数据,就会进入T3时钟周期,将数据传送给主设备。
在半同步通信中,给了总线控制器一定的自由度,总线控制器可以根据反馈的"等待"信号,动态调节总线传输周期内的时钟周期数。
所以半同步通信也可以支持两个工作速度相差很大的部件或设备之间可靠地进行信息交换。
4.分离式通信
上述三种通信的共同点:
一个总线传输周期(以主设备向从设备读出一个数据为例)
•主模块发地址和读命令,需要使用总线
•从模块准备数据,不需要使用总线,但是这一对主从设备依然会占用总线的使用权•从模块向主模块发数据,需要使用总线
所以分离式通信的思想就是将一个总线传输周期分为两个独立的子周期:
子周期1:
主模块发出请求,申请占用总线,使用完后立即放弃总线的使用权。
子周期2:从模块准备好设备,申请占用总线,将各种信息送至总线上。
之前讲到主模块(主设备)可以主动申请总线的控制权,但是在分离式通信中,从模块也需要能够主动申请总线的控制权。
特点:
1.各模块均有权申请占用总线
2.采用同步方式通信,不等对方回答
3.各模块准备数据时,不占用总线
4.总线利用率提高