基于FPGA的波特率自适应串口通信扩展装置及方法与流程

allin2024-06-13  82


基于fpga的波特率自适应串口通信扩展装置及方法
技术领域
1.本发明涉及串口通信技术领域,具体涉及基于fpga的波特率自适应串口通信扩展装置及方法。


背景技术:

2.串口通信是指单方向利用一跟数据线一位一位的进行数据传输,利用简单的线缆即可实现数据传输,设备简单,成本低,目前常用的串口通信方式及异步串行通信uart,uart以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位之间的时间间隔是固定的。数据传输速率用波特率来进行表示,即每秒钟传输的二进制位数,常用的波特率有2400bps、9600bps、51200bps、115200bps等。uart的一个字符一般包含起始位、数据位、校验位、停止位,起始位:先发出一个逻辑“0”信号,表示传输字符的开始;数据位:可以是5~8位逻辑“0”或、“1”,如ascii码(7位),扩展bcd码(8位),小端传输;校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验);停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平;空闲位:即uart字符传输之间的空闲状态,处于逻辑“1”状态。
3.目前电子行业中,进行串口通信接口的扩展主要通过专用asci芯片进行(asci:application specific intergrated circuits,即专用集成电路),专用asci芯片一般为并行接口或者高速串行接口,实现方案相对比较麻烦,不同的使用场景中需要采用不同的设计,并且一般的串行接口扩展设计没有采用波特率自适应设计,导致外界设备波特率变化时,该扩展装置需要通过硬件重新更改配置或者通过软件参数进行波特率修改,可用性大大降低。对于串行接口的波特率自适应技术,已有技术主要方法步骤为:利用一种较高采样率对输入信号进行采集,将采集后的数据进行缓存;检测所述串口接收数据线上接收的目标信号的特征参数,当特征参数满足预设条件时根据目标信号变化的宽度,确定第二种采样率,利用第二种采样率对目标信号进行采样,得到新的采样数据;利用第二种采样率对以及采样的数据进行重构,将重构后的数据与新采样的数据进行缓存;根据波特率与最小数据宽度的关系,确定缓存数据的疑似波特率;利用疑似波特率对缓存的数据进行解析;利用预设的波特率判决标准对解析后的数据进行判决,当所述解析后的数据满足预设的波特率判决标准时,确定所述疑似波特率为正确波特率。
4.因此,现有技术中一般通过专用asci芯片进行串口通信扩展,专用asci芯片一般为并行接口或者高速串行接口,实现方案相对比较麻烦,在不同的应用场景中,需要进行特殊设计,通用行不高,专用asic串口通信扩展芯片波特率一般通过内部时钟分频产生,时钟源由asci芯片外挂晶振提供,由于外接晶振时钟频率固定,因此其波特率只能是几个常用的固定值,不能满足有些特殊场景的应用;目前现有的串口波特率自适应技术逻辑上比较复杂,需要进行多次不同时钟频率的数据采样,对软件逻辑设计的时序要求较高,并且通过多次采样、多级数据缓存的方式,会造成波特率检测速度较慢,实时性不够高。
5.针对现有技术中的上述缺点,有必要提出一种基于fpga的串口通信扩展装置,并
且能够根据对外通信设备的波特率自适应调整自身波特率。


技术实现要素:

