System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及集成电路领域,具体地,涉及基于fpga的plc系统数据通信握手与缓存方法及系统。
技术介绍
1、随着对plc工业控制设备的需求越来越高,使用fpga与从设备通信可以大幅提高通信速率从而提高plc设备的性能,当数据在fpga向上与主设备通信以及fpga向下控制从设备的应用背景下,三者间的读写速率不能保证相同,主设备与fpga需要通过握手协议保证双方处于稳定的读写状态。当数据在主设备、fpga以及从设备之间传输时,主设备与fpga之间的通信速率和fpga与从设备之间的通信速率不同,若出现主设备发送数据周期过慢,fpga无法按时向从设备发送数据,或主设备读数据周期过快,fpga无法及时从从设备读到数据,使得通信中断或数据传输不可靠。
2、专利文献cn115579036a公开了一种基于fpga的ddr连续存储电路及其实现方法,即使内存控制器在处理高速数据的过程中产生了中断信号,也可以实现数据连续写入功能并且不丢失数据。该电路包括采样缓存模块、数据切换模块、第一寄存器、第二寄存器、数据处理模块、地址切换模块和内存控制器。内存控制器发出中断信号时:地址切换模块控制采样缓存模块输出数据到数据切换模块,数据切换模块停止发送数据,并将收到的数据分别依次存储至第一寄存器和第二寄存器,数据处理模块停止转发数据。中断结束后,数据处理模块读取第一和第二寄存器中存储的数据并传输至内存控制器后继续向内存控制器转发数据处理模块输出的数据;内存控制器通过ddr物理层接口将收到的数据写入ddr存储器。该专利应用于ddr连续存储,主要实现于
技术实现思路
1、针对现有技术中的缺陷,本专利技术的目的是提供一种基于fpga的plc系统数据通信握手与缓存方法及系统。
2、根据本专利技术提供的一种基于fpga的plc系统数据通信握手与缓存方法,包括:
3、步骤s1:主设备基于fpga中的通信握手模块向fpga发送指令数据;
4、步骤s2:fpga中的通信握手模块通过读写命令控制fpga中的数据缓存同步模块缓存读写数据;
5、步骤s3:通过fpga中的发送接收数据控制模块与从设备进行数据传输。
6、优选地,所述通信握手模块包括:2bit组成的寄存器,包括:master_flag与fpga_flag;
7、所述master_flag由所述主设备控制写;所述fpga_flag由所述fpga控制写;
8、所述主设备与所述fpga传输数据时,读取寄存器的值,若2位数据异或结果为0,则说明fpga为空闲状态,可发送数据;所述主设备取反master_flag,并将握手标记数据发送至fpga后,fpga将两位握手标记数据写入存放当前数据对应寄存器的固定地址;
9、fpga对寄存器两位数据异或,若结果为1,则所述主设备发送了数据,fpga将即将接收到的数据存入fpga中设置的缓存区中,数据接收完毕后fpga对fpga_flag取反,当前寄存器两位数据异或结果为0,fpga为空闲状态。
10、优选地,所述数据缓存同步模块包括:write区和read区;
11、所述write区用于缓存主设备发送至fpga的写数据,等待向通信总线发送;
12、所述read区用于缓存从通信总线接收至fpga的读数据,等待主设备读取;
13、所述write区包括write_a区与write_b区;其中,write_a区与write_b区功能交替使用,所述write_a区写入完整写数据后用于发送写数据时,所述write_b区用于缓存新的发送至fpga的写数据;
14、所述read区包括read_a区与read_b区;其中,read_a区与read_b区功能交替使用,所述read_a区缓存接收到的读数据后用于等待主设备读取数据时;所述read_b区用于缓存通信总线后续接收到的读数据。
15、优选地,当所述主设备向fpga发送数据时,当所述数据缓存同步模块的状态机为idle时,则将所述主设备发送的数据写入所述write_a区;当收到数据接收完毕标记时,将所述主设备发送数据的缓存区域切换到所述write_b区,并将所述数据缓存同步模块的状态机切换至slave_busy状态。
16、优选地,当数据缓存同步模块的状态机为slave_busy时,且主设备周期快于从设备周期两倍或两倍以上,主设备仍要发送数据到fpga,当主设备发送的数据已写入在write_a区中,当前缓存区域便被切换到了write_b区,当前主设备发送的数据便一直存放至write_b区。
17、优选地,当数据缓存同步模块的状态机为slave_busy时,所述fpga将write_a区的数据向从设备发送,当收到数据发送完毕标记时,把fpga要向从设备发送数据的区域切换到write_b区,状态机切换到wait_slave状态。
18、优选地,在所述fpga中设置缓存区域slave_rx区,当总线上有数据传回时,将该数据存储至缓存区域等待处理;在wait_slave状态下,等待从设备传回数据接收完毕标记,将存储在缓存区域的数据放到read_a区,当数据完成放到read_a区标记使能后,将主设备读取区域切换到read_a区,状态切换到idle状态,主设备从fpga读到更新的数据,倘若主设备读写周期满足预设要求时,在此之前,主设备读到的则是缓存在read_b区的数据。
19、根据本专利技术提供的一种基于fpga的plc系统数据通信握手与缓存系统,包括:
20、模块m1:主设备基于fpga中的通信握手模块向fpga发送指令数据;
21、模块m2:fpga中的通信握手模块通过读写命令控制fpga中的数据缓存同步模块缓存读写数据;
22、模块m3:通过fpga中的发送接收数据控制模块与从设备进行数据传输。
23、优选地,所述通信握手模块包括:2bit组成的寄存器,包括:master_flag与fpga_flag;
24、所述master_flag由所述主设备控制写;所述fpga_flag由所述fpga控制写;
25、所述主设备与所述fpga传输数据时,读取寄存器的值,若2位数据异或结果为0,则说明fpga为空闲状态,可发送数据;所述主设备取反master_flag,并将握手标记数据发送至fpga后,fpga将两位握手标记数据写入存放当前数据对应寄存器的固定地址;
26、fpga对寄存器两位数据异或,若结果为1,则所述主设备发送了数据,fpga将即将接收到的数据存入fpga中设置的缓存区中,数据接收完毕后fpga对fpga_flag取反,当前寄存器两位数据异或结果为0,fpga为空闲状态。
27、优选地,所述数据缓存同步模块包括:write区和read区;
28、本文档来自技高网...
【技术保护点】
1.一种基于FPGA的PLC系统数据通信握手与缓存方法,其特征在于,包括:
2.根据权利要求1所述的基于FPGA的PLC系统数据通信握手与缓存方法,其特征在于,所述通信握手模块包括:2bit组成的寄存器,包括:master_flag与fpga_flag;
3.根据权利要求1所述的基于FPGA的PLC系统数据通信握手与缓存方法,其特征在于,所述数据缓存同步模块包括:write区和read区;
4.根据权利要求3所述的基于FPGA的PLC系统数据通信握手与缓存方法,其特征在于,当所述主设备向FPGA发送数据时,当所述数据缓存同步模块的状态机为IDLE时,则将所述主设备发送的数据写入所述write_a区;当收到数据接收完毕标记时,将所述主设备发送数据的缓存区域切换到所述write_b区,并将所述数据缓存同步模块的状态机切换至SLAVE_BUSY状态。
5.根据权利要求4所述的基于FPGA的PLC系统数据通信握手与缓存方法,其特征在于,当数据缓存同步模块的状态机为SLAVE_BUSY时,且主设备周期快于从设备周期两倍或两倍以上,主设备仍要发
6.根据权利要求5所述的基于FPGA的PLC系统数据通信握手与缓存方法,其特征在于,当数据缓存同步模块的状态机为SLAVE_BUSY时,所述FPGA将write_a区的数据向从设备发送,当收到数据发送完毕标记时,把FPGA要向从设备发送数据的区域切换到write_b区,状态机切换到WAIT_SLAVE状态。
7.根据权利要求6所述的基于FPGA的PLC系统数据通信握手与缓存方法,其特征在于,在所述FPGA中设置缓存区域,当总线上有数据传回时,将该数据存储至缓存区域等待处理;在WAIT_SLAVE状态下,等待从设备传回数据接收完毕标记,将存储在缓存区域的数据放到read_a区,当数据完成放到read_a区标记使能后,将主设备读取区域切换到read_a区,状态切换到IDLE状态,主设备从FPGA读到更新的数据,倘若主设备读写周期满足预设要求时,在此之前,主设备读到的则是缓存在read_b区的数据。
8.一种基于FPGA的PLC系统数据通信握手与缓存系统,其特征在于,包括:
9.根据权利要求8所述的基于FPGA的PLC系统数据通信握手与缓存系统,其特征在于,所述通信握手模块包括:2bit组成的寄存器,包括:master_flag与fpga_flag;
10.根据权利要求8所述的基于FPGA的PLC系统数据通信握手与缓存系统,其特征在于,所述数据缓存同步模块包括:write区和read区;
...【技术特征摘要】
1.一种基于fpga的plc系统数据通信握手与缓存方法,其特征在于,包括:
2.根据权利要求1所述的基于fpga的plc系统数据通信握手与缓存方法,其特征在于,所述通信握手模块包括:2bit组成的寄存器,包括:master_flag与fpga_flag;
3.根据权利要求1所述的基于fpga的plc系统数据通信握手与缓存方法,其特征在于,所述数据缓存同步模块包括:write区和read区;
4.根据权利要求3所述的基于fpga的plc系统数据通信握手与缓存方法,其特征在于,当所述主设备向fpga发送数据时,当所述数据缓存同步模块的状态机为idle时,则将所述主设备发送的数据写入所述write_a区;当收到数据接收完毕标记时,将所述主设备发送数据的缓存区域切换到所述write_b区,并将所述数据缓存同步模块的状态机切换至slave_busy状态。
5.根据权利要求4所述的基于fpga的plc系统数据通信握手与缓存方法,其特征在于,当数据缓存同步模块的状态机为slave_busy时,且主设备周期快于从设备周期两倍或两倍以上,主设备仍要发送数据到fpga,当主设备发送的数据已写入在write_a区中,当前缓存区域便被切换到了write_b区,当前主设备发送的数据便一直存放至write_b区。
6.根据权利要求5所述的基于fpga的pl...
【专利技术属性】
技术研发人员:马嘉蔚,夏浩,孟祥明,朱剑文,杨霞,
申请(专利权)人:上海宝信软件股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。