总线的异步通讯方式
总线的异步通讯方式
异步通讯克服了同步铜须的缺点,允许各模块的速度不一致,给设计者充分的灵活性和选择余地。它没有公共的时钟标准,不要求所有部件严格的统一操作时间,而是采用应答方式(又称握手方式),即当主模块发出请求信号时,一直等待从模块反馈回来“响应”信号后,才开始通信。这要求主从模块之间增加两条应答新。
异步通讯又称应答通讯,是一种建立在应答式或互锁机制基础上的通讯方式。即后一事件出现在总线上的时刻取决于前一事件的出现。在这种系统中,不需要统一的公共时钟信号,总线周期的长度是可变的,不把响应时间强加到功能部件上,因而允许快速和慢速的功能部件都能连接到同一总线上,但这是以增加总线的复杂性和成本为代价的。
异步通讯中根据应答信号是否互锁,即请求和回答信号的建立和撤消是否互相依赖,异步通讯可分为三种类型:非互锁通讯、半互锁通讯和全互锁通讯。
非互锁通讯
图1 非互锁通讯
主模块发出请求信号后,不必等待接到从模块的回答信号,而是进过一段时间,确认从模块已收到请求信号后,便撤销其请求信号;从模块接到请求信号后,在条件允许时发出回答信号,并且经过一段时间(这段时间的设置对不同设备而言是不同的)确认主模块已经收到回答信号后,自动撤销回答信号。可见通信双方并无互锁关系。
例如,COU向主存写信息,CPU要先后给出地址性能好、写命令以及写入数据,即采用此方式。
以下是非转载的一点理解
如何理解:进过一段时间,确认从模块已收到请求信号后,便撤销其请求信号
这句话呢,经过询问大佬,一个合理的解释是,经过一段时间后,这段时间是,发送方觉得接收方差不多收到了,于是就撤销请求信号
如果接收方确实没收到,那也没办法,这个方式本来应该就有这种缺陷,而且在图上看到,请求信号的下降沿没有前置信号的依赖。
半互锁通讯
图2 半互锁通讯
主模块发出请求信号,必须待接到从模块的回答信号后再撤销其请求信号,或互锁关系;而从模块在接到请求信号后发出回答信号,但不必等待获知蛛魔款的请求已经撤销,而是隔一段时间后自动撤销其回答信号,无互锁关系。由于一方存在互锁关系,一方不存在互锁关系,故称半互锁方式。
例如,在多主机系统中,某个CPU需要访问共享存储器(供所有CPU访问的存储器)时,该CPU发出访问存储器命令后,不许收到存储器未被占用的回答信号,才能真正进行访存操作。
全互锁通讯
图3 全互锁通讯
主模块发出请求信号,必须待从模块回答后再撤销其请求信号;从模块发出回答信号,必须待获知主模块请求信号已经撤销后,再撤销其应答信号。双发存在互锁关系,故称全互锁方式
例如,在网络通信中,通信双方采用的就是全互锁方式。
异步通信可用于并行传送或串行传送。异步并行通行如图4所示,图中的“Ready“和“Strobe”就是联络信号。异步串行通信时,没有同步时钟,也不需要在数据传送中传送同步信号。为了确认被传送的字符,约定字符格式为:1个起始位(低电平)、5~8位数据位(如ASCI码为7位)、1位奇偶校验位(作检错用)、1或1.5或2位终止位(高电平)。传送时起始位后面紧跟的是要传送字符的最低位,每个字符的结束是一个高电平的终止位。起始位至终止位构成一帧,两帧之间的间隔可以是任意长度的。
图4 异步并行”应答“联络方式