本发明涉及异步通讯技术领域,尤其涉及一种保证异步通讯完成的计时复位系统及方法。
背景技术:
异步通信是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。通常的异步通讯,跨时钟域的信号数据传递中,会采用典型的一些握手信号把数据完整的传到不同的时钟域的电路里。传送方等接受方返回数据接受确认信号后,继续传输下一数据。由于,在接受方可能由于自身的电路或时钟问题,比如接受方时钟由于外界的晶振收到干扰,突然变频,会导致无法发送数据接受确认信号,从而让发送端一直等待,导致死锁的状况。
技术实现要素:
针对现有技术的不足,本发明的目的是提供了一种保证异步通讯完成的计时复位系统及方法,在发送方进行每笔数据发送时,进行计时。如果数据接受方不能在规定最大的时间内,返回确认信号。则把发送端进行复位操作,由于计数器和发送端在同一个时钟域,所以无论接收端因为什么原因不能正常完成数据发送,都可以防止死锁的发生。本发明提供一种保证异步通讯完成的计时复位系统,包括第一时钟域模块的数据发送端模块和第二时钟域模块的数据接收模块,数据从第一时钟域模块的数据发送端模块发送至第二时钟域模块的数据接收模块,所述第一时钟域模块的数据发送端模块和第二时钟域模块的数据接收模块之间设置有正向同步模块,所述第一时钟域模块的数据发送端模块旁设置有计时器模块,通过计时器模块对第一时钟域模块的数据发送端模块发送数据的时间进行计时。
进一步改进在于:所述第一时钟域模块的数据发送端模块和第二时钟域模块的数据接收模块之间设置有反向同步模块,所述反向同步模块和计时器模块通过或门连接在第一时钟域模块的数据发送端模块上。进一步改进在于:所述第二时钟域模块的数据接收模块旁设置有产生器。
本发明还提供一种保证异步通讯完成的计时复位方法,所述方法步骤如下:
步骤一:在第一时钟域模块的数据发送端模块发送数据之前,电路根据当前的波特率配置适当的计数溢出阀值到计数器;
步骤二:数据从第一时钟域模块的数据发送端模块发送至第二时钟域模块的数据接收模块,发送端在发送数据发送通知信号后,会使计数器开始记数;
步骤三:若在计数器溢出前,发送端收到经过同步电路处理后的数据接受确认信号,证明数据发送正常结束,进入步骤四,若在计数器溢出前,发送端没有收到数据接受确认信号,计数器就会发出溢出信号,进入步骤五;
步骤四:发送端重置计数器,使计数器停止工作,并进行下一数据的发送工作,回到步骤一;
步骤五:通知发送端,当前数据发送异常;发送端在收到计数器溢出信号后,会复位数据接收端,让接收端放弃发送当前数据到其它地方,重新接受下一数据,从而保证数据可以自动继续发送。本发明的有益效果是:在发送方进行每笔数据发送时,进行计时。如果数据接受方不能在规定最大的时间内,返回确认信号。则把发送端进行复位操作,由于计数器和发送端在同一个时钟域,所以无论接收端因为什么原因不能正常完成数据发送,都可以防止死锁的发生。通过当前数据波特率,自动配置计数器,通过判断计数器是否溢出,避免接受和发送端产生死锁。
附图说明
图1是本发明的系统构成图。
具体实施方式
为了加深对本发明的理解,下面将结合实施例对本发明作进一步的详述,本实施例仅用于解释本发明,并不构成对本发明保护范围的限定。如图1所示,本实施例提供了一种保证异步通讯完成的计时复位系统,包括第一时钟域模块的数据发送端模块和第二时钟域模块的数据接收模块,数据从第一时钟域模块的数据发送端模块发送至第二时钟域模块的数据接收模块,所述第一时钟域模块的数据发送端模块和第二时钟域模块的数据接收模块之间设置有正向同步模块,所述第一时钟域模块的数据发送端模块旁设置有计时器模块,通过计时器模块对第一时钟域模块的数据发送端模块发送数据的时间进行计时。所述第一时钟域模块的数据发送端模块和第二时钟域模块的数据接收模块之间设置有反向同步模块,所述反向同步模块和计时器模块通过或门连接在第一时钟域模块的数据发送端模块上。所述第二时钟域模块的数据接收模块旁设置有产生器。
本实施例还提供一种保证异步通讯完成的计时复位方法,所述方法步骤如下:
步骤一:在第一时钟域模块的数据发送端模块发送数据之前,电路根据当前的波特率配置适当的计数溢出阀值到计数器;
步骤二:数据从第一时钟域模块的数据发送端模块发送至第二时钟域模块的数据接收模块,发送端在发送数据发送通知信号后,会使计数器开始记数;
步骤三:若在计数器溢出前,发送端收到经过同步电路处理后的数据接受确认信号,证明数据发送正常结束,进入步骤四,若在计数器溢出前,发送端没有收到数据接受确认信号,计数器就会发出溢出信号,进入步骤五;
步骤四:发送端重置计数器,使计数器停止工作,并进行下一数据的发送工作,回到步骤一;
步骤五:通知发送端,当前数据发送异常;发送端在收到计数器溢出信号后,会复位数据接收端,让接收端放弃发送当前数据到其它地方,重新接受下一数据,从而保证数据可以自动继续发送。在发送方进行每笔数据发送时,进行计时。如果数据接受方不能在规定最大的时间内,返回确认信号。则把发送端进行复位操作,由于计数器和发送端在同一个时钟域,所以无论接收端因为什么原因不能正常完成数据发送,都可以防止死锁的发生。通过当前数据波特率,自动配置计数器,通过判断计数器是否溢出,避免接受和发送端产生死锁。
1.一种保证异步通讯完成的计时复位系统,包括第一时钟域模块的数据发送端模块和第二时钟域模块的数据接收模块,数据从第一时钟域模块的数据发送端模块发送至第二时钟域模块的数据接收模块,所述第一时钟域模块的数据发送端模块和第二时钟域模块的数据接收模块之间设置有正向同步模块,其特征在于:所述第一时钟域模块的数据发送端模块旁设置有计时器模块,通过计时器模块对第一时钟域模块的数据发送端模块发送数据的时间进行计时。
2.如权利要求1所述的一种保证异步通讯完成的计时复位系统,其特征在于:所述第一时钟域模块的数据发送端模块和第二时钟域模块的数据接收模块之间设置有反向同步模块,所述反向同步模块和计时器模块通过或门连接在第一时钟域模块的数据发送端模块上。
3.如权利要求1所述的一种保证异步通讯完成的计时复位系统,其特征在于:所述第二时钟域模块的数据接收模块旁设置有产生器。
4.一种如权利要求1-3任意一项所述的保证异步通讯完成的计时复位方法,其特征在于:所述方法步骤如下:
步骤一:在第一时钟域模块的数据发送端模块发送数据之前,电路根据当前的波特率配置适当的计数溢出阀值到计数器;
步骤二:数据从第一时钟域模块的数据发送端模块发送至第二时钟域模块的数据接收模块,发送端在发送数据发送通知信号后,会使计数器开始记数;
步骤三:若在计数器溢出前,发送端收到经过同步电路处理后的数据接受确认信号,证明数据发送正常结束,进入步骤四,若在计数器溢出前,发送端没有收到数据接受确认信号,计数器就会发出溢出信号,进入步骤五;
步骤四:发送端重置计数器,使计数器停止工作,并进行下一数据的发送工作,回到步骤一;
步骤五:通知发送端,当前数据发送异常;发送端在收到计数器溢出信号后,会复位数据接收端,让接收端放弃发送当前数据到其它地方,重新接受下一数据,从而保证数据可以自动继续发送。