一种面向智能物联的同步串行大数据可靠传输方法与流程

文档序号:14676940发布日期:2018-06-12 21:37阅读:171来源:国知局

本发明属于电子工程和计算机科学领域,具体涉及一种面向智能物联的同步串行大数据可靠传输方法。



背景技术:

随着信息技术和电子技术的发展,智能制造领域中有很多新型概念被提出,特别是国家战略“中国制造2025”的提出,使智能制造成为当代中国的热点名词。大数据、云计算、物联网等都已成为目前理论研究和工业制造的研究热点。这些研究都依赖于数据采集、数据传输、数据处理等技术。作为一种常用的通讯方式,同步串行数据传输在智能制造底层更是很多传感设备的数据传输方式。随着信息量的增大,人们对数据传输的效率、可靠性也随之增加,同步串行数据传输方法也面临着新的挑战。在智能制造的底层对现场传感设备、执行设备,特别是高速运转的设备进行实时监控时,为了能保证设备的正常运行,需要采集大量数据。例如对机床数据的采集,包括状态监控需要采集铣削参数、铣削扭矩等过程状态信号;错误检测需要采集轴柄等接口产生的固有误差、热膨胀产生的随机误差、主缸偏心产生的外部误差。上层的设备需要完成数据处理,包括数据压缩、滤波、融合、计算分析等,并将指令传输下去。这都依赖于数据的高效、可靠传输。目前基于同步串行的数据传输方式大量应用在智能制造底层,但这些传输方式又主要运行在通用处理器上。然而数据采样会随着数据量的增加出现偏差,从而造成数据传输过程中出现丢数、误码等情况,使上层设备就可能对机床状态进行误判,机床可能无法正常运行甚至出现故障。因此,高效、可靠的面向智能物联的同步串行数据传输方法就尤为重要。FPGA体积小、集成度高、速度快、并行处理、可重构,为制造现场数据的可靠采集、处理、交换与传输提供了优势,所以基于FPGA和硬件描述语言(HDL)的同步串行数据可靠传输的研究具有很大的实际意义,因此,本发明提出一种面向智能物联的同步串行大数据可靠传输方法,该方法利用VHDL语言设计并在FPGA上实现。



技术实现要素:

本发明要解决的技术问题为:提供一种面向智能物联的同步串行大数据可靠传输方法,实现基于FPGA和VHDL硬件描述语言的同步串行数据可靠传输,不仅能够增强用户代码设计的灵活性、自主性、集成度,也能降低成本和设计周期。

本发明解决其技术问题是采取以下技术方案实现的:一种面向智能物联的同步串行大数据可靠传输方法,该方法利用VHDL语言设计并在FPGA上实现,包括以下步骤:

步骤一:同步串行数据接收模块,包括一个位宽为1bit的一级缓存BRAM、一个位宽为1bit的二级缓存BRAM,具体实现如下:

①设FPGA主时钟为clk,设FPGA同步串行时钟接收管脚为rx_clk,在clk的驱动下检测rx_clk状态,当rx_clk产生上升沿时,置变量rx_true为高电平;

②在clk的驱动下,当rx_true为低电平时,计时模块timer工作,当timer达到10毫秒时,timer复位,同时复位一级缓存BRAM的地址addr_BRAM_1为0,并跳转到④;当timer没有达到10毫秒且rx_true为高电平,timer复位,并跳转到③;

③在clk的驱动下,将FPGA同步串行数据接收管脚rx_data上的值保存进一级缓存BRAM,同时使一级缓存BRAM的地址addr_BRAM_1加1,变量bit_BRAM_1加1,置变量rx_true为低电平,并返回①;

④在clk的驱动下,通过控制addr_BRAM_1的自加1完成依次读取一级缓存BRAM中的8个数据,将这8个数据按照从低到高的顺序组合成一个字节数据;

⑤当该字节为十六进制7E时,说明检测到一个帧头,变量F_Head_cnt加1,并跳转到⑥,否则,将addr_BRAM_1自减6,并跳转到⑥;

⑥在clk的驱动下,当F_Head_cnt大于等于1时,说明一级缓存中的帧头全部检测完毕,记录此时的一级缓存BRAM地址,记作addr_BRAM_1_F_start,跳转到⑦;否则:当addr_BRAM_1大于(bit_BRAM_1减9)时,说明一级缓存BRAM中没有帧头,一级缓存BRAM中的数据无效,此时清空一级缓存BRAM,并跳转到①;当addr_BRAM_1小于等于(bit_BRAM_1减9)时,跳转到④;

