一种串口波特率自适应系统和方法与流程

文档序号:11582598阅读:473来源:国知局
一种串口波特率自适应系统和方法与流程

本发明涉及串口通信技术领域,尤其涉及一种串口波特率自适应系统和方法。



背景技术:

现如今串口(rs232,rs485等)控制是一种方便、高效的控制方式,大量应用于多主机通信,以及人机控制接口。而串口通信需要发送和接收传输速率一致,才能保证数据的正确传输,所以在发送和接收时需要进行波特率匹配,现在一般的做法是提前预知发送端波特率,接收端固定接收;或者提前预知接收端需要的波特率,用户用指定的波特率发送,这样操作麻烦,且拓展性差,容易由于疏忽导致数据异常。



技术实现要素:

本发明的目的是针对上述现有技术存在的缺陷,提供一种串口波特率自适应系统和方法。

本发明提供的串口波特率自适应系统包括:缓存模块、波特率解析模块、第一串口接收模块、串口发送模块。

串口电平缓存模块,用于实时接收并缓存串口电平信号,输出延迟的串口电平信号;

波特率解析模块,用于实时对缓存的串口电平信号进行波特率解析,解析出串口电平信号的最小脉宽,根据该最小脉宽得出串口的波特率;向串口电平缓存模块发送输出延迟的串口电平信号的使能指令;

串口接收模块,用于根据波特率解析模块实时解析的波特率接收延迟的串口电平信号,得出串口数据;

缓存速度匹配模块,用于匹配串口接收模块和串口发送模块的串口波特率;

串口发送模块,用于发送串口电平信号;

所述系统还包括滤波器,用于在串口电平缓存模块接收串口电平信号之前滤除串口电平信号的毛刺。

所述串口接收模块还包括串口解析模块,用于根据解析的波特率对串口数据进行解析,得出串口数据;所述串口发送模块还包括波特率转换模块,用于转换串口数据波特率为指定波特率,以串口电平信号的形式发送出去。

所述波特率解析模块通过最小公倍数法计算串口电平信号的最小脉宽。

所述串口电平缓存模块为fifo缓存方式。

所述波特率解析模块还包括根据一定的时机进行波特率解析,所述时机包括:串口电平缓存模块接收到5个或以上的正常串口电平信号的跳变电平。

本发明提供的串口波特率自适应方法,包括以下步骤:

步骤s100:滤除串口电平信号的毛刺;

步骤s101:实时接收并缓存串口电平信号;

步骤s102:实时接收并缓存串口电平信号;

步骤s103:当串口电平缓存模块接收到5个或以上的正常串口电平信号的跳变电平时,对缓存的串口电平信号进行波特率解析,解析出串口电平信号的最小脉宽,根据该最小脉宽得出串口的波特率;向串口电平缓存模块发送延迟输出串口电平的使能指令;

步骤s104:根据波特率解析模块实时解析的波特率接收延迟的串口电平信号,得出串口数据;

步骤s105:匹配串口接收模块和串口发送模块的波特率;

步骤s106:转换串口数据波特率为指定波特率,向外发送串口电平信号。

所述步骤s104中得出串口数据具体包括:根据解析的波特率对串口数据进行解析,得出串口数据。

所述步骤s103中查找串口电平信号的最小脉宽具体包括:通过最小公倍数法计算串口电平信号的最小脉宽。

所述步骤s101中实时接收并缓存串口电平信号的缓存方式为fifo。

与现有技术相比,本发明可实时解析串口电平波特率,并解析出串口数据,无提预知发送端波特率,接收端固定接收,使用户传输串口数据操作更简便。本发明不需要通过固定的数据帧头来识别波特率,通过严格的时序逻辑和缓存控制,防止了波特率识别过程中数据的丢失。此外,本发明可直接解析出标准波特率,波特率解析准确率高,资源消耗低,可实现帧同步和速度匹配,完全还原实时数据,具有低延迟,拓展性强,鲁棒性好。

附图说明

图1是本发明串口波特率自适应系统功能模块图;

图2是本发明多机总线单向控制单一设备的示例图;

图3是本发明多机双向通信的示例图;

图4是本发明串口波特率自适应方法的流程图;

图5是本发明解析并得出串口数据的时序逻辑控制流程图。

具体实施方式

下面结合附图和实施例对发明进行详细的说明。

如图1所示,本发明提供的串口波特率自适应系统包括:滤波器、缓存模块、波特率解析模块、第一串口接收模块、串口发送模块。

滤波器,用于在串口电平缓存模块接收串口电平信号之前滤除串口电平信号的毛刺;

串口电平缓存模块,用于实时接收并缓存串口电平信号,输出延迟的串口电平信号;

波特率解析模块,用于实时对缓存的串口电平信号进行波特率解析,查找串口电平信号的最小脉宽,根据该时长得出串口的波特率;向串口电平缓存模块发送延迟输出串口电平的使能指令;

串口接收模块,用于根据波特率解析模块实时解析的波特率接收延迟的串口电平信号,得出串口数据;

缓存速度匹配模块,用于匹配串口接收模块和串口发送模块的串口波特率;

串口发送模块,用于发送串口电平信号。其中,串口发送模块还包括波特率转换模块,用于转换串口数据波特率为指定波特率,以串口电平信号的形式发送出去。

本发明中,滤波器对接收的任一标准波特率(如:1200、2400、4800、9600、19200、38400、115200等)的串口信号进行一定频率范围的滤波处理,消除信号波上抖动的毛刺信号,以消除毛刺信号对于后续对于串口信号波特率识别解析的影响。