6.本发明所要解决的技术问题是现有技术一般通过专用asci芯片进行串口通信扩展,实现方案相对比较麻烦,专用asci芯片的串口波特率需要预先设置为固定值,不能适应不同的应用场景;而现有的串口波特率自适应技术逻辑上比较复杂,需要进行多次不同时钟频率的数据采样,对软件逻辑设计的时序要求较高,并且通过多次采样、多级数据缓存的方式,会造成波特率检测速度较慢,实时性不够高等问题。
7.本发明目的在于提供基于fpga的波特率自适应串口通信扩展装置及方法,该装置数据上行方向为一路总串口,数据下行方向为多路支串口,该装置将一路串口扩展到十路,该装置接收到总串口数据时,该装置自动识别总串口波特率,并解析接收串口数据,通过预先设计的帧格式,将总串口数据通过各个支串口输出,支串口的波特率根据总串口波特率自动设置;该装置接收到支串口数据时,该装置自动识别支串口波特率,并解析接收串口数据,通过预先设计的帧格式,将各个支串口数据合并后通过总串口发出。该装置逻辑部分通过fpga实现,电路简单,逻辑清晰,可移植性强,本发明主要适用于串口数量不够、波特率明确、波特率可能经常变化的应用环境中。
8.本发明通过下述技术方案实现:
9.第一方面,本发明提供了基于fpga的波特率自适应串口通信扩展装置,该装置数据上行方向为一路总串口,数据下行方向为多路支串口;
10.该装置包括该装置包括总路串口接口芯片、逻辑处理器fpga和多个支路串口接口芯片;所述总路串口接口芯片连接逻辑处理器fpga,所述逻辑处理器fpga与每个支路串口接口芯片均连接;所述总路串口接口芯片、支路串口接口芯片均具有数据接收和发送功能;
11.所述逻辑处理器fpga,用于接收所述总路串口接口芯片发送过来的总串口数据,采用自适应串口波特率计算法自动识别第一总串口波特率,并解析接收串口数据,通过预先设置的帧格式,将总串口数据通过各个第一支串口输出至对应的各个支路串口接口芯片;其中,第一支串口的波特率根据第一总串口波特率自动计算;
12.及用于接收多个所述支路串口接口芯片发送过来的支串口数据,采用自适应串口波特率计算法自动识别第二支串口波特率,并解析接收串口数据,通过预先设置的帧格式,将各个支串口数据合并后通过第二总串口发出至所述总路串口接口芯片。其中,第二总路串口的波特率设置为支路串口速率最大通道的波特率乘以实际接收数据的支路通道数。
13.其中,fpga:fild-programmable gate array,即现场可编程门阵列。
14.工作原理是:基于现有技术一般通过专用asci芯片进行串口通信扩展,实现方案相对比较麻烦,专用asci芯片的串口波特率需要预先设置为固定值,不能适应不同的应用场景;而现有的串口波特率自适应技术逻辑上比较复杂,需要进行多次不同时钟频率的数据采样,对软件逻辑设计的时序要求较高,并且通过多次采样、多级数据缓存的方式,会造成波特率检测速度较慢,实时性不够高等问题,
15.因此,本发明设计了基于fpga的波特率自适应串口通信扩展装置,该装置数据上行方向为一路总串口,数据下行方向为多路支串口,该装置将一路串口扩展到若干路,将若干路串口合并到一路。该装置接收所述总路串口接口芯片发送过来的总串口数据,采用自
适应串口波特率计算法自动识别第一总串口波特率,并解析接收串口数据,通过预先设置的帧格式,将总串口数据通过各个第一支串口输出至对应的各个支路串口接口芯片;其中,第一支串口的波特率根据第一总串口波特率自动计算;及该装置接收多个所述支路串口接口芯片发送过来的支串口数据,采用自适应串口波特率计算法自动识别第二支串口波特率,并解析接收串口数据,通过预先设置的帧格式,将各个支串口数据合并后通过第二总串口发出至所述总路串口接口芯片。
16.本发明不需要将串口波特率预先设置为固定值,而是可根据外界输入串行信号自动解析出输入串口数据波特率,并根据系统要求,fpga逻辑内部计算出得到输出串口数据波特率;同时本发明不需要进行多次不同时钟频率的数据采样,对软件逻辑设计的时序要求不高,仅仅在一个时钟下采样,且波特率检测速度较快,实时性高。另外,本发明中的串口波特率不限定与常见的标准波特率,可处理在最大波特率以内的连续变化的波特率。
17.本发明装置电路简单,逻辑清晰;本发明逻辑控制功能通过fpga实现,fpga采用硬件描述语言进行编程,可移植性强;本发明提供的串口通信扩展技术灵活性较高,可根据具体应用,增加或者减少扩展通道数;本发明提供的串口波特率自适应方法可以应用到多种串口通信系统中。本发明主要适用于串口数量不够、波特率明确、波特率可能经常变化的应用环境中。
18.进一步地,所述自适应串口波特率计算法,是根据外界输入串行信号自动解析出输入串口数据波特率,并根据该装置要求,通过逻辑处理器fpga计算出得到输出串口数据波特率。
19.进一步地,所述逻辑处理器fpga包括第一逻辑处理器和第二逻辑处理器;
20.第一逻辑处理器包括总路串口波特率判定模块、总路串口数据接收模块、总路串口数据接收缓存模块、第一总路支路数据交互模块、若干支路串口数据发送缓存模块和若干支路串口数据发送模块;
21.所述总路串口波特率判定模块接入所述总路串口接口芯片,总路串口波特率判定模块连接总路串口数据接收模块,总路串口波特率判定模块连接第一总路支路数据交互模块;所述总路串口数据接收模块接入所述总路串口接口芯片,总路串口数据接收模块连接总路串口数据接收缓存模块,总路串口数据接收缓存模块连接第一总路支路数据交互模块,第一总路支路数据交互模块连接若干支路串口数据发送缓存模块,每个支路串口数据发送缓存模块连接一个支路串口数据发送模块;各个所述支路串口数据发送模块连接对应的支路串口接口芯片;
22.总路串口波特率判定模块,用于通过采集所述总路串口接口芯片输入的总串口信号,解析得出输入的总串行信号的波特率;
23.总路串口数据接收模块,用于接收所述总路串口接口芯片输入的总串口信号,并对总串口信号中的串行数据进行串并转换,得到总路并行数据;
24.总路串口数据接收缓存模块,用于实现对接收所述总路并行数据的缓存;
25.第一总路支路数据交互模块,用于实现对缓存的所述总路并行数据到支路数据的分发;通过适当的时序处理规避总路和支路数据速度不匹配;避免总路和支路数据速度不匹配,造成数据的堵塞或者丢失;根据预设的数据格式及时序要求,通过波特率解析对应数据发送端的波特率;
26.支路串口数据发送缓存模块,用于实现发送输出串行数据的缓存;
27.支路串口数据发送模块,用于实现对外输出串行数据的并串转换。
28.进一步地,所述第二逻辑处理器包括若干支路串口波特率判定模块、若干支路串口数据接收模块、若干支路串口数据接收缓存模块、第二总路支路数据交互模块、总路串口数据发送缓存模块、总路串口数据发送模块;
29.每个所述支路串口波特率判定模块接入对应的一个支路串口接口芯片,支路串口波特率判定模块连接支路串口数据接收缓存模块,支路串口波特率判定模块连接第二总路支路数据交互模块;每个所述支路串口数据接收模块接入对应的一个支路串口接口芯片,每个支路串口数据接收模块连接对应的一个支路串口数据接收缓存模块;各个支路串口数据接收缓存模块均连接第二总路支路数据交互模块,第二总路支路数据交互模块连接总路串口数据发送缓存模块,总路串口数据发送缓存模块连接总路串口数据发送模块;
30.支路串口波特率判定模块,用于通过采集所述支路串口接口芯片输入的支串口信号,解析得出输入的支串行信号的波特率;
31.支路串口数据接收模块,用于接收所述支路串口接口芯片输入的支串口信号,并对支串口信号中的串行数据进行串并转换,得到支路并行数据;
32.支路串口数据接收缓存模块,用于实现对接收所述支路并行数据的缓存;
33.第二总路支路数据交互模块,用于实现对缓存的所述支路并行数据到总路数据的集合,通过适当的时序处理规避总路和支路数据速度不匹配;避免总路和支路数据速度不匹配,造成数据的堵塞或者丢失;根据预设的数据格式及时序要求,通过波特率解析对应数据发送端的波特率;
34.总路串口数据发送缓存模块,用于实现发送输出串行数据的缓存;
35.总路串口数据发送模块,用于实现对外输出串行数据的并串转换。
36.进一步地,所述总路串口波特率判定模块和支路串口波特率判定模块的均采用如下的判定过程(即所述总路串口波特率判定模块和支路串口波特率判定模块均采用自适应串口波特率计算法进行波特率判定):
37.通过fpga内部高速时钟对外界信号进行一次过采样,得到外界输入信号的信号边沿;并通过信号边沿间的高速时钟周期计算信号边沿的时间间隔,此时接收端采集到的数据波形相邻下降沿与上升沿的时间间隔即为串口传输数据周期;统计连续出现了若干个相邻下降沿与上升沿的时间间隔,通过若干个串口传输数据周期求平均值,得到串行信号的波特率。
38.进一步地,所述串行信号的波特率的计算过程为:
39.首次采集到信号下降沿,并使用计数器开始计算;
40.继续采集到信号上升沿,与首次信号下降沿之间作为一个时间间隔;
41.继续采集到下一个信号下降沿,并采用计数器计数一次,循环多次分别得到计数值;
42.将多次计数值采用对应个串口传输数据周期求平均值,得到串口传输数据周期;将所述串口传输数据周期求倒数,得到串口波特率。
43.进一步地,所述总路串口数据接收缓存模块、支路串口数据发送缓存模块、支路串口数据接收缓存模块、总路串口数据发送缓存模块均采用fpga中的block ram模块实现;
44.所述总路串口数据接收模块、支路串口数据接收模块均通过移位寄存器方式将串行数据转换为8位并行数据;
45.所述总路串口数据发送模块、支路串口数据发送模块通过移位寄存器的方式将8位并行数据转为单比特的串行数据。
46.进一步地,所述逻辑处理器fpga中第一支串口的波特率根据第一总串口波特率自动计算。
47.进一步地,述逻辑处理器fpga中第二总路串口的波特率设置为支路串口速率最大通道的波特率乘以实际接收数据的支路通道数。
48.第二方面,本发明又提供了基于fpga的波特率自适应串口通信扩展方法,该方法应用于所述的基于fpga的波特率自适应串口通信扩展装置;该方法包括:
49.接收外界输入串行信号,通过总路串口波特率判定模块解析出此时外界输入串行信号的波特率,通过所述波特率采集输入串行信号的有效数据,将串行数据转换为并行数据,并存入总路串口接收缓存中;根据预设的帧格式,进行数据帧拆分,将总路串口接收缓存中的并行数据下发到支路串口发送缓存中,并将各支路串口发送缓存中的数据同时转换为串行数据,及将各支路串行数据输出;以及
50.各支路串口接收到外界输入的串口信号,通过支路串口波特率判定模块解析出各支路串口输入信号的波特率,通过各自的波特率解析自身端口输入的数据,将串行数据转换为并行数据,并存入各支路串口接收缓存中;根据预设的帧格式,进行数据帧组合,将组合后的数据按照一定顺序送入总路串口发送缓存中同时转换为总串行数据,及将总串行数据输出。
51.本发明与现有技术相比,具有如下的优点和有益效果:
52.1、本发明不需要将串口波特率预先设置为固定值,而是可根据外界输入串行信号自动解析出输入串口数据波特率,并根据系统要求,fpga逻辑内部计算出得到输出串口数据波特率;
53.2、本发明不需要进行多次不同时钟频率的数据采样,对软件逻辑设计的时序要求不高,仅仅在一个时钟下采样,且波特率检测速度较快,实时性高。
54.3、本发明装置电路简单,逻辑清晰;本发明逻辑控制功能通过fpga实现,fpga采用硬件描述语言进行编程,可移植性强;本发明提供的串口通信扩展技术灵活性较高,可根据具体应用,增加或者减少扩展通道数;本发明提供的串口波特率自适应方法可以应用到多种串口通信系统中。本发明主要适用于串口数量不够、波特率明确、波特率可能经常变化的应用环境中。
55.4、本发明中的串口波特率不限定与常见的标准波特率,可处理在最大波特率以内的连续变化的波特率。
附图说明
56.此处所说明的附图用来提供对本发明实施例的进一步理解,构成本技术的一部分,并不构成对本发明实施例的限定。在附图中:
57.图1为本发明基于fpga的波特率自适应串口通信扩展装置的硬件原理图。
58.图2为本发明基于fpga的波特率自适应串口通信扩展装置的逻辑处理器fpga内部
逻辑框图。
59.图3为本发明总路串口波特率判定模块和支路串口波特率判定模块中串口波特率判定时序流程图。
60.图4为本发明基于fpga的波特率自适应串口通信扩展方法的流程图。
具体实施方式
61.在下文中,可在本发明的各种实施例中使用的术语“包括”或“可包括”指示所发明的功能、操作或元件的存在,并且不限制一个或更多个功能、操作或元件的增加。此外,如在本发明的各种实施例中所使用,术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
62.在本发明的各种实施例中,表述“或”或“a或/和b中的至少一个”包括同时列出的文字的任何组合或所有组合。例如,表述“a或b”或“a或/和b中的至少一个”可包括a、可包括b或可包括a和b二者。
63.在本发明的各种实施例中使用的表述(诸如“第一”、“第二”等)可修饰在各种实施例中的各种组成元件,不过可不限制相应组成元件。例如,以上表述并不限制所述元件的顺序和/或重要性。以上表述仅用于将一个元件与其它元件区别开的目的。例如,第一用户装置和第二用户装置指示不同用户装置,尽管二者都是用户装置。例如,在不脱离本发明的各种实施例的范围的情况下,第一元件可被称为第二元件,同样地,第二元件也可被称为第一元件。
64.应注意到:如果描述将一个组成元件“连接”到另一组成元件,则可将第一组成元件直接连接到第二组成元件,并且可在第一组成元件和第二组成元件之间“连接”第三组成元件。相反地,当将一个组成元件“直接连接”到另一组成元件时,可理解为在第一组成元件和第二组成元件之间不存在第三组成元件。
65.在本发明的各种实施例中使用的术语仅用于描述特定实施例的目的并且并非意在限制本发明的各种实施例。如在此所使用,单数形式意在也包括复数形式,除非上下文清楚地另有指示。除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
66.为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
67.实施例1
68.如图1至图3所示,本发明基于fpga的波特率自适应串口通信扩展装置,该装置数据上行方向为一路总串口,数据下行方向为多路支串口;本实施例中,示例装置将一路串口扩展到十路。
69.该装置包括该装置包括总路串口接口芯片、逻辑处理器fpga和多个支路串口接口芯片;所述总路串口接口芯片连接逻辑处理器fpga,所述逻辑处理器fpga与每个支路串口接口芯片均连接;所述总路串口接口芯片、支路串口接口芯片均具有数据接收和发送功能;
70.总路串口接口芯片、多个支路串口接口芯片,根据具体应用有所不同,本发明设计采用rs422电平转换芯片。逻辑处理器fpga选择xilinx公司的xc7a35t,总路串口接口芯片、支路串口接口芯片选择adi公司的adm2582,支路通道数本示例中为10通道,硬件原理图如下图1:
71.所述逻辑处理器fpga,用于接收所述总路串口接口芯片发送过来的总串口数据,采用自适应串口波特率计算法自动识别第一总串口波特率,并解析接收串口数据,通过预先设置的帧格式,将总串口数据通过各个第一支串口输出至对应的各个支路串口接口芯片;其中,第一支串口的波特率根据第一总串口波特率自动计算;
72.及用于接收多个所述支路串口接口芯片发送过来的支串口数据,采用自适应串口波特率计算法自动识别第二支串口波特率,并解析接收串口数据,通过预先设置的帧格式,将各个支串口数据合并后通过第二总串口发出至所述总路串口接口芯片。其中,第二总路串口的波特率设置为支路串口速率最大通道的波特率乘以实际接收数据的支路通道数。
73.其中,所述自适应串口波特率计算法,是根据外界输入串行信号自动解析出输入串口数据波特率,并根据该装置要求,通过逻辑处理器fpga计算出得到输出串口数据波特率。
74.本发明的逻辑部分通过逻辑处理器fpga内部逻辑编程实现,逻辑处理器fpga内部逻辑框图如下图2,图2按照数据接收和发送流向进行表示,具体如下:
75.所述逻辑处理器fpga包括第一逻辑处理器和第二逻辑处理器;
76.具体地:第一逻辑处理器包括总路串口波特率判定模块、总路串口数据接收模块、总路串口数据接收缓存模块、第一总路支路数据交互模块、若干支路串口数据发送缓存模块和若干支路串口数据发送模块;所述总路串口波特率判定模块接入所述总路串口接口芯片,总路串口波特率判定模块连接总路串口数据接收模块,总路串口波特率判定模块连接第一总路支路数据交互模块;所述总路串口数据接收模块接入所述总路串口接口芯片,总路串口数据接收模块连接总路串口数据接收缓存模块,总路串口数据接收缓存模块连接第一总路支路数据交互模块,第一总路支路数据交互模块连接若干支路串口数据发送缓存模块,每个支路串口数据发送缓存模块连接一个支路串口数据发送模块;各个所述支路串口数据发送模块连接对应的支路串口接口芯片;
77.所述总路串口波特率判定模块,用于通过采集所述总路串口接口芯片输入的总串口信号,解析得出输入的总串行信号的波特率;
78.所述总路串口数据接收模块,用于接收所述总路串口接口芯片输入的总串口信号,并对总串口信号中的串行数据进行串并转换,得到总路并行数据;
79.所述总路串口数据接收缓存模块,用于实现对接收所述总路并行数据的缓存;
80.所述第一总路支路数据交互模块,用于实现对缓存的所述总路并行数据到支路数据的分发;通过适当的时序处理规避总路和支路数据速度不匹配;避免总路和支路数据速度不匹配,造成数据的堵塞或者丢失;根据预设的数据格式及时序要求,通过波特率解析对应数据发送端的波特率;
81.所述支路串口数据发送缓存模块,用于实现发送输出串行数据的缓存;
82.所述支路串口数据发送模块,用于实现对外输出串行数据的并串转换。
83.其中,总路串口数据接收模块、若干支路串口数据发送模块中是串行数据,总路串口数据接收缓存模块、第一总路支路数据交互模块、若干支路串口数据发送缓存模块中是并行数据;
84.具体地:所述第二逻辑处理器包括若干支路串口波特率判定模块、若干支路串口数据接收模块、若干支路串口数据接收缓存模块、第二总路支路数据交互模块、总路串口数据发送缓存模块、总路串口数据发送模块;每个所述支路串口波特率判定模块接入对应的一个支路串口接口芯片,支路串口波特率判定模块连接支路串口数据接收缓存模块,支路串口波特率判定模块连接第二总路支路数据交互模块;每个所述支路串口数据接收模块接入对应的一个支路串口接口芯片,每个支路串口数据接收模块连接对应的一个支路串口数据接收缓存模块;各个支路串口数据接收缓存模块均连接第二总路支路数据交互模块,第二总路支路数据交互模块连接总路串口数据发送缓存模块,总路串口数据发送缓存模块连接总路串口数据发送模块;
85.所述支路串口波特率判定模块,用于通过采集所述支路串口接口芯片输入的支串口信号,解析得出输入的支串行信号的波特率;
86.所述支路串口数据接收模块,用于接收所述支路串口接口芯片输入的支串口信号,并对支串口信号中的串行数据进行串并转换,得到支路并行数据;
87.所述支路串口数据接收缓存模块,用于实现对接收所述支路并行数据的缓存;
88.所述第二总路支路数据交互模块,用于实现对缓存的所述支路并行数据到总路数据的集合,通过适当的时序处理规避总路和支路数据速度不匹配;避免总路和支路数据速度不匹配,造成数据的堵塞或者丢失;根据预设的数据格式及时序要求,通过波特率解析对应数据发送端的波特率;
89.所述总路串口数据发送缓存模块,用于实现发送输出串行数据的缓存;
90.所述总路串口数据发送模块,用于实现对外输出串行数据的并串转换。
91.其中,若干支路串口数据接收模块、总路串口数据发送模块中是串行数据,若干支路串口数据接收缓存模块、第二总路支路数据交互模块、总路串口数据发送缓存模块中是并行数据。
92.本实施例中,所述总路串口数据接收缓存模块、支路串口数据发送缓存模块、支路串口数据接收缓存模块、总路串口数据发送缓存模块均采用fpga中的block ram模块实现;
93.所述总路串口数据接收模块、支路串口数据接收模块均通过移位寄存器方式将串行数据转换为8位并行数据;
94.所述总路串口数据发送模块、支路串口数据发送模块通过移位寄存器的方式将8位并行数据转为单比特的串行数据。
95.具体地,所述总路串口波特率判定模块和支路串口波特率判定模块中串口波特率判定时序流程图如图3,通过与外界输入输出设备约定,串口数据帧第一个数据字符为波特率校验字符,本实例中,波特率校验字符为01010101,串口采取小端传输,及优先传输低位数据,因此接收到的字符为10101010,根据上面描述的串行数据通信格式,串行数据在空闲状态为高电平“1”,传输数据首先为起始位“0”,然后依次发送上次字符,合并后为“1010101010”,通过fpga内部高速时钟(比如100兆)对外界信号进行一次过采样,得到外界输入信号的信号边沿;并通过信号边沿间的高速时钟周期计算信号边沿的时间间隔,此时接收端采集到的数据波形相邻下降沿与上升沿的时间间隔即为串口传输数据周期;此处连续出现了4个相邻下降沿与上升沿的时间间隔,通过4个串口传输数据周期求平均值,最终通过转换即可得到串行信号的波特率。
96.本发明中采用标准uart字符按照目前最常见的1位起始位、8位数据位、1位校验位、1位停止位进行描述。
97.本实施例中,所述串行信号的波特率的计算过程为:
98.首次采集到信号下降沿,并使用计数器开始计算;
99.继续采集到信号上升沿,与首次信号下降沿之间作为一个时间间隔;
100.继续采集到下一个信号下降沿,并采用计数器计数一次,循环多次分别得到计数值;
101.将多次计数值采用对应个串口传输数据周期求平均值,得到串口传输数据周期;将所述串口传输数据周期求倒数,得到串口波特率。
102.以上方案,本发明设计中波特率通过fpga内部高速时钟信号采样进行确定,fpga内部的高速时钟信号相对于外界输入的串行信号速度高出很多,因此外界输入串行信号可以是波特率为任意在串行接口最大波特率以内的值,不受传统asci芯片波特率只能限制在几个固定值的约束,同时,由于fpga能够处理连续任意波特率,总路波特率分解到支路波特率及支路波特率合并为总路波特率也不会受到传统波特率固定值的约束。
103.工作原理是:本发明设计了基于fpga的波特率自适应串口通信扩展装置,该装置数据上行方向为一路总串口,数据下行方向为多路支串口,该装置将一路串口扩展到若干路,将若干路串口合并到一路。该装置接收所述总路串口接口芯片发送过来的总串口数据,采用自适应串口波特率计算法自动识别第一总串口波特率,并解析接收串口数据,通过预先设置的帧格式,将总串口数据通过各个第一支串口输出至对应的各个支路串口接口芯片;其中,第一支串口的波特率根据第一总串口波特率自动计算;及该装置接收多个所述支路串口接口芯片发送过来的支串口数据,采用自适应串口波特率计算法自动识别第二支串口波特率,并解析接收串口数据,通过预先设置的帧格式,将各个支串口数据合并后通过第二总串口发出至所述总路串口接口芯片。
104.本发明不需要将串口波特率预先设置为固定值,而是可根据外界输入串行信号自动解析出输入串口数据波特率,并根据系统要求,fpga逻辑内部计算出得到输出串口数据波特率;同时本发明不需要进行多次不同时钟频率的数据采样,对软件逻辑设计的时序要求不高,仅仅在一个时钟下采样,且波特率检测速度较快,实时性高。另外,本发明中的串口波特率不限定与常见的标准波特率,可处理在最大波特率以内的连续变化的波特率。
105.本发明装置电路简单,逻辑清晰;本发明逻辑控制功能通过fpga实现,fpga采用硬件描述语言进行编程,可移植性强;本发明提供的串口通信扩展技术灵活性较高,可根据具体应用,增加或者减少扩展通道数;本发明提供的串口波特率自适应方法可以应用到多种串口通信系统中。本发明主要适用于串口数量不够、波特率明确、波特率可能经常变化的应用环境中。
106.实施例2
107.如图4所示,本实施例与实施例1的区别在于,本实施例提供了基于fpga的波特率自适应串口通信扩展方法,该方法应用于实施例1所述的基于fpga的波特率自适应串口通信扩展装置;操作流程图如图4,整个操作流程分为(1)总路串口接收数据、支路串口发送数据;(2)支路串口接收数据、总路串口发送数据这两个数据流向进行说明:
108.该方法包括:
109.(1)总路串口接收数据、支路串口发送数据:接收外界输入串行信号,通过总路串口波特率判定模块解析出此时外界输入串行信号的波特率,通过所述波特率采集输入串行信号的有效数据,将串行数据转换为并行数据,并存入总路串口接收缓存中;根据预设的帧格式,进行数据帧拆分,将总路串口接收缓存中的并行数据下发到支路串口发送缓存中,并将各支路串口发送缓存中的数据同时转换为串行数据,及将各支路串行数据输出;
110.本实例中,1路总路串口,10路支路串口,总路串口接收缓存中的数据依照先后顺序依次送入10个支路串口的发送缓存,将10个支路串口发送缓存中的数据同时转换为串行数据发出设备,并且,支路串口发送数据的波特率根据外界输入的总路串口解析得到的波特率确定,本实例中,支路串口发送数据波特率为总路串口解析波特率的1/10;保证总路和支路带宽一致。
111.(2)支路串口接收数据、总路串口发送数据:各支路串口接收到外界输入的串口信号,通过支路串口波特率判定模块解析出各支路串口输入信号的波特率,通过各自的波特率解析自身端口输入的数据,将串行数据转换为并行数据,并存入各支路串口接收缓存中;根据预设的帧格式,进行数据帧组合,将组合后的数据按照一定顺序送入总路串口发送缓存中同时转换为总串行数据,及将总串行数据输出。
112.本实施例中,为了保证总路串口能够及时将支路串口接收的数据发送出去,避免形成数据堵塞,总路串口的波特率设置为支路串口速率最大通道的波特率乘以实际接收数据的支路通道数。
113.所述总路串口波特率判定模块、支路串口波特率判定模块均采用实施例1中的串口波特率自适应计算法进行计算。
114.本发明不需要将串口波特率预先设置为固定值,而是可根据外界输入串行信号自动解析出输入串口数据波特率,并根据系统要求,fpga逻辑内部计算出得到输出串口数据波特率;同时本发明不需要进行多次不同时钟频率的数据采样,对软件逻辑设计的时序要求不高,仅仅在一个时钟下采样,且波特率检测速度较快,实时性高。另外,本发明中的串口波特率不限定与常见的标准波特率,可处理在最大波特率以内的连续变化的波特率。
115.本发明逻辑控制功能通过fpga实现,fpga采用硬件描述语言进行编程,可移植性强;本发明提供的串口通信扩展技术灵活性较高,可根据具体应用,增加或者减少扩展通道数;本发明提供的串口波特率自适应计算法可以应用到多种串口通信系统中。本发明主要适用于串口数量不够、波特率明确、波特率可能经常变化的应用环境中。
116.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.基于fpga的波特率自适应串口通信扩展装置,其特征在于,该装置包括总路串口接口芯片、逻辑处理器fpga和多个支路串口接口芯片;所述总路串口接口芯片连接逻辑处理器fpga,所述逻辑处理器fpga与每个支路串口接口芯片均连接;所述总路串口接口芯片、支路串口接口芯片均具有数据接收和发送功能;所述逻辑处理器fpga,用于接收所述总路串口接口芯片发送过来的总串口数据,采用自适应串口波特率计算法自动识别第一总串口波特率,并解析接收串口数据,通过预先设置的帧格式,将总串口数据通过各个第一支串口输出至对应的各个支路串口接口芯片;及用于接收多个所述支路串口接口芯片发送过来的支串口数据,采用自适应串口波特率计算法自动识别第二支串口波特率,并解析接收串口数据,通过预先设置的帧格式,将各个支串口数据合并后通过第二总串口发出至所述总路串口接口芯片。2.根据权利要求1所述的基于fpga的波特率自适应串口通信扩展装置,其特征在于,所述自适应串口波特率计算法,是根据外界输入串行信号自动解析出输入串口数据波特率,并根据该装置要求,通过逻辑处理器fpga计算出得到输出串口数据波特率。3.根据权利要求1所述的基于fpga的波特率自适应串口通信扩展装置,其特征在于,所述逻辑处理器fpga包括第一逻辑处理器和第二逻辑处理器;第一逻辑处理器包括总路串口波特率判定模块、总路串口数据接收模块、总路串口数据接收缓存模块、第一总路支路数据交互模块、若干支路串口数据发送缓存模块和若干支路串口数据发送模块;总路串口波特率判定模块,用于通过采集所述总路串口接口芯片输入的总串口信号,解析得出输入的总串行信号的波特率;总路串口数据接收模块,用于接收所述总路串口接口芯片输入的总串口信号,并对总串口信号中的串行数据进行串并转换,得到总路并行数据;总路串口数据接收缓存模块,用于实现对接收所述总路并行数据的缓存;第一总路支路数据交互模块,用于实现对缓存的所述总路并行数据到支路数据的分发;通过时序处理规避总路和支路数据速度不匹配;根据预设的数据格式及时序要求,通过波特率解析对应数据发送端的波特率;支路串口数据发送缓存模块,用于实现发送输出串行数据的缓存;支路串口数据发送模块,用于实现对外输出串行数据的并串转换。4.根据权利要求3所述的基于fpga的波特率自适应串口通信扩展装置,其特征在于,所述第二逻辑处理器包括若干支路串口波特率判定模块、若干支路串口数据接收模块、若干支路串口数据接收缓存模块、第二总路支路数据交互模块、总路串口数据发送缓存模块、总路串口数据发送模块;支路串口波特率判定模块,用于通过采集所述支路串口接口芯片输入的支串口信号,解析得出输入的支串行信号的波特率;支路串口数据接收模块,用于接收所述支路串口接口芯片输入的支串口信号,并对支串口信号中的串行数据进行串并转换,得到支路并行数据;支路串口数据接收缓存模块,用于实现对接收所述支路并行数据的缓存;第二总路支路数据交互模块,用于实现对缓存的所述支路并行数据到总路数据的集合,通过时序处理规避总路和支路数据速度不匹配;根据预设的数据格式及时序要求,通过
波特率解析对应数据发送端的波特率;总路串口数据发送缓存模块,用于实现发送输出串行数据的缓存;总路串口数据发送模块,用于实现对外输出串行数据的并串转换。5.根据权利要求4所述的基于fpga的波特率自适应串口通信扩展装置,其特征在于,所述总路串口波特率判定模块和支路串口波特率判定模块的均采用如下的判定过程:通过fpga内部高速时钟对外界信号进行一次过采样,得到外界输入信号的信号边沿;并通过信号边沿间的高速时钟周期计算信号边沿的时间间隔;统计连续出现了若干个相邻下降沿与上升沿的时间间隔,通过若干个串口传输数据周期求平均值,得到串行信号的波特率。6.根据权利要求5所述的基于fpga的波特率自适应串口通信扩展装置,其特征在于,所述串行信号的波特率的计算过程为:首次采集到信号下降沿,并使用计数器开始计算;继续采集到信号上升沿,与首次信号下降沿之间作为一个时间间隔;继续采集到下一个信号下降沿,并采用计数器计数一次,循环多次分别得到计数值;将多次计数值采用对应个串口传输数据周期求平均值,得到串口传输数据周期;将所述串口传输数据周期求倒数,得到串口波特率。7.根据权利要求4所述的基于fpga的波特率自适应串口通信扩展装置,其特征在于,所述总路串口数据接收缓存模块、支路串口数据发送缓存模块、支路串口数据接收缓存模块、总路串口数据发送缓存模块均采用fpga中的block ram模块实现;所述总路串口数据接收模块、支路串口数据接收模块均通过移位寄存器方式将串行数据转换为8位并行数据;所述总路串口数据发送模块、支路串口数据发送模块通过移位寄存器的方式将8位并行数据转为单比特的串行数据。8.根据权利要求1所述的基于fpga的波特率自适应串口通信扩展装置,其特征在于,所述逻辑处理器fpga中第一支串口的波特率根据第一总串口波特率自动计算。9.根据权利要求1所述的基于fpga的波特率自适应串口通信扩展装置,其特征在于,述逻辑处理器fpga中第二总路串口的波特率设置为支路串口速率最大通道的波特率乘以实际接收数据的支路通道数。10.基于fpga的波特率自适应串口通信扩展方法,其特征在于,该方法应用于如权利要求1至9中任一所述的基于fpga的波特率自适应串口通信扩展装置;包括:接收外界输入串行信号,通过总路串口波特率判定模块解析出此时外界输入串行信号的波特率,通过所述波特率采集输入串行信号的有效数据,将串行数据转换为并行数据,并存入总路串口接收缓存中;根据预设的帧格式,进行数据帧拆分,将总路串口接收缓存中的并行数据下发到支路串口发送缓存中,并将各支路串口发送缓存中的数据同时转换为串行数据,及将各支路串行数据输出;以及各支路串口接收到外界输入的串口信号,通过支路串口波特率判定模块解析出各支路串口输入信号的波特率,通过各自的波特率解析自身端口输入的数据,将串行数据转换为并行数据,并存入各支路串口接收缓存中;根据预设的帧格式,进行数据帧组合,将组合后的数据按照一定顺序送入总路串口发送缓存中同时转换为总串行数据,及将总串行数据输出。

技术总结
本发明公开了基于FPGA的波特率自适应串口通信扩展装置及方法,该装置包括总路串口接口芯片、逻辑处理器FPGA和多个支路串口接口芯片;逻辑处理器FPGA,用于接收总路串口接口芯片发送过来的总串口数据,采用自适应串口波特率计算法自动识别第一总串口波特率,并解析接收串口数据,通过预先设置的帧格式,将总串口数据通过各个第一支串口输出;及接收多个支路串口接口芯片发送过来的支串口数据,采用上述同样的计算法自动识别第二支串口波特率,并解析接收串口数据,通过预先设置的帧格式,将各个支串口数据合并后通过第二总串口发出。本发明电路简单,适用于串口数量不够、波特率明确、波特率可能经常变化的应用环境中。波特率可能经常变化的应用环境中。波特率可能经常变化的应用环境中。


技术研发人员:蒲永材 孙梧雨 张雄林 王文俊 刘杰 谭晟吉 李彦平 邹佳鑫 柏森洋 尹得智
受保护的技术使用者:中国兵器装备集团自动化研究所有限公司
技术研发日:2022.04.07
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-14466.html

最新回复(0)