⑦在clk的驱动下,将addr_BRAM_1赋值为(bit_BRAM_1减8),然后通过控制addr_BRAM_1的自加1完成依次读取一级缓存BRAM中的8个数据,将这8个数据按照从低到高的顺序组合成一个字节数据;

⑧当该字节为十六进制7E时,说明检测到一个帧尾,变量F_Tail_cnt加1,并跳转到⑨,否则,将addr_BRAM_1自减8,并跳转到⑨;

⑨在clk的驱动下,当F_Tail_cnt大于等于1时,说明一级缓存中的帧尾全部检测完毕,记录此时的一级缓存BRAM地址,记作addr_BRAM_1_F_stop,此时跳转到⑩;否则:当addr_BRAM_1小于1时,说明一级缓存BRAM中没有帧尾,一级缓存BRAM中的数据无效,此时清空一级缓存BRAM,并跳转到①;当addr_BRAM_1大于等于1时,跳转到⑦;

⑩在clk的驱动下,依次读取一级缓存BRAM中从addr_BRAM_1_F_start到addr_BRAM_1_F_stop的数据,该数据即为一级缓存BRAM的净荷数据,当连续读取到5个高电平时,则跳过下一个地址,然后接着读取,并保存进二级缓存BRAM;当一级缓存BRAM中的净荷数据全部搬移到二级缓存BRAM中后,同步串行数据接收完毕,二级缓存BRAM中的数据即为同步串行接收到的数据,返回①;

步骤二:同步串行发送时钟产生模块,具体实现如下:

①设变量tx_clk_cnt_1和tx_clk_cnt_2,设同步串行发送时钟为tx_clk_band,令tx_clk_cnt_1=clk/(tx_clk_band×2),令tx_clk_cnt_2=clk/tx_clk_band;

②设变量tx_clk_cnt_3,并赋初始值0,同时在clk的驱动下,tx_clk_cnt_3自加1;

③在clk的驱动下,当tx_clk_cnt_3等于0时,将FPGA同步串行时钟发送管脚tx_clk置低电平;

④在clk的驱动下,当tx_clk_cnt_3等于tx_clk_cnt_1时,将FPGA同步串行时钟发送管脚tx_clk置高电平;

⑤在clk的驱动下,当tx_clk_cnt_3等于tx_clk_cnt_2时,将tx_clk_cnt_3复位为0,返回③;

步骤三:同步串行数据发送模块,具体实现如下:

①在clk的驱动下,每当tx_clk_cnt_3等于0时,依次将待发送的数据按照bit位从低到高的顺序赋值给FPGA同步串行数据发送管脚tx_data;

②在clk的驱动下,检测FPGA同步串行数据发送管脚tx_data是否存在连续5个高电平,如果存在就插入一个低电平,并赋值给FPGA同步串行数据发送管脚tx_data,返回①。

本发明与现有技术相比的优点在于:

(1)本发明采用硬件描述语言与FPGA结合,从同步串行传输的底层协议出发,发明的方法能够提高智能物联大数据量同步串行传输的可靠性,不仅能够增强用户代码设计的灵活性、自主性、集成度,也能降低成本和设计周期。

(2)本发明中的同步串行时钟接收管脚的上升沿检测具备更加精准的检测效率,同时本发明中的同步串行发送时钟产生模块能够产生更加灵活的和精准的同步串行时钟信号。

附图说明

图1为本发明的结构框图。

具体实施方式

下面结合附图对本发明做进一步详细的描述。

本发明涉及一种面向智能物联的同步串行大数据可靠传输方法,该方法利用VHDL语言设计并在FPGA上实现。本发明的结构框图如图1所示,具体实施方式如下:

(1)同步串行数据接收模块,包括一个位宽为1bit的一级缓存BRAM、一个位宽为1bit的二级缓存BRAM,具体实现如下:

①设FPGA主时钟为clk,设FPGA同步串行时钟接收管脚为rx_clk,在clk的驱动下检测rx_clk状态,当rx_clk产生上升沿时,置变量rx_true为高电平;

②在clk的驱动下,当rx_true为低电平时,计时模块timer工作,当timer达到10毫秒时,timer复位,同时复位一级缓存BRAM的地址addr_BRAM_1为0,并跳转到④;当timer没有达到10毫秒且rx_true为高电平,timer复位,并跳转到③;

③在clk的驱动下,将FPGA同步串行数据接收管脚rx_data上的值保存进一级缓存BRAM,同时使一级缓存BRAM的地址addr_BRAM_1加1,变量bit_BRAM_1加1,置变量rx_true为低电平,并返回①;

④在clk的驱动下,通过控制addr_BRAM_1的自加1完成依次读取一级缓存BRAM中的8个数据,将这8个数据按照从低到高的顺序组合成一个字节数据;

⑤当该字节为十六进制7E时,说明检测到一个帧头,变量F_Head_cnt加1,并跳转到⑥,否则,将addr_BRAM_1自减6,并跳转到⑥;

⑥在clk的驱动下,当F_Head_cnt大于等于1时,说明一级缓存中的帧头全部检测完毕,记录此时的一级缓存BRAM地址,记作addr_BRAM_1_F_start,跳转到⑦;否则:当addr_BRAM_1大于(bit_BRAM_1减9)时,说明一级缓存BRAM中没有帧头,一级缓存BRAM中的数据无效,此时清空一级缓存BRAM,并跳转到①;当addr_BRAM_1小于等于(bit_BRAM_1减9)时,跳转到④;

⑦在clk的驱动下,将addr_BRAM_1赋值为(bit_BRAM_1减8),然后通过控制addr_BRAM_1的自加1完成依次读取一级缓存BRAM中的8个数据,将这8个数据按照从低到高的顺序组合成一个字节数据;

⑧当该字节为十六进制7E时,说明检测到一个帧尾,变量F_Tail_cnt加1,并跳转到⑨,否则,将addr_BRAM_1自减8,并跳转到⑨;

⑨在clk的驱动下,当F_Tail_cnt大于等于1时,说明一级缓存中的帧尾全部检测完毕,记录此时的一级缓存BRAM地址,记作addr_BRAM_1_F_stop,此时跳转到⑩;否则:当addr_BRAM_1小于1时,说明一级缓存BRAM中没有帧尾,一级缓存BRAM中的数据无效,此时清空一级缓存BRAM,并跳转到①;当addr_BRAM_1大于等于1时,跳转到⑦;

⑩在clk的驱动下,依次读取一级缓存BRAM中从addr_BRAM_1_F_start到addr_BRAM_1_F_stop的数据,该数据即为一级缓存BRAM的净荷数据,当连续读取到5个高电平时,则跳过下一个地址,然后接着读取,并保存进二级缓存BRAM;当一级缓存BRAM中的净荷数据全部搬移到二级缓存BRAM中后,同步串行数据接收完毕,二级缓存BRAM中的数据即为同步串行接收到的数据,返回①;

(2)同步串行发送时钟产生模块,具体实现如下:

①设变量tx_clk_cnt_1和tx_clk_cnt_2,设同步串行发送时钟为tx_clk_band,令tx_clk_cnt_1=clk/(tx_clk_band×2),令tx_clk_cnt_2=clk/tx_clk_band;

②设变量tx_clk_cnt_3,并赋初始值0,同时在clk的驱动下,tx_clk_cnt_3自加1;

③在clk的驱动下,当tx_clk_cnt_3等于0时,将FPGA同步串行时钟发送管脚tx_clk置低电平;

④在clk的驱动下,当tx_clk_cnt_3等于tx_clk_cnt_1时,将FPGA同步串行时钟发送管脚tx_clk置高电平;

⑤在clk的驱动下,当tx_clk_cnt_3等于tx_clk_cnt_2时,将tx_clk_cnt_3复位为0,返回③;

(3)同步串行数据发送模块,具体实现如下:

①在clk的驱动下,每当tx_clk_cnt_3等于0时,依次将待发送的数据按照bit位从低到高的顺序赋值给FPGA同步串行数据发送管脚tx_data;

②在clk的驱动下,检测FPGA同步串行数据发送管脚tx_data是否存在连续5个高电平,如果存在就插入一个低电平,并赋值给FPGA同步串行数据发送管脚tx_data,返回①。

综上所述,本发明公开了一种面向智能物联的同步串行大数据可靠传输方法,该方法利用VHDL语言设计并在FPGA上实现,包括同步串行数据接收模块、同步串行发送时钟产生模块和同步串行数据发送模块。不仅能够增强用户代码设计的灵活性、自主性、集成度,也能降低成本和设计周期,提高智能物联大数据量同步串行传输的可靠性。

本发明说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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