一种基于双口RAM的数据同步系统及方法与流程

文档序号:24132277发布日期:2021-03-02 18:42阅读:207来源:国知局
一种基于双口RAM的数据同步系统及方法与流程
一种基于双口ram的数据同步系统及方法
技术领域
[0001]
本发明属于数据采集技术领域,具体地说,涉及一种基于双口ram的数据同步系统及方法。


背景技术:

[0002]
在数据采集应用中,高精度的数据同步需求和设计是不可或缺的关键技术之一。每一个或者每一组数据包需要有时间戳代表数据产生的时间。
[0003]
在现代工业控制系统中,由于对系统的功能和性能要求越来越高,一般都采用高性能的处理器来实现控制功能,并将这些智能设备联网组成分布式系统,所以双口ram作为共享存储器,在满足实时性要求高、数据量大的控制系统中得到越来越广泛地应用。一般双口ram都提供了两个完全独立的端口,每个端口都有自己的控制线、地址线和数据线。
[0004]
现有技术中的数据同步方法,一般是直接通过cpu的ebi总线连接cpld来传输数据的,并使用数据地址和数据并行来传输数据,尽管这种数据同步方法在理论上可以达到ns级的数据同步精度,但是这种数据同步方法不适合使用了双口ram器件的数据同步装置。
[0005]
但是对于配置双口ram的数据采集系统,ebi直连cpld的方式会增加硬件设备之间的增加,从而也提高了数据采集系统的复杂度。


技术实现要素:

