CN101751980B - 基于存储器知识产权核的嵌入式可编程存储器 - Google Patents
基于存储器知识产权核的嵌入式可编程存储器 Download PDFInfo
- Publication number
- CN101751980B CN101751980B CN 200810240357 CN200810240357A CN101751980B CN 101751980 B CN101751980 B CN 101751980B CN 200810240357 CN200810240357 CN 200810240357 CN 200810240357 A CN200810240357 A CN 200810240357A CN 101751980 B CN101751980 B CN 101751980B
- Authority
- CN
- China
- Prior art keywords
- data
- register
- port
- address
- memory
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于存储器知识产权核的嵌入式可编程存储器,其提供可编程机制,支持用户对其位宽、工作模式和同步/异步输出等进行可编程设计,支持包模式、单端口、简单双端口和真双端口等工作模式。本发明利用添加的寄存器缓存有冲突的数据和地址,利用数据位的标志位、和读写冲突检测与保护机制来实现可编程的存储器,既有设计上的简便性,又有功能上的灵活性,对常规的存储器功能做了很多扩展;和常规的可编程存储器技术比较,该可编程存储器在速度、面积、功耗和可靠性等方面有显著的提高。
Description
技术领域
本发明涉及微电子学技术领域,尤其涉及一种基于存储器知识产权核的嵌入式可编程存储器。
背景技术
在电子系统的设计中,存储器应用得越来越广泛。在设计片上系统(System-on-a-Chip,SoC)时,常常需要使用嵌入式存储器。在SoC中设计嵌入式存储器有两种方法,一是全定制设计;二是使用第三方芯片设计服务公司(简称第三方,如Artisan公司)提供的存储器知识产权核(Intellectual Property Core,IP Core)来设计。两种方法各有优缺点,全定制设计性能好,功能丰富,但技术要求高,设计周期长;基于IP核的方法容易实现,设计周期短,但受到第三方提供的IP核的一些限制。在一些可编程芯片(如现场可编程逻辑阵列芯片和可编程片上系统)的设计中,对嵌入式存储器往往有工作模式和访问位宽等可编程需求,这种可编程的特性能显著的提高最终用户的工作效率。全定制虽然能够解决这些可编程的问题,但设计周期长,技术难度大;而直接使用IP核的方式快捷方便,但难满足设计需求。
双端口静态随机存储器IP核(DP-SRAM IP Core,以下简称IP核或IP)在生成之后,其两个端口的数据位宽就已经固定,不能再通过编程方式来改变;其基于时钟的读写保护机制(如Artisan文献<1>中的DPCCM机制),能保证在同一时刻读写同一行地址的时候,保护写操作,但却不能保证读操作的可靠性。
在以往的技术中(此类技术通常采用如图1的方案:设置两套数据旁路和数据锁存,在两个端口都使用一套缓存寄存器,两个端口的缓存寄存器之间要进行数据的交换,需要缓存地址总线所有位的地址而不是部分地址,输出逻辑要做全地址比较,输出的数据要经过大的组合逻辑交织后才输出),使用Bypass旁路和锁存方式来提供部分的可编程功能,但是设计偏复杂,信号的关键路径长(如图1中长的关键路径PATH1和PATH2),工作速度慢。本发明利用第三方提供的Memory-Compiler软件工具生成双端口静态随机存储器IP核,通过增加一种外围缓存和控制等电路,设计和实现了一种嵌入式可编程存储器(以下简称可编程存储器或存储器)。该设计既避免了全定制方式的设计复杂性,又克服了IP核自身的不足,使存储器性能比已有方案好,且电路比已有方案简单,实现了应用上的可编程,并且支持多种工作模式。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种基于存储器知识产权核的嵌入式可编程存储器,以提供可编程机制,支持用户对其位宽、工作模式和同步/异步输出等进行可编程设计,支持包模式、单端口、简单双端口和真双端口等工作模式。
(二)技术方案
为达到上述目的,本发明提供了一种基于存储器知识产权核的嵌入式可编程存储器,包括DP-SRAM IP、A端口输入逻辑、B端口输入逻辑、A端口输出逻辑、B端口输出逻辑、控制模块、数据寄存器、标志寄存器和地址寄存器;其中,DP-SRAM IP是利用Memory-Compiler生成的双端口静态随机存储器IP核;A端口输入逻辑和B端口输入逻辑用于将可编程存储器A/B端口输入的数据进行转换以符合IP核对数据的要求;A端口输出逻辑和B端口输出逻辑用于组合IP两个端口输出的数据和数据寄存器的数据,然后送到可编程存储器输出;控制模块用于通过比较地址和读写指示信号,来控制数据的流向;数据寄存器是N比特的寄存器,用于保存数据寄存器在发生第一次读写冲突后的任一时刻通过可编程存储器A/B端口写入到IP核中某行N比特的部分或全部的最新数据;标志寄存器是N比特的,用于标明数据缓冲器中对应比特是否是最新的有效数据;地址寄存器用于保存数据寄存器中的数据对应在IP核的m比特地址值。
上述方案中,所述DP-SRAM IP是一个通用的双端口同步静态存储器知识产权核,其端口数据位存储宽度为N,存储深度为M,地址总线位宽m为ceil(log2M),ceil为向上取整函数,在考虑访问位宽编程为一比特的情况,最大地址为M×N,可编程存储器的地址总线位宽t为ceil(log2(M×N))。
上述方案中,所述端口数据位存储宽度N为36,存储深度M为128。
上述方案中,所述数据寄存器由N比特组成,用于保存IP中的某一行的全部或者部分数据;当存储器的两个端口同时对IP核的某一行进行至少一个是写操作的读写访问时,数据寄存器缓存其中一个端口的写数据;假若此时存储器中已经有数据,则两种可能处理方法,一是已有数据和新数据是对应于IP核的同一行,则用新的数据更新存储器;二是如果不同行,则原有数据写入IP核,新数据写入寄存器。
上述方案中,所述标志寄存器由N比特组成,每一比特指示数据寄存器的对应位置的数据是否真实有效。
上述方案中,所述标志寄存器与数据寄存器保持同步关系,端口向数据寄存器写入数据时,也要置标志寄存器的对应位为高;同样,在数据寄存器向IP核写入数据后,也同时把标志寄存器的所有位清零,待下一次再向数据寄存器写入数据时再设置相应的标志位。
上述方案中,所述地址寄存器由m比特组成,当数据寄存器保存了有效数据时,地址寄存器记录下该行的地址值;数据寄存器缓存数据,地址寄存器指明该缓存数据的对应于IP核的存储地址,而标志寄存器则指明N位的数据寄存器中那些位是有效的;两个端口进行读写操作时,先把地址的高m位与m位的缓存地址进行比较。
上述方案中,该嵌入式可编程存储器支持用户的对其位宽、端口数量、同步/异步输出等属性的可编程设计,支持包模式、单端口、简单双端口和真双端口等工作模式,采用两个端口共用的一个N位的数据寄存器来缓存两个端口产生读写冲突时的写数据,采用两个端口共用的一个N位的标志寄存器来标明数据寄存器中有效数据位,采用两个端口共用的一个m位的地址寄存器来锁存数据对于该存储器的行地址。
上述方案中,该嵌入式可编程存储器能够对同一地址的不同部分同时进行读写操作,具体通过以下方式实现:
对同一地址的一读一写操作,立即执行读操作,缓存写的内容;如果写的地址与地址寄存器缓存的地址相同,则更新;如不相同,则缓存中原有数据写入IP核,新数据写入缓存;或者
对同一地址的两个端口同时写操作;如果与地址寄存器缓存的地址相同,则把A端口的写数据和缓存的数据合并,一起通过A端口写入IP核;如果不相同,则把缓存中的数据写入IP,A端口的数据写入缓存。
上述方案中,该嵌入式可编程存储器在两个端口对某一行的读写产生冲突时,数据缓存机制能保证对写入数据进行有效存储,数据寄存器作出相应的动作来保持数据的最新性和标志寄存器的有效性;在读该行的数据时,数据缓存机制保证读出最有效的数据,数据寄存器中的最新数据始终有优先输出权,保证和IP核输出的数据通过组合后的真实有效性。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、本发明提供的这种基于存储器知识产权核的嵌入式可编程存储器,提供可编程机制,支持用户对其位宽、工作模式和同步/异步输出等进行可编程设计,支持包模式、单端口、简单双端口和真双端口等工作模式。
2、在实现灵活的可编程机制的同时,显著地提高电路的工作速度。常规的设计实现原理如图1所示,该图中,在读数据的输出路径上存在图中标识为粉红色和蓝色的两条较关键的时序路径,特别是蓝色路径,在无寄存器输出的异步模式下,包括端口的输入路径延时和输出路径延时,还有地址比较和输出数据配置等大量的组合逻辑,这极大的影响了常规的实现方案的最高工作速度。本发明采用数据寄存器、地址寄存器和标志寄存器,仅仅是高位的行地址比较,相对与常规方案的行列地址比较而言,比较结果延时要小很多;在地址比较后,只需要用标志寄存器对数据寄存器和IP核输出的数据位做一个二选一即可以输出,相对于常规方案做各种位宽模式下的复杂的数据交织方案而言,传播延时大大的缩小。正是由于采用了标志寄存器等组成的缓存机制,该方案的时序关键路径比常规方案的关键路径大为缩减,工作速度能够显著提高。
3、在实现灵活的可编程机制的同时,电路实现占用更小的面积,具有成本优势。如图3所示,本发明提供的这种基于存储器知识产权核的嵌入式可编程存储器,由于只采用一套缓存电路,相对于常规方案的两个端口两套缓存电路而言,使用寄存器的数量减少大约一半;对于输出逻辑,由于去掉了复杂的数据交织,输送部分的组合逻辑大幅度的减少。综合和布局布线的结果标明,两种方案在除去IP核之外的逻辑的面积,该发明的方案的硅实现面积仅仅为常规方案的三分之一左右。
4、本发明提供的这种基于存储器知识产权核的嵌入式可编程存储器,具有设计上的简便性。常规的方案使用两套缓存电路,在读写数据的时候,要仔细考虑每个端口和其缓存、和两套缓存电路之间的复杂的数据流处理机制,在存储器的两个端口处于异步时序环境是,此设计更为复杂。新的方案只使用一套缓存电路,不存在两套缓存电路时间的数据流动问题;该缓存电路在缓存某个端口的数据时,使用该端口的时钟,将异步设计中的跨时钟域问题简化。
5、本发明提供的这种基于存储器知识产权核的嵌入式可编程存储器,与常规的方案比较,消耗的功率更小。由于使用的寄存器数量减少约一半,非IP的组合逻辑减少为三分之一,数据交换的活动减少,所以,新方案的功耗减少一半左右。
6、本发明提供的这种基于存储器知识产权核的嵌入式可编程存储器,具有更好的稳定性。新方案只使用一套缓存电路,由于针对每一个比特引入了标志寄存器,使得新方案的结构更为简明;同时时序逻辑和组合逻辑的减少,使得电路验证的复杂度降低,可测性提高。
附图说明
图1是现有的双端口缓存机制的嵌入式可编程存储器的结构示意图;
图2是可编程存储器的符号;
图3是本发明提供的基于存储器知识产权核的嵌入式可编程存储器的功能方块图;
图4是一个通用的存储器IP的符号和管脚;
图5是存储器IP的地址映射关系的示意图;
图6是包模式下的存储空间映射关系的示意图;
图7是缓存控制机制的示意图;
图8是缓存处理的流程图;
图9是数据输出的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明的核心思想是利用添加的寄存器缓存有冲突的数据和地址,利用数据位的标志位、和读写冲突检测与保护机制来实现可编程的存储器,既有设计上的简便性,又有功能上的灵活性,对常规的存储器功能做了很多扩展。
本发明列举了工作模式和访问位宽等可编程的参数,这些参数在一些现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)的器件手册中(如文献<2>)已经有所描述,不属于本发明;但本发明包括对这些可编程参数的实现机制。本发明之所以引用这些参数,是为了方便描述这些参数的实现机制。同时,这些实现机制除了以下列举的几个参数外,还可以包括其他一些没列举的参数和模式。
本发明提供的基于存储器知识产权核的嵌入式可编程存储器,此IP核的端口存储宽度为N,深度为M,地址总线位宽m为ceil(log2M),ceil为向上取整函数。在考虑访问位宽编程为一比特的情况,最大地址为M×N,故可编程存储器的地址总线位宽t为ceil(log2(M×N))。可编程存储器的可编程数据位宽和IP的数据总线位宽相同,但可编程存储器有效数据位的位宽L(L<=N)在不使用奇偶校验位时的几种典型情况分别是20、21、......和2n比特的共计n+1个位宽模式,编程后无效的数据位(N-L位)接地;对数据典型位宽的可编程管脚的位宽k为ceil(log2(n+1));字节使能的位宽p为N/9。
一、写的过程
在发生读写操作冲突时,由于读操作要优先访问IP核,以满足读出数据的时序要求,所以写操作必须缓存,端口把数据写入存储器的处理过程如下:
1)外部把数据、地址、读写指示信号、时钟等送到可编程存储器的端口。
2)在包模式下,两个端口分别访问IP的不同地址空间区域;单端口模式下,只有一个端口能够访问IP;所以,在任一时刻对IP的某一行地址只有一种操作,不会出现同时读写同一行的有冲突操作的情况,不需要缓存数据,所有的写操作直接写入到IP核中。其写的过程是截取存储器地址信号的高m位送给IP核的地址总线,把外部的时钟送IP核的时钟端口;根据输入的地址信号的低(t-m)位,把存储器端口的L位数据经过处理,送到IP核的N位宽的数据输入总线上(在任一时刻,IP的(N-L)位位宽的数据总线不使用);同时根据输入的地址的低(t-m)位设置IP核端口的N位的读写指示信号,使之与数据的有效位一一对应,确保每一个数据比特的正确写入。
3)在简单双端口模式下,只有A端口执行写操作。A端口在写时,先判断是否与执行读操作的B端口访问IP的同一行地址空间。如果访问的是同一行,则对于写操作要做缓存处理。简单双端口的缓存处理机制,先比较写的高m位地址与地址寄存器的地址是否相同。若相同,则把A端口的数据根据所配置的位宽和地址的低(t-m)位写入数据寄存器中的相应位置;若不相同,则把缓存中的数据写入IP核中,同时清空标志寄存器;再把端口的数据写入数据寄存器中,同时更新标志寄存器和地址寄存器。此处可参考“具体实施方式”部分的“缓存控制机制”和“数据、标志位和地址缓存寄存器”等章节。
4)真双端口模式下,A端口和B端口都可以执行读/写操作。A端口或B端口在写时,如果另外一个端口是读,其处理机制类似与上面提到的简单双端口的缓存处理机制。在A端口和B端口同时执行对同一地址的写操作时,需要把A端口的地址和地址寄存器的地址再比较,其处理机制略为复杂,可以参考图7和图8。
二、读的过程
在发生读写冲突时,读操作有访问IP核的优先权,端口把数据读出存储器的处理过程如下:
1)外部把地址、读写指示信号、时钟等送到可编程存储器的端口。
2)在包模式或单端口模式下,不会产生读写冲突,不需要缓存写的数据,所有的读操作直接使用从IP核中读出的数据。其过程是截取地址总线的高m位送给IP核的m位地址总线,把外部的时钟送IP核心的时钟端口,根据输入的地址的低(t-m)位把IP核输出的N位数据经过处理送到可编程存储器的N位数据总线中的有效的低L位总线上输出,编程后的高(N-L)位数据输出总线接地。
3)在简单双端口模式下,只有B端口执行读操作。B端口首先把读的地址高m位和地址寄存器寄存的地址作比较,如果相同,则把数据寄存器的数据和IP核读出的数据组合。采用数据寄存器优先原则,即在输出某一位数据时,如果该位的标志寄存器的标志有效,则输出此位在数据寄存器的值;否则,输出IP核读出的此位的值。此处可以参考“具体实施方式”部分的“数据的输出”章节和图9。
4)在真双端口模式下,两个端口都可以执行读操作,但是不会产生冲突。此时,读操作的处理流程与简单双端口模式下一致。
三、用户可编程的参数
1)工作模式
用户通过设置两比特的可编程的模式(mode)管脚来配置该嵌入式可编程存储器的工作模式,其支持的工作模式包括包模式、单端口模式、简单双端口模式和真双端口等四种模式。
2)A端口/B端口的位宽
用户通过配置可编程管脚PA和PB,可以对每个端口的读写数据的宽度进行编程,而且可以在电路工作的过程中再编程。假设IP的数据位宽N为2n+2(n-3)位,其中的2(n-3)位用于存储奇偶校验辅助位。则该嵌入式存储器的A端口和B端口的数据位宽可编程为小于等于该IP端口的数据位宽N的任一位宽,几个典型位宽为20、21、......和2n。在使用奇偶校验位时,每八位添加一位奇偶校验辅助位,所以,当n大于3时、有23+1、24+2、......和2n+2(n-3)等带有奇偶校验位的位宽模式。
3)数据同步/异步输出
用户可以通过编程选择读出的数据是同步输出还是异步输出,synA/synB设置为高的时候,表示可编程存储器的数据采用同步输出方式;否则,是异步输出方式。
下面本发明以一个容量为M×N比特的可编程存储器为例,采用一个通用的双端口静态随机存储器IP核,结合附图和表,对本发明的技术方案实施进行详细的说明。
1、系统的符号和功能方块图
1)符号和管脚
为了表述本发明的方便,特列举一个典型的嵌入式可编程存储器,其电路符号如图2,在图中,标出了该发明所涉及到的部分的输入输出管脚;同样,为了表述方便,给每个管脚具体的命名如表1,表1是可编程的存储器的管脚描述。
接口符号 | 说明 |
eDA<N/2-1:0>/eDB<N/2-1:0> | A/B端口的N/2位输入数据,两端口共计N位输入数据 |
eAA<t-1:0>/eAB<t-1:0> | A/B端口的t位地址总线 |
PA<k-1:0>/PB<k-1:0> | A/B端口数据宽度配置信号 |
clkA/clkB | A/B端口的时钟 |
enclkA/enclkB | A/B端口的时钟使能信号 |
wrenA/wrenB | A/B端口的写使能信号,高电平有效 |
MEnA/MEnB | A/B端口使能信号,低电平有效 |
synA/synB | A/B端口同步异步输出选择信号 |
eQA<N/2-1:0>/eQB<N/2-1:0> | A/B端口的N/2位输出数据,两端口共计N位输出数据 |
mod<1:0> | 工作模式选择信号 |
byte_en<p-1:0> | 字节使能信号 |
parity_en | 奇偶校验位选择信号 |
Resetn | 上电寄存器复位信号,低电平有效 |
表1
2)功能方块图
图3是通过增加外围缓存电路和控制电路来实现可编程存储器的系统框图。DP-SRAM IP是指利用Memory-Compiler生成的双端口静态随机存储器IP核;A/B端口输入逻辑把可编程存储器A/B端口输入的数据进行转换以符合IP核对数据的要求;A/B端口输出逻辑组合IP两个端口输出的数据和数据寄存器的数据,然后送到可编程存储器输出;控制模块通过比较地址和读写指示信号,来控制数据的流向。数据寄存器是N比特的寄存器,数据寄存器在发生第一次读写冲突后的任一时刻保存了通过可编程存储器A/B端口写入到IP核中某行N比特的部分或全部的最新数据;标志寄存器是N比特的,标明数据缓冲器中对应比特是否是最新的有效数据;地址寄存器保存数据寄存器中的数据对应在IP核的m比特地址值。
2、通用的双端口静态随机存储器IP核
在该发明中需要使用双端口静态随机存储器,图4是一个通用的双端口同步静态存储器,该IP核的端口数据位宽N为三十六,存储深度M为一百二十八,管脚描述如表2,表2是一个通用IP核的管脚描述。
端口 | 描述 |
AA<m-1:0>,AB<m-1:0> | 端口A&B地址(AA<0>,AB<0>为最低位),例化时m=7 |
DA<N-1:0>,DB<N-1:0> | 端口A&B数据输入(DA<0>,DB<0>为最低位),例化时,设置N=17 |
CLKA,CLKB | 端口A&B时钟 |
CENA,CENB | 端口A&B端口使能(低电平有效) |
WENA<N-1:0>,WENB<N-1:0> | 端口A&B写使能(低为写,WENA<0>,WENB<0>为最低位),例化N为36 |
QA<N-1:0>,QB<N-1:0> | 端口A&B数据输出(QA<0>,QB<0>为最低位),例化N为36 |
表2
3、地址映射关系
存储器提供20、21、22、23或23+1......和2n或2n+2(n-3)等多种数据位宽的典型引用;相应的地址总线需要t位至m位不等;该发明使用地址的高m位表示行,低(t-m)位表示列。对于不同的数据位宽模式,用户访问存储器空间的地址eA,其中eA<t-1:t-m>表示行,eA<t-m-1:0>表示列。在位宽2n(n>1)的模式下,不需要使用全部的地址总线,此时eA<t-1:t-m>表示行,eA<t-m-1:n>表示列,地址总线eA<n-1:0>空闲不用。
4、数据和地址的转换
因为IP核的数据总线(DA/DB)和地址总线(AA/AB)与可编程存储器的数据(eDA/eDB)和地址总线(eAA/eAB)的总线位宽不一致,所以,可编程存储器输入的数据和地址总线要经过处理后才能送给IP核。该例中IP的数据总线位宽为N位,共有M行,所以需要m位的地址总线,每个地址对应于N比特,外部输入的数据和地址要经过处理后,才能送给存储器IP核。假设可编程存储器A端口在位宽为L位的一个写操作,根据eAA<m-1:log2(L)>,把外部数据总线上输入的eDA<L-1:0>送到IP核的数据输入总线DA<N-1:0>的相应比特位上。表3列出在该位宽模式下的处理机制。至于读操作,也通过类似的处理,根据eAA<m-1:log2(L)>,对IP读出的数据QA<N-1:0>做相应的转换后,输出到可编程存储器A端口的数据输出总线eQA<L-1:0>上。表3是数据和读写使能线。
表3
5、可编程的工作模式的实现
1)包模式
包模式是两个单端口模式的组合,当两个工作在单端口模式下的且每个容量不大于M×N/2比特的存储器可以合并使用一个容量为M×N的可编程存储器。在大量使用小容量存储器的应用中,包模式可以显著的提高存储空间的利用率,使存储器的效能最大化。包模式下,一个可编程存储器可以用作两个独立工作的单端口存储器,每个独立的存储器有一套完整的时钟、读写指示、数据、和地址等总线,最大支持N/2位的数据访问宽度。
包模式下的地址与存储空间映射关系如图6。M×N的IP存储空间,A端口使用IP的行地址为0至M/2-1的上半部分存储空间;B端口使用M/2至M的下半部分存储空间。两个部分独立工作,互不相关。
包模式两个端口访问各自的存储区,不会产生读写冲突,不需要进行数据地址的缓存,在该模式下,可以不使用缓冲器和数据地址寄存器。
包模式下每个端口访问M×N/2比特的地址空间,在该模式下,eAA<0>不使用,使用地址总线eAA<t-1:1>,其中eAA<t-1:t-m>表示行地址,eAA<t-m-1:1>表示列地址。与其他模式一样,在配置成大于1的多位宽的典型应用下,低位的地址总线不使用。
2)单端口
在单端口工作模式下,只使用A端口进行读写操作。通过设置cenB信号为高,使B端口不工作。同样,单端口模式不存在两个端口对同一行地址的同时读写操作,所以,不需要使用数据寄存器和地址寄存器等缓存机制。单端口的最大访问位宽为N,此时,A端口的数据输入总线为eDA<N/2-1:0>和eDB<N/2-1:0>的组合,A端口的数据输出总线为eQA<N/2-1:0>和eQB<N/2-1:0>的组合。
3)简单双端口
简单双端口使用A端口执行写操作,B端口执行读操作。由于A端口和B端口可能同时访问IP的同一行地址空间,所以,简单双端口在A写B读同一行地址时,会产生读写冲突;此时,立即执行读操作,缓存写操作的相关数据到数据寄存器中。如果写操作的行地址与缓存的原有数据的行地址相同,则把新的数据添加到数据寄存器中,此时屏蔽掉IP核的A端口使能(cenA);如果写操作的行地址与数据寄存器的行地址不同,则把数据寄存器的原有数据写入IP核对应的行地址,同时清空标志寄存器,再写入新的数据,和设置新的标志寄存器。在以后读该地址的时候,把数据寄存器的数据和IP核读出的数据经过组合后输出。
如果A端口和B端口不产生读写冲突,但是A写操作的地址与数据寄存器的地址相同,则A端口的数据写入数据寄存器中更新原有数据。简单双端口的最大访问位宽为N此时,输入端口A端口的数据输入总线为eDA<N/2-1:0>和eDB<N/2-1:0>;输出端口B端口的数据输出总线为eQA<N/2-1:0>和eQB<N/2-1:0>。
4)真双端口
在真双端口模式下,每个端口都可以独立地对存储空间的全空间进行读写操作,与包模式不同之处在于其存储空间是共享的。同包模式一样,其每个端口的最大访问数据宽度为N/2位。真双端口存在着对IP同一行空间的三种操作组合:A端口写B端口读,A端口读B端口写,A端口写且B端口也写,其中前两种一读一写的操作的冲突处理机制类似于简单双端口模式;而两种写操作的冲突处理机制,可以参考图7缓存控制机制和图8缓存处理流程图。
6、缓存控制机制
在简单双端口和真双端口模式下,可能会产生读写冲突;该发明使用缓存控制机制来处理此类问题。
控制模块的方块图如图7,AF是指m位的地址寄存器的值。通过比较A端口、B端口地址的高m位(行地址)和寄存器所存储的行地址值之间的关系,来决定整个设计中数据的流向。图7中,eAA_equ_AF表示通过比较,eAA的高m位地址和缓存寄存器的m位地址相等,eAB_equ_AF和eAA_equ_eAB同理;当wrenA和wrenB均为高,指示当前的A端口和B端口都执行写操作,此时,令标志信号wA_wB有效;同理可得wA_rB和rA_wB。就IP而言,两个端口对同一行的读操作不会产生读写冲突,所以,不需要对wrenA和wrenB同时为低的两个端口同时读操作进行缓存保护。A_in_buf/B_in_buf信号有效时,让A/B端口的数据写入数据缓存,而不写入IP核;buf_in_ip表示让缓存中的数据写入IP核;A_buf_in_ip表示A端口的数据和缓存中的数据合并后写入IP中;cenA/cenB为高电平时阻止端口A/B的数据写入IP,此时,通过端口A/B的写操作,把数据写入了缓存。
缓存处理机制的数据处理流程图如图8,只有在该可编程存储器编程为简单双端口或真双端口的模式下时,才需要考虑使用数据缓存机制。不缓存是指数据不需要使用寄存器,直接对IP核进行访问。
7、数据的输出
端口在读的过程中,把读地址的高m位和地址寄存器的m位进行比较,如果相同,则需要把IP核输出的数据和数据寄存器中的数据进行数据组合。因为数据寄存器中始终保存着某行的数据,该新数据通过标志寄存器指明是否是最新的有效数据。该数据组合方法是用数据寄存器中的数据替换掉IP核读出来的一行中的全部或部分比特的数据,当读地址的高m位与地址寄存器的m位相等,且N位中某一个位的标志寄存器的标识位有效时,数据寄存器中的该位替代IP输出数据中的相应位置的数据位而作为嵌入式可编程存储器的输出。
8、数据、标志位和地址缓存寄存器
1)数据寄存器
数据寄存器由N比特组成,用于保存IP中的某一行的全部或者部分数据;当存储器的两个端口同时对IP核的某一行进行至少一个是写操作的读写访问时,数据寄存器缓存其中一个端口的写数据。假若此时该存储器中已经有数据,则两种可能处理方法,一是已有数据和新数据是对应于IP核的同一行,则用新的数据更新存储器;二是如果不同行,则原有数据写入IP核,新数据写入缓存。数据缓存机制可以参考图7缓存控制机制和图8缓存处理流程图。
2)标志寄存器
标志寄存器由N比特组成,每一比特指示数据寄存器的对应位置的数据是否真实有效。标志寄存器与数据寄存器保持同步关系,即:端口向数据寄存器写入数据时,也要置标志寄存器的对应位为高;同样,在数据寄存器向IP核写入数据后,也同时把标志寄存器的所有位清零,待下一次再向数据寄存器写入数据时再设置相应的标志位。
3)地址寄存器
地址寄存器由m比特组成,当数据寄存器保存了有效数据时,地址寄存器记录下该行的地址值。数据寄存器缓存数据,地址寄存器指明该缓存数据的对应于IP核的存储地址,而标志寄存器则指明N位的数据寄存器中那些位是有效的。两个端口进行读写操作时,先把地址的高m位与m位的缓存地址进行比较。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
参考文献
1 Artisan Limited,Artisan Standard Library 0.13um-0.25um SRAMGenerator User Manual,June 2005,Revision 2005q2v3
2 Atera Corporation,Cyclone Device Handbook,Page40~49,page,2007
Claims (10)
1.一种基于存储器知识产权核的嵌入式可编程存储器,其特征在于,包括DP-SRAM知识产权核、A端口输入电路、B端口输入电路、A端口输出电路、B端口输出电路、控制模块、数据寄存器、标志寄存器和地址寄存器;其中,DP-SRAM知识产权核是利用Memory-Compiler生成的双端口静态随机存储器知识产权核;A端口输入电路和B端口输入电路用于将可编程存储器A/B端口输入的数据进行转换以符合知识产权核对数据的要求;A端口输出电路和B端口输出电路用于组合知识产权核两个端口输出的数据和数据寄存器的数据,然后送到可编程存储器输出;控制模块用于通过比较地址和读写指示信号,来控制数据的流向;数据寄存器是N比特的寄存器,用于保存数据寄存器在发生第一次读写冲突后的任一时刻通过可编程存储器A/B端口写入到知识产权核中某行N比特的部分或全部的最新数据;标志寄存器是N比特的,用于标明数据寄存器中对应比特是否是最新的有效数据;地址寄存器用于保存数据寄存器中的数据对应在知识产权核的m比特地址值。
2.根据权利要求1所述的基于存储器知识产权核的嵌入式可编程存储器,其特征在于,所述DP-SRAM知识产权核是一个通用的双端口同步静态存储器知识产权核,其端口数据位存储宽度为N,存储深度为M,地址总线位宽m为ceil(log2M),ceil为向上取整函数,在考虑访问位宽编程为一比特的情况,最大地址为M×N,可编程存储器的地址总线位宽t为ceil(log2(M×N))。
3.根据权利要求2所述的基于存储器知识产权核的嵌入式可编程存储器,其特征在于,所述端口数据位存储宽度N为36,存储深度M为128。
4.根据权利要求1所述的基于存储器知识产权核的嵌入式可编程存储器,其特征在于,所述数据寄存器由N比特组成,用于保存知识产权核中的某一行的全部或者部分数据;当存储器的两个端口同时对知识产权核的某一行进行至少一个是写操作的读写访问时,数据寄存器缓存其中一个端口的写数据;假若此时数据寄存器中已经有数据,则两种可能处理方法,一是已有数据和新数据是对应于知识产权核的同一行,则用新的数据更新存储器;二是如果不同行,则数据寄存器中的数据写入知识产权核,新数据写入数据寄存器。
5.根据权利要求1所述的基于存储器知识产权核的嵌入式可编程存储器,其特征在于,所述标志寄存器由N比特组成,每一比特指示数据寄存器的对应位置的数据是否真实有效。
6.根据权利要求1所述的基于存储器知识产权核的嵌入式可编程存储器,其特征在于,所述标志寄存器与数据寄存器保持同步关系,端口向数据寄存器写入数据时,也要置标志寄存器的对应位为高;同样,在数据寄存器向知识产权核写入数据后,也同时把标志寄存器的所有位清零,待下一次再向数据寄存器写入数据时再设置相应的标志位。
7.根据权利要求1所述的基于存储器知识产权核的嵌入式可编程存储器,其特征在于,所述地址寄存器由m比特组成,当数据寄存器保存了有效数据时,地址寄存器记录下该行的地址值;数据寄存器缓存数据,地址寄存器指明该缓存数据的对应于知识产权核的存储地址,而标志寄存器则指明N位的数据寄存器中那些位是有效的;两个端口进行读写操作时,先把地址的高m位与m位的缓存地址进行比较。
8.根据权利要求1所述的基于存储器知识产权核的嵌入式可编程存储器,其特征在于,该嵌入式可编程存储器支持用户的对其位宽、端口数量、同步/异步输出等属性的可编程设计,支持包模式、单端口、简单双端口和真双端口等工作模式,采用两个端口共用的一个N位的数据寄存器来缓存两个端口产生读写冲突时的写数据,采用两个端口共用的一个N位的标志寄存器来标明数据寄存器中有效数据位,采用两个端口共用的一个m位的地址寄存器来锁存数据对于该存储器的行地址。
9.根据权利要求1所述的基于存储器知识产权核的嵌入式可编程存储器,其特征在于,该嵌入式可编程存储器能够对同一地址的不同部分同时进行读写操作,具体通过以下方式实现:
对同一地址的一读一写操作,立即执行读操作,写入的数据缓存到数据寄存器;如果写入数据的地址与地址寄存器缓存的地址相同,则用写入的数据更新数据寄存器;如果写入数据的地址与地址寄存器缓存的地址不相同,则用数据寄存器的数据写入知识产权核,新数据写入数据寄存器;或者
对同一地址的两个端口同时写操作,如果写入数据的地址与地址寄存器缓存的地址相同,则把A端口的写数据和数据寄存器的数据合并,一起通过A端口写入知识产权核;如果写入数据的地址与地址寄存器缓存的地址不相同,则把数据寄存器中的数据写入知识产权核,A端口的数据写入数据寄存器。
10.根据权利要求1所述的基于存储器知识产权核的嵌入式可编程存储器,其特征在于,该嵌入式可编程存储器在两个端口对某一行的读写产生冲突时,数据缓存机制能保证对写入数据进行有效存储,数据寄存器作出相应的动作来保持数据的最新性和标志寄存器的有效性;在读该行的数据时,数据缓存机制保证读出最有效的数据,数据寄存器中的最新数据始终有优先输出权,保证和知识产权核输出的数据通过组合后的真实有效性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810240357 CN101751980B (zh) | 2008-12-17 | 2008-12-17 | 基于存储器知识产权核的嵌入式可编程存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810240357 CN101751980B (zh) | 2008-12-17 | 2008-12-17 | 基于存储器知识产权核的嵌入式可编程存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101751980A CN101751980A (zh) | 2010-06-23 |
CN101751980B true CN101751980B (zh) | 2013-08-14 |
Family
ID=42478814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810240357 Active CN101751980B (zh) | 2008-12-17 | 2008-12-17 | 基于存储器知识产权核的嵌入式可编程存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101751980B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436427B (zh) * | 2011-11-07 | 2014-10-08 | 华为技术有限公司 | 一种数据读写方法和存储设备 |
US8793442B2 (en) * | 2012-02-08 | 2014-07-29 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
CN102929808B (zh) * | 2012-11-02 | 2015-09-16 | 长沙景嘉微电子股份有限公司 | 一种高可靠性的跨时钟域数据传输电路 |
CN103078700A (zh) * | 2012-12-28 | 2013-05-01 | 中国航空工业集团公司第六三一研究所 | 一种时钟同步处理方法 |
CN103744760A (zh) * | 2013-12-30 | 2014-04-23 | 哈尔滨工业大学 | 基于门级症状的硬件故障检测方法 |
CN103730149B (zh) * | 2014-01-20 | 2016-05-25 | 中国科学院电子学研究所 | 一种双端口存储器的读写控制电路 |
US9727415B2 (en) * | 2014-11-27 | 2017-08-08 | Capital Microelectronics Co., Ltd. | Configuration structure and method of a block memory |
CN104615952A (zh) * | 2014-12-22 | 2015-05-13 | 天津大学 | 基于路径延时的ip硬核知识产权保护方法及装置 |
CN106250661B (zh) * | 2016-09-06 | 2019-05-21 | 京微齐力(北京)科技有限公司 | 一种实现存储器扩展的逻辑电路设计方法 |
US10032506B2 (en) * | 2016-12-12 | 2018-07-24 | Stmicroelectronics International N.V. | Configurable pseudo dual port architecture for use with single port SRAM |
CN107247577B (zh) * | 2017-06-14 | 2020-11-17 | 湖南国科微电子股份有限公司 | 一种配置soc ip核的方法、装置及系统 |
CN110399325B (zh) * | 2019-07-30 | 2023-05-30 | 江西理工大学 | 一种基于iic总线协议的改进型ip核 |
CN110928832A (zh) * | 2019-10-09 | 2020-03-27 | 中山大学 | 异步流水线处理器电路、装置及数据处理方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1132820A3 (en) * | 2000-02-04 | 2003-01-22 | Microchip Technology Incorporated | Collision detection for dual port RAM operations on a microcontroller |
US7096324B1 (en) * | 2000-06-12 | 2006-08-22 | Altera Corporation | Embedded processor with dual-port SRAM for programmable logic |
JP5061504B2 (ja) * | 2006-05-25 | 2012-10-31 | 株式会社明電舎 | デュアルポートメモリのアクセス権調停方式 |
CN101226767B (zh) * | 2008-02-18 | 2010-06-09 | 华为技术有限公司 | 双端口ram的读写控制电路、方法及装置 |
-
2008
- 2008-12-17 CN CN 200810240357 patent/CN101751980B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101751980A (zh) | 2010-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101751980B (zh) | 基于存储器知识产权核的嵌入式可编程存储器 | |
US6778454B2 (en) | FIFO memory devices that support all combinations of DDR and SDR read and write modes | |
US8374050B2 (en) | Multi-port memory using single-port memory cells | |
JP3853736B2 (ja) | ユーザによる構成可能なオンチップメモリシステム | |
CN102197436B (zh) | 用于多电平单元存储器的数据路径,用于存储的方法及用于利用存储器阵列的方法 | |
JP2017502402A (ja) | 高スループットのキーバリューストアの実現のためのメモリ構成 | |
WO2001025929A3 (en) | A shared write buffer for use by multiple processor units | |
US8724423B1 (en) | Synchronous two-port read, two-port write memory emulator | |
WO2000075793A1 (en) | A programmable sram and dram cache interface | |
US6606684B1 (en) | Multi-tiered memory bank having different data buffer sizes with a programmable bank select | |
KR20100054155A (ko) | 프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘 | |
JP2002055879A (ja) | マルチポートキャッシュメモリ | |
CN108958700A (zh) | 一种先进先出数据缓存器及缓存数据的方法 | |
CN105577985A (zh) | 一种数字图像处理系统 | |
Lira et al. | Implementing a hybrid SRAM/eDRAM NUCA architecture | |
US8799750B1 (en) | Convolutional interleaver for bursty memory access | |
US6961280B1 (en) | Techniques for implementing address recycling in memory circuits | |
JP5499131B2 (ja) | デュアルポートメモリおよびその方法 | |
EP1585024B1 (en) | An improved on-chip storage memory for storing variable data bits | |
JP2002278836A (ja) | キャッシュメモリ | |
Kaur et al. | Implementation and Comparison of Direct mapped and 4-way Set Associative mapped Cache Controller in VHDL | |
KR100350525B1 (ko) | 공유 메모리 | |
Kaur et al. | XMAT: A 6T XOR-MAT based 2R-1W SRAM for high bandwidth network applications | |
Rawat et al. | Asynchronous 1R-1W dual-port SRAM by using single-port SRAM in 28nm UTBB-FDSOI technology | |
Kamble et al. | Modeling energy dissipation in low power caches |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |