掌桥专利:专业的专利平台
掌桥专利
首页

一种基于SRAM的数据存取方法和数据存取系统

文献发布时间:2023-06-19 18:37:28


一种基于SRAM的数据存取方法和数据存取系统

技术领域

本发明涉及智能机器人技术领域,具体涉及一种基于SRAM的数据存取方法和数据存取系统。

背景技术

在当前面对工业应用的工控机中,SRAM作为程序运行中必须应用的一个部件,其安全性要求非常高。在对SRAM中的数据读取过程中,如果发生外部侵入和篡改、或者应用环境恶劣会导致SRAM中存储的数据读出时发生错误,进而导致一些不可预测的后果,而且软件又不容易定位到数据读取错误的位置。

发明内容

本发明提供了一种基于SRAM的数据存取方法和数据存取系统。本发明的具体技术方案如下:

一种基于SRAM的数据存取方法,该方法包括以下步骤:S1:数据写入模块为若干字节数据的每个字节设置校检位,并根据每个字节的数据确定相对应的校检位的数值;S2:数据写入模块根据若干字节数据的写入地址,将若干字节数据和相对应的校检位的数值写入到SRAM中;S3:数据读取模块根据数据的读取地址,从SRAM中读取数据和相对应的校检位的数值,并在读取过程中根据读取的数据和相对应的校检位的数值来确定读取的数据是否正确;S4:若数据读取模块判断读取的数据正确,则将读取中的数据读取出来;若数据读取模块判断读取的数据错误,则停止读取,然后将错误的数据和错误的数据的读取地址保存到SRAM中。

进一步地,步骤S1中,数据写入模块每次写入到SRAM中的数据为36位,其中,36位数据包括4个字节的数据和4个字节的数据中每个字节对应的校检位的数值,1个字节的数据为8位数据。

进一步地,步骤S1中,数据写入模块根据每个字节的数据确定相对应的校检位的数值,包括以下步骤:数据写入模块选取其中一个字节的数据,将该字节的8位数据依次与0进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的校检位的数值为0;若异或运算结果中,1的个数为奇数,则该字节的数据对应的校检位的数值为1;依次类推,数据写入模块依次获取每个字节的数据对应的校检位的数值。

进一步地,步骤S1中,数据写入模块根据每个字节的数据确定相对应的校检位的数值,包括以下步骤:数据写入模块选取其中一个字节的数据,将该字节的8位数据依次与1进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的校检位的数值为1;若异或运算结果中,1的个数为奇数,则该字节的数据对应的校检位的数值为0;依次类推,数据写入模块依次获取每个字节的数据对应的校检位的数值。

进一步地,步骤S3中,数据读取模块在读取过程中根据读取的数据和相对应的校检位的数值来确定读取的数据是否正确,包括以下步骤:数据读取模块在读取数据过程中,根据读取数据的读取地址,依次读取每个字节的数据;数据读取模块在读取一个字节的数据后,根据该字节的数据来获取检测位的数值;数据读取模块将该字节的检测位的数据和该字节对应的校检位数据进行异或运算;若异或运算的结果为0,则数据读取模块正在读取的数据正确,数据读取模块将数据从SRAM中读取出来;若异或运算的结果为0,则数据读取模块正在读取的数据错误,数据读取模块停止读取,然后将错误的数据和错误的数据的读取地址保存到SRAM中。

进一步地,数据读取模块根据该字节的数据来获取检测位的数值,包括以下步骤:数据读取模块将该字节的8位数据依次与0进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的检测位的数值为0;若异或运算结果中,1的个数为奇数,则该字节的数据对应的检测位的数值为1。

进一步地,数据读取模块根据该字节的数据来获取检测位的数值,包括以下步骤:数据读取模块将该字节的8位数据依次与1进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的检测位的数值为1;若异或运算结果中,1的个数为奇数,则该字节的数据对应的检测位的数值为0。