[0006]
有鉴于此,本发明提供一种基于双口ram的数据同步系统及方法,本发明可以应用于数据同步中,从而获取高精度、低延时的时间信息。
[0007]
本发明的技术方案是:
[0008]
第一方面,本发明提出一种基于双口ram的数据同步系统,包括处理中心装置和数
[0009]
据采集装置;
[0010]
所述数据采集装置用于将采集的实时数据发送给所述处理中心装置;其中,该数据采集装置包括双口ram模块、cpu模块和逻辑硬件芯片,所述双口ram模块的一侧连接cpu模块,另一侧连接逻辑硬件芯片;
[0011]
所述cpu模块将所述数据同步系统的当前时间信息写入双口ram模块的第一地址;
[0012]
所述cpu模块向双口ram模块中的第二地址写入所述实时数据,以触发双口ram模块产生中断信号,所述第二地址用于存储所述中断信号;
[0013]
所述双口ram模块将所述中断信号传输至逻辑硬件芯片;
[0014]
所述逻辑硬件芯片根据所述中断信号从所述第一地址获取所述当前时间信息。
[0015]
可选地,所述逻辑硬件芯片根据所述中断信号从所述第一地址获取所述当前时间信息后,该数据同步系统还根据所述当前时间信息更新当前时间,逻辑硬件芯片将更新后的当前时间作为基准并继续计时。
[0016]
可选地,所述数据采集装置还包括adc模块;
[0017]
所述adc模块用于将所述数据采集装置所采集的实时数据的模拟信号转换成数字
信号,并将所述数字信号发送给所述逻辑硬件芯片;
[0018]
所述逻辑硬件芯片对所述数字信号进行组包排序,然后在相邻的数据包之间插入时间戳,将插入时间戳的数据包写入双口ram模块中的第一地址,以触发双口ram模块产生中断信号,将该中断信号发送给cpu模块;
[0019]
所述cpu模块根据所述中断信号读取所述插入时间戳的数据包并将该数据包发送至所述处理中心装置。
[0020]
可选地,所述adc模块将所述数字信号通过spi接口发送给逻辑硬件芯片。
[0021]
可选地,所述数据采集装置还包括网口模块,所述cpu模块按照网络通信协议将读取的数据发送至所述网口模块,并经由所述网口模块转发至所述处理中心装置。
[0022]
可选地,所述网口模块将cpu模块所发送的数据通过物理接口发送至所述处理中心装置。
[0023]
第二方面,本发明还提出一种基于双口ram的数据同步方法,包括以下步骤:
[0024]
cpu模块将数据同步系统的当前时间信息写入双口ram模块的第一地址;
[0025]
cpu模块向双口ram模块中的第二地址写入所述实时数据,以触发双口ram模块产生中断信号,所述第二地址用于存储所述中断信号;
[0026]
双口ram模块将所述中断信号传输至cpld模块;
[0027]
cpld模块根据所述中断信号从所述第一地址获取所述当前时间信息。
[0028]
可选地,所述数据同步方法还包括以下步骤:所述逻辑硬件芯片根据所述中断信号从所述第一地址获取所述当前时间信息后,该数据同步系统还根据所述当前时间信息更新当前时间,逻辑硬件芯片将更新后的当前时间作为基准并继续计时。
[0029]
可选地,所述数据采集装置还包括adc模块;
[0030]
所述adc模块将所述数据采集装置所采集的实时数据的模拟信号转换成数字信号,并将所述数字信号发送给所述逻辑硬件芯片;
[0031]
所述逻辑硬件芯片对所述数字信号进行组包排序,然后在相邻的数据包之间插入时间戳,将插入时间戳的数据包写入双口ram模块中的第一地址,以触发双口ram模块产生中断信号,将该中断信号发送给cpu模块;
[0032]
所述cpu模块根据所述中断信号读取所述插入时间戳的数据包并将该数据包发送至所述处理中心装置。
[0033]
可选地,所述adc模块将所述数字信号通过spi接口发送给逻辑硬件芯片。
附图说明
[0034]
图1为本发明实施例提供的数据同步系统的结构示意图;
[0035]
图2为本发明一个实施例提供的一种数据采集装置与处理中心装置的连接示意图;
[0036]
图3为cypress的cy7c系列双口ram的左中断触发时序图;
[0037]
图4为cypress的cy7c系列双口ram的右中断触发时序图;
[0038]
图5为cypress的cy7c系列双口ram的各参数示意图;
[0039]
图6为microchip的sama5d2系列cpu ebi接口smc控制器写操作时序图;
[0040]
图7为本发明实施例提供的一种基于双口ram的数据同步方法的流程示意图。
具体实施方式
[0041]
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
[0042]
参见图1,该数据同步系统包括一个处理中心装置(该处理中心装置为服务器)和多个数据采集装置(即数据采集装置1、2

n);其中,每个数据采集装置分布于不同的地点,各自采集本地数据并发送至所述处理中心装置,由处理中心装置对数据采集装置所采集的本地数据进行组合与计算。
[0043]
参见图2,所述数据采集装置包括adc模块、cpld(complex programmable logic device)复杂可编程逻辑器件)模块、双口ram(随机存取存储器,random access memory)模块和cpu模块。
[0044]
在数据同步系统的业务需求中,处理中心装置需要将每个数据采集装置所采集的本地数据进行us级的时间同步,因此需要在数据采集装置的端口对采集到的每一组数据加入时间戳;如上所述,cpld模块用于对数据包之间插入时间戳,因此cpld模块需要先获取数据采集装置的准确时间,然后才能对数据包插入时间戳;由于数据采集装置的时间信息由cpu模块提供,因此cpu模块如何将数据采集装置的时间准确地传递至cpld模块就成为关键问题。
[0045]
参见图2,cpu模块连接cpld模块有两条路径,分别是:
[0046]
一条路径是i2c接口,i2c接口是一条直连路径,但不适合传递时间信息。这是因为数据采集装置所设计的时间数据包为10byte,如果采用i2c接口传递时间信息,并按照i2c接口的最大速率(即400k串行传输),则每个bit所发送时间是2.5us,传输8byte时间bit则需要160us,同时i2c接口还存在起始、结束、地址、应答等bit开销时间,因此cpu模块将数据采集装置的时间传输至cpld模块至少需要200us,因此i2c接口这条路径不适合应用于us级精度的数据同步系统中。
[0047]
另一条路径是cpu模块通过双口ram模块间接地连接到cpld模块,该路径的时间获取方法可以利用了双口ram模块的底层硬件特性,可以高速度、低延时地传递时间信息;另外,双口ram模块除了具备读写数据功能外,还具备中断机制,即在双口ram模块在读写数据的特定地址后还能触发中断,其中,所述中断为左中断或右中断,即当cpu模块位于双口ram模块的右侧时,则cpu模块向该双口ram模块的特定地址写入数据后,该双口ram模块会立即触发左中断信号;或者,当cpu模块位于双口ram模块的左侧时,则cpu模块向该双口ram模块的特定地址写入数据后,该双口ram模块会立即触发右中断信号,具体请参考下面的两个。
[0048]
结合图1和2,在一个实时例中的基于双口ram的数据同步系统,包括处理中心装置和数据采集装置;所述数据采集装置用于将采集的实时数据发送给所述处理中心装置;其中,该数据采集装置包括双口ram模块、cpu模块和逻辑硬件芯片,所述双口ram模块的右侧连接cpu模块,左侧连接cpld模块;
[0049]
所述cpu模块将数据同步系统的当前时间信息写入双口ram模块的第一地址,即在双口ram模块保存了数据同步系统的当前时间;
[0050]
所述cpu模块向双口ram模块中的第二地址写入所述实时数据,以触发双口ram模块产生左中断信号,其中,该第二地址用于存储所述左中断信号;
[0051]
所述双口ram模块将所述左中断信号传输至cpld模块。
[0052]
进一步的,所述cpld模块根据所述左中断信号从所述第一地址获取所述当前时间信息,并根据所述当前时间信息更新当前时间,cpld模块将更新后的当前时间为基准继续计时。
[0053]
通过上述过程就完成了一次cpu模块向cpld模块传输时间信息的功能。
[0054]
进一步的,参见图2,所述数据采集装置还包括adc模块(analog-to-digital converter,模/数转换器),所述adc模块用于将所述数据采集装置所采集的实时数据的模拟信号转换成数字信号,并将所述数字信号通发送给cpld模块;优选的,将所述数字信号通过spi接口发送给cpld模块;
[0055]
cpld模块用于接收adc模块所述发送的数字信号,并对所述数字信号进行组包排序,然后对相邻的数据包之间插入戳,将插入时间戳的数据包写入双口ram模块中;
[0056]
双口ram模块用于缓存所述cpld模块所发送的数据包中的数据,当缓存数据到达预设容量后,cpld模块通过与触发左中断信号同样的原理,触发右中断信号,cpu模块收到右中断信号后,立即从双口ram中获取缓存数据;由于双口ram模块具备写入、读取可同时操作的特点,在高速数据采集系统中可以很方便地实现收发同步传输;
[0057]
所述cpu模块用于读取双口ram模块所获取的缓存的数据,并按照网络通信协议发送至网口模块。进一步的,参见图2,所述数据采集装置还包括网口模块,所述网口模块还将cpu模块所发送的数据通过物理接口发送至所述处理中心装置。
[0058]
由于双口ram模块中存储有数据,数据的地址可理解为邮箱,在双口ram模块存储了数据即可产生中断,因此本实施例可以利用双口ram模块的这种邮箱特性,以获取高精度、低延时的时间信息,使得本实施例中的数据采集装置所采集的装置可以达到ns级,本实施例可以广泛应用于各种需要数据同步的应用装置当中。
[0059]
需要说明的是,上述实施例是以cpld模块来具体说明本发明的数据同步方法的;在其他实施例中,也可以采用其它硬件芯片,例如专用集成电路(application-specific integrated circuit,asic);现场可编程逻辑门阵列(fieid-programmablegate array,fpga);通用阵列逻辑(generic arraylogic,gal)等或其任意组合;本发明对逻辑器件不作限制。
[0060]
下面将以芯片datesheet(芯片手册)的microchip的sama5d2系列cpu和cypress的cy7c系列双口ram为例来计算数据采集装置所传输的时间信息;其中,图3为cypress的cy7c系列双口ram的左中断触发时序图;图4为cypress的cy7c系列双口ram的右中断触发时序图;图5为cypress的cy7c系列双口ram的各参数示意图;图6为microchip的sama5d2系列cpu ebi接口smc控制器写操作时序图,下面请参考图3、4、5和6
[0061]
本实施例的cpu模块与双口ram模块通过ebi总线连接,cpu模块内部通过smc控制器读写ram数据,该cpu模块被配置为16bit读写模式,一次读或写操作为6个mclk时钟周期,其中,mclk=126m,即8ns为一个时钟周期,48ns完成一次16bit(2byte)的读或者写。
[0062]
当cpu模块需要发送时间信息(8byte)时,通过sama5d2的smc控制器,连续向双口ram模块的5个地址写入数据,前4个地址为时间信息地址,最后一个地址为中断触发地址,即cpu模块向双口ram模块写入一次时间信息的时长为t
cpuwrite
=5*48=240ns。
[0063]
当双口ram模块的中断触发地址被写入数据时,在ce(片选)或者r/w(读写)信号变
低后的t
ins
时间段内,即可触发中断信号,t
ins
最大值为20ns,也就是最多在20ns时间段内cpld模块可以收到中断,本实施例中的cpld模块的工作时钟为频率f
cpld
=50m(时钟周期t
cpld
=20ns),即cpld模块可以响应中断的最长时间是t
cpldrespond
=t
ins
+t
cpld
=40ns。cpld模块响应中断后就会读取双口ram模块所述获取的时间信息,cpld模块在120ns内即可完成一次16bit(2byte)的读或者写,即cpld模块读取完8byte的时间信息需要的时间为t
cpldread
=480ns;其中,t
ins
为中断设置时间。
[0064]
综上,可以得出数据同步系统在获取的时间信息的时长t
all

