本发明涉及计算存储技术领域,尤其涉及一种存储器的配置方法及配置装置。
背景技术:
fpga(field-programmablegatearray,现场可编程门阵列)中,当有多种数据需要配置时,通常每种数据占用一块存储器,当数据所要占用的配置位宽远小于存储器的宽度时,会导致存储器的空间浪费。为此,将多种配置设置于同一块存储器上,然而这种配置方法不便于处理器下发或改变单一的某种配置。
技术实现要素:
为了解决上述问题,本发明提供一种存储器的配置方法及配置装置。
为解决上述问题,本发明提供的存储器的配置方法,包括:
确定存储器的多个片选中的高电位片选;
读取所述存储器上处于低电位片选的子区域的配置项,并将所述配置项返回写入对应的所述低电位片选的子区域;
当所述存储器的写使能信号处于高电位时,在与所述高电平片选对应的子区域进行配置项的读和/或写。
上述的配置方法,所述确定存储器的多个片选中的高电位片选中,所述高电位片选的数量为一个。
上述的配置方法,所述在与所述高电平片选对应的子区域进行配置项的读和/或写包括:
将与所述高电平片选对应的子区域上的配置项赋值输出至所述处理器;和/或
接收处理器输入的下发配置,并将所述下发配置填入与所述高电平片选对应的子区域。
上述的配置方法,任一所述子区域的位宽适于填入所述处理器输入的下发配置。
上述的配置方法,所述确定存储器的多个片选中的高电位片选之前,还包括:
在一个存储区域上,按宽度配置为多个子区域,一个所述子区域对应一组配置;
为所述每一个子区域设置一个片选。
上述的配置方法,多个所述子区域的位宽相等;或多个所述子区域的位宽不完全相等。
上述的配置方法,所述存储器为fpga的存储器。
为解决上述问题,本发明提供一种存储器的配置装置,包括:
确定模块,用于确定存储器的多个片选中的高电位片选;
返回模块,用于读取所述存储器上处于低电位片选的子区域的配置项,并将所述配置项返回写入对应的所述低电位片选的子区域;
读写模块,用于当所述存储器的写使能信号处于高电位时,在与所述高电平片选对应的子区域进行配置项的读和/或写。
上述的配置装置,还包括:
配置模块,用于在一个存储区域上,按宽度配置为多个子区域,一个所述子区域对应一组配置;
片选设置模块,用于为所述每一个子区域设置一个片选。
本发明提供的存储器上的配置方法,包括:确定存储器的多个片选中的高电位片选;读取所述存储器上处于低电位片选的子区域的配置项,并将所述配置项返回写入对应的所述低电位片选的子区域;当所述存储器的写使能信号处于高电位时,在与所述高电平片选对应的子区域进行配置项读和/或写。通过上述配置方法,能够方便地只针对存储器上的一个子区域进行配置项的读和/或写。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明一示范性实施例中cpu的时序图;
图2为本发明一示范性实施例中的存储器的配置方法的流程图;
图3为本发明又一示范性实施例中的存储器的配置装置的结构示意图。
附图标记:
100-配置装置;10-确定模块;20-返回模块;30-读写模块。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为cpu接口的时序图,该接口是fpga内部的比较通用的cpu接口。该接口由五组信号组成,分别为cpu片选cpu_cs,cpu写使能cpu_wen,cpu地址cpu_addr,cpu要写入的数据cpu_din,和cpu读出的数据cpu_dout。从图1可知,cpu_wen在cpu_cs切换到高电平之后一段时间才切换至高电平,且在cpu_cs处于高电位的周期内处于高电位。
图2为本发明一示范性实施例中的存储区的配置方法的流程图。如图2所示,该方法包括:
s1:确定存储器的多个片选中的高电位片选;
s2:读取所述存储器上处于低电位片选的子区域的配置项,并将所述配置项返回写入对应的所述低电位片选的子区域;
s3:当所述存储器的写使能信号处于高电位时,在与所述高电平片选对应的子区域进行配置项的读和/或写。
在s1中,存储器有多个片选,但正常情况下,只有一个片选为高电平片选,其余片选为低电平片选。
s2中,对于低电平的片选,读取与低电平对应的子区域的配置项,且将配置项返回到对应的低电位片选的子区域中。即,低电位片选的子区域中,其上的配置项保持不变。
例如,存储器上具有4个子区域,每个子区域的位宽假设为1bit,则4个子区域分别为bit[0]、bit[1]、bit[2]和bit[3],步骤s1中,当bit[0]对应的片选cpu_cs0为高电平时,意味着cpu_cs1、cpu_cs2和cpu_cs3为低电平,则在步骤s2中,bit[1]、bit[2]和bit[3]上的配置项保持不变。
s3中,存储器的写使能信号被拉高,写使能信号被拉高的时钟在于cup_cs信号被拉高之后(参图1)。由于写使能被拉高,使得与高电平片选对应的子区域能够进行配置项的读和/或写。
具体的,s3中可以包括s31:接收处理器输入的下发配置,并将所述下发配置填入与所述高电平片选对应的子区域,进而实现处理器仅对高电平片选对应的子区域进行数据写入。s3中还可以包括s32:将与所述高电平片选对应的子区域上的配置项赋值输出至所述处理器,进而实现与高电平片选对应的子区域的输出至处理器。
s3中,每个子区域的位宽能够适于填入处理器输入的下发配置,换言之,任一子区域的位宽不应小于该下发配置的位宽。
例如存储器上具有4个子区域,分别即为bit[0]、bit[1]、bit[2]和bit[3],步骤s1中,当bit[0]对应的片选cpu_cs0为高电平时,意味着cpu_cs1、cpu_cs2和cpu_cs3为低电平,则在步骤s2中,bit[1]、bit[2]和bit[3]上的配置项保持不变,即ram_din[1]=ram_out[1],ram_din[2]=ram_out[2],和ram_din[3]=ram_out[3]。步骤s3中写使能处于高电平后,s4中,ram_din[0]=cpu_din[0],且cpu_dout[0]=ram_dout[0]。
当bit[1]对应的片选cpu_cs1为高电平时,意味着cpu_cs0、cpu_cs2和cpu_cs3为低电平,则在步骤s2中,bit[0]、bit[2]和bit[3]上的配置项保持不变,即ram_din[0]=ram_out[0],ram_din[2]=ram_out[2],ram_din[3]=ram_out[3],而ram_din[1]=cpu_din[0],且cpu_dout[0]=ram_dout[1]。
本发明实施例中,
ram写使能等式:
ram_wen=(cpu_cs3|cpu_cs2|cpu_cs1|cpu_cs0)&cpu_wen;
ram写地址等式:
ram_addr[10:0]=cpu_addr[10:0];
ram写数据等式:
ram_din[0]=(cpu_cs0==1'd1)?cpu_din[0]:ram_dout[0];
ram_din[1]=(cpu_cs1==1'd1)?cpu_din[0]:ram_dout[1];
ram_din[2]=(cpu_cs2==1'd1)?cpu_din[0]:ram_dout[2];
ram_din[3]=(cpu_cs3==1'd1)?cpu_din[0]:ram_dout[3];
cpu读数据等式:
cpu_dout[0]=(cpu_cs0==1'd1)?ram_dout[0]:1'd0;
cpu_dout[0]=(cpu_cs1==1'd1)?ram_dout[1]:1'd0;
cpu_dout[0]=(cpu_cs2==1'd1)?ram_dout[2]:1'd0;
cpu_dout[0]=(cpu_cs3==1'd1)?ram_dout[3]:1'd0;
在步骤s1之前,还包括s01和s02。
其中,s01:在一个存储区域上,按宽度配置为多个子区域,一个所述子区域对应一组配置。其中,多个子区域的位宽可以完全相等,也可以不完全相等,或者等差形式,不再赘述。
s02:为所述每一个子区域设置一个片选,以方便后续对任一子区域进行单独的读写,便于处理器下发或改变单一的某种配置。
本发明实施例中的存储器,可以为fpga(field-programmablegatearray,现场可编程门阵列)的存储器。
图3为本发明再一示范性实施例中的存储区的配置装置的结构示意图。如图3所示,存储器的配置装置100包括确定模块10、返回模块20和读写模块30。
确定模块10,用于确定存储器的多个片选中的高电位片选。确定模块10的确定过程中,存储器有多个片选,但正常情况下,只有一个片选为高电平片选,其余片选为低电平片选。
返回模块20,用于读取所述存储器上处于低电位片选的子区域的配置项,并将所述配置项返回写入对应的所述低电位片选的子区域。具体的,用于对于低电平的片选,读取与低电平对应的子区域的配置项,且将配置项返回到对应的低电位片选的子区域中。即,低电位片选的子区域中,其上的配置项保持不变。
读写模块30,用于当所述存储器的写使能信号处于高电位时,在与所述高电平片选对应的子区域进行配置项读和/或写。
其中,存储器的写使能信号被拉高,写使能信号被拉高的时钟在于cup_cs信号被拉高之后(参图1)。
读写模块30可以包括读子模块和写子模块。写子模块用于接收处理器输入的下发配置,并将所述下发配置填入与所述高电平片选对应的子区域,进而实现处理器仅对高电平片选对应的子区域进行数据写入。读子模块用于将与所述高电平片选对应的子区域上的配置项赋值输出至所述处理器,进而实现与高电平片选对应的子区域的输出至处理器。
在读写模块30中,应使得每个子区域的位宽能够适于填入处理器输入的下发配置,换言之,任一子区域的位宽不应小于该下发配置的位宽。
例如存储器上具有4个子区域,每个子区域的位宽假设为1bit,则4个子区域分别为bit[0]、bit[1]、bit[2]和bit[3],步骤s1中,当bit[0]对应的片选cpu_cs0为高电平时,意味着cpu_cs1、cpu_cs2和cpu_cs3为低电平,则在步骤s2中,bit[1]、bit[2]和bit[3]上的配置项保持不变,即ram_din[1]=ram_out[1],ram_din[2]=ram_out[2],ram_din[3]=ram_out[3]。步骤s3中写使能处于高电平后,s4中,ram_din[0]=cpu_din[0],且cpu_dout[0]=ram_dout[0]。
当bit[1]对应的片选cpu_cs1为高电平时,意味着cpu_cs0、cpu_cs2和cpu_cs3为低电平,则在步骤s2中,bit[0]、bit[2]和bit[3]上的配置项保持不变,ram_din[0]=ram_out[0],ram_din[2]=ram_out[2],ram_din[3]=ram_out[3],而ram_din[1]=cpu_din[0],且cpu_dout[0]=ram_dout[1]。
本发明实施例中,ram写使能等式:
ram_wen=(cpu_cs3|cpu_cs2|cpu_cs1|cpu_cs0)&cpu_wen;
ram写地址等式:
ram_addr[10:0]=cpu_addr[10:0];
ram写数据等式:
ram_din[0]=(cpu_cs0==1'd1)?cpu_din[0]:ram_dout[0];
ram_din[1]=(cpu_cs1==1'd1)?cpu_din[0]:ram_dout[1];
ram_din[2]=(cpu_cs2==1'd1)?cpu_din[0]:ram_dout[2];
ram_din[3]=(cpu_cs3==1'd1)?cpu_din[0]:ram_dout[3];
cpu读数据等式:
cpu_dout[0]=(cpu_cs0==1'd1)?ram_dout[0]:1'd0;
cpu_dout[0]=(cpu_cs1==1'd1)?ram_dout[1]:1'd0;
cpu_dout[0]=(cpu_cs2==1'd1)?ram_dout[2]:1'd0;
cpu_dout[0]=(cpu_cs3==1'd1)?ram_dout[3]:1'd0;
本发明实施例的存储器的配置装置100,还包括配置模块和片选设置模块。
配置模块,用于在一个存储区域上,按宽度配置为多个子区域,一个所述子区域对应一组配置。其中,多个子区域的位宽可以完全相等,也可以不完全相等,或者等差形式,不再赘述。
片选设置模块,用于为所述每一个子区域设置一个片选,以方便后续对任一子区域进行单独的读写,便于处理器下发或改变单一的某种配置。
本发明实施例中的存储器,可以为fpga(field-programmablegatearray,现场可编程门阵列)的存储器。
以上所述的具体实例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。