CN103198854A - FPGA中具有多种写入模式的Block RAM - Google Patents
FPGA中具有多种写入模式的Block RAM Download PDFInfo
- Publication number
- CN103198854A CN103198854A CN2013101140531A CN201310114053A CN103198854A CN 103198854 A CN103198854 A CN 103198854A CN 2013101140531 A CN2013101140531 A CN 2013101140531A CN 201310114053 A CN201310114053 A CN 201310114053A CN 103198854 A CN103198854 A CN 103198854A
- Authority
- CN
- China
- Prior art keywords
- write
- signal
- data
- module
- sense amplifier
- 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
- Static Random-Access Memory (AREA)
- Logic Circuits (AREA)
Abstract
本发明属于电子技术领域,具体涉及FPGA内嵌IP硬核Block RAM中写入操作的时序控制电路设计。规范说明了相应Write_Mode下的时序控制情况要求;同时提出了通过冗余电路动态模拟技术来得到当前工作环境下的延迟情况并将其反馈给Write_Mode控制模块,从而实现不同Write_Mode不同工作环境下的写入操作可配置电路设计。本发明能够实现BlockRAM设计中所要求的三种不同的Write_Mode配置情况,并且充分保证了在各种工作状态下电路的高速性和可靠性。
Description
技术领域
本发明属于电子设计技术领域,具体涉及FPGA内嵌IP 硬核Block RAM(以下简称BRAM)中写入操作时序控制实现及兼顾高速性和可靠性的电路设计。
背景技术
早期的FPGA由configurable logic blocks(CLBs),input/output blocks(IOBs)以及互联资源组成。但是现代数字电路设计对FPGA中存储资源的要求越来越高,而使用CLB配置实现存储功能会消耗大量的可配置资源且实现的性能因资源分布及互联线长度而受到影响。故在FPGA中引入BRAM IP 硬核,以支持FPGA中的存储资源实现,解决逻辑资源的性能和功能限制问题,使得FPGA得以具有更加广泛的应用。
作为FPGA中的内嵌存储结构,BRAM的基本功能为数据的写入和读出操作。早期的BRAM只支持在写入数据的同时该写入数据出现在输出端的这种称为“write with write-back”的模式,这极大地限制了BRAM在应用中的灵活性。在后续研究中提出,基本的BRAM的写入操作时序应有三种配置模式:Write_First(写入写先读),Read_First(写入读先读),No_Change(写入不读出)。但是,这些模式传统实现是建立针对Write_Mode的读写控制信号发生模块来进行控制,一般情况下是通过配置输入和相应的固定延迟单元(通常采用反相器链实现)结合的方式产生具有不同时序的控制信号来控制实现。这样做在逻辑电路设计上要求较低,但是由于控制信号传输距离较远,使得Skew的时间较大,而Write_Mode又对信号的时序要求很高,故可能会引起时序上的可靠性错误。另外,当电路工作在不同工作环境(工艺角、温度、电压等)下时,信号的延迟情况很难使用固定延迟单元模拟给出,由于要保证所有情况下数据都能够正确写入需要取延迟的最大值,使得在实际芯片中对BRAM的应用极大的影响了芯片的工作频率。
通过研究各个控制信号间的相关性及数据传输所需的时间,产生控制实现三种Write_Mode模式的脉冲信号模块。同时加入信号通路上所通过的电路模块为冗余模块,动态的模拟在当前工作环境下的电路信号传输的延迟情况并将其反馈给脉冲信号控制模块,从而产生适应于当前工作环境的脉冲信号。本发明实现了FPGA中要求BRAM的三种Write_Mode配置下信号控制及数据传输功能,同时动态的控制延迟保证在好的工作环境下能够高速运行,而在最坏情况下也能够保证时序的正确性。
发明内容
本发明的目的在于提供一种能够实现三种Write_Mode配置功能的FPGA内嵌BRAM电路,并在保证基本功能的前提下兼顾提高整体电路的高速性和可靠性。
FPGA中具有多种写入模式的Block RAM,包括:输入缓冲器101,输入位宽调整器102,二级列译码模块103,SRAM阵列104,灵敏放大器105,输出位宽调整模块106,锁存器107,时序逻辑控制器108,一级行列译码器109,二级行译码器110;BRAM作为FPGA中重要的可编程IP硬核,具有独立双端口数据写入/读出路径,见图1的整体框架图。数据在写入路径上经过输入缓冲器101,输入位宽调整器102,二级列译码模块103,最终写入SRAM阵列104中。数据在读出路径上经过SRAM阵列104,二级列译码模块103,灵敏放大器105,输出位宽调整模块106,最终从输出锁存器107中读出。其中时序由时序逻辑控制器108控制;地址译码由一级行列译码器109,二级行译码器110以及二级列译码器103配合产生。
对于写入操作的一项重要功能时序配置为Write_Mode,即写入时的时序及数据传输配置要求,主要包括:Write_First(写入写先读),Read_First(写入读先读),No_Change(写入不读出)。Write_First模式下,数据在写入的同时出现在数据的输出端,可以监控写入的数据,如图2(a)所示。Read_First模式下,数据在写入的同时会将写入位置中原来存储的数据先读出在数据的输出端,再将新写入的数据写入到该位置,如图2(b)所示。No_Change模式下,数据在写入的过程中不需要在输出端监控,故输出端数据无效,如图2(c)所示。可以看出,这三种Write_Mode的实现实际就是在数据写入的同时,读出路径上对应的数据读出配合,即在数据写入的同时,不同配置模式下由时序逻辑控制器108控制输出路径的时序脉冲,以在输出端口上出现不同的数据。
而在这三种Write_Mode模式中,Write_First可以通过旁路输入数据的方式,即将输入信号从输入锁存器101的输出端直接旁路到输出锁存器107即可。之所以采用旁路输入数据的方式而非将数据写入再从对应SRAM读出的原因是:如果采用写入再读出的方式将需要在一个时钟周期内完成写入和读出的操作,这就会使得在该Write_Mode的配置模式下写入的工作频率减为原来的一半(这里粗略认为写入和输出的数据传输路径上时间相同,但其实一般情况下写入的速度较输出的速度快)。而采用旁路输入数据的方式可以使数据在通过输入锁存器101后就在两条数据路径上传输,而一般情况下,直接从输出锁存器107中输出的速率要高于写入相应SRAM的速率,故不会因为配置为Write_First模式而影响BRAM的正常写入速率。对于No_Change模式也只需要通过一个控制信号将输出锁存器的使能关闭,使其不能够输出内部数据即可实现。
但是对于Read_First模式,需要在写入新数据之前将原先存储在指定位置SRAM中的旧的数据输出在输出锁存器107上,再将新的数据写入指定位置的SRAM中。这就需要读出操作先进行,然后写入操作再完成整个写入操作。但是将数据完全输出(数据出现在输出锁存器107上)后再启动输入锁存器101进行写入数据的锁存的方案是不可取的,因为这样就需要整个的工作时间为写入和读出操作时间的总和,就会使得在Read_First模式下BRAM的工作频率受到极大限制。所以本发明针对输出路径上的时序进行了研究,总结出输入控制信号与输出控制信号之间的关系,发现由于BRAM内部采用的是异步电路的设计方式,故在一个时钟周期内,每个模块都是在特定的时间进行工作的,而不是需要占用整个时钟周期的。故可以采用分时复用并行传输的方式,使得在与Write_First和No_Change相同的时钟频率下,通过信号之间的延迟关系,保证读出和写入操作可以同时进行,并在与指定SRAM交换数据时,若未完成读出操作虽可以将数据读入并锁存,但是会将新的数据阻塞保持在与SRAM交换数据的通道口处,直到能够保证旧的数据正确读出时才开放数据写入通道,使其能够继续的沿原输入数据通路写入指定SRAM。故在研究了BRAM内部工作时序控制波形后,将这些信号作为输入输出数据通路上的控制信号,就可以实现Read_First的控制并保证工作频率不会受到配置模式的影响。
3.实现方案
根据上述分析,由于二级列译码模块103(图5)就是输入、输出数据与相应SRAM进行数据交换时的通路选择模块,所以本发明对在该模块中加入Write_Mode时序控制模块503,该时序控制模块503由两个与门508和509组成,其输入信号为Signal 501,GTP和RVL。其中Signal 501为由写使能与地址信号控制的位线打开信号,而GTP和RVL是由灵敏放大器模块105(图3)中的GTP和RVL信号驱动的。Signal 501与GTP和RVL信号通过两级与门508、509后得到Signal 502,并通过多路选择器510来实现在Write_First和Read_First模式下,控制写入时输入数据的阻塞与否。这样就可以在Read_First模式下,读出数据并阻塞写入数据端口的同时,保证数据还是可以从输入端口读入并进行传输,传递到被阻塞的端口处再进行等待,直到数据读出完成,阻塞端口被打开后就可以继续进行写入操作。这样就可以避免在读出完成后才从输入端口取数据,从而利用部分路径的相不关性节省了数据写入传输的时间,提高了工作频率。
另外,实现Read_First模式时,保证读出数据通路畅通并阻塞写入数据的控制信号需要一个保证读出稳定的延迟。在这段延迟后,读出数据已经不会受到写入数据的影响,故这时就可以解除阻塞并将数据写入指定SRAM中。在本发明中,加入冗余电路(即模拟灵敏放大器模块711),其电路结构与敏感放大器模块705(图3)相同,且物理位置放在敏感放大器模块705电路的旁边,以保证能够正确反映敏感放大器模块705的内部信号。该模块711的输入信号为GTP信号,由时序控制逻辑108提供,输出信号连接二级列译码模块(图5)的Write_Mode时序控制模块503的输入端RVL。通过动态模拟并反馈传输延迟的方式来得到数据在读出并达到稳定传输时所需要的时间,进而用该时间来阻塞写入数据。而加入的冗余电路(即模拟灵敏放大器模块711)用以得到数据被锁存的时间点,将被锁存前的时间都作为需要写入数据被阻塞的时间(因为在数据被锁存后就不会在同一个时钟周期内因为写入数据而影响在后续的数据传输路径上发生改变)。在锁存完成后就可以打开写入数据传输通道,使其对相应的SRAM进行数据写入。加入冗余电路(即模拟灵敏放大器模块711)的优点就在于该电路与正常的数据通路是相同的,故在不同的工作环境下能够产生与正常的数据通路相同的延时并将其反馈给二级列译码中的控制信号。而这样的延时在不同的工作环境下是不同的,所以这样就可以解决由于要考虑保证各种工作环境下都能够正常工作而取最大固定延迟而使得整体电路的工作频率受限的问题,保证在好的工作环境下能够高速工作,而在最坏情况下也能够保证数据的正确传输和功能的实现。
技术效果
本发明能够实现具有三种Write_Mode的BRAM写入时序配置,并保证其在各种工作环境下都能够保证功能正确性的同时兼顾高速性和可靠性。
附图说明
图1 BRAM整体架构及数据通路说明图。
图2 三种Write_Mode的工作模式说明图。
图3 BRAM敏感放大器模块电路图。
图4 敏感放大器工作时序控制图。
图5 实现三种Write_Mode的二级列译码模块电路图。
图6 Read_First模式下的时序图。
图7 实现三种Write_Mode并保证工作可靠性的BRAM整体架构图。
具体实施方式
对于输出数据,最主要的时序是在二级列译码模块103和敏感放大器模块105上。因为二级列译码模块103是控制数据选择性输入/输出的双向通道,而敏感放大器模块105是将从SRAM中读出的模拟波形信号进行差分放大而产生标准数字信号并锁存,从而保证数据的正确传输。
敏感放大器模块105如图3所示。右侧的组合电路部分是用来进行各种控制信号的产生,主要是控制信号电路间的延迟等。特别注意的是最右端的三个反向器(301,302,303),就是用来产生延迟使得SON信号较RVL信号早的打开对应MOS管。这样做的情况就是反相器下端接着的两组NMOS管(305,306)只有在这3个反相器(301,302,303)的延迟时间间隔下才能够打开,而只有三个NMOS管都打开才能够进行正反馈的放大工作。按照以上的工作原理进行的电路设计需要严格的符合时序要求,具体的控制信号的时序见图4。
如图4中所示,敏感放大器的控制信号GTP是一个脉冲信号,在脉冲信号的下降沿就会开始进行工作。真正的正反馈并进行差分放大工作的时间只有SP为高电平的时间。故在SP跳变的下降沿完成后,位线上的数据就不会影响到输出端的数据,所以在这时就可将输入数据被阻塞的通道打开,使其能够继续沿原输入路径进行指定SRAM的写入。
如图5所示,二级列译码模块就是输入、输出数据与相应SRAM进行数据交换时的通路选择模块。所以根据上述分析,需要在这个模块中加入时序控制及数据阻塞的机制(即加入Write_Mode时序控制电路503)保证Read_First的实现。Write_Mode时序控制模块503,由两个与门508和509组成,其输入信号为Signal 501,GTP和RVL。其中Signal 501为由写使能与地址信号控制的位线打开信号,而GTP和RVL是由灵敏放大器模块105(图3)中的GTP和RVL信号驱动的。Signal 501与GTP和RVL信号通过两级与门508、509后得到Signal 502,并通过多路选择器510来实现在Write_First和Read_First模式下,控制写入时输入数据的阻塞与否。 输入数据与SRAM进行数据传输是通过PMOS管504、505进行的,而输出数据与SRAM进行数据传输是通过PMOS管506、507进行的。这里在实现Read_First时,将控制PMOS管打开的信号501一部分传输给Write_Mode时序控制电路503用以产生控制PMOS管504、505的具有延迟于信号501的控制信号502并使用SEL选通该路信号,另一部分直接控制PMOS管506、507。这样就能够保证在Read_First模式下,下端的PMOS管506、507先于PMOS管504、505打开,使得SRAM中的数据能够读出到DR和DR_上,进而通过敏感放大器放大数据后被锁存。而信号502较信号501的延时是通过对敏感发生器的工作时序原理(如图4)分析后得到的能够保证SRAM中旧的数据已经读出的时间,继而打开PMOS管504、505,使得DW和DW_能够通过并传输到Bit Line上,最终写入对应SRAM中。这样就能够保证写入数据在经过阻塞且系统完成数据读出之后能够继续写入指定SRAM中。
如图6所示,在Read_First模式下,以图5中的信号501和信号502作为控制信号,能够保证在信号502较信号501的延迟的时间段内,对应SRAM的数据出现在Bit Line上且经过敏感放大器放大并锁存完成。而在信号502的下降沿到来时,导通PMOS管504、505并将写入数据传输到Bit Line上,进而改写对应SRAM中的值。
如图7所示,加入了模拟敏感放大器模块711来保证可靠性的整体电路架构图。冗余的敏感放大器模块与敏感放大器电路相同,且在版图上的位置在敏感放大器旁边,保证其电路数据通路上的延迟能够与正常数据通路上的延迟相同,从而动态的反馈当前工作状态下的数据通路延迟。信号701为从脉冲发生器直接产生的GTP信号,其下降沿控制敏感发生器开始工作。信号702为从模拟敏感放大器模块得到的RVL信号,其下降沿标志着数据已经完成放大并锁存。将信号701、702反馈给二级列译码模块,就可以作为Write_Mode时序控制电路503的输入端,从而产生相应的时序控制信号实现Read_First。
Claims (1)
1. 一种FPGA中具有多种写入模式的Block RAM,包括:输入缓冲器(101),输入位宽调整器(102),二级列译码模块(103),SRAM阵列(104),灵敏放大器(105),输出位宽调整模块(106),锁存器(107),时序逻辑控制器(108),一级行列译码器(109),二级行译码器(110);BRAM作为FPGA中重要的可编程IP硬核,具有独立双端口数据写入/读出路径;数据在写入路径上经过输入缓冲器(101),输入位宽调整器(102),二级列译码模块(103),最终写入SRAM阵列(104)中;数据在读出路径上经过SRAM阵列(104),二级列译码模块(103),灵敏放大器(105),输出位宽调整模块(106),最终从输出锁存器(107)中读出;其中时序由时序逻辑控制器(108)控制;地址译码由一级行列译码器(109),二级行译码器(110)以及二级列译码器(103)配合产生;其特征在于:
在作为输入、输出数据与相应SRAM进行数据交换时的通路选择模块即二级列译码模块(103)中,加入Write_Mode时序控制模块(503);该Write_Mode时序控制模块(503)由两个与门(508)和(509)组成,其输入信号为Signal (501),GTP和RVL;其中Signal( 501)为由写使能与地址信号控制的位线打开信号,而GTP和RVL是由灵敏放大器模块(105)中的GTP和RVL信号驱动;Signal (501)与GTP和RVL信号通过两级与门(508、509)后得到Signal(502),并通过多路选择器(510)来实现在Write_First和Read_First模式下,控制写入时输入数据的阻塞与否;
另外,加入冗余电路即模拟灵敏放大器模块(711),其电路结构与敏感放大器模块(705)相同,且物理位置放在敏感放大器模块(705)电路的旁边,以保证能够正确反映敏感放大器模块(705)的内部信号;该模拟灵敏放大器模块(711)的输入信号为GTP信号,由时序控制逻辑(108)提供,输出信号连接二级列译码模块的Write_Mode时序控制模块(503)的输入端RVL;通过动态模拟并反馈传输延迟的方式来得到数据在读出并达到稳定传输时所需要的时间,进而用该时间来阻塞写入数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310114053.1A CN103198854B (zh) | 2013-04-03 | 2013-04-03 | FPGA中具有多种写入模式的Block RAM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310114053.1A CN103198854B (zh) | 2013-04-03 | 2013-04-03 | FPGA中具有多种写入模式的Block RAM |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103198854A true CN103198854A (zh) | 2013-07-10 |
CN103198854B CN103198854B (zh) | 2015-12-02 |
Family
ID=48721326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310114053.1A Active CN103198854B (zh) | 2013-04-03 | 2013-04-03 | FPGA中具有多种写入模式的Block RAM |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103198854B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500584A (zh) * | 2013-10-07 | 2014-01-08 | 复旦大学 | 一种fpga内嵌独立双端口bram ip硬核 |
CN104617928A (zh) * | 2015-01-13 | 2015-05-13 | 复旦大学 | 基于fpga硬件结构的时钟网络遍历测试方法 |
CN107122565A (zh) * | 2017-05-12 | 2017-09-01 | 山东大学 | 基于非易失性存储器的fpga bram架构与设计方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286737A (zh) * | 2008-06-05 | 2008-10-15 | 复旦大学 | 可配置的可编程逻辑单元的时序控制电路 |
US8238191B2 (en) * | 2005-03-08 | 2012-08-07 | Altera Corporation | Dual port PLD embedded memory block to support read-before-write in one clock cycle |
CN202662294U (zh) * | 2012-05-22 | 2013-01-09 | 安徽大学 | 一种基于bist控制的可编程sram时序控制电路 |
-
2013
- 2013-04-03 CN CN201310114053.1A patent/CN103198854B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8238191B2 (en) * | 2005-03-08 | 2012-08-07 | Altera Corporation | Dual port PLD embedded memory block to support read-before-write in one clock cycle |
CN101286737A (zh) * | 2008-06-05 | 2008-10-15 | 复旦大学 | 可配置的可编程逻辑单元的时序控制电路 |
CN202662294U (zh) * | 2012-05-22 | 2013-01-09 | 安徽大学 | 一种基于bist控制的可编程sram时序控制电路 |
Non-Patent Citations (1)
Title |
---|
余慧,王健: "一种专用可重配置的FPGA嵌入式存储器模块的设计和实现", 《电子学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500584A (zh) * | 2013-10-07 | 2014-01-08 | 复旦大学 | 一种fpga内嵌独立双端口bram ip硬核 |
CN103500584B (zh) * | 2013-10-07 | 2016-10-26 | 复旦大学 | 一种fpga内嵌独立双端口bram ip硬核 |
CN104617928A (zh) * | 2015-01-13 | 2015-05-13 | 复旦大学 | 基于fpga硬件结构的时钟网络遍历测试方法 |
CN104617928B (zh) * | 2015-01-13 | 2017-10-10 | 复旦大学 | 基于fpga硬件结构的时钟网络遍历测试方法 |
CN107122565A (zh) * | 2017-05-12 | 2017-09-01 | 山东大学 | 基于非易失性存储器的fpga bram架构与设计方法 |
CN107122565B (zh) * | 2017-05-12 | 2019-08-30 | 山东大学 | 基于非易失性存储器的fpga bram架构与设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103198854B (zh) | 2015-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN208488975U (zh) | 用于具有字线和位线的存储器阵列的存储器控制器 | |
KR100567065B1 (ko) | 메모리 장치용 입력 회로 | |
KR100915554B1 (ko) | 반도체기억장치 | |
US20060044925A1 (en) | Limited output address register technique providing selectively variable write latency in DDR2 (double data rate two) integrated circuit memory devices | |
KR100590855B1 (ko) | 전류 소모의 감소를 위한 반도체 메모리 소자 | |
US7239576B2 (en) | Memory device and method of controlling the same | |
US7269754B2 (en) | Method and apparatus for flexible and programmable clock crossing control with dynamic compensation | |
CN1965282A (zh) | 延迟线同步器装置和方法 | |
KR100792213B1 (ko) | 메모리 컨트롤러와 메모리를 인터페이싱하는 랩퍼 회로 | |
US20090089538A1 (en) | Synchronous Address And Data Multiplexed Mode For SRAM | |
US6192004B1 (en) | Semiconductor integrated circuit | |
CN1504900B (zh) | 自内存读取数据的控制电路及其方法 | |
CN102610269B (zh) | 一种多读单写片内存储器 | |
CN103198854A (zh) | FPGA中具有多种写入模式的Block RAM | |
KR19980048951A (ko) | 이중 경로 센싱 출력 레지스터를 이용한 동기화 메모리에서의 출력 회로 | |
US7242235B1 (en) | Dual data rate flip-flop | |
CN101286737B (zh) | 可配置的可编程逻辑单元的时序控制电路 | |
JP2006216137A (ja) | 半導体記憶装置 | |
CN103065672B (zh) | 一种基于同步静态随机存储器ip的异步静态随机存储器 | |
US7449924B2 (en) | Latch-based serial port output buffer | |
KR100748461B1 (ko) | 반도체 메모리 장치의 데이터 입력 회로 및 방법 | |
CN108347241A (zh) | 一种低功耗多路选择器的结构 | |
US6195296B1 (en) | Semiconductor memory device and system | |
US7672190B1 (en) | Input latch circuit and method | |
US20080106962A1 (en) | Memory device and method thereof |
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 |