[0065]
t
all
=t
cpuwrite
+t
cpldrespond
+t
cpldread
=240+40+480=760ns
[0066]
其中,t
cpuwrite
为cpu模块向双口ram模块完成一次时间写入的时长;t
cpldrespond
为cpld响应中断的最长时间;t
cpldread
为cpld模块读取完8byte的时间信息所需要时间。
[0067]
因此,通过上面的例子可以看出,本发明将双口ram模块的中断机制应用于时间信息的获取和传递,采用本实施例的数据同步方法和系统,可以使得数据同步系统所获取的时间信息的时长不到1us,所以本实施的数据同步方法非常适合应用于ns级精度的数据同步系统当中。
[0068]
参见图7,图7为本发明实施例提供的一种基于双口ram的数据同步方法的流程示意图,该数据同步方法包括以下步骤:
[0069]
s100:cpu模块将时间信息写入双口ram模块的第一地址;
[0070]
s200:cpu模块向双口ram模块中的第二地址写入所述实时数据,以触发双口ram模块产生中断信号,所述第二地址用于存储所述中断信号;
[0071]
s300:双口ram模块将所述中断信号传输至cpld模块;
[0072]
s400:cpld模块根据所述中断信号从所述第一地址获取所述时间信息。
[0073]
进一步的,所述数据同步方法还包括以下步骤:
[0074]
s500:所述逻辑硬件芯片根据所述中断信号从所述第一地址获取所述时间信息后,该数据同步系统还根据所述时间信息更新该数据同步系统的当前时间,cpu模块将更新后的当前时间为基准继续计时。
[0075]
进一步的,所述中断信号为左中断信号或右中断信号。上述数据同步方法的具体实施方式与实施例一的数据同步装置的各个步骤的具体实施方式一致,在此不再赘述。
[0076]
本发明的有益效果:
[0077]
本发明的双口ram模块中存储有数据,数据的地址可理解为邮箱,在双口ram模块存储了数据即可产生中断,因此本实施例可以利用双口ram模块的这种邮箱特性,以获取高精度、低延时的时间信息,使得本实施例中的数据采集装置所采集的装置可以达到ns级,本实施例可以广泛应用于各种需要数据同步的应用装置当中。
[0078]
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0079]
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为
一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0080]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0081]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0082]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0083]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1