CN111800249A - 串行通信波特率误差容忍范围提升方法及系统 - Google Patents
串行通信波特率误差容忍范围提升方法及系统 Download PDFInfo
- Publication number
- CN111800249A CN111800249A CN202010641606.9A CN202010641606A CN111800249A CN 111800249 A CN111800249 A CN 111800249A CN 202010641606 A CN202010641606 A CN 202010641606A CN 111800249 A CN111800249 A CN 111800249A
- Authority
- CN
- China
- Prior art keywords
- baud rate
- bit
- sending
- data
- receiving
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/0079—Receiver details
- H04L7/0087—Preprocessing of received signal for synchronisation, e.g. by code conversion, pulse generation or edge detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
本申请公开了串行通信波特率误差容忍范围提升方法及系统,包括:通过对发送设备的串行通信数据的接收,进行自动实时侦测下降沿与上升沿的脉冲宽度,得到当前接收设备与发送设备的波特率误差比值BR,基于比值BR对数据接收时的中间采样点进行修正,实时调整发送波特率时钟,主动适应发送设备的实际波特率,实现与发送设备的实际波特率时钟同步。
Description
技术领域
本申请涉及串行通信技术领域,特别是涉及串行通信波特率误差容忍范围提升方法及系统。
背景技术
本部分的陈述仅仅是提到了与本申请相关的背景技术,并不必然构成现有技术。
串行通信是一种异步全双工通信,具有传输线少、成本低、协议简单、全双工的特点,是计算机与嵌入式系统当中的常用接口,应用非常广泛。
异步串行通信根据数据格式,按照一定的通信协议和通信速率进行数据的传输,在异步串行通信中,采用波特率来描述数据的传输速率,数据传输是以字节为单位,主要包括起始位,数据位,奇偶校验位以及停止位等参数。串行通信中,接收设备与发送设备双方要以相同的波特率才能建立起通信,在国际上建立了一系列标准波特率,如9600bps,115200bps等波特率。
在实际工作中,接收设备与发送设备所处的环境以及其他一些因素影响:传输距离过远、电磁干扰、两套系统时钟误差不同步、晶振温度效应(非恒温晶振),都有可能导致双方波特率产生时钟误差,使发送设备所发送的数据不能稳定准确的传输到接收设备,导致数据传输失败。
串行通信收发方在波特率完全一致的理想情况下,接收机的接收控制器在每一数据位的中点进行采样,能够准确的接收数据。但在实际应用中,很难做到波特率完全一致。串行通信允许波特率存在一定误差,误差超过一定范围时,会产生数据通信错误。
在实现本申请的过程中,发明人发现现有技术中存在以下技术问题:
在进行高波特率数据传输时,串行通信极易受到通讯系统时钟误差与通信环境因素的影响,无法保证可靠的通信数据传输。
发明内容
为了解决现有技术的不足,本申请提供了串行通信波特率误差容忍范围提升方法及系统,极大的提高了波特率误差容忍范围。
第一方面,本申请提供了串行通信波特率误差容忍范围提升方法;
串行通信波特率误差容忍范围提升方法,包括:
通过对发送设备的串行通信数据的接收,进行自动实时侦测下降沿与上升沿的脉冲宽度,得到当前接收设备与发送设备的波特率误差比值BR,基于比值BR对数据接收时的中间采样点进行修正,实时调整发送波特率时钟,主动适应发送设备的实际波特率,实现与发送设备的实际波特率时钟同步。
第二方面,本申请提供了串行通信波特率误差容忍范围提升系统;
串行通信波特率误差容忍范围提升系统,包括:发送设备和接收设备;
所述接收设备通过对发送设备的串行通信数据的接收,进行自动实时侦测下降沿与上升沿的脉冲宽度,得到当前接收设备与发送设备的波特率误差比值BR,基于比值BR对数据接收时的中间采样点进行修正,实时调整发送波特率时钟,主动适应发送设备的实际波特率,实现与发送设备的实际波特率时钟同步。
与现有技术相比,本申请的有益效果是:
本公开用于接收设备与发送设备之间的串行通信,接收设备可以实现自动侦测发送设备发送数据的波特率,加大串行通信的容错率,使发送设备与接收设备能够实现稳定、准确的数据传输。
本申请所要解决的问题是在串行通信发送设备与接收设备波特率时钟不同步并且超出了串行通信波特率误差容忍范围而导致数据传输失败。本申请通过串行通信接收数据进行自动实时侦测,得到发送设备的实际波特率,并通过波特率产生器实时调整波特率时钟大小,以提高串行通信对波特率误差的容忍范围,增大串行通信的稳定性。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为本申请提高串行通信波特率误差的容忍范围的方法的步骤图;
图2为本申请串行通信接发时钟同步关系的示意图;
图3为本申请例串行通信的数据格式;
图4为本申请以bit0为例的16倍过采样波特率时钟示意图;
图5为本申请波特率误差检测模块检测波特率误差的流程图;
图6为本申请波特率误差检测的系统架构图;
图7为本申请确定采样数据点序号的系统架构图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例一
本实施例提供了串行通信波特率误差容忍范围提升方法;
串行通信波特率误差容忍范围提升方法,包括:
通过对发送设备的串行通信数据的接收,进行自动实时侦测下降沿与上升沿的脉冲宽度,得到当前接收设备与发送设备的波特率误差比值BR,基于比值BR对数据接收时的中间采样点进行修正,实时调整发送波特率时钟,主动适应发送设备的实际波特率,实现与发送设备的实际波特率时钟同步。
进一步地,所述通过对发送设备的串行通信数据的接收,进行自动实时侦测下降沿与上升沿的脉冲宽度,得到当前接收设备与发送设备的波特率误差比值BR,基于比值BR对数据接收时的中间采样点进行修正,包括:
S101:对接收设备与发送设备的波特率时钟比值BR进行实时检测,接收设备接收发送设备发送过来的信号,并对接收信号进行过采样处理,将过采样处理后的数据进行存储;
S102:基于接收设备与发送设备的波特率时钟比值BR,得到波特率的相对误差,并基于相对误差对数据接收信号中的每一个数据位中间采样点的序号进行修正。
进一步地,所述实时调整发送波特率时钟,主动适应发送设备的实际波特率,实现与发送设备的实际波特率时钟同步;具体步骤包括:
S103:接收设备利用修正后的中间采样点的序号作为地址位,将过采样处理后存储的数据进行端口读出,并将读出值进行位拼接运算,得到最终的串行数据接收值;
S104:接收设备在进行数据的发送时,通过实时调整发送波特率时钟,主动适应发送设备的波特率,实现与发送设备的波特率时钟同步,并在已经取得同步的波特率时钟信号下进行数据的发送。
作为一个或多个实施例,所述S101:对接收设备与发送设备的波特率时钟比值BR进行实时检测,接收设备接收发送设备发送过来的信号,并对接收信号进行过采样处理,将过采样处理后的数据进行存储;具体步骤包括:
对接收设备与发送设备的波特率时钟比值BR进行实时检测,接收设备检测接收数据线(RXD)的电平信号,当起始位到来时,数据开始进行传输,以当前串行通信的波特率,利用16倍波特率过采样时钟信号,对接收数据进行16倍过采样,将16倍过采样数据实时存入双端口RAM中。
接收设备采用16倍过采样波特率时钟对发送设备发送的数据进行接收。接收设备进入数据接收状态后,接收设备开始对接收数据线(RXD)的数据进行16倍过采样接收,每个数据位对应16个采样信号,参与采样的数据位的个数由串行通信数据格式决定。
示例性的,接收设备在16倍过采样波特率时钟的节拍下对发送设备发送的数据进行16倍过采样,16个采样信号对应一个数据位,数据格式为:1位起始位、数据位(通常为5~8位)、可选奇偶校验位、停止位(通常为1~2位)。串行通信常采用的数据格式,如图3所示。
利用当前串行通信的波特率与系统时钟得出时钟分频因子,时钟分频分为奇数分频与偶数分频,根据计算得出的时钟分频因子来决定时钟分频的使用类型。通过时钟分频得到16倍波特率过采样时钟信号。
当接收数据起始位到来时,数据总线由高电平变为低电平时表示开始进行数据传输,进入起始位接收状态。数据接收设备开始对发送设备所发送的数据进行16倍过采样接收。
16倍过采样包含了起始位、数据位以及可能存在的校验位,在采样达到SP=16*(N+P+1)*BR个采样点后,采样结束,将这些采样点暂存于RAM中。其中BR为接收设备单个bit的位宽时钟数(被除数)与发送设备单个bit的位宽时钟数(除数)的比值。
接收设备采用16倍过采样波特率时钟对发送设备发送的数据进行接收。
串行通信所采用的16倍过采样波特率时钟信号是由波特率产生器所产生,其方法包含两个过程;(1)时钟分频因子的计算;(2)对串行通信的系统时钟进行时钟分频。
作为一个或多个实施例,所述S101的具体步骤包括:
S1011:根据当前串行通信波特率baud_rate和系统时钟频率fUART_CLK,计算时钟分频因子BAUD_DIV为:
S1012:根据计算得到的时钟分频因子的奇偶性,进行时钟分频:
如果为偶数就采用偶数分频的方法对系统时钟进行偶数分频;
如果为奇数就采用奇数分频的方法对系统时钟进行奇数分频,得到16倍过采样波特率时钟信号,其占空比为50%,如图4所示。
接收设备通过多级D触发器检测对接收数据线(RXD)进行持续检测,检测过程中所采用时钟为系统时钟信号,当检测到由高电平变为低电平的下降沿信号时,接收设备的波特率产生器开始工作,取得波特率与发送设备的波特率时钟同步,接收设备进入数据接收状态。
接收设备对接收数据线(RXD)的数据进行16倍过采样接收,每个数据位对应16个采样信号点,参与采样的数据位的个数由串行通信数据格式决定。
串行通信常采用的数据格式如图3所示,接收设备中参与16倍过采样的部分包含:1位起始位、数据位以及可能存在的校验位,并根据串行通信数据格式中数据位长度N(N=5,6,7,8)、有无校验位P(P=1:有检验位;P=0:无检验位),来确定16倍过采样采样点的总数目SP=16*(N+P+1)*BR,其中BR表示接收设备单个bit的位宽时钟数(被除数)与发送设备单个bit的位宽时钟数(除数)的比值。
接收设备将16倍过采样数据实时存入双端口RAM中,数据在RAM中的存储地址为采样序号,地址范围是0到(SP-1)。
作为一个或多个实施例,所述对接收设备与发送设备的波特率时钟比值BR进行实时检测,具体步骤包括:
定义一个32位宽的计数存储寄存器,将计数值进行存储。其计数范围为第一个下降沿到第一个上升沿,通过计数值的范围判断参与计数的bit个数。接收设备调用除法器IP核得到接收设备与发送设备与的波特率时钟比值BR。
接收设备中参与16倍过采样的部分包含:1位起始位、数据位以及校验位,并根据串行通信数据格式中数据位长度N、有无校验位P(P=1:有检验位;P=0:无检验位),来确定16倍过采样采样点的总数目SP=16*(N+P+1)*BR,其中BR表示接收设备单个bit的位宽时钟数(被除数)与发送设备单个bit的位宽时钟数(除数)的比值。
接收设备利用多级D触发器对接收数据线(RXD)上的电平信号进行边沿检测,当检测到下降沿时,计数器开始进行计数,D触发器继续进行检测,在检测到低电平跳变到高电平的上升沿时,计数器停止计数,计数值大小为CLK_CNT。
接收设备利用多级D触发器对接收数据线上的电平信号进行边沿检测,当检测到下降沿时,计数器开始进行计数,D触发器继续进行检测,在检测到低电平跳变到高电平的上升沿时,计数器停止计数,计数值大小为CLK_CNT。定义一个32位宽的计数存储寄存器,将计数值进行存储。其计数范围为第一个下降沿到第一个上升沿,通过计数值的范围判断参与计数的bit个数。
调用除法器IP核计算发送设备波特率的时钟和标准波特率的时钟之间的比值,将单个bit的时钟计数个数与标准波特率时钟下单个bit的系统时钟个数进行除法运算,得到发送设备波特率时钟频率与接收设备波特率时钟频率的比值。
作为一个或多个实施例,所述对接收设备与发送设备的波特率时钟比值BR进行实时检测,具体步骤包括:
(101a1)定义一个32位宽的系统时钟计数值寄存器,系统上电与复位后的初值设定为0。接收设备在检测到接收数据线(RXD)信号的下降沿到来时,利用系统时钟计数器开始计数,计数初值为0,在每个系统时钟上升沿计数值加1,计数频率同步于系统时钟频率,接收设备进行时钟计数的同时实时检测到接收信号的上升沿,当上升沿到来或者计数值达到CNT_MAX_3时,时钟计数器停止计数,得到最终的时钟计数值CLK_CNT。
(101a2)根据时钟计数值CLK_CNT的大小来判断计数所包含的bit个数,得到单个bit宽度的时钟计数值。
如果计数范围在区间[CNT_MIN_1,CNT_MAX_1),则计数对应1个bit宽度的时钟计数值;
如果在计数范围在区间[CNT_MIN_2,CNT_MAX_2),则计数对应2个bit宽度的时钟计数值,将计数值除以2得到单个bit宽度的时钟计数值;
如果在计数范围在区间[CNT_MIN_3,CNT_MAX_3),则计数对应个bit宽度的时钟计数值,将计数值除以3得到单个bit宽度的时钟计数值。
(101a3)接收设备采用一个32位宽的寄存器bit_cnt,来存取单个bit宽度的时钟计数值。
(101a4)接收设备时钟计数值CNT_MIN_n和CNT_MAX_n为:
(101a5)当系统时钟计数器计数值达到CNT_MAX_3,还未检测到接收信号的上升沿到来,则此次波特率时钟计数无效,不采用此计数值,而是采用暂存于bit_cnt的单个bit宽度的时钟计数值。
(101a6)接收设备在得到单个bit宽度的时钟计数值后,利用除法器计算接收设备与发送设备与的波特率时钟比值BR。
(101a7)接收设备调用FPGA除法器IP核“Divider Generator”。被除数为检测得到的单个bit宽度的时钟计数值,除数为标准波特率所对应的时钟个数。
除法器IP核的配置参数为:设置除数、被除数以及Fractional的数据类型均为无符号型(“Unsigned”),被除数的数据宽度(“Dividend Width”)与除数的数据宽度(“Divisor Width”),余数类型(“Remainder Type”)选择“Fractional”模式。除法器输出的结果为20位定点数,整数部分为2位,小数部分为18位。由除法器计算得到接收设备与发送设备与的波特率时钟比值BR。
作为一个或多个实施例,所述S102中,对接收设备与发送设备的波特率时钟比值BR进行实时检测,得到波特率的相对误差,并基于相对误差对中间采样点的序号进行修正;是指:
接收设备通过接收设备与发送设备与的波特率时钟比值BR,对每一个数据位的中间采样点的序号SAM_SEQ_MODIFY进行修正。
应理解的,所述S102中,对接收设备与发送设备的波特率时钟比值BR进行实时检测,得到波特率的相对误差,并基于相对误差对中间采样点的序号进行修正;是指:对接收设备与发送设备的波特率时钟比值BR实时检测,得到其波特率的相对误差的大小,并以此来修正中间采样点的序号来消除中间采样的偏离。
采样模块开始进行16倍过采样,将采样的数据实时的存储于寄存器中,当采样值的个数达到SP时,开始确定采样点的序号。若此时发送与接收设备的时钟相同,则每一数据位中间采样点的序号为8+16n(n=0,1,2,3...N)。若不相同,则要修改确定采样点的序号,通过发送设备与接收设备的波特率时钟比值,对每一个数据位的中间采样点的序号进行修正。
S101得到的16倍过采样数据通过提取中间采样点来得到串行通信接收数据,由于可能存在的接收设备与发送设备波特率时钟不同步,所以中间采样点会偏离真实的位置,通过对接收设备与发送设备的波特率时钟比值实时检测,得到其波特率的相对误差的大小,并以此来修正中间采样点的序号来消除中间采样的偏离,其流程图如图5和图6所示。
作为一个或多个实施例,所述S102的具体步骤包括:
S1021:理论情况下,每一数据位中间采样点的序号SAM_SEQ为:
SAM_SEQ=8+16*N (n=0,1,2,3,...,8) (1-5)
S1022:利用接收设备与发送设备与的波特率时钟比值BR修正采样点的序号SAM_SEQ_MODIFY为:
SAM_SEQ_MODIFY=(8+16*N)*BR (N=0,1,2,3,...,8) (1-6)
S1023:如图7所示,对得到的样点的序号SAM_SEQ_MODIFY进行四舍五入整数,得到修正后的中间采样点序号,并将序号值存储于寄存器中。
作为一个或多个实施例,S103,接收设备利用修正后的中间采样点的序号作为地址位,将过采样处理后存储的数据进行端口读出,并将读出值进行位拼接运算;得到最终的串行数据接收值;具体步骤包括:
采样点的序号修正后,提取存储在RAM中的采样值进行位拼接运算,并将数值存储于接收数据FIFO中,设备状态重新变为空闲状态。
作为一个或多个实施例,S103,具体步骤包括:
接收设备利用修正后的中间采样点序号作为地址位,将存储到RAM中的采样值进行端口读出,并将读出值执行位拼接运算,低地址位的值作为位拼接的低位、高地址位的值作为位拼接的高位,位拼接运算得到最终的串行数据接收值。
作为一个或多个实施例,S104,接收设备在进行数据的发送时,通过实时调整发送波特率时钟,主动适应发送设备的波特率,实现与发送设备的波特率时钟同步,并在已经取得同步的波特率时钟信号下进行数据的发送,具体步骤包括:
接收设备根据其在进行数据接收时所检测到的单个bit宽度的时钟计数值来进行分频得到波特率时钟信号,进行数据的发送。
发送设备发送数据时依次进入空闲、起始位、数据发送、奇偶校验位和停止位这五种状态。
作为一个或多个实施例,S104,接收设备在进行数据的发送时,通过实时调整发送波特率时钟,主动适应发送设备的波特率,实现与发送设备的波特率时钟同步,并在已经取得同步的波特率时钟信号下进行数据的发送,具体步骤包括:
S1041:发送设备波特率产生器根据其作为接收设备时所检测到的单个bit所对应的系统时钟个数来进行分频得到波特率时钟信号;
S1042:发送设备发送数据操作分为空闲、起始位、数据发送、奇偶校验位和停止位五种状态;
S1043:当发送设备无待发送数据时,处于空闲状态;当发送设备接收到发送指令时,发送设备由空闲状态转变为起始位状态,发送设备开始发送起始位;起始位发送结束后,发送设备由起始位状态转变为数据发送状态,发送设备开始进行数据位的发送;
S1044:数据位发送的过程中,先发送最低有效位(LSB),最后发送最高有效位(MSB)。数据位发送结束后,根据数据格式是否包含奇偶校验位,若有先发送校验位再发送停止位,若没有直接进入停止位状态发送停止位。
作为一个或多个实施例,S104,具体步骤还包括:
发送设备根据得到的单个bit宽度的时钟计数值来作为发送波特率发生器的时钟分频因子,如公式(1-2)的方法,根据时钟分频因子的奇偶性,对系统时钟进行时钟分频,得到发送波特率时钟信号。
发送设备的状态分为空闲状态、起始位状态、数据位发送状态、校验位状态和停止位状态,发送设备工作在发送波特率时钟的节拍下,当接收到发送指令,发送设备由空闲状态跳转到起始位状态,发送数据0,进入数据位发送状态,开始进行数据位的发送,数据位发送完毕,发送设备根据串行通信检验位模式,选择进入校验位状态或停止位状态,若存在校验位,则根据校验模式选择进行奇校验或偶校验,之后发送设备进入停止位状态,完成此次数据的发送。
本申请所要解决的问题是在串行通信发送设备与接收设备波特率不同步,并且超出了波特率误差容忍范围而导致数据接收失误。如图2所示,接收设备和发送设备的波特率时钟在起始位的下降沿取得同步,接收设备在接收信号的中间进行采样。
如果接收设备和发送设备的波特率时钟同步,此时能够做到中间采样,
如果发送设备波特率时钟快于接收设备波特率时钟或慢于接收设备波特率时钟,则采样偏离中间位置。
当偏离中间位置的大小超过1/2bit时,则接收数据采样发生错位导致数据接收失误。
对波特率时钟偏移相对误差大小恰好处于数据正确采样的边界情况进行分析,公式如下:
N×Tbit,TX<(N+1/2)×Tbit,RX<(N+1)×Tbit,TX (1-2)
该发明通过自动侦测数据发送设备的波特率并对串行接收信号进行16倍的过采样,利用侦测的波特率与当前系统的波特率的比值来对中间采样进行修正,确保数据能够被正确的接收。
本申请所要解决的问题是在串行通信发送设备与接收设备波特率时钟不同步并且超出了串行通信波特率误差容忍范围而导致数据传输失败。本申请通过串行通信接收数据进行自动实时侦测,得到发送设备的实际波特率,并通过波特率产生器实时调整波特率时钟大小,以提高串行通信对波特率误差的容忍范围,增大串行通信的稳定性。本申请可以解决目前所存在的技术不足之处,具有非常强的实用性;为了使本申请技术方案、具体实施方式表述更加清晰明了、形象直观,将结合附图、附表的形式进行编写。如图1所示,本申请是基于FPGA的提高串行通信波特率误差容忍范围的方法。
实施例二
本实施例提供了串行通信波特率误差容忍范围提升系统;
串行通信波特率误差容忍范围提升系统,包括:发送设备和接收设备;
所述接收设备通过对发送设备的串行通信数据的接收,进行自动实时侦测下降沿与上升沿的脉冲宽度,得到当前接收设备与发送设备的波特率误差比值BR,基于比值BR对数据接收时的中间采样点进行修正,实时调整接收波特率时钟,主动适应发送设备的实际波特率,实现与发送设备的实际波特率时钟同步。
此处需要说明的是,发送设备和接收设备对应于实施例一中的步骤,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为系统的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
上述实施例中对各个实施例的描述各有侧重,某个实施例中没有详述的部分可以参见其他实施例的相关描述。
所提出的系统,可以通过其他的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如上述模块的划分,仅仅为一种逻辑功能划分,实际实现时,可以有另外的划分方式,例如多个模块可以结合或者可以集成到另外一个系统,或一些特征可以忽略,或不执行。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.串行通信波特率误差容忍范围提升方法,其特征是,包括:
通过对发送设备的串行通信数据的接收,进行自动实时侦测下降沿与上升沿的脉冲宽度,得到当前接收设备与发送设备的波特率误差比值BR,基于比值BR对数据接收时的中间采样点进行修正,实时调整发送波特率时钟,主动适应发送设备的实际波特率,实现与发送设备的实际波特率时钟同步。
2.如权利要求1所述的方法,其特征是,通过对发送设备的串行通信数据的接收,进行自动实时侦测下降沿与上升沿的脉冲宽度,得到当前接收设备与发送设备的波特率误差比值BR,基于比值BR对数据接收时的中间采样点进行修正;具体步骤,包括:
对接收设备与发送设备的波特率时钟比值BR进行实时检测,接收设备接收发送设备发送过来的信号,并对接收信号进行过采样处理,将过采样处理后的数据进行存储;基于接收设备与发送设备的波特率时钟比值BR,得到波特率的相对误差,并基于相对误差对数据接收信号中的每一个数据位中间采样点的序号进行修正。
3.如权利要求1所述的方法,其特征是,实时调整发送波特率时钟,主动适应发送设备的实际波特率,实现与发送设备的实际波特率时钟同步;具体步骤包括:
接收设备利用修正后的中间采样点的序号作为地址位,将过采样处理后存储的数据进行端口读出,并将读出值进行位拼接运算,得到最终的串行数据接收值;接收设备在进行数据的发送时,通过实时调整发送波特率时钟,主动适应发送设备的波特率,实现与发送设备的波特率时钟同步,并在已经取得同步的波特率时钟信号下进行数据的发送。
4.如权利要求2所述的方法,其特征是,所述接收设备接收发送设备发送过来的信号,并对接收信号进行过采样处理,将过采样处理后的数据进行存储的具体步骤包括:
根据当前串行通信波特率和系统时钟频率,计算时钟分频因子;
根据计算得到的时钟分频因子的奇偶性,进行时钟分频:
如果为偶数就采用偶数分频的方法对系统时钟进行偶数分频;
如果为奇数就采用奇数分频的方法对系统时钟进行奇数分频,得到16倍过采样波特率时钟信号。
5.如权利要求2所述的方法,其特征是,所述对接收设备与发送设备的波特率时钟比值BR进行实时检测,具体步骤包括:
定义一个32位宽的计数存储寄存器,将计数值进行存储;其计数范围为第一个下降沿到第一个上升沿,通过计数值的范围判断参与计数的bit个数;接收设备调用除法器IP核得到接收设备与发送设备与的波特率时钟比值BR。
6.如权利要求2所述的方法,其特征是,对接收设备与发送设备的波特率时钟比值BR进行实时检测,得到波特率的相对误差,并基于相对误差对中间采样点的序号进行修正;是指:
接收设备通过接收设备与发送设备的波特率时钟比值BR,对每一个数据位的中间采样点的序号SAM_SEQ_MODIFY进行修正。
7.如权利要求3所述的方法,其特征是,接收设备利用修正后的中间采样点的序号作为地址位,将过采样处理后存储的数据进行端口读出,并将读出值进行位拼接运算,得到最终的串行数据接收值;具体步骤包括:
采样点的序号修正后,提取存储在RAM中的采样值进行位拼接运算,并将数值存储于接收数据FIFO中,设备状态重新变为空闲状态。
8.如权利要求3所述的方法,其特征是,接收设备利用修正后的中间采样点的序号作为地址位,将过采样处理后存储的数据进行端口读出,并将读出值进行位拼接运算,得到最终的串行数据接收值;具体步骤包括:
接收设备利用修正后的中间采样点序号作为地址位,将存储到RAM中的采样值进行端口读出,并将读出值执行位拼接运算,低地址位的值作为位拼接的低位、高地址位的值作为位拼接的高位,位拼接运算得到最终的串行数据接收值。
9.如权利要求3所述的方法,其特征是,接收设备在进行数据的发送时,通过实时调整发送波特率时钟,主动适应发送设备的波特率,实现与发送设备的波特率时钟同步,并在已经取得同步的波特率时钟信号下进行数据的发送,具体步骤包括:
发送设备波特率产生器根据其作为接收设备时所检测到的单个bit所对应的系统时钟个数来进行分频得到波特率时钟信号;
发送设备发送数据操作分为空闲、起始位、数据发送、奇偶校验位和停止位五种状态;
当发送设备无待发送数据时,处于空闲状态;当发送设备接收到发送指令时,发送设备由空闲状态转变为起始位状态,发送设备开始发送起始位;起始位发送结束后,发送设备由起始位状态转变为数据发送状态,发送设备开始进行数据位的发送;
数据位发送的过程中,先发送最低有效位LSB,最后发送最高有效位MSB;数据位发送结束后,根据数据格式是否包含奇偶校验位,若有先发送校验位再发送停止位,若没有直接进入停止位状态发送停止位。
10.串行通信波特率误差容忍范围提升系统,其特征是,包括:发送设备和接收设备;
所述接收设备通过对发送设备的串行通信数据的接收,进行自动实时侦测下降沿与上升沿的脉冲宽度,得到当前接收设备与发送设备的波特率误差比值BR,基于比值BR对数据接收时的中间采样点进行修正,实时调整发送波特率时钟,主动适应发送设备的实际波特率,实现与发送设备的实际波特率时钟同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010641606.9A CN111800249A (zh) | 2020-07-06 | 2020-07-06 | 串行通信波特率误差容忍范围提升方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010641606.9A CN111800249A (zh) | 2020-07-06 | 2020-07-06 | 串行通信波特率误差容忍范围提升方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111800249A true CN111800249A (zh) | 2020-10-20 |
Family
ID=72810300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010641606.9A Pending CN111800249A (zh) | 2020-07-06 | 2020-07-06 | 串行通信波特率误差容忍范围提升方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111800249A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112422363A (zh) * | 2020-10-27 | 2021-02-26 | 成都航空职业技术学院 | 异步串口通信波特率自动检测装置及其方法 |
CN112486887A (zh) * | 2020-12-07 | 2021-03-12 | 天津津航计算技术研究所 | 一种利用spi总线传输异步信号的方法及装置 |
CN112540641A (zh) * | 2020-10-29 | 2021-03-23 | 珠海格力电器股份有限公司 | 一种时钟精度修正方法、装置及存储介质 |
CN113517975A (zh) * | 2021-09-13 | 2021-10-19 | 天津飞旋科技股份有限公司 | 载波同步控制方法、系统、变流器设备及可读存储介质 |
CN113986801A (zh) * | 2021-09-28 | 2022-01-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种波特率生成方法、装置及存储介质 |
CN114338266A (zh) * | 2021-12-21 | 2022-04-12 | 珠海一微半导体股份有限公司 | 一种can控制器的波特率校准方法及校准电路 |
CN114840464A (zh) * | 2021-02-01 | 2022-08-02 | 武汉杰开科技有限公司 | 调整波特率的方法、电子设备及计算机存储介质 |
CN115412469A (zh) * | 2022-11-01 | 2022-11-29 | 深圳市航顺芯片技术研发有限公司 | 容差检测方法、计算机设备及可读存储介质 |
CN116760508A (zh) * | 2023-08-18 | 2023-09-15 | 荣耀终端有限公司 | 一种波特率设置方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5365547A (en) * | 1991-08-28 | 1994-11-15 | Frank Marinaro | 1X asynchronous data sampling clock for plus minus topology applications |
CN101299657A (zh) * | 2008-06-26 | 2008-11-05 | 上海交通大学 | 全数字接收机符号定时同步装置 |
US20120297233A1 (en) * | 2011-05-20 | 2012-11-22 | Texas Instruments Incorporated | Serial communications protocols |
CN105388780A (zh) * | 2015-06-10 | 2016-03-09 | 南京大全自动化科技有限公司 | 一种irig-b000码模拟装置 |
CN106528478A (zh) * | 2016-12-06 | 2017-03-22 | 天津北芯微科技有限公司 | 一种单总线异步串口通信系统及其通信方法 |
-
2020
- 2020-07-06 CN CN202010641606.9A patent/CN111800249A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5365547A (en) * | 1991-08-28 | 1994-11-15 | Frank Marinaro | 1X asynchronous data sampling clock for plus minus topology applications |
CN101299657A (zh) * | 2008-06-26 | 2008-11-05 | 上海交通大学 | 全数字接收机符号定时同步装置 |
US20120297233A1 (en) * | 2011-05-20 | 2012-11-22 | Texas Instruments Incorporated | Serial communications protocols |
CN105388780A (zh) * | 2015-06-10 | 2016-03-09 | 南京大全自动化科技有限公司 | 一种irig-b000码模拟装置 |
CN106528478A (zh) * | 2016-12-06 | 2017-03-22 | 天津北芯微科技有限公司 | 一种单总线异步串口通信系统及其通信方法 |
Non-Patent Citations (1)
Title |
---|
康磊: "《Verilog HDL数字系统设计 原理、实例及仿真》", 31 March 2012 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112422363A (zh) * | 2020-10-27 | 2021-02-26 | 成都航空职业技术学院 | 异步串口通信波特率自动检测装置及其方法 |
CN112540641A (zh) * | 2020-10-29 | 2021-03-23 | 珠海格力电器股份有限公司 | 一种时钟精度修正方法、装置及存储介质 |
CN112540641B (zh) * | 2020-10-29 | 2024-04-12 | 珠海格力电器股份有限公司 | 一种时钟精度修正方法、装置及存储介质 |
CN112486887A (zh) * | 2020-12-07 | 2021-03-12 | 天津津航计算技术研究所 | 一种利用spi总线传输异步信号的方法及装置 |
CN112486887B (zh) * | 2020-12-07 | 2023-06-30 | 天津津航计算技术研究所 | 一种利用spi总线传输异步信号的方法及装置 |
CN114840464A (zh) * | 2021-02-01 | 2022-08-02 | 武汉杰开科技有限公司 | 调整波特率的方法、电子设备及计算机存储介质 |
CN113517975A (zh) * | 2021-09-13 | 2021-10-19 | 天津飞旋科技股份有限公司 | 载波同步控制方法、系统、变流器设备及可读存储介质 |
CN113517975B (zh) * | 2021-09-13 | 2021-12-07 | 天津飞旋科技股份有限公司 | 载波同步控制方法、系统、变流器设备及可读存储介质 |
CN113986801B (zh) * | 2021-09-28 | 2024-02-13 | 山东云海国创云计算装备产业创新中心有限公司 | 一种波特率生成方法、装置及存储介质 |
CN113986801A (zh) * | 2021-09-28 | 2022-01-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种波特率生成方法、装置及存储介质 |
CN114338266A (zh) * | 2021-12-21 | 2022-04-12 | 珠海一微半导体股份有限公司 | 一种can控制器的波特率校准方法及校准电路 |
CN114338266B (zh) * | 2021-12-21 | 2024-02-23 | 珠海一微半导体股份有限公司 | 一种can控制器的波特率校准方法及校准电路 |
CN115412469A (zh) * | 2022-11-01 | 2022-11-29 | 深圳市航顺芯片技术研发有限公司 | 容差检测方法、计算机设备及可读存储介质 |
CN115412469B (zh) * | 2022-11-01 | 2023-03-24 | 深圳市航顺芯片技术研发有限公司 | 容差检测方法、计算机设备及可读存储介质 |
CN116760508B (zh) * | 2023-08-18 | 2023-11-07 | 荣耀终端有限公司 | 一种波特率设置方法及系统 |
CN116760508A (zh) * | 2023-08-18 | 2023-09-15 | 荣耀终端有限公司 | 一种波特率设置方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111800249A (zh) | 串行通信波特率误差容忍范围提升方法及系统 | |
US10841021B2 (en) | Circuit for calibrating baud rate and serial port chip | |
CN111737182B (zh) | 串行通信参数自动配置方法及系统 | |
US11552871B2 (en) | Receive-side timestamp accuracy | |
US8842793B2 (en) | Communication circuit and method of adjusting sampling clock signal | |
US11258630B2 (en) | Controller area network receiver | |
CN110908940B (zh) | 串口通讯参数调整的方法及终端设备 | |
CN1808915A (zh) | 移动通信系统的接收装置 | |
US20110026572A1 (en) | Baud rate error detection circuit and baud rate error detection method | |
JP2011234128A (ja) | シリアル通信用ボーレート検出装置およびシリアル通信用ボーレート補正装置ならびにシリアル通信用ボーレート検出方法 | |
US20160173295A1 (en) | device and measuring method for ascertaining the internal delay time of a can bus connection unit | |
KR20110096808A (ko) | 데이터 수신율을 개선하기 위한 수신 데이터 보정방법 및 그에 따른 수신 모뎀 회로 | |
CN102546084A (zh) | 异步串行通信数据接收时的抗干扰纠错采样系统和方法 | |
WO2020150187A1 (en) | Sampling point identification for low frequency asynchronous data capture | |
US9083505B2 (en) | Manchester code receiving circuit | |
CN111817810B (zh) | 时钟同步方法及无线网络设备、可读存储介质 | |
US20050156645A1 (en) | Arrangement for correcting the phase of a data sampling clock signal during a period of sampling data in a received signal | |
US8331427B2 (en) | Data processing apparatus | |
CN113630296A (zh) | 一种lvds传输延迟窗口自动测试方法及系统 | |
CN116633813A (zh) | 一种can总线的波特率自适应检测方法和系统 | |
CN110535621B (zh) | 一种串口通讯波特率校正装置及其校正方法 | |
JP2003273853A (ja) | 音声データ同期補正回路 | |
JP2005020471A (ja) | 調歩同期式通信回路 | |
WO2008038388A1 (fr) | Appareil récepteur de signaux et procédé de mise en forme d'ondes | |
KR20240023768A (ko) | 비동기 방식 통신 시스템의 보드 레이트 보정 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201020 |