进一步地,数据读取模块将错误的数据和错误的数据的读取地址保存到SRAM后,发送中断信号给CPU,使CPU定位错误数据的字节在若干字节数据中的排列位置和读取地址。

一种数据写入方法,该方法包括以下步骤:数据写入模块为若干字节数据的每个字节设置校检位,并根据每个字节的数据确定相对应的校检位的数值;数据写入模块根据若干字节数据的写入地址,将若干字节数据和相对应的校检位的数值写入到SRAM中。

一种数据读取方法,该方法包括以下步骤:数据读取模块根据数据的读取地址,从SRAM中读取数据和相对应的校检位的数值,并在读取过程中根据读取的数据和相对应的校检位的数值来确定读取的数据是否正确;若数据读取模块判断读取的数据正确,则将读取中的数据读取出来;若数据读取模块判断读取的数据错误,则停止读取,然后将错误的数据和错误的数据的读取地址保存到SRAM中。

一种数据存取系统,该数据存取系统执行上述的基于SRAM的数据存取方法,所述数据存储系统包括CPU、数据写入模块、数据读取模块和SRAM;所述CPU用于定位错误数据的字节在若干字节数据中的排列位置和读取地址;所述数据写入模块用于将数据写入SRAM中;所述数据读取模块用于从SRAM中读取数据;所述SRAM用于保存数据。

与现有的技术相比,本发明的有益效果在于:本申请通过在数据写入SRAM中之前,根据每个字节的数据内容设置校检位的数值,然后将数据和校检位一起写入到SRAM中,使数据读取模块在读取SRAM中的数据时,可以根据读取到的数据与校检位的数值来确定读取到的数据是否正确,提高数据读取的准确性;对每一个字节的数据都进行校检,确保发生在每个字节的错误都能够被检测到;在读出错误发生时,将发生错误的数据地址和字节在数据中的排列位置保存下来,便于后续的定位和修改。

附图说明

图1为本发明一种实施例中数据存取的流程示意图;

图2为本发明一种实施例中的写入数据的结构示意图1;

图3为本发明一种实施例中的写入数据的结构示意图2。

具体实施方式

下面详细描述本发明的实施例,所述的实施例示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。

在本发明的描述中,需要说明的是,对于方位词,如有术语“中心”,“横向”、“纵向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”、“顺时针”、“逆时针”等指示方位和位置关系为基于附图所示的方位或位置关系,仅是为了便于叙述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定方位构造和操作,不能理解为限制本发明的具体保护范围。

此外,如有术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或隐含指明技术特征的数量。由此,限定有“第一”、“第二”特征可以明示或者隐含包括一个或者多个该特征,在本发明描述中,“至少”的含义是一个或一个以上,除非另有明确具体的限定。

在本发明中,除另有明确规定和限定,如有术语“组装”、“相连”、“连接”术语应作广义去理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;也可以是机械连接;可以是直接相连,也可以是通过中间媒介相连,可以是两个元件内部相连通。对于本领域普通技术人员而言,可以根据具体情况理解上述的术语在本发明中的具体含义。

在发明中,除非另有规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一特征和第二特征不是直接接触而是通过它们之间的另外特征接触。而且,第一特征在第二特征“之上”、“之下”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅是表示第一特征水平高度高于第二特征的高度。第一特征在第二特征 “之上”、“之下”和“下面”包括第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度低于第二特征。

下面结合说明书的附图,通过对本发明的具体实施方式作进一步的描述,使本发明的技术方案及其有益效果更加清楚、明确。下面通过参考附图描述实施例是示例性的,旨在解释本发明,而不能理解为对本发明的限制。