串口信号进行滤波处理后以先进先出(fifo)的方式在串口电平缓存模块进行实时缓存,波特率解析模块实时对缓存的串口电平信号进行波特率解析,通过最小公倍数法计算串口电平信号的最小脉宽,根据该时长计算得出串口的波特率。解析后的串口电平数据依然缓存在串口电平缓存模块。其中,波特率解析模块根据一定的时机进行波特率解析,所述时机为:串口电平缓存模块接收到5个或以上的正常串口电平信号的跳变电平。

波特率解析模块解析出波特率后向串口电平缓存模块发送延迟输出串口电平的使能指令,串口电平缓存模块以fifo的工作方式输出延迟的串口电平信号rx_delay。通过这种控制方式,可保证数据在进行波特率解析的时候缓存不被丢失。

串口接收模块根据波特率解析模块实时解析的波特率接收延迟的串口电平信号即rx_delay信号,并通过串口接收模块的串口解析模块根据解析的波特率对串口数据进行解析,得出串口数据rx_data[7:0]。此时,串口数据rx_data[7:0]可以转换成其他数据格式进行传输出去。

缓存速度匹配模块匹配串口接收模块和串口发送模块的串口波特率,使串口数据得以正确的串口发送出去。

图2为本发明多机总线单向控制单一设备的一个示例图,多个串口以不同波特率向本发明的系统发送串口电平信号,经过本系统识别解析出波特率及串口数据后,将其转换波特率以指定的波特率向被控设备发送。

图3为本发明多机双向通信的一个示例图,多个串口以不同波特率向系统发送串口电平信号,经过识别解析出波特率及串口数据后,发送给分发器,分发器将不同串口数据分发至各主机,串口数据发送至各主机前通过波特率转换,以指定的波特率向主机发送出。

由于实际应用中,算法由fpga(或cpld)实现,资源相对敏感,很多在cpu上的算法需要进行变通才能得以实现,例如求最小脉宽一般采用的是碾转求余法,这在普通无硬件求余模块的fpga上资源的消耗是巨大的,本发明根据串口信号的特性采用减法,减少了系统资源的消耗。

波特率误差的适应性一般由于设备自身或者线路传输的原因,串口信号会发生畸变,对于检测到的脉宽t有:

所以对于波特率fb,由检测出的脉宽t、实际电平包含的位数n和信号畸变差三个参数共同决定。本发明能消除畸变偏差,在接收到5个或以上的正常串口电平信号的跳变电平时解析波特率,即经过至少5次采样来确定波特率,经证明,经过5次以上采样一定能确定标准波特率,而非疑似波特率,保证了准确率的同时也省去了判断疑似波特率是否为标准波特率的步骤,提高了效率,节省了一定的系统资源。

本发明能进行输入端数据帧的分离,并实时根据不同帧的数据进行各自解析,这样能将多个不同波特率的串口源通过线与方式连接到总线上,输出端即串口发送模块能按设定的波特率分离输出,这样使用者不必考虑各个设备波特率兼容的问题。本发明将串口速度匹配,对于前端高速的信号,转变为低速串口信号时,可保证数据的缓存输出。

如图4所示,本发明还提供了一种串口波特率自适应方法,具体包括以下步骤:

步骤s100:滤除串口电平信号的毛刺;

步骤s101:实时接收并以fifo方式缓存串口电平信号;

步骤s102:当串口电平缓存模块接收到5个或以上的正常串口电平信号的跳变电平时,对缓存的串口电平信号进行波特率解析,通过最小公倍数法解析计算出串口电平信号的最小脉宽,根据该最小脉宽得出串口的波特率;向串口电平缓存模块发送延迟输出串口电平的使能指令;

步骤s103:根据实时解析的波特率接收延迟的串口电平信号,根据解析的波特率对串口数据进行解析,得出串口数据;

步骤s104:匹配串口接收模块和串口发送模块的波特率;

步骤s105:转换串口数据波特率为指定波特率,向外发送串口电平信号。

其中,步骤s104中得出的串口数据可转换成其他数据形式进行传输。

下面从具体的时序逻辑控制来对以上步骤中解析得出串口数据进行进一步说明,如图5所示,具体包括以下步骤:

步骤s200:初始化待系统稳定,等待串口空闲;

步骤s210:判断串口是否空闲,若是则执行下一步骤,否则继续等待串口空闲;

步骤s220:判断是否收到串口波形信号的起始位,若是,则进行下一步骤,否则继续等待串口波形信号起始位的到来;

步骤s230:对电平时间进行计数;

步骤s240:判断串口电平是否跳变,若是,则执行下一步骤,否则继续电平时间计数;

步骤s250:缓存计数,并对计数器清零;

步骤s260:判断电平跳变次数是否达到5次或串口是否空闲,若以上条件均未达到,则返回步骤s230,若达到则执行下一步骤;

步骤s270:对缓存的串口电平信号进行波特率解析;

步骤s280:生成延迟的串口电平信号;

步骤s290:根据实时解析的波特率接收延迟的串口电平信号,根据解析的波特率对串口数据进行解析,得出串口数据,并向外发送。

本发明可实时解析串口电平波特率,并解析出串口数据,无提预知发送端波特率,接收端固定接收,使用户传输串口数据操作更简便。本发明不需要通过固定的数据帧头来识别波特率,通过严格的逻辑和缓存控制,防止了波特率识别过程中数据的丢失。此外,本发明可直接解析出标准波特率,准确率高,系统资源消耗低,可实现帧同步和速度匹配,完全还原实时数据,具有低延迟,拓展性强,鲁棒性好。

上述实施例仅用于说明本发明的具体实施方式。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和变化,这些变形和变化都应属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1