CN101770437A - 实现同步双端口存储器ip的并行读写的结构及方法 - Google Patents
实现同步双端口存储器ip的并行读写的结构及方法 Download PDFInfo
- Publication number
- CN101770437A CN101770437A CN200810246742A CN200810246742A CN101770437A CN 101770437 A CN101770437 A CN 101770437A CN 200810246742 A CN200810246742 A CN 200810246742A CN 200810246742 A CN200810246742 A CN 200810246742A CN 101770437 A CN101770437 A CN 101770437A
- Authority
- CN
- China
- Prior art keywords
- port
- cache device
- signal
- memory
- level cache
- 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.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提出一种基于同步双端口存储器IP的并行读写操作的实现方法。在同步双端口存储器IP中,当在同一时刻对同一地址进行读写操作时会存在端口读写冲突,从而造成读写操作的错误。本发明通过选择性的读写控制策略来解决端口读写冲突问题,实现了在同一周期内先读出存储器中的原有数据再向该地址写入新数据的操作。本发明的优点为:提供了一种有效解决双端口存储器端口读写冲突的方法;利用本发明进行设计可得到性能比较稳定的存储器***;可利用自动化的工具来实现整个设计,设计具有可移植性,从而可以缩短产品的开发周期。
Description
背景技术
对有多个处理器的***来讲,它需要同时对存储器进行存取操作,这会引起严重的数据总线的竞争。而这可以通过采用特殊结构的存储器,比如多端口存储器来避免。当前,多端口存储器尤其是双端口存储器广泛应用于数据通信设备中。
对于一般的同步双端口存储器知识产权(Intellectual Property,简称IP)来说,通常在同一时刻对同一地址进行读写操作时会造成读写操作的错误。具体情况如下:当一个端口进行读操作而另一个端口同时对该地址进行写操作时,读出数据错误。此时读出的数据既不能保证是该地址上原有的数据,也不能保证是新写入的数据,而是一个不能确定的值;当两个端口进行读操作时,两个端口的读操作均正确,均输出存储器该地址上的数据。也就是说,在通常的同步双端口存储器IP中,如果一个端口进行读操作的同时另一个端口对同一地址进行写操作,则读出的数据有可能会是错误的。为了保证上述情况下两个端口读和写操作的正确性,同步双端口存储器IP通常会对两个端口的时钟做出限制。如图1所示,当对同一地址进行读和写操作时会要求两个端口的时钟clockA 101和clockB 102的上升沿间隔一段时间t100来避免读写冲突,从而保证两个端口的读写操作均正确。
在有些设计当中会要求在某时刻从存储器的一个端口读出某一地址上原有的数据,同时从另一端口向该地址写入新的数据。比如:商用FPGA芯片中的嵌入式存储器就需要实现同一周期内的先读后写操作。这时为了保证两个端口读写操作的正确性,传统的做法是将这两个操作间隔一定的时间。比如在设计存储器时,加入探测电路,等读操作完成后再进行写操作。如果采用这种机制,就需要定制整个存储器,给设计带来很大的成本和风险,而且会延长产品开发周期。为了快速实现该设计,必须尽量复用存储器IP,采用新的设计思想来实现。
一种方法是对写时钟进行延迟,如图2所示:使写时钟202的上升沿落后于读时钟201的上升沿一定的时间t,保证先读出该地址上的原有数据,然后写入新的数据。可以让***时钟200通过延迟单元来得到写时钟,只要保证写时钟始终落后于读时钟一定的时间,就能在同一周期内实现先读后写的操作。这种方法的缺点是延迟单元的延时受工艺和温度的影响比较大,不同工艺、温度条件下延迟单元的延时可能会有很大的差别,很难保证在所有的情况下该延时都满足条件,而且当温度改变时,***的性能将会受到很大的影响,因此***缺乏稳定性。这种设计方法还依赖于工艺,不同的工艺下延迟单元的延迟不同。因此当改变工艺时,这些延迟单元又要重新进行设计,增加了设计的复杂性。
从以上的分析中,我们可以看出:时钟延迟并不是一种好的解决方案。它增大了***的不稳定性,并且使得设计对不同工艺具有不可移植性。为此,本发明提出了一种不同于这些技术的处理方法以解决上述技术带来的困难。
发明内容
本发明的目的是提供一种实现同步双端口存储器IP的并行读写的结构和方法,提出了一种嵌入式存储器的结构及其存取控制策略用于实现当双端口嵌入式存储器的一个端口进行写操作,另一端口同时对同一地址进行读操作时,能在同一周期内先读出该地址上的原有数据,然后在该地址写入新数据的功能。
为实现上述目的,本发明提供的实现同步双端口存储器IP的并行读写的结构,为一嵌入式存储器结构,其主要包括:
同步双端口存储器IP,用于嵌入式存储器基本的读写操作;
仲裁电路,根据端口输入信息及一级缓存器缓存信息输出控制信号控制将端口信号缓存至一级缓存器或传送给同步双端口存储器IP;
一级缓存器,根据仲裁电路的控制信号缓存各自端口输入的包括数据、地址和写使能信号;
二级缓存器,在时钟上升沿到来时缓存一级缓存器中的包括数据、地址和写使能信号;
选择器,根据仲裁电路提供的控制信号决定向同步双端口存储器IP传送包括数据、地址和写使能的端口输入信号或一级缓存器中包括数据、地址和写使能的信号;以及
读出控制电路,根据端口输入信息及二级缓存器中的信息控制输出二级缓存器中的数据或输出同步双端口存储器IP的输出数据。
本发明的仲裁电路具有端口信号输入端口,一级缓存器信号输入端口;该仲裁电路根据端口输入信号和一级缓存器中的信号输出控制信号将端口输入信号缓存至一级缓存器或直接输入双端口存储器IP,或将一级缓存器中的信号传送给同步双端口存储器IP中。
本发明的一级缓存器具备接收端口输入信号的输入端,其根据仲裁电路提供的控制信号有选择性地缓存包括数据、地址和写使能信号的本端口输入信号。
本发明的二级缓存器具备接收一级缓存器输出信号的输入端,其在时钟的上升沿到来时缓存包括数据、地址和写使能信号的本端口一级缓存器的输出信号。
本发明的选择器根据仲裁电路输出的控制信号来控制将端口信号传送给同步双端口存储器IP或将一级缓存器中的信号传送给同步双端口存储器IP。
本发明的读出控制电路根据端口地址输入信号以及二级缓存器中缓存的信号决定输出二级缓存器中的数据或输出同步双端口存储器IP的输出数据。
本发明提供的利用上述嵌入式存储器实现同步双端口存储器IP的并行读写的方法,决定输出数据的来源,决定输出的数据是二级缓存器中的数据还是同步双端口存储器IP的输出数据,该方法包含:
比较第一端口地址与第一端口二级缓存器中的地址是否相同,为确定输出数据来源提供依据;
比较第一端口地址与第二端口二级缓存器中的地址是否相同,为确定输出数据来源提供依据;
判断第一端口二级缓存器中缓存的是写操作还是读操作,为确定输出数据来源提供依据;
判断第二端口二级缓存器中缓存的是写操作还是读操作,为确定输出数据来源提供依据。
本发明的方法中还包含:
比较第一及第二端口的地址是否相同,为嵌入式存储器中的选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据;
比较第一端口地址与第一端口一级缓存器中的地址是否相同,为嵌入式存储器中的选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据;
比较第二端口地址与第一端口一级缓存器中的地址是否相同,为嵌入式存储器中的选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据;
判断第一端口是进行写操作还是进行读操作,为嵌入式存储器中的选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据;
判断第二端口是进行写操作还是进行读操作,为嵌入式存储器中的选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据;
判断第一端口一级缓存器中缓存的是写操作还是读操作,为嵌入式存储器中的选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据。
本发明的效果是:
其一是实现双端口存储器一个端口进行读操作的同时另一端口对同一地址进行写操作,而能够在同一周期内先读出该地址上的原有数据,然后写入新的数据这一读写方式,以满足***对存储器的需求。
其二是得到一个稳定的双端口存储器,尽量减少工艺和温度带来的影响。避免采用时钟延迟,而通过对端口信号采取缓存的办法来实现先读后写操作可以减少工艺和温度带来的影响,增强***的稳定性。
其三是尽量减少设计风险和设计周期。在可能的情况下,尽量使用第三方厂商提供的存储器IP进行设计。采用第三方提供的存储器IP可以避免从基本的存储单元开始设计,能大大减少存储器设计的风险,提高设计效率。
其四是尽可能采用自动化的流程,增强设计的可移植性。一旦本发明提出的存储器结构的代码得以实现,就可将其由一种工艺移植到另一种工艺,而代码却不需要改变或改变很少。这种设计的可移植性同样可以大大提高设计的效率。
附图说明
图1为已有同步双端口存储器IP要求对同一地址进行读写操作时读操作和写操作的时钟上升沿必须相隔一段时间。
图2为已有技术通过延迟单元使写操作的时钟上升沿落后于读操作的时钟上升沿。
图3为本发明双端口存储器***结构图
图4为本发明输入信号选择和缓存策略的原理流程图
图5为本发明输出数据选择策略的原理流程图
图6为本发明输入信号选择和缓存策略的判断逻辑流程图
图7为本发明输出数据选择策略的判断逻辑流程图
具体实施方式
本发明所提策略有两个关键点:1)输入信号的选择和缓存;2)输出数据的选择。这两个关键点分别通过输入信号选择和缓存策略以及输出数据选择策略来实现。
图3示出了本发明中双端口存储器***的结构,其包含:同步双端口存储器IP 300、仲裁电路301、读出控制电路302、一级缓存器303和304、二级缓存器303’和304’,以及选择器305和306。
其中,仲裁电路301、一级缓存器303和304以及选择器305和306主要完成如图4所示的输入信号选择和缓存策略。一级缓存器303和选择器305与A端口相对应,对A端口的输入信号进行操作;一级缓存器304和选择器306与B端口相对应,对B端口的输入信号进行操作。需要说明的是,一级缓存器303和304以及二级缓存器303’和304’均是本领域公知技术,并非本发明的发明要点,因此对其详细的内部构造和工作原理不再做详细说明,也不推荐附图。
仲裁电路301将输入信号:A端口地址信号307、A端口写使能信号309、B端口地址信号308、B端口写使能信号310、A端口一级缓存器303中的数据、地址及写使能信号319和B端口一级缓存器304中的数据、地址及写使能信号320经过图4所示的数据选择和缓存策略进行判断,按照判断结果输出控制A端口一级缓存器303的控制信号311、控制B端口一级缓存器304的控制信号312、控制选择器305的控制信号313以及控制选择器306的控制信号314,用以控制一级缓存器、选择器完成本发明的数据选择和缓存策略,达到存储器IP的双端口在同一时间周期内同时进行读和写,能够避免冲突并保证整个双端口嵌入式存储器***能够读出和写入正确数据的目的。
与其相配合的,读出控制电路302与二级缓存器303’、304’以及同步双端口存储器IP共同完成如图5所示的输出数据选择策略。在输出数据选择策略中,对二级缓存器303’和304’的中的地址和写使能信号进行判断。读出控制电路302的输入信号来源于二级缓存器303’和304’中的数据、地址和写使能信号,同步双端口存储器IP的输出数据,以及A、B端口输入的地址信号,按照图5所示的输出数据选择策略进行选择,最终输出所需的数据322。
上述仲裁电路301进行的输入信号选择和缓存策略和读出控制电路302进行的输出数据选择策略是同时进行的,只有两个策略同时进行,才能保证双端口存储器一个端口进行写操作,另一端口同时对同一地址进行读操作时,可先读出该地址上的原有数据再向该地址写入新数据的功能。
下面结合附图,对本发明进行更详细地说明。
图3为本发明双端口存储器***的结构。
仲裁电路301的输入信号有:307、308、309、310、319和320,301根据上述输入信号的具体情况来决定输出的控制信号311、312、313和314。
一级缓存器303和304的输入信号来源为:A、B端口的输入信号315、316,该输入信号主要包括两个端口输入的数据、地址和写使能等信号;仲裁电路301输出的控制信号311和312;与同步双端口存储器IP同步的时钟信号323。一级缓存器303通过仲裁电路301输出的控制信号311决定是否将与其对应的A端口输入信号315进行缓存;一级缓存器304通过仲裁电路301输出的控制信号312决定是否将与其对应的B端口输入信号316进行缓存。一级缓存器303和304中的缓存信号分别输出至选择器305和306以及二级缓存器303’和304’,它们同时输出至仲裁电路301。
二级缓存器303’和304’的输入信号来源为:A、B端口一级缓存器303、304的输出信号,该输出信号主要包括数据、地址和写使能等信号。当时钟信号323的上升沿到来时,一级缓存器303和304中缓存的信号319和320就会被分别缓存到二级缓存器303’和304’中。二级缓存器303’和304’的缓存信号,包括缓存的数据、地址和写使能等信号,在时钟的上升沿到来后就会输出至读出控制电路302,以完成读出数据的操作。
选择器305和306的输入来源有:A、B端口的输入信号315、316,该输入信号主要包括端口输入的数据、地址和写使能等信号;仲裁电路301输出的控制信号313和314;以及从一级缓存器303和304中输出的缓存信号,该信号主要包括数据、地址和写使能等信号。选择器305通过控制信号313决定传送给存储器IP的信号317是端口输入信号315还是缓存在一级缓存器303中的缓存信号319。选择器306通过控制信号314决定传送给存储器IP的信号318是端口信号316还是缓存在一级缓存器304中的缓存信号320。
读出控制电路302的输入来源有:A端口地址信号307、B端口地址信号308、二级缓存器303’中缓存的地址、写使能和数据信号319’以及二级缓存器304’中缓存的地址、写使能和数据信号320’,以及从同步双端口存储器IP输出的数据。使其可以通过图5所示的输出数据选择策略来决定最终的输出数据322到底是二级缓存器中的缓存信号319’、320’还是存储器IP的输出数据321。
同步双端口存储器IP 300的输入信号为由选择器305和306输出的信号;以及时钟信号323。在选择器305、306按照如图4所示的输入信号选择策略所进行的判断结果来决定同步双端口存储器IP两个端口的信号来源,从而决定同步双端口存储器IP两个端口所进行的操作。
同步双端口存储器IP 300、一级缓存器303和304以及二级缓存器303’和304’都是在时钟323的上升沿触发。对于同步双端口存储器IP,只有在时钟323的上升沿到来时才开始进行读写操作。仲裁电路301只对A、B端口的地址和写使能信号以及一级缓存器303和304中缓存的地址和写使能信号进行比较判断并输出相应的控制信号311、312、313和314。选择器305和306根据其选择控制端信号313和314的情况来选择输入端口信号,它直接将端口输入的信号(包括端口的数据、写使能以及地址等全部信号)传输至同步双端口存储器IP,或者将一级缓存器中缓存的信号(包括缓存的数据、写使能以及地址等全部信号)传输至同步双端口存储器IP。当时钟323的上升沿到来时,一级缓存器303和304根据其使能端信号311和312的情况对A、B端口的数据、写使能以及地址等全部信号进行缓存或不进行缓存。对于二级缓存器303’和304’,只要时钟323的上升沿一来就会将一级缓存器中缓存的信号(包括数据、写使能以及地址等全部信号)进行缓存。在本发明的输入信号选择和缓存策略中,仲裁电路301进行比较和判断的信号为端口信号和一级缓存器303和304中缓存的信号。而在本发明的输出数据选择策略中,读出控制电路302进行比较和判断的信号为端口信号和二级缓存器303’和304’中缓存的信号。
下面结合图4,对本发明的数据选择和缓存策略进行详细说明。
本发明利用一种选择性的缓存策略来避免出现读写冲突而造成读出数据的错误。图4所示为控制图3中选择器305和306选择将端口信号还是将一级缓存器中的信号传送给同步双端口存储器IP,同时也控制一级缓存器303和304是否缓存端口信号。下面以A端口为例进行分析,B端口的情形可依次类推进行分析,此处不做重复说明。
图中400为仲裁电路301需要进行判断的六项内容:比较307与308,判断A端口与B端口的地址是否相同;比较307(A端口的地址)与其相应端口一级缓存器303中缓存的地址是否相同;比较308(B端口的地址)与与A端口一级缓存器303中缓存的地址是否相同;判断309(A端口的写使能信号)是读使能还是写使能;判断310(B端口的写使能信号)是读使能还是写使能;以及与A端口相对应的一级缓存器303中缓存的写使能信号是读使能还是写使能。
归纳起来,主要需要处理如下五种情形:
(1)A、B端口地址相同且A端口进行写操作。此时不管B端口进行读操作还是写操作都会存在读写冲突,此时需要将一级缓存器303中的数据传送至同步双端口存储器IP300,当时钟323的上升沿到来时,传送至同步双端口存储器IP300的操作就会被同步双端口存储器IP执行,同时A端口的写操作被缓存至A端口的一级缓存器303中,而A端口一级缓存器中的原有操作也同时被缓存至二级缓存器303’中。为避免同步双端口存储器IP的端口出现读写冲突而将有冲突的写操作进行缓存,此时采用图4所示的情形1进行处理。
(2)A、B端口地址相同,A端口进行读操作,但此时A端口一级缓存器303中缓存有与A端口地址相同的写操作。此时说明上次的A端口的写操作由于避免读写冲突或其它原因还缓存在一级缓存器303中,并没有送给同步双端口存储器IP300。此时缓存在一级缓存器303中的写操作被送给同步双端口存储器IP300,当时钟323的上升沿到来时,该写操作被同步双端口存储器IP300执行,同时一级缓存器303中缓存的写操作被缓存至二级缓存器303’。由于一级缓存器303中的原写操作会被同步双端口存储器IP300执行,其一级缓存器303中缓存的操作也应该被更新,否则按图5所示的读出数据选择策略读出的数据可能是错误的。因此,在时钟323的上升沿到来时,A端口的读操作也会同时缓存至一级缓存器303之中而将原有的写操作覆盖掉。对于这种情形,采用图4所示的情形2进行处理。
(3)A、B端口地址不同,A端口进行写操作,但此时A端口一级缓存器303中缓存有与A端口写操作地址相同的写操作。虽然此时A、B端口不存在读写冲突,但由于A端口一级缓存器中缓存有上次没有写入同步双端口存储器IP300的数据,当时钟323的上升沿到来时,应让同步双端口存储器IP300执行一级缓存器303中缓存的写操作,而端口的写操作也应同时被缓存至一级缓存器303中而将原有的写操作覆盖掉。即:将一级缓存器303中的原有操作传送给同步双端口存储器IP300,当时钟323的上升沿到来时,该操作就会被同步双端口存储器IP300执行,同时一级缓存器303中的原有操作也会被缓存至二级缓存器303’中,而A端口的写操作也会被缓存至一级缓存器303中而将原有的写操作覆盖掉。对于这种情形,采用图4所示的情形3进行处理。
(4)A、B端口地址不同,A端口进行读操作,B端口进行写操作,A端口一级缓存器303中缓存有与B端口地址相同的写操作。此时A端口的读操作应传送给同步双端口存储器IP300以使其输出相应地址上的数据,B端口的写操作也会直接传送给同步双端口存储器IP300。此时,由于最新的数据已被写入同步双端口存储器IP300,缓存在A端口一级缓存器303中的写操作应该被A端口的读操作所覆盖。即:将A端口的读操作直接传送给同步双端口存储器IP300,当时钟323的上升沿到来时,该操作就会被同步双端口存储器IP300执行而读出相应地址上的数据,同时一级缓存器303中的原有写操作会被缓存至二级缓存器303’中,而A端口的读操作也会同时被缓存至一级缓存器303中而将原有的写操作覆盖掉。对于这种情形,采用图4所示的情形4进行处理。
(5)对于上述四种情形之外的情形。A端口信号可直接传送给同步双端口存储器IP300,A端口操作不需要缓存到与其端口对应的一级缓存器303中。即:当时钟323的上升沿到来时,同步双端口存储器IP300直接执行A端口的操作,同时一级缓存器303中缓存的操作保持不变,而此时二级缓存器303’仍会缓存一级缓存器303中的操作。对于这种情形,采用图5所示的其它情形进行处理。
本发明的基本思想是通过缓存有读写冲突的写操作来避免同步双端口存储器IP的两个端口出现同时对同一地址进行读写操作的情形,从而避免从同步双端口存储器IP读出错误的数据。由于写操作有可能缓存在缓存器中,其数据并没有写入存储器IP,因此在读出数据时需要通过一定的方法来判断需要读出的数据是在同步双端口存储器IP中还是在缓存器中。判断的方法就是本发明所提出的输出选择策略。
图5示出了本发明中输出数据的选择策略。如上所述,图5的输出数据选择策略主要由读出控制电路302来完成。读出控制电路302通过输出数据选择策略对输入的:A端口地址信号307、B端口地址信号308、二级缓存器303’中缓存的写使能和地址信号319’以及二级缓存器304’中缓存的写使能和地址信号320’进行判断,根据判断结果决定将同步双端口存储器IP300的输出数据还是将二级缓存器303、304中的数据输出。读出控制电路302的输出结果伴随其输入信号的改变而改变,当时钟323的上升沿到来后,同步双端口存储器IP的输出数据、二级缓存器303’和304’中缓存的信号会发生变化,读出控制电路的输出也会随之发生相应的改变。
输出数据选择策略根据读出控制电路302的输入信号307(A端口地址)、308(B端口地址)、319’(A端口二级缓存器303’中缓存的数据、地址和写使能)、320’(B端口二级缓存器304’中缓存的数据、地址和写使能),按照图5所示的输出数据选择策略来输出相应的数据。B端口输出数据322的选择策略和A端口的一样,可依此类推得到。A端口输出数据322的选择策略主要包括七个部分500、511、512、513、521、522和523。其中:
500给出了读出控制电路302需要进行比较和判断的内容:比较A端口地址与二级缓存器303’中缓存的地址是否相同?比较A端口地址与二级缓存器304’中缓存的地址是否相同?判断二级缓存器303’中缓存的是写操作还是读操作(通过二级缓存器303’中缓存的写使能信号来判断)?判断二级缓存器304’中缓存的是写操作还是读操作(通过二级缓存器304’中缓存的写使能信号来判断)?这些需要比较和判断的信号由读出控制电路302的输入307、308、319’和320’提供。通过这些比较和判断可以为输出数据322的来源选择提供依据。
511、512和513将500的比较判断结果分成了三类。
511对应的是A端口地址与B端口二级缓存器304’中缓存的地址相同且二级缓存器304’中缓存的是写操作的情形。此时说明二级缓存器304中缓存有需要输出的数据,应按照521输出二级缓存器304’中缓存的数据。
512对应的是在A端口地址与B端口二级缓存器304’中缓存的地址不同或者二级缓存器304’中缓存的是读操作的情况下,A端口地址与A端口二级缓存器303’中缓存的地址相同且二级缓存器303’中缓存的是写操作的情形。此时说明B端口二级缓存器304’中没有缓存需要输出的数据,而A端口二级缓存器303’中却缓存有需要输出的数据,此时应按照522输出A端口二级缓存器303’中缓存的数据。
513对应的是511和512之外的情形,此时说明二级缓存器303’和304’中均没有缓存需要输出的数据,此时应按照523输出同步双端口存储器IP300的输出数据321。
521、522和523分别给出了511、512和513这三种情况下输出数据322的来源。
521说明在511这种情况下应输出二级缓存器304’中缓存的数据。
522说明在512这种情况下应输出二级缓存器303’中缓存的数据。
523说明在513这种情况下应输出同步双端口存储器IP 300的输出数据321。
下面结合图6对本发明的选择和缓存策略的流程进行说明。
步骤600:仲裁电路301根据信号307与308判断外界给嵌入式存储器A、B端口的地址307与308是否相同。如果相同则进入步骤601,如果不同则进入步骤611。
步骤601:仲裁电路301根据A端口的写使能信号309判断A端口是进行读操作还是写操作。如果是读操作则进入步骤602,如果是写操作则进入步骤604。
步骤602:仲裁电路301通过一级缓存器303的输出信号319与A端口地址307进行比较,判断A端口地址307与A端口一级缓存器303中缓存的地址是否相同。如果相同则进入步骤603,否则进入步骤606。
步骤603:仲裁电路301通过一级缓存器303的输出信号319中的写使能信号判断A端口一级缓存器303中缓存的是读操作还是写操作。如果是读操作则进入步骤606,如果是写操作则进入步骤604。
步骤604:仲裁电路301输出控制信号311使A端口的输入信号(数据、地址和写使能等)315进入一级缓存器303。同时仲裁电路301输出控制信号313使选择器305选择将A端口一级缓存器303中的原有信号传送给同步双端口存储器IP300;当时钟323的上升沿到来后,同步双端口存储器IP执行A端口一级缓存器303中的原有信号,而同时A端口一级缓存器303中的原有信号被缓存至二级缓存器303’,而A端口信号也被缓存到一级缓存器303中以覆盖303中的原有信号。
步骤605:仲裁电路301输出控制信号311使A端口的输入信号(数据、地址和写使能等)315进入一级缓存器303。同时仲裁电路301输出控制信号313使选择器305选择将A端口信号315传送给同步双端口存储器IP300。当时钟323的上升沿到来后,同步双端口存储器IP执行A端口的输入信号,而同时A端口一级缓存器303中的原有信号被缓存至二级缓存器303’,而A端口信号也被缓存到一级缓存器303中以覆盖303中的原有信号。
步骤606:仲裁电路301输出控制信号311使A端口的输入信号(数据、地址和写使能等)315不进入一级缓存器303。同时仲裁电路输出控制信号313使选择器305选择将A端口信号315传送给同步双端口存储器IP300。当时钟323的上升沿到来后,同步双端口存储器IP执行A端口的输入信号,A端口一级缓存器303中的原有信号被缓存至二级缓存器303’,而A端口一级缓存器303中缓存的信号保持不变。
步骤611:仲裁电路301根据A端口写使能信号309判断A端口是进行读操作还是写操作。如果是读操作则进入步骤612,如果是写操作则进入步骤602。
步骤612:仲裁电路301根据B端口写使能信号310判断B端口是进行读操作还是写操作。如果是读操作则进入步骤606,如果是写操作则进入步骤613。
步骤613:仲裁电路301通过B端口地址信号308和A端口一级缓存器303中缓存的信号319来比较B端口地址308与A端口一级缓存器303中缓存的地址是否相同。如果相同,则进入步骤614,否则进入步骤606。
步骤614:仲裁电路301通过A端口一级缓存器303中缓存的信号319中的写使能信号判断A端口一级缓存器303中缓存的是读操作还是写操作。如果是读操作则进入步骤606,如果是写操作则进入步骤605。
图7示出了本发明中A端口输出数据322的选择策略,它给出了A端口输出数据是输出二级缓存器303’和304’中的数据还是输出同步双端口存储器IP300的输出数据321的规则。B端口输出数据的选择策略与A端口的一样,可依此类推得到。A端口的输出数据选择策略包含步骤如下:
步骤700:读出控制电路302通过A端口地址信号307和B端口二级缓存器304’中缓存的信号320’中的地址信号判断A端口地址307与B端口二级缓存器304’中缓存的地址是否相同。如果相同则进入步骤701,否则进入步骤702。
步骤701:读出控制电路302通过B端口二级缓存器304’中缓存的信号320’中的写使能信号判断B端口二级缓存器304’中缓存的是读操作还是写操作。如果是读操作则进入步骤702,如果是写操作则进入步骤704。
步骤702:读出控制电路302通过A端口地址信号307和A端口二级缓存器303’中缓存的信号319’中的地址信号比较A端口地址307与其端口二级缓存器303’中缓存的地址是否相同。如果相同则进入步骤703,否则进入步骤706。
步骤703:读出控制电路302通过A端口二级缓存器303’中缓存的信号319’中的写使能信号判断A端口二级缓存器303’中缓存的是读操作还是写操作。如果是读操作则进入步骤706,如果是写操作则进入步骤705。
步骤704:读出控制电路302输出B端口二级缓存器304’中缓存的数据。
步骤705:读出控制电路302输出A端口二级缓存器303’中缓存的数据。
步骤706:读出控制电路302输出存储器IP300的输出数据321。
本发明的侧重点是解决双端口存储器一个端口进行写操作,另一端口同时对同一地址进行读操作时产生的读写冲突问题。当出现这种冲突时,按照本发明提出的策略可实现先读出该地址上的原有数据再向该地址写入新数据的功能。由于在上电时,所有缓存器中的信号会被清零。只要存储器两端口不出现同时对同一地址进行写操作的情形,那么按照本发明提出的策略对输入输出数据进行控制后,就会始终读出正确的数据。
综上所述,虽然本发明仅以一实例披露如上,但其并非用以限定本发明,本领域技术人员在不脱离本发明的精神和范围的情况下,可作各种的更改与润饰,因此本发明的保护范围应以权利要求范围所界定的内容为准。
Claims (8)
1.一种实现同步双端口存储器IP的并行读写的结构,为一嵌入式存储器,其特征在于,主要包括:
同步双端口存储器IP,用于嵌入式存储器基本的读写操作;
仲裁电路,根据端口输入信息及一级缓存器中的信息输出控制信号控制将端口信号缓存至一级缓存器或传送给同步双端口存储器IP;
一级缓存器,根据仲裁电路的控制信号缓存各自端口输入的包括数据、地址和写使能信号;
二级缓存器,缓存一级缓存器中的包括数据、地址和写使能信号;
选择器,根据仲裁电路提供的控制信号决定向同步双端口存储器IP传送包括数据、地址和写使能的端口输入信号或一级缓存器中包括数据、地址和写使能的信号;以及
读出控制电路,根据端口输入地址信息及二级缓存器中的信息控制输出二级缓存器中的数据或输出同步双端口存储器IP的输出数据。
2.如权利要求1所述的实现同步双端口存储器IP的并行读写的结构,其特征在于,所述仲裁电路具有端口信号输入端口,一级缓存器信号输入端口;该仲裁电路根据端口输入信号和一级缓存器中的信号输出控制信号将端口输入信号缓存或直接输入双端口存储器IP,或将缓存器中的信号传送给同步双端口存储器IP中。
3.如权利要求1所述的实现同步双端口存储器IP的并行读写的结构,其特征在于,所述缓存器具备接收端口输入信号的输入端,其根据仲裁电路提供的控制信号有选择性地缓存包括数据、地址和写使能信号的本端口输入信号。
4.如权利要求1所述的实现同步双端口存储器IP的并行读写的结构,其特征在于,存在一级缓存器和二级缓存器,其中:一级缓存器根据仲裁电路提供的控制信号有选择的缓存端口信号,二级缓存器用于在每一时钟上升沿到来时就会缓存一级缓存器中缓存的包括数据、地址和写使能信号。
5.如权利要求1所述的实现同步双端口存储器IP的并行读写的结构,其特征在于,所述选择器根据仲裁电路输出的控制信号来控制将端口信号传送给同步双端口存储器IP或将一级缓存器中的信号传送给同步双端口存储器IP。
6.如权利要求1所述的实现同步双端口存储器IP的并行读写的结构,其特征在于,所述读出控制电路根据端口输入地址信号以及二级缓存器中缓存的信号决定输出二级缓存器中的数据或输出同步双端口存储器IP的输出数据。
7.利用权利要求1所述的嵌入式存储器实现同步双端口存储器IP的并行读写的方法,决定输出数据的来源,决定输出的数据是二级缓存器中的数据还是同步双端口存储器IP的输出数据,该方法包含:
比较第一端口地址与第一端口二级缓存器中的地址是否相同,为确定输出数据来源提供依据;
比较第一端口地址与第二端口二级缓存器中的地址是否相同,为确定输出数据来源提供依据;
判断第一端口二级缓存器中缓存的是写操作还是读操作,为确定输出数据来源提供依据;
判断第二端口二级缓存器中缓存的是写操作还是读操作,为确定输出数据来源提供依据。
8.利用权利要求1所述的嵌入式存储器实现同步双端口存储器IP的并行读写的方法,决定将端口输入信号缓存至一级缓存器或直接输入双端口存储器IP,或将一级缓存器中的信号传送给同步双端口存储器IP,该方法包含:
比较第一及第二端口的地址是否相同,为选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据;
比较第一端口地址与第一端口一级缓存器中的地址是否相同,为选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据;
比较第二端口地址与第一端口一级缓存器中的地址是否相同,为选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据;
判断第一端口是进行写操作还是进行读操作,为选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据;
判断第二端口是进行写操作还是进行读操作,为选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据;
判断第一端口一级缓存器中缓存的是写操作还是读操作,为选择器选择端口信号还是选择一级缓存器中的信号以及一级缓存器是否缓存本端口输入信号提供依据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102467427A CN101770437B (zh) | 2008-12-30 | 2008-12-30 | 实现同步双端口存储器ip的并行读写的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102467427A CN101770437B (zh) | 2008-12-30 | 2008-12-30 | 实现同步双端口存储器ip的并行读写的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101770437A true CN101770437A (zh) | 2010-07-07 |
CN101770437B CN101770437B (zh) | 2013-05-29 |
Family
ID=42503306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102467427A Active CN101770437B (zh) | 2008-12-30 | 2008-12-30 | 实现同步双端口存储器ip的并行读写的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101770437B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081591A (zh) * | 2011-01-27 | 2011-06-01 | 中国第一汽车集团公司 | 双端口存储器在双cpu结构设计中的应用 |
CN102567248A (zh) * | 2010-12-31 | 2012-07-11 | 中国航空工业集团公司第六三一研究所 | 一种避免双端口存储器访问冲突的控制电路与方法 |
WO2013118010A1 (en) * | 2012-02-08 | 2013-08-15 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
CN103730149A (zh) * | 2014-01-20 | 2014-04-16 | 中国科学院电子学研究所 | 一种双端口存储器的读写控制电路 |
CN103886916A (zh) * | 2014-03-27 | 2014-06-25 | 中国科学院电子学研究所 | 输入位宽可伸缩的编码/编解码存储*** |
CN105448317A (zh) * | 2014-06-20 | 2016-03-30 | 中芯国际集成电路制造(上海)有限公司 | 数据的处理装置、方法及控制信号的使能、处理电路 |
CN106250331A (zh) * | 2016-08-04 | 2016-12-21 | 深圳市泽云科技有限公司 | 一种针对sata端口复用优化的方法 |
CN106656391A (zh) * | 2016-12-12 | 2017-05-10 | 中国航空工业集团公司西安航空计算技术研究所 | 一种交换机芯片多路时钟同步原语冲突处理电路 |
CN109285580A (zh) * | 2018-09-06 | 2019-01-29 | 天津市滨海新区信息技术创新中心 | 数据预处理装置、方法及异步双端随机存取存储器*** |
CN110097902A (zh) * | 2019-04-15 | 2019-08-06 | 中科亿海微电子科技(苏州)有限公司 | 针对同一端口的读写控制模块及方法、双端口存储器 |
CN111290715A (zh) * | 2020-02-24 | 2020-06-16 | 山东华芯半导体有限公司 | 一种基于分区实现的安全存储装置 |
CN112052206A (zh) * | 2020-08-31 | 2020-12-08 | 浙江双成电气有限公司 | 基于仲裁的多端口数据存储*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272597B1 (en) * | 1998-12-31 | 2001-08-07 | Intel Corporation | Dual-ported, pipelined, two level cache system |
CN101196856B (zh) * | 2008-01-04 | 2010-09-08 | 太原理工大学 | 双端口访问单一动态存储器的接口 |
CN101196857B (zh) * | 2008-01-04 | 2010-11-10 | 太原理工大学 | 双端口访问对称动态存储器的接口 |
-
2008
- 2008-12-30 CN CN2008102467427A patent/CN101770437B/zh active Active
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567248A (zh) * | 2010-12-31 | 2012-07-11 | 中国航空工业集团公司第六三一研究所 | 一种避免双端口存储器访问冲突的控制电路与方法 |
CN102081591A (zh) * | 2011-01-27 | 2011-06-01 | 中国第一汽车集团公司 | 双端口存储器在双cpu结构设计中的应用 |
GB2512804A (en) * | 2012-02-08 | 2014-10-08 | Ibm | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
WO2013118010A1 (en) * | 2012-02-08 | 2013-08-15 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
GB2512804B (en) * | 2012-02-08 | 2015-03-04 | Ibm | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
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 |
US8799589B2 (en) | 2012-02-08 | 2014-08-05 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
CN103730149B (zh) * | 2014-01-20 | 2016-05-25 | 中国科学院电子学研究所 | 一种双端口存储器的读写控制电路 |
CN103730149A (zh) * | 2014-01-20 | 2014-04-16 | 中国科学院电子学研究所 | 一种双端口存储器的读写控制电路 |
CN103886916A (zh) * | 2014-03-27 | 2014-06-25 | 中国科学院电子学研究所 | 输入位宽可伸缩的编码/编解码存储*** |
CN103886916B (zh) * | 2014-03-27 | 2017-01-25 | 中国科学院电子学研究所 | 输入位宽可伸缩的编码/编解码存储*** |
CN105448317B (zh) * | 2014-06-20 | 2018-03-23 | 中芯国际集成电路制造(上海)有限公司 | 数据的处理装置、方法及控制信号的使能、处理电路 |
CN105448317A (zh) * | 2014-06-20 | 2016-03-30 | 中芯国际集成电路制造(上海)有限公司 | 数据的处理装置、方法及控制信号的使能、处理电路 |
CN106250331A (zh) * | 2016-08-04 | 2016-12-21 | 深圳市泽云科技有限公司 | 一种针对sata端口复用优化的方法 |
CN106250331B (zh) * | 2016-08-04 | 2019-08-13 | 深圳市泽云科技有限公司 | 一种针对sata端口复用优化的方法 |
CN106656391A (zh) * | 2016-12-12 | 2017-05-10 | 中国航空工业集团公司西安航空计算技术研究所 | 一种交换机芯片多路时钟同步原语冲突处理电路 |
CN106656391B (zh) * | 2016-12-12 | 2018-10-12 | 中国航空工业集团公司西安航空计算技术研究所 | 一种交换机芯片多路时钟同步原语冲突处理电路 |
CN109285580A (zh) * | 2018-09-06 | 2019-01-29 | 天津市滨海新区信息技术创新中心 | 数据预处理装置、方法及异步双端随机存取存储器*** |
CN110097902A (zh) * | 2019-04-15 | 2019-08-06 | 中科亿海微电子科技(苏州)有限公司 | 针对同一端口的读写控制模块及方法、双端口存储器 |
CN110097902B (zh) * | 2019-04-15 | 2021-01-29 | 中科亿海微电子科技(苏州)有限公司 | 针对同一端口的读写控制模块及方法、双端口存储器 |
CN111290715A (zh) * | 2020-02-24 | 2020-06-16 | 山东华芯半导体有限公司 | 一种基于分区实现的安全存储装置 |
CN111290715B (zh) * | 2020-02-24 | 2023-04-28 | 山东华芯半导体有限公司 | 一种基于分区实现的安全存储装置 |
CN112052206A (zh) * | 2020-08-31 | 2020-12-08 | 浙江双成电气有限公司 | 基于仲裁的多端口数据存储*** |
Also Published As
Publication number | Publication date |
---|---|
CN101770437B (zh) | 2013-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101770437B (zh) | 实现同步双端口存储器ip的并行读写的装置及方法 | |
US7251803B2 (en) | Memory re-implementation for field programmable gate arrays | |
CN103354939B (zh) | 用于使dram和mram访问交错的存储器控制器和方法 | |
CN101681323B (zh) | 装置引导的存储器屏障 | |
CN103730149B (zh) | 一种双端口存储器的读写控制电路 | |
US20040088489A1 (en) | Multi-port integrated cache | |
CN110109872B (zh) | 一种遥感卫星异构数据统一存储管理装置 | |
CN103116551B (zh) | 应用于CLB总线的NorFLASH存储接口模块 | |
CN102197384A (zh) | 用于改进串行端口存储器通信等待时间和可靠性的方法和*** | |
CN106250321B (zh) | 2r1w存储器的数据处理方法及数据处理*** | |
CN102610269B (zh) | 一种多读单写片内存储器 | |
CN102141974A (zh) | 一种多核处理器核间通信方法及其电路结构 | |
CN105988970A (zh) | 共享存储数据的处理器和芯片 | |
CN104778025A (zh) | 基于随机访问存储器的先入先出存储器的电路结构 | |
EP0646925A2 (en) | Fully scalable memory apparatus | |
CN100349442C (zh) | 一种乒乓缓冲装置 | |
CN101243416A (zh) | 在具有至少两个处理单元和用于数据和/或指令的至少一个第一存储器或存储器区域的计算机***中存储数据和/或指令的设备和方法 | |
CN105955919B (zh) | 基于FPGA的多MCU读写NANDFlash的实现方法 | |
KR100377708B1 (ko) | 저소비 전력화가 가능한 파이프라인 방식의 반도체 기억장치 | |
CN105404591B (zh) | 处理器***及其存储器控制方法 | |
CN102316177B (zh) | 地址解析方法、***和地址解析器 | |
KR20110066526A (ko) | 다중포트 메모리 콘트롤러 및 다중포트 캐시 | |
CN103198854B (zh) | FPGA中具有多种写入模式的Block RAM | |
JPH10255485A (ja) | 連想メモリおよびネットワークフレーム中継器 | |
EP1710706B1 (en) | An overlapping command committing method for a dynamic cycle pipeline |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210426 Address after: Room 705, 7 / F, building nw-01, Northwest District, nano City, No. 99, Jinjihu Avenue, Suzhou Industrial Park, Suzhou City, Jiangsu Province, 215028 Patentee after: EHIWAY MICROELECTRONIC TECHNOLOGY (SUZHOU) Co.,Ltd. Address before: 100080, No. 19 West Fourth Ring Road, Beijing, Haidian District Patentee before: Institute of Electronics, Chinese Academy of Sciences |