静态随机存取存储器(Static Random-Access Memory,SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。相对之下,动态随机存取存储器(DRAM)里面所储存的数据就需要周期性地更新。然而,当电力供应停止时,SRAM储存的数据还是会消失(被称为volatile memory),这与在断电后还能储存资料的ROM或闪存是不同的。它有两种规格:一种是固定在主板上的高速缓存(CacheMemory);另一种是插在卡槽上的COAST(Cache On A Stick)扩充用的高速缓存,另外在CMOS芯片1468l8的电路里,它的内部也有较小容量的128字节SRAM,存储我们所设置的配置数据。

字节(Byte /bait/ n. [C])是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位(bit),也在一些计算机编程语言中表示数据类型和语言字符。Bit是计算机中数据的最小单位,即二进制位,其值为0和1。

如图1所示,一种基于SRAM的数据存取方法,该方法包括以下步骤:

步骤S1:数据写入模块为若干字节数据的每个字节设置校检位,并根据每个字节的数据确定相对应的校检位的数值。一个字节一般有8位,若是需要进行奇偶校验需要添加一个码元,所以发送接收时是8位数据位,一位校验位。奇偶校验就是指每次发送接收的每一帧数据加上校验码之后1的个数是奇数还是偶数。奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。它是由n-1位信息元和1位校验元组成,可以表示成为(n,n-1)。如果是奇校验码,在附加上一个校验元以后,码长为n的码字中“1”的个数为奇数个;如果是偶校验码,在附加上一个校验元以后,码长为n的码字中“1”的个数为偶数个。设:如果一个偶校验码的码字用A=[an-1,an-2,…,a1,a0]表示。例:偶校验码,8位数据位和1位校验位,共9个数据,其中1的个数必须为偶数;一般校验位可以由八位数据位按照二进制方式直接相加(不考虑进位)得到。11001010的校验位a=(1+1+0+0+1+0+1+0)=0;所以发送数据时为110010100。奇校验码,8位数据位和1位校验位,共9个数据,其中1的个数必须为奇数,一般校验位可以由八位数据位直接相加取反(同样不考虑进位)。11001010的校验位a=~(1+1+0+0+1+0+1+0)=1;所以发送数据时为110010101。

作为其中一种实施例,如图2和图3所示,步骤S1中,数据写入模块每次写入到SRAM中的数据为36位,其中,36位数据包括4个字节的数据和4个字节的数据中每个字节对应的校检位的数值,1个字节的数据为8位数据。在SRAM的组成结构中,原本的32位数据是需要扩展到36位的,也就是说需要增加4个额外bit,分别对应组成一个word数据的4个byte的奇偶校验位。写入的数据包括4个字节,byte0、byte1、byte2和byte3,和4个相对应的校检位,P0、P1、P2和P3。每个字节的数据和相对应的检验位放在一起保存在SRAM中,也可以通过字节数据排列存储,检验位根据字节数据的排列顺序进行排列后与字节数据存储在一起。

作为其中一种实施例,基于二进制数据的代码数据的设置,可以通过异或运算来获取奇偶校检位的数值。步骤S1中,数据写入模块根据每个字节的数据确定相对应的校检位的数值,包括以下步骤:数据写入模块选取其中一个字节的数据,将该字节的8位数据依次与0进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的校检位的数值为0;若异或运算结果中,1的个数为奇数,则该字节的数据对应的校检位的数值为1;依次类推,数据写入模块依次获取每个字节的数据对应的校检位的数值。在进行偶校检时将一个字节的每一位数据与0进行异或,通过异或运算的结果来确定1的个数,偶校检进行异或运算得到的数据为原来的数据,即11001010与0进行异或,异或的结果为11001010,1的个数为偶数,校检位的数值为0,写入的数据为110010100。

作为其中一种实施例,步骤S1中,数据写入模块根据每个字节的数据确定相对应的校检位的数值,包括以下步骤:数据写入模块选取其中一个字节的数据,将该字节的8位数据依次与1进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的校检位的数值为1;若异或运算结果中,1的个数为奇数,则该字节的数据对应的校检位的数值为0;依次类推,数据写入模块依次获取每个字节的数据对应的校检位的数值。在进行奇校检时将一个字节的每一位数据与1进行异或,通过异或运算的结果来确定1的个数,奇校检进行异或运算得到的数据为原来数据的反数,即11001010与0进行异或,异或的结果为00110101,1的个数为偶数,校检位的数值为1,写入的数据为110010101。

步骤S2:数据写入模块在得到每个字节的校检位后,数据写入模块就可以根据若干字节数据的写入地址,将若干字节数据和相对应的校检位的数值写入到SRAM中,进行数据保存。

步骤S3:数据读取模块根据数据的读取地址,从SRAM中读取数据和相对应的校检位的数值,并在读取过程中根据读取的数据和相对应的校检位的数值来确定读取的数据是否正确。数据读取模块在读取数据时,采用上述的方法根据读取到的数据来获取一个检测位的数值,然后比较检测位和校检位的数值来确定读取的数据是否错误。

作为其中一种实施例,步骤S3中,数据读取模块在读取过程中根据读取的数据和相对应的校检位的数值来确定读取的数据是否正确,包括以下步骤:数据读取模块在读取数据过程中,根据读取数据的读取地址,依次读取每个字节的数据;数据读取模块在读取一个字节的数据后,根据该字节的数据来获取检测位的数值;数据读取模块将该字节的检测位的数据和该字节对应的校检位数据进行异或运算;若异或运算的结果为0,则数据读取模块正在读取的数据正确,数据读取模块将数据从SRAM中读取出来;若异或运算的结果为0,则数据读取模块正在读取的数据错误,数据读取模块停止读取,然后将错误的数据和错误的数据的读取地址保存到SRAM中。数据写入时,如果采用了奇校检来确定校检位的数值,则在数据读取时,也要采用奇校检来确定检测位的数值;同理,数据写入时,如果采用了偶校检来确定校检位的数值,则在数据读取时,也要采用偶校检来确定检测位的数值。如果读取的数据是正确的,那检测位和校检位的数值都是0,或者都是1,0与0或1与1进行异或运算的结果都为0,如果检测位和校检位进行异或运算的结果为1,则表明读取的数据存在错误,停止读取。

作为其中一种实施例,数据读取模块根据该字节的数据来获取检测位的数值,包括以下步骤:数据读取模块将该字节的8位数据依次与0进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的检测位的数值为0;若异或运算结果中,1的个数为奇数,则该字节的数据对应的检测位的数值为1。

作为其中一种实施例,数据读取模块根据该字节的数据来获取检测位的数值,包括以下步骤:数据读取模块将该字节的8位数据依次与1进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的检测位的数值为1;若异或运算结果中,1的个数为奇数,则该字节的数据对应的检测位的数值为0。

作为其中一种实施例,数据读取模块将错误的数据和错误的数据的读取地址保存到SRAM后,发送中断信号给CPU,使CPU定位错误数据的字节在若干字节数据中的排列位置和读取地址。

一种数据写入方法,该方法包括以下步骤:数据写入模块为若干字节数据的每个字节设置校检位,并根据每个字节的数据确定相对应的校检位的数值;数据写入模块根据若干字节数据的写入地址,将若干字节数据和相对应的校检位的数值写入到SRAM中。

作为其中一种实施例,步骤S1中,数据写入模块每次写入到SRAM中的数据为36位,其中,36位数据包括4个字节的数据和4个字节的数据中每个字节对应的校检位的数值,1个字节的数据为8位数据。

作为其中一种实施例,步骤S1中,数据写入模块根据每个字节的数据确定相对应的校检位的数值,包括以下步骤:数据写入模块选取其中一个字节的数据,将该字节的8位数据依次与0进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的校检位的数值为0;若异或运算结果中,1的个数为奇数,则该字节的数据对应的校检位的数值为1;依次类推,数据写入模块依次获取每个字节的数据对应的校检位的数值。

作为其中一种实施例,步骤S1中,数据写入模块根据每个字节的数据确定相对应的校检位的数值,包括以下步骤:数据写入模块选取其中一个字节的数据,将该字节的8位数据依次与1进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的校检位的数值为1;若异或运算结果中,1的个数为奇数,则该字节的数据对应的校检位的数值为0;依次类推,数据写入模块依次获取每个字节的数据对应的校检位的数值。

一种数据读取方法,该方法包括以下步骤:数据读取模块根据数据的读取地址,从SRAM中读取数据和相对应的校检位的数值,并在读取过程中根据读取的数据和相对应的校检位的数值来确定读取的数据是否正确;若数据读取模块判断读取的数据正确,则将读取中的数据读取出来;若数据读取模块判断读取的数据错误,则停止读取,然后将错误的数据和错误的数据的读取地址保存到SRAM中。

作为其中一种实施例,数据读取模块在读取过程中根据读取的数据和相对应的校检位的数值来确定读取的数据是否正确,包括以下步骤:数据读取模块在读取数据过程中,根据读取数据的读取地址,依次读取每个字节的数据;数据读取模块在读取一个字节的数据后,根据该字节的数据来获取检测位的数值;数据读取模块将该字节的检测位的数据和该字节对应的校检位数据进行异或运算;若异或运算的结果为0,则数据读取模块正在读取的数据正确,数据读取模块将数据从SRAM中读取出来;若异或运算的结果为0,则数据读取模块正在读取的数据错误,数据读取模块停止读取,然后将错误的数据和错误的数据的读取地址保存到SRAM中。

作为其中一种实施例,数据读取模块根据该字节的数据来获取检测位的数值,包括以下步骤:数据读取模块将该字节的8位数据依次与0进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的检测位的数值为0;若异或运算结果中,1的个数为奇数,则该字节的数据对应的检测位的数值为1。

作为其中一种实施例,数据读取模块根据该字节的数据来获取检测位的数值,包括以下步骤:数据读取模块将该字节的8位数据依次与1进行异或运算;若异或运算结果中,1的个数为偶数,则该字节的数据对应的检测位的数值为1;若异或运算结果中,1的个数为奇数,则该字节的数据对应的检测位的数值为0。

作为其中一种实施例,数据读取模块将错误的数据和错误的数据的读取地址保存到SRAM后,发送中断信号给CPU,使CPU定位错误数据的字节在若干字节数据中的排列位置和读取地址。

一种数据存取系统,该数据存取系统执行上述的基于SRAM的数据存取方法,所述数据存储系统包括CPU、数据写入模块、数据读取模块和SRAM;所述CPU用于定位错误数据的字节在若干字节数据中的排列位置和读取地址;所述数据写入模块用于将数据写入SRAM中;所述数据读取模块用于从SRAM中读取数据;所述SRAM用于保存数据。数据写入模块和数据读取模块为硬件电路,数据写入模块和数据读取模块可以是同一个具有数据写入和存储功能的模块,也可以使两个独立的模块。

与现有的技术相比,本发明的有益效果在于:本申请通过在数据写入SRAM中之前,根据每个字节的数据内容设置校检位的数值,然后将数据和校检位一起写入到SRAM中,使数据读取模块在读取SRAM中的数据时,可以根据读取到的数据与校检位的数值来确定读取到的数据是否正确,提高数据读取的准确性;对每一个字节的数据都进行校检,确保发生在每个字节的错误都能够被检测到;在读出错误发生时,将发生错误的数据地址和字节在数据中的排列位置保存下来,便于后续的定位和修改。

在说明书的描述中,参考术语“合一个实施例”、“优选地”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点,包含于本发明的至少一个实施例或示例中,在本说明书中对于上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或者示例中以合适方式结合。说明书的描述中连接的所述连接方式具有明显的效果和实用效力。

通过上述的结构和原理的描述,所属技术领域的技术人员应当理解,本发明不局限于上述的具体实施方式,在本发明基础上采用本领域公知技术的改进和替代均落在本发明的保护范围,应由各权利要求限定之。

技术分类

06120115636439