CN108427894B - 一种数据通信方法及装置 - Google Patents
一种数据通信方法及装置 Download PDFInfo
- Publication number
- CN108427894B CN108427894B CN201810257949.8A CN201810257949A CN108427894B CN 108427894 B CN108427894 B CN 108427894B CN 201810257949 A CN201810257949 A CN 201810257949A CN 108427894 B CN108427894 B CN 108427894B
- Authority
- CN
- China
- Prior art keywords
- data
- fifo memory
- network
- fifo
- target data
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开的数据通信方法及装置,可应用于安全系统。所述方法包括基于第一FIFO存储器实现将计算机系统的数据发送至网络、基于第二FIFO存储器实现从网络接收数据。可见本申请采用FIFO策略实现了安全系统的数据处理功能与通信功能的相互分隔,确保了执行安全功能的计算机不会受到通信功能故障的影响,能够保证计算机系统的安全;本申请中安全系统具备双缓冲、写清空、可配置等特点,其中“双缓冲”可以不需要采用中断方式第一时间读取数据(安全功能不受通信信号影响),“写清空”可防止数据溢出且缓冲区中存在上一次残留数据,“可配置”可支持灵活的应用配置,如纯单向通信、最大数据帧数等,以提高系统通信的确定性和可靠性。
Description
技术领域
本发明属于安全系统的网络通信隔离技术领域,尤其涉及一种数据通信方法及装置。
背景技术
通信隔离是安全系统通信独立性的一个要求,其是指安全系统中执行安全功能的模块与负责通信功能的模块相互分隔,达到不会因通信模块的功能出现故障而阻碍或者干扰安全功能模块正常执行的目的,从而保证安全系统的安全和可靠。
在通用计算机系统中,处理器通常既负责数据的运算处理等安全功能,又负责处理各种I/O(Input/Output,输入/输出)和网络通信的功能。在这种设计方式下,一旦通信功能出现异常,可能对整个计算机产生不可预料的错误,如网络芯片异常或者由于网络设备的驱动设计不当而出现内部越界、堆栈溢出、收发超长等待等情况,这些错误可能导致安全功能的相关程序在运行期出现不可预知的结果,运行超时甚至程序崩溃,从而会对系统的安全功能产生危害。基于此,本领域需提供一种解决方案,来保证执行安全功能的计算机系统的安全,使其不会因通信功能出现故障而阻碍或者干扰安全功能模块正常执行。
发明内容
有鉴于此,本发明的目的在于提供一种数据通信方法及装置,以解决目前的计算机系统存在的上述问题,实现计算机系统中数据通信与安全功能的隔离,保证计算机系统的安全。
为此,本发明公开如下技术方案:
一种数据通信方法,应用于安全系统,所述方法包括:
当需将第一目标数据发送至网络时,将所述第一目标数据写入第一FIFO存储器进行缓存;
从所述第一FIFO存储器中读取所述第一目标数据,并对所述第一目标数据进行预设的数据发送处理,以将所述第一目标数据发送至网络;
当接收到来自网络的第二目标数据时,将所述第二目标数据写入第二FIFO存储器进行缓存;
从所述第二FIFO存储器中读取所述第二目标数据并对读取的所述第二目标数据进行所需的处理。
上述方法,优选的所述从所述第一FIFO存储器中读取所述第一目标数据包括:
利用第一FIFO接口从所述第一FIFO存储器中读取所述第一目标数据;
所述将所述第二目标数据写入所述第二FIFO存储器进行缓存包括:
利用第二FIFO接口将所述第二目标数据写入所述第二FIFO存储器进行缓存。
上述方法,优选的,在所述利用第二FIFO接口将所述第二目标数据写入述第二FIFO存储器进行缓存之前还包括:
经由PHY模块接收来自网络的数据;
对来自网络的数据进行过滤,得到目的地址符合所述安全系统的地址标识的网络数据;
对所述网络数据进行预设的数据解封装处理,得到所述第二目标数据。
上述方法,优选的,所述对所述第一目标数据进行预设的数据发送处理包括:
对所述第一目标数据进行预设的数据封装处理,并将封装处理的结果数据经由PHY模块发送至网络。
上述方法,优选的,所述方法还包括:
当具有网络通信参数配置需求时,进行所需的网络通信参数配置。
上述方法,优选的,所述第一FIFO存储器及所述第二FIFO存储器均包括两个缓存区,所述第一FIFO存储器及所述第二FIFO存储器的每个缓存区均对应一个读指针和一个写指针,且针对所述第一FIFO存储器及所述第二FIFO存储器分别设置有相应的标志位,用于分别判断所述第一FIFO存储器、所述第二FIFO存储器中各自包含的两个缓存区的新旧关系。
上述方法,优选的,还包括:当同时对所述第一FIFO存储器或同时对所述第二FIFO存储器进行读写操作时,则基于所述标志位的作用,使得分别同时对所述第一FIFO存储器或同时对所述第二FIFO存储器的不同缓存区进行读写操作。
上述方法,优选的,还包括:在向所述第一FIFO存储器或所述第二FIFO存储器的目标缓存区写入数据时,首先清空所述目标缓存区的原有数据。
一种数据通信装置,应用于安全系统,所述装置包括:安全处理模块、通信处理模块以及第一先进先出FIFO存储器、第二FIFO存储器,其中:
所述安全处理模块,用于在需将第一目标数据发送至网络时,将所述第一目标数据写入所述第一FIFO存储器进行缓存;还用于从所述第二FIFO存储器中读取第二目标数据并对读取的所述第二目标数据进行所需的处理;其中,所述第二目标数据为所述通信处理模块接收的来自网络的数据;
所述通信处理模块,用于从所述第一FIFO存储器中读取所述第一目标数据,并对所述第一目标数据进行预设的数据发送处理,以将所述第一目标数据发送至网络;还用于接收到来自网络的第二目标数据,并在接收到来自网络的第二目标数据时,将所述第二目标数据写入所述第二FIFO存储器进行缓存。
上述装置,优选的,所述通信处理模块包括:
第一FIFO接口,用于为所述通信处理模块从所述第一FIFO存储器中读取所述第一目标数据提供接口;
第二FIFO接口,用于为所述通信处理模块将所述第二目标数据写入所述第二FIFO存储器提供接口。
上述装置,优选的,所述通信处理模块还包括:
PHY模块,用于接收来自网络的数据;
地址过滤模块,用于对接收的来自网络的数据进行过滤,得到目的地址符合所述安全系统的地址标识的网络数据;
接收模块,用于接收所述目的地址符合所述安全系统的地址标识的网络数据,并对接收的所述网络数据进行预设的数据解封装处理,得到所述第二目标数据。
上述装置,优选的,所述通信处理模块还包括发送模块,用于对所述第一目标数据进行预设的数据封装处理,并将封装处理的结果数据经由所述PHY模块发送至网络。
上述装置,优选的,所述通信处理模块还包括配置模块,用于在具有网络通信参数配置需求时,进行所需的网络通信参数配置。
上述装置,优选的,采用一现场可编程门阵列FPGA实现所述通信处理模块及所述第一FIFO存储器、第二FIFO存储器的功能。
上述装置,优选的,所述FPGA包括物理层及数据链路层,所述第一FIFO接口、所述第二FIFO接口、所述地址过滤模块、所述接收模块、所述发送模块及所述配置模块在所述数据链路层实现;所述数据链路层通过物理层进行与网络间的数据收发,所述PHY模块在所述物理层实现,所述数据链路层与所述物理层通过介质无关接口MII或千兆介质无关接口GMII进行数据交互。
由以上方案可知,本申请公开的数据通信方法,可应用于安全系统。所述方法包括当需将第一目标数据发送至网络时,将第一目标数据写入第一FIFO存储器进行缓存,并从第一FIFO存储器中读取第一目标数据对其进行预设的数据发送处理,以将其发送至网络;当接收到来自网络的第二目标数据时,将第二目标数据写入第二FIFO存储器进行缓存,并从第二FIFO存储器中读取所述第二目标数据对其进行所需的处理。可见,本申请采用FIFO策略实现了安全系统的数据处理功能与通信功能的相互分隔,针对网络通信的特点运用双FIFO缓冲设计确保了执行安全功能的计算机不会受到通信功能故障的影响,从而实现了计算机系统的网络通信隔离,能够保证计算机系统的安全。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明实施例一提供的安全系统的结构示意图;
图2是本发明实施例一提供的安全系统的一实施实例图;
图3是本发明实施例一提供的数据通信方法的一种流程图;
图4是本发明实施例二提供的数据通信方法的另一种流程图;
图5(a)是本发明实施例二提供的单向通信模式下安全系统的通信原理示意图;
图5(b)是本发明实施例二提供的双向通信模式下安全系统的通信原理示意图;
图6是本发明实施例三提供的安全系统向网络发送数据时双缓冲结构FIFO的工作机制示意图。
图7是本发明实施例四提供的在FPGA设计实现OSI七层模型中的数据链路层及物理层功能的示意图;
图8是本发明实施例四提供的FPGA中发送模块的一种内部结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词、简写或缩写总结解释如下:
可编程逻辑器件:Programmable Logic Device,PLD,是一种电子零件、电子组件,简而言之也是一种集成电路、芯片。PLD芯片属于数字独立的电路芯片,而非模拟或混合信号(同时具有数字电路与模拟电路)芯片。此类器件可在任何时间改变,从而完成许多种不同的功能。可编程逻辑器件的两种类型是现场可编程门阵列(FPGA,Field-ProgrammableGate Array)和复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)。在这两类可编程逻辑器件中,FPGA提供了最高的逻辑密度、最丰富的特性和最高的性能。
FIFO:First Input First Output,即一种实现数据先进先出的存储器件。FIFO采用环形存储结构的先进先出存储器。只允许两端一个写,一个读。由于微电子技术的飞速发展,新一代FIFO芯片容量越来越大,体积越来越小,价格越来越便宜。作为一种新型大规模集成电路,FIFO器件以其灵活、方便、高效的特性,逐渐在高速数据采集、高速数据处理、高速数据传输以及多机处理系统中得到越来越广泛的应用。
PHY:物理层,OSI的最底层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。
MII:Media Independent Interface,称为介质无关接口,或称为媒体独立接口。它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。
GMII:Gigabit MII,指千兆MII接口,GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps,同时兼容MII所规定的10/100Mbps工作方式。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例一提供一种数据通信方法,该方法可应用于执行安全功能的计算机等安全系统中,旨在保证执行安全功能的计算机系统的安全,使其不会因通信功能出现故障而阻碍或者干扰安全功能模块正常执行。本申请实施例中,参考图1示出的安全系统的结构示意图,所述安全系统可以包括一负责执行安全功能(如数据的运算处理)的安全处理模块1、负责执行通信功能的通信处理模块2,以及第一FIFO存储器3、第二FIFO存储器4。
其中,参考图2,具体实施时所述安全处理模块的功能可以在计算机的CPU(Central Processing Unit,中央处理器)中实现,用于负责系统所需的诸如数据运算等数据处理,与通用计算机系统不同的是,本申请中所述CPU仅负责执行安全功能的数据处理,而不再同时负责各种I/O和网络通信的功能。所述通信处理模块用于实现网络数据收发功能,所述通信处理模块及两个FIFO存储器的功能可以在FPGA中设计实现。
基于本实施例提供的上述安全系统的结构,参考图3示出的一种数据通信方法的流程图,所述数据通信方法可以包括以下步骤:
S301:当需将第一目标数据发送至网络时,将所述第一目标数据写入所述第一FIFO存储器进行缓存。
该步骤S301具体可在安全系统的安全处理模块实现,其中,当安全系统的安全处理模块存在向网络发送数据的需求时,与现有技术直接对待发送数据进行相应的数据发送处理实现网络通信不同,本发明采用FIFO策略,将待发送数据首先发送至所述第一FIFO存储器进行缓存,后续使得通信处理模块基于读取该第一FIFO存储器的缓存数据来实现安全系统的网络数据发送,从而使得安全系统以第一FIFO存储器为数据发送时的隔离媒介,实现网络数据发送时的网络通信隔离。
S302:从所述第一FIFO存储器中读取所述第一目标数据,并对所述第一目标数据进行预设的数据发送处理,以将所述第一目标数据发送至网络。
该步骤S302具体可在安全系统的安全处理模块实现,其中,所述通信处理模块可以包括第一FIFO接口、第二FIFO接口、发送模块及PHY模块,第一FIFO接口与所述第一FIFO存储器对接,第二FIFO接口与所述第二FIFO存储器对接,从而通信处理模块在需进行网络数据发送或接收时,通过借助所述两个FIFO接口可分别实现从所述第一FIFO存储器读取数据,或向所述第二FIFO存储器写入数据。
基于此,该步骤S302具体可利用所述通信处理模块的所述第一FIFO接口从所述第一FIFO存储器中读取待发送至网络的所述第一目标数据。
在读取所述第一目标数据后,通信处理模块继续对该数据进行相应的数据发送处理,以实现将该数据发送至网络。具体地,所述通信处理模块利用所述发送模块对所述第一目标数据进行预设的数据封装处理,并将封装处理的结果数据经由所述PHY模块发送至网络。
S303:当接收到来自网络的第二目标数据时,将所述第二目标数据写入所述第二FIFO存储器进行缓存。
该步骤S303同样可在安全系统的通信处理模块中实现,所述通信处理模块具有网络数据收发功能,除了包括以上的各功能模块,针对网络数据接收这一功能,所述通信处理模块还可以包括地址过滤模块和接收模块。
所述通信处理模块具体经由所述PHY模块接收来自网络的数据,利用所述地址过滤模块对来自网络的数据进行过滤,得到目的地址符合所述安全系统的地址标识的网络数据;并利用所述接收模块接收所述目的地址符合所述安全系统的地址标识的网络数据,且对接收的所述网络数据进行预设的数据解封装处理,得到可供安全处理模块获取的第二目标数据。
在接收来自网络的数据并对其进行数据接收处理得到所述第二目标数据后,基于与网络数据发送时相同的隔离原理,安全系统的安全处理模块并不直接获得该数据,而是首先由通信处理模块通过所述第二FIFO接口将该数据写入至所述第二FIFO存储器进行缓存,从而实现通信处理模块与安全处理模块的相互分隔,后续由安全处理模块从第二FIFO存储器读取该数据。
S304:从所述第二FIFO存储器中读取所述第二目标数据并对读取的所述第二目标数据进行所需的处理。
该步骤S303可在安全系统的安全处理模块中实现,在以上步骤基础上,本步骤中,利用安全处理模块从所述第二FIFO存储器中读取通信处理模块写入的所述第二目标数据,从而完成了安全系统对网络数据的接收。同时在进行网络数据接收过程中,实现了安全处理模块与通信处理模块的相互分隔,后续可针对需求在安全处理模块对接收的该数据进行所述的安全功能处理。
本申请通过采用两个FIFO存储器来分别负责网络数据发送、接收两路数据处理过程中的数据缓存,即一个FIFO存储器用于接收网络数据,另一个FIFO存储器用于发送网络数据,可有效避免读写访问时可能存在的冲突问题。
由以上方案可知,本申请公开的数据通信方法,可应用于安全系统。所述方法包括当需将第一目标数据发送至网络时,将第一目标数据写入第一FIFO存储器进行缓存,并从第一FIFO存储器中读取第一目标数据对其进行预设的数据发送处理,以将其发送至网络;当接收到来自网络的第二目标数据时,将第二目标数据写入第二FIFO存储器进行缓存,并从第二FIFO存储器中读取所述第二目标数据对其进行所需的处理。可见,本申请采用FIFO策略实现了安全系统的数据处理功能与通信功能的相互分隔,针对网络通信的特点运用双FIFO缓冲设计确保了执行安全功能的计算机不会受到通信功能故障的影响,从而实现了计算机系统的网络通信隔离,能够保证计算机系统的安全。
在本申请实施例二中,参考图4示出的通信处理方法流程图,所述通信处理方法还可以包括:
S305:当具有网络通信参数配置需求时,进行所需的络通信参数配置。
其中,可通过在通信处理模块中增加一配置模块来实现该步骤的处理逻辑。
具体地,为了满足高安全系统对网络通信提出的确定性要求,本实施例提出采用在通信处理模块中增加配置模块来提供所需的应用配置功能,该模块允许系统根据应用需要通过FPGA设定网络传输的数据帧长度、最大数据帧数、单向/双向通信模式等参数,整个网络的传输数据可以做到更明确、更可控,这些设置在初始化阶段一旦确定便不允许更改,消除了运行过程的不确定因素。
通过配置数据帧长度,FPGA可以检查每帧的长度是否与系统预期的长度(即所配置的数据帧长度)一致,如果不一致,则说明没有按约定获取,通信存在错误;对于最大数据帧数来说,通过设置最大数据帧数,可以使得FPGA主动截取掉不需要的数据,而不必等待至缓冲区即将存满时再来处理。
在某些安全性要求较高的系统中,要求安全侧网络(相当于本发明的安全处理模块,如安全功能CPU)与非安全侧网络(相当于本发明的通信处理模块)通信隔离,非安全侧网络不能向安全侧网络发送数据,或者即使发送,安全侧也不接收这些数据。针对此种情况,本发明提出可在FPGA中进行单向/双向通信模式设置,参考图5(a)所示的单向通信的示意图,对于上述情况而言,可采用本发明提供的单向/双向通信模式设置功能,具体通过在FPGA中写入配置值进行单向通信模式设置,实现单向通信,从而,FPGA在单向通信模式下,不会向FIFO写数据,且不执行网络数据的接收功能,这样安全功能FIFO将无法读取来自网络的数据,进而实现了安全侧网络与非安全侧网络的物理隔离。
而对于不存在上述较高要求的系统,参考图5(b)所示,可通过FPGA将通信模式设置为双向通信模式,即FPGA与安全功能CPU可通过两个FIFO进行双向的数据收发。
在本申请实施例三中,所述第一FIFO存储器及所述第二FIFO存储器均包括两个缓存区,所述第一FIFO存储器及所述第二FIFO存储器的每个缓存区均对应一个读指针和一个写指针,且本实施例针对所述第一FIFO存储器及所述第二FIFO存储器分别设置有相应的标志位,用于分别判断所述第一FIFO存储器、所述第二FIFO存储器中各自包含的两个缓存区的新旧关系。在此基础上,所述数据通信方法还可以包括以下步骤:
当所述安全处理模块、通信处理模块同时操作所述第一存储器或所述第二FIFO存储器时,则基于所述标志位的作用,使得所述安全处理模块、通信处理模块分别同时对所述第一FIFO存储器或第二FIFO存储器的不同缓存区进行操作;
在向所述第一FIFO存储器或所述第二FIFO存储器的目标缓存区写入数据时,首先清空所述目标缓存区的原有数据。
具体地,为保证数据的正确写入和读出,避免发生写满和读空操作,怎样判断空/满标志位的产生就成为FIFO设计的重要问题,其中,所述FIFO是异步的,即安全功能CPU和通信功能FPGA各自运行,互不干扰。而FIFO实质上是一个循环队列,当读写地址指针相等时,意味着空标志位或者满标志位的产生,但是却不能确定是写满还是读空状态。发生这种情况的可能原因是双方读写速度不一致,导致读写操作在某时间同时发生在同一存储单元。当写入数据过多时,会造成溢出现象,造成混乱。
基于此,本发明提出双缓冲结构(AB缓冲结构)的FIFO,每个FIFO存储器包括A、B两个缓存区,所述A区、B区两个缓冲结构交替使用,当一方写A区时,另一方读B区,即两区域轮流使用,每次写入方更新较旧的数据,读取方读取较新的数据,从而避免读写操作同一区域导致可能的写满和读空问题。并通过设计带有计数性质的“写占用”标志位,来判断选择哪个缓存区,以安全功能CPU为通信主体为例,参考图6,本发明的双缓冲结构FIFO及其工作机制具体设计如下:
在第一FIFO存储器(即向网络发送数据的通信路径中对应的发送FIFO)中设置大小相等的A、B两个缓存区;这两个区分别有两个指针,写指针(write_pointer)和读指针(read_pointer),起始状态下两指针值为0,此时缓冲区为空。当写数据时,写指针值加1即write_pointer+1,当读数据时,读指针值加1即read_pointer+1。当两指针相同时,有可能是空,也有可能是满。如果写入的数据较多,会产生溢出现象,因此要避免这种情况的产生。
为解决这一问题,本发明分别在每个缓存区的起始端设置一个标志位Flag,该标志位具有两个作用:其一,用于标记其所在的缓存区是否正在写数据,如正在写数据,标志位Flag先置零,当写完数据时,标志位计入一个tick值;其二,在不写数据时,可供数据方通过tick值判断哪个缓存区为新操作的区域,比如假设两个区的tick值分别为1735、1734,而由于1735>1734,从而tick值为1735的缓存区更新。
写数据时,安全功能CPU先检查两个区的标志位。根据标志位的tick值判断较旧的区,并将其标志位置0,然后向该缓冲区写入数据,并在写入完成后记录写入的新数据帧的个数。最后将新tick值更新到标识位中。如果本次写入的数据超出缓冲区大小(理论上一次写入的数据会在设计中考虑并限制,但万一出现异常,也要有相应的处理),则自动拦截掉后面的数据,保留之前写入的数据。在下次写数据时,则写入另一缓冲区,两个缓冲区交替使用。
读数据时,通信功能FPGA先检查两个区的标志位,如果某标志位的tick为0,表示该区正在写数据,则直接读另一区数据,否则根据tick值判断较新的区。确定数据区后,再根据记录的新数据帧个数读取所需的数据帧。
本发明实施例提供的上述机制,既能解决当轮缓存区的溢出问题,又通过选择新旧缓存区在下轮写入新数据,避免了需要复位来解决溢出后逻辑混乱导致不能正常工作的问题。
另外,本发明实施例还设计有清空机制,在向所述第一FIFO存储器或所述第二FIFO存储器的目标缓存区写入数据时,首先清空所述目标缓存区的原有数据,以避免出现溢出情况。
具体地,以FPGA为例,在写缓存区时,FPGA先清空该缓存区,即read_pointer和write_pointer等于0。这样用来避免每一轮写入的数据不会与之前已写入的数据混杂,保证数据的完整性,这对于某些应用是需要的,该功能通过向FPGA提供配置功能来实现。
此处,需要说明以及加以强调的是,现有技术的FIFO存储器一般只有一个读指针和一个写指针,并通过所包含的一个读指针和一个写指针实现单入口单出口,本发明为了有效解决访问冲突、缓存区溢出、缓存区中数据包前后混杂的问题,创造性的在FIFO存储器内部设计了两个缓存区,并针对每一缓存区分别提供了一个读指针和写指针,这是通常FIFO存储器所不具备的。
本申请实施例四具体提供所述安全系统执行所述数据通信方法以实现网络通信隔离时所需基于的软硬件实现结构。
上文已述及,所述安全处理模块具体可以由计算机的CPU实现,用于负责系统所需的诸如数据运算等数据处理,所述通信处理模块的网络数据收发功能及两个FIFO存储器的功能具体采用FPGA实现。FPGA的组成结构包含物理层和数据链路层两部分,其中,数据链路层与物理层具体通过标准接口MII/GMII相连接,即两者间的数据传输和控制按照按标准接口GMII/MII来实现,参考图7所示,本发明具体在FPGA设计实现了OSI七层模型中的数据链路层及物理层功能。
通信处理模块包括的除PHY模块之外的其他各功能模块以及两个FIFO存储器的功能均在数据链路层设计实现,而通信处理模块包括的PHY模块则具体在物理层实现。
当安全系统需向网络发送数据时,负责安全功能数据处理的CPU通过总线将需发送的数据写入所述第一FIFO存储器,FPGA通过所述第一FIFO接口读取第一FIFO存储器中的数据,对其进行转换并缓冲到FPGA的内部存储中,之后利用发送模块将所需要发送的数据进行封装后再经过GMII/MII接口将其发送给物理层,从而最终经由物理层将数据发送至网络。相反,当安全系统需接收来自网络的数据时,FPGA通过MII/GMII接口获得物理层的网络数据,并通过地址过滤模块的数据过滤功能,得到目的地址符合所述安全系统的地址标识的网络数据,在接收模块对网络数据进行解封装后将其写入所述第二FIFO存储器,之后另一端的负责安全功能数据处理的CPU可从所述第二FIFO存储器中读取网络数据,从而实现网络数据的接收。
本申请针对网络通信的特点运用双FIFO缓冲设计实现了执行安全功能与执行通信功能的处理器件之间的数据交互以及通信隔离,CPU只需访问FIFO即可获取网络数据,而在需要向网络发送数据时也仅需向FIFO写入数据即可,无需直接执行网络通信功能实现网络数据收发,从而确保了执行安全功能的计算机不会受到通信功能故障的影响。
接下来,本实施例继续提供实现本申请方法的所述安全系统中通信处理模块包含的发送模块及接收模块的一种可能的实现方式。
所述发送模块主要负责数据帧的发送,其将安全系统需发送至网络的数据进行封装后经过GMII/MII接口将封装后的数据发送给物理层,最终经由物理层将该数据发送至网络。
发送模块的内部结构请参考图8所示,具体包括CRC(Cyclic Redundancy Check,循环冗余校验码)生成模块、随机数发生模块、发送计时模块和发送状态机。其实现数据发送的原理具体如下:
在安全系统向网络发送数据的过程中,CRC生成模块计算待发送数据的CRC校验值,并将该CRC校验值添加到数据帧(待发送数据)的FCS(frame check sequence,帧校验序列)字段中,一旦发送过程中发生冲突,发送模块会发送一个拥塞码,随后停止本次发送。在下次重新发送数据前,发送模块需首先执行一个后退操作,后退的时间是一个与发生冲突次数有关的随机数,该随机数由随机数发生模块采用二进制指数退避算法产生。其中,为了减小冲突发生的概率,用于生成该随机数的范围要随着冲突次数的增多而不断增大。发送计时模块由延迟计数器,帧长计数器,重试次数计数器和IPG计数器4个计数器组成,用于对后退时间进行计时。发送状态机是发送模块的主要部分,控制着发送数据的整个过程。
接收模块主要负责网络数据的接收,前序码和CRC的移除等,其由接收状态机、CRC校验模块、地址识别模块及接收计数器4个子模块组成,接收模块的设计原理与发送模块类似,其接收网络数据的过程实际上可以看作是向网络发送数据的一个逆过程,本领域技术人员具体可以以发送模块的相关实现过程为参照对该模块的网络数据接收功能进行实现,本申请不再对接收模块的具体结构设计及其实现网络数据接收的原理进行详述。
本申请实施例五提供一种数据通信装置,该装置同样可应用与安全系统,参考图1所示,所述装置包括:安全处理模块1、通信处理模块2以及第一FIFO存储器3、第二FIFO存储器4,其中:
所述安全处理模块1,用于在需将第一目标数据发送至网络时,将所述第一目标数据写入所述第一FIFO存储器3进行缓存;还用于从所述第二FIFO存储器4中读取第二目标数据并对读取的所述第二目标数据进行所需的处理;其中,所述第二目标数据为所述通信处理模块2接收的来自网络的数据;
所述通信处理模块2,用于从所述第一FIFO存储器3中读取所述第一目标数据,并对所述第一目标数据进行预设的数据发送处理,以将所述第一目标数据发送至网络;还用于接收到来自网络的第二目标数据,并在接收到来自网络的第二目标数据时,将所述第二目标数据写入所述第二FIFO存储器4进行缓存。
在本发明实施例的一实施方式中,所述通信处理模块包括:第一FIFO接口,用于为所述通信处理模块从所述第一FIFO存储器中读取所述第一目标数据提供接口;第二FIFO接口,用于为所述通信处理模块将所述第二目标数据写入所述第二FIFO存储器提供接口。
在本发明实施例的一实施方式中,所述通信处理模块还包括:PHY模块,用于接收来自网络的数据;地址过滤模块,用于对接收的来自网络的数据进行过滤,得到目的地址符合所述安全系统的地址标识的网络数据;接收模块,用于接收所述目的地址符合所述安全系统的地址标识的网络数据,并对接收的所述网络数据进行预设的数据解封装处理,得到所述第二目标数据。
在本发明实施例的一实施方式中,所述通信处理模块还包括发送模块,用于对所述第一目标数据进行预设的数据封装处理,并将封装处理的结果数据经由所述PHY模块发送至网络。
在本发明实施例的一实施方式中,所述通信处理模块还包括配置模块,用于在具有网络通信参数配置需求时,进行所需的网络通信参数配置。
在本发明实施例的一实施方式中,可采用一现场可编程门阵列FPGA实现所述通信处理模块及所述第一FIFO存储器、第二FIFO存储器的功能。
在本发明实施例的一实施方式中,所述FPGA包括物理层及数据链路层,所述第一FIFO接口、所述第二FIFO接口、所述地址过滤模块、所述接收模块、所述发送模块及所述配置模块在所述数据链路层实现;所述数据链路层通过物理层进行与网络间的数据收发,所述PHY模块在所述物理层实现,所述数据链路层与所述物理层通过介质无关接口MII或千兆介质无关接口GMII进行数据交互。
此处,需要说明的是,本实施例涉及的数据通信装置的描述,与上文方法的描述是类似的,且同方法的有益效果描述,对于本发明的数据通信装置在本实施例中未披露的技术细节,请参照本发明方法实施例的说明,本实施对此不再作赘述。
综上所述,本申请方案存在以下优势:
1)实现了双缓冲结构的FIFO通信隔离,可满足非中断模式的确定性通信;
2)采用FPGA技术实现了网络通信功能,可使系统支持更灵活的应用配置,如数据帧长度、最大数据帧数、单向/双向通信模式等参数的配置,这些参数配置在初始化阶段一旦确定便不允许更改,从而消除了运行过程的不确定因素,满足高安全系统对网络通信提出的确定性要求;且能够实现系统的实时性、安全性、高集成度和设计灵活性的统一。
3)通过设计一个简单而又有效的FIFO双缓冲机制,避免了在双方访问FIFO时发生写满和读空等问题,从而提高了系统的安全性。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (13)
1.一种数据通信方法,其特征在于,应用于安全系统,所述方法包括:
当需将第一目标数据发送至网络时,将所述第一目标数据写入第一FIFO存储器进行缓存;
从所述第一FIFO存储器中读取所述第一目标数据,并对所述第一目标数据进行预设的数据发送处理,以将所述第一目标数据发送至网络;
当接收到来自网络的第二目标数据时,将所述第二目标数据写入第二FIFO存储器进行缓存;
从所述第二FIFO存储器中读取所述第二目标数据并对读取的所述第二目标数据进行所需的处理;
其中,所述第一FIFO存储器及所述第二FIFO存储器均包括两个缓存区,所述第一FIFO存储器及所述第二FIFO存储器的每个缓存区均对应一个读指针和一个写指针;且针对所述第一FIFO存储器及所述第二FIFO存储器分别设置有相应的标志位,用于分别判断所述第一FIFO存储器、所述第二FIFO存储器中各自包含的两个缓存区的新旧关系;其中,具体分别在存储器每个缓存区的起始端设置一个标志位,所述标志位用于:标记其所在的缓存区是否正在写数据,如果正在写数据,标志位Flag先置零,当写完数据时,标志位计入一个tick值,以及在不写数据时供数据方通过tick值判断哪个缓存区为新操作的区域;
当安全处理模块、通信处理模块同时操作所述第一FIFO存储器或所述第二FIFO存储器时,则基于所述标志位的作用,使得所述安全处理模块、通信处理模块分别同时对所述第一FIFO存储器或第二FIFO存储器的不同缓存区进行操作;
通过提出双缓冲结构的FIFO存储器,每个FIFO存储器包括A、B两个缓存区,每个FIFO存储器包括的两个缓存区交替使用,当一方写A区时,另一方读B区,每次写入方更新A、B缓存区中较旧缓存区的数据,读取方读取A、B缓存区中较新缓存区的数据,来避免读写操作FIFO缓存器同一区域导致可能的写满和读空问题,
并通过带有计数性质的“写占用”标志位,来判断选择哪个缓存区。
2.根据权利要求1所述的方法,其特征在于,所述从所述第一FIFO存储器中读取所述第一目标数据包括:
利用第一FIFO接口从所述第一FIFO存储器中读取所述第一目标数据;
所述将所述第二目标数据写入所述第二FIFO存储器进行缓存包括:
利用第二FIFO接口将所述第二目标数据写入所述第二FIFO存储器进行缓存。
3.根据权利要求2所述的方法,其特征在于,在所述利用第二FIFO接口将所述第二目标数据写入所 述第二FIFO存储器进行缓存之前还包括:
经由PHY模块接收来自网络的数据;
对来自网络的数据进行过滤,得到目的地址符合所述安全系统的地址标识的网络数据;
对所述网络数据进行预设的数据解封装处理,得到所述第二目标数据。
4.根据权利要求3所述的方法,其特征在于,所述对所述第一目标数据进行预设的数据发送处理包括:
对所述第一目标数据进行预设的数据封装处理,并将封装处理的结果数据经由PHY模块发送至网络。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当具有网络通信参数配置需求时,进行所需的网络通信参数配置。
6.根据权利要求1所述的方法,其特征在于,还包括:在向所述第一FIFO存储器或所述第二FIFO存储器的目标缓存区写入数据时,首先清空所述目标缓存区的原有数据。
7.一种数据通信装置,其特征在于,应用于安全系统,所述装置包括:安全处理模块、通信处理模块以及第一FIFO存储器、第二FIFO存储器,其中:
所述安全处理模块,用于在需将第一目标数据发送至网络时,将所述第一目标数据写入所述第一FIFO存储器进行缓存;还用于从所述第二FIFO存储器中读取第二目标数据并对读取的所述第二目标数据进行所需的处理;其中,所述第二目标数据为所述通信处理模块接收的来自网络的数据;
所述通信处理模块,用于从所述第一FIFO存储器中读取所述第一目标数据,并对所述第一目标数据进行预设的数据发送处理,以将所述第一目标数据发送至网络;还用于接收到来自网络的第二目标数据,并在接收到来自网络的第二目标数据时,将所述第二目标数据写入所述第二FIFO存储器进行缓存;
其中,所述第一FIFO存储器及所述第二FIFO存储器均包括两个缓存区,所述第一FIFO存储器及所述第二FIFO存储器的每个缓存区均对应一个读指针和一个写指针,且针对所述第一FIFO存储器及所述第二FIFO存储器分别设置有相应的标志位,用于分别判断所述第一FIFO存储器、所述第二FIFO存储器中各自包含的两个缓存区的新旧关系;其中,具体分别在存储器每个缓存区的起始端设置一个标志位,所述标志位用于:标记其所在的缓存区是否正在写数据,如果正在写数据,标志位Flag先置零,当写完数据时,标志位计入一个tick值,以及在不写数据时供数据方通过tick值判断哪个缓存区为新操作的区域;
当所述安全处理模块、通信处理模块同时操作所述第一FIFO存储器或所述第二FIFO存储器时,则基于所述标志位的作用,使得所述安全处理模块、通信处理模块分别同时对所述第一FIFO存储器或第二FIFO存储器的不同缓存区进行操作;
通过提出双缓冲结构的FIFO存储器,每个FIFO存储器包括A、B两个缓存区,每个FIFO存储器包括的两个缓存区交替使用,当一方写A区时,另一方读B区,每次写入方更新A、B缓存区中较旧缓存区的数据,读取方读取A、B缓存区中较新缓存区的数据,来避免读写操作FIFO缓存器同一区域导致可能的写满和读空问题,
并通过带有计数性质的“写占用”标志位,来判断选择哪个缓存区。
8.根据权利要求7所述的装置,其特征在于,所述通信处理模块包括:
第一FIFO接口,用于为所述通信处理模块从所述第一FIFO存储器中读取所述第一目标数据提供接口;
第二FIFO接口,用于为所述通信处理模块将所述第二目标数据写入所述第二FIFO存储器提供接口。
9.根据权利要求8所述的装置,其特征在于,所述通信处理模块还包括:
PHY模块,用于接收来自网络的数据;
地址过滤模块,用于对接收的来自网络的数据进行过滤,得到目的地址符合所述安全系统的地址标识的网络数据;
接收模块,用于接收所述目的地址符合所述安全系统的地址标识的网络数据,并对接收的所述网络数据进行预设的数据解封装处理,得到所述第二目标数据。
10.根据权利要求9所述的装置,其特征在于,所述通信处理模块还包括发送模块,用于对所述第一目标数据进行预设的数据封装处理,并将封装处理的结果数据经由所述PHY模块发送至网络。
11.根据权利要求10所述的装置,其特征在于,所述通信处理模块还包括配置模块,用于在具有网络通信参数配置需求时,进行所需的网络通信参数配置。
12.根据权利要求11所述的装置,其特征在于,采用一现场可编程门阵列FPGA实现所述通信处理模块及所述第一FIFO存储器、第二FIFO存储器的功能。
13.根据权利要求12所述的装置,其特征在于,所述FPGA包括物理层及数据链路层,所述第一FIFO接口、所述第二FIFO接口、所述地址过滤模块、所述接收模块、所述发送模块及所述配置模块在所述数据链路层实现;所述数据链路层通过物理层进行与网络间的数据收发,所述PHY模块在所述物理层实现,所述数据链路层与所述物理层通过介质无关接口MII或千兆介质无关接口GMII进行数据交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810257949.8A CN108427894B (zh) | 2018-03-27 | 2018-03-27 | 一种数据通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810257949.8A CN108427894B (zh) | 2018-03-27 | 2018-03-27 | 一种数据通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108427894A CN108427894A (zh) | 2018-08-21 |
CN108427894B true CN108427894B (zh) | 2021-03-09 |
Family
ID=63159892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810257949.8A Active CN108427894B (zh) | 2018-03-27 | 2018-03-27 | 一种数据通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108427894B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112702418A (zh) * | 2020-12-21 | 2021-04-23 | 潍柴动力股份有限公司 | 双缓存数据下载控制方法、装置及车辆 |
CN113590520B (zh) * | 2021-06-15 | 2024-05-03 | 珠海一微半导体股份有限公司 | Spi系统自动写入数据的控制方法及spi系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887399A (zh) * | 2010-06-28 | 2010-11-17 | 北京用友政务软件有限公司 | 服务器端无障碍存取高速缓存数据的方法 |
CN203800957U (zh) * | 2013-08-20 | 2014-08-27 | 国家电网公司 | 基于FPGA的网络Smurf攻击特征瞬时防御电路 |
CN105915314A (zh) * | 2016-04-14 | 2016-08-31 | 西安电子科技大学 | 一种基于以太网接口的协作通信编译码系统和方法 |
-
2018
- 2018-03-27 CN CN201810257949.8A patent/CN108427894B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887399A (zh) * | 2010-06-28 | 2010-11-17 | 北京用友政务软件有限公司 | 服务器端无障碍存取高速缓存数据的方法 |
CN203800957U (zh) * | 2013-08-20 | 2014-08-27 | 国家电网公司 | 基于FPGA的网络Smurf攻击特征瞬时防御电路 |
CN105915314A (zh) * | 2016-04-14 | 2016-08-31 | 西安电子科技大学 | 一种基于以太网接口的协作通信编译码系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108427894A (zh) | 2018-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Di Natale et al. | Understanding and using the controller area network communication protocol: theory and practice | |
US5838904A (en) | Random number generating apparatus for an interface unit of a carrier sense with multiple access and collision detect (CSMA/CD) ethernet data network | |
US5446726A (en) | Error detection and correction apparatus for an asynchronous transfer mode (ATM) network device | |
EP1014648B1 (en) | Method and network device for creating buffer structures in shared memory | |
US5668809A (en) | Single chip network hub with dynamic window filter | |
US7603429B2 (en) | Network adapter with shared database for message context information | |
US5640399A (en) | Single chip network router | |
US7072294B2 (en) | Method and apparatus for controlling network data congestion | |
US5802287A (en) | Single chip universal protocol multi-function ATM network interface | |
US5247626A (en) | Fddi controller having flexible buffer management | |
US5289469A (en) | Communication control unit with lower layer protocol control and higher layer protocol control | |
US6721799B1 (en) | Method for automatically transmitting an acknowledge frame in canopen and other can application layer protocols and a can microcontroller that implements this method | |
US20040194097A1 (en) | Hardware assisted firmware task scheduling and management | |
CN108427894B (zh) | 一种数据通信方法及装置 | |
JP6021132B2 (ja) | 連続データをパケットにより無線通信する送信装置、受信装置、通信装置、プログラム、送信方法、及び、受信方法 | |
US9552323B1 (en) | High-speed peripheral component interconnect (PCIe) input-output devices with receive buffer management circuitry | |
CN113836048A (zh) | 一种基于fpga内存动态分配的数据交换方法及装置 | |
JP2009502072A (ja) | FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法 | |
KR101188210B1 (ko) | 선점형 우선순위 기반의 이더넷 데이타 스케줄링 방법 및 이를 이용한 시스템 | |
CN113170500B (zh) | 一种信息传输方法及装置 | |
CN115344405A (zh) | 一种数据处理方法、网络接口卡、电子设备及存储介质 | |
US6747978B1 (en) | Direct memory access packet router method and apparatus | |
US8990436B2 (en) | Method for handling access transactions and related system | |
CN108255770B (zh) | 基于1394总线事件消息响应机制的处理方法 | |
KR100367138B1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221110 Address after: 100005 No. 69, inner main street, Dongcheng District, Beijing, Jianguomen Patentee after: AGRICULTURAL BANK OF CHINA Patentee after: Agricultural Bank of China Financial Technology Co.,Ltd. Address before: 100005 No. 69, inner main street, Dongcheng District, Beijing, Jianguomen Patentee before: AGRICULTURAL BANK OF CHINA |