提高fpga存储器利用率的方法和装置的制作方法

文档序号:6431557阅读:169来源:国知局
专利名称:提高fpga存储器利用率的方法和装置的制作方法
技术领域
本发明涉及以太网领域,尤其是一种通过长度变换提高FPGA内部存储器利用率的方法和实现该方法的装置。
背景技术
在利用FPGA做以太网引擎的硬件仿真时,常常会遇到很短很宽的FIFO的实现问题。一种现有技术中,通过多块块状存储器在宽度上拼接来实现很大宽度FIFO的存储或者读取,这种方法由于仅仅是宽度上的拼接,所以对块状存储器长度(深度)上的利用率极低,且如果处理多个此类FIFO时,对于FPGA内部的块状存储器的资源占用很多,甚至,FPGA内部的块状存储器的数量没有办法满足实现此类FIFO所需数量。另一种现有技术,是通过采用FPGA内部的查找表LUT拼接来实现较长宽度FIFO的存储或者读取,这种方法,由于地址线的扇出太大,会消耗大量的布线资源
发明内容

针对上述技术问题,本发明的目的在于提供了一种提高FPGA内部块状存储器利用率的方法和装置。相应的,所述提高FPGA存储器利用率的方法包括以下步骤
51、输入一原始数据;
52、切分所述原始数据的宽度得到若干被切分数据,并将所述被切分数据存储于一块状存储器中;
53、从所述块状存储器中读取所述被切分数据,将所述被切分数据拼接成所述原始数据进行输出。本发明的进一步改进在于,在第一时钟域中,输入一原始数据;在第二时钟域中,切分所述原始数据的宽度得到若干被切分数据,并将所述被切分数据存储于一块状存储器中,所述第一时钟域比所述第二时钟域慢。本发明的进一步改进在于,在第一时钟域中,从所述块状存储器中读取所述被切分数据,将所述被切分数据拼接成所述原始数据进行输出。本发明的进一步改进在于,所述步骤S2中“切分所述原始数据的宽度得到若干被切分数据”具体为将所述原始数据的宽度按照所述块状存储器的宽度切分成若干等份。本发明的进一步改进在于,所述步骤S2中,所述第二时钟域对所述第一时钟域进行采样,当采样到所述第一时钟域的一个下降沿的同时,对写信号进行判断,若写信号有效,则完成切分所述原始数据的过程。本发明的进一步改进在于,所述步骤S3具体为按照原始数据的宽度,从所述块状存储器中连续读取若干组数据并依次拼接,得到所述原始数据。本发明的进一步改进在于,所述步骤S3中,所述第二时钟域对所述第一时钟域进行采样,当采样到所述第一时钟域的一个下降沿的同时,对读信号进行判断,若读信号有效,则将所述被切分数据拼接成所述原始数据进行输出的过程。相应的,所述提高FPGA存储器利用率的装置,该装置包括
输入单元用于输入一原始数据;
切分单元用于切分所述原始数据的宽度得到若干被切分数据,并将所述被切分数据存储于一块状存储器中;
输出单元用于从所述块状存储器中读取所述被 切分数据,将所述被切分数据拼接成所述原始数据进行输出。本发明的进一步在于,改进所述输入单元工作于第一时钟域,所述切分单元工作于第二时钟域,所述第一时钟域比所述第二时钟域慢。本发明的进一步改进在于,所述输出单元工作于第二时钟域。相较于现有技术,本发明的有益效果是通过利用内部高速时钟进行FPGA内部数据总线的变换,实现存储器长度的变换,充分利用了 FPGA内部块状存储器的长度和宽度的限制,提高了 FPGA内部块状存储器的利用率,同时相关逻辑消耗较小。


图I本发明提高FPGA存储器利用率方法的一实施例中流程 图2本发明提高FPGA存储器利用率方法的一实施例中宽度切分过程示意 图3本发明提高FPGA存储器利用率装置的模块示意图。
具体实施例方式以下将结合附图所示的各实施例对本发明进行详细描述。但这些实施例并不限制本发明,本领域的普通技术人员根据这些实施例所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。如图I所示,以512D36W大小的双端口块状存储器为例,一种通过长宽变换提高FPGA内部存储器利用率的方法,包括以下步骤
SI、输入一原始数据。在第一时钟域(一般为CLK),的一个上升沿输入一个原始数据;所述原始数据往往为一段很宽很浅的FIFO。以Xi I inx公司的Virtex4系列的FPGA XC4VLX100为例,V4系列包含总共具有18432bits存储位的BLOCK RAM,即块状存储器,可以实现18432DxlW,9216Dx2W,…,512Dx36W大小的双端口存储器,其中最大位宽是36bits。S2、切分所述原始数据的宽度得到若干被切分数据,并将所述被切分数据存储于一块状存储器中。具体为,第二时钟域是一内部高速时钟信号,一般为CLKFAST,其频率至少是CLK信号频率的33倍,为了简化异步时钟域的设计,同时为了使CLKFAST和CLK的频率变化时,不需要重新设计,可以规定CLKFAST的频率=(数据总线位宽/36x2+2)x CLK频率;所述第二时钟域CLKFAST对所述第一时钟域CLK进行采样,当采样到所述第一时钟域CLK的一个下降沿的同时,对写信号wr进行判断,若写信号wr有效,则将所述原始数据的宽度按照块状存储器的宽度切分成若干等份,并将所述被切分数据存储于一块状存储器中,完成切分所述原始数据的过程。以存储一个1152bits的原始数据为例,CLKFAST采样到CLK的下降沿的同时对wr信号做判断,如果wr信号有效,则开始按照36bits为单位将所述1152bits的原始数据切分成32等份,每切分出一份36bits的数据,就写入512D36W的块状存储器中。值得一提的是,如果数据总线信号除以36bits数据位宽得到的结果不是2的指数次方,为了简化设计,512D36W的寻址可以按照2的指数次方设计,例如,如果数据总线位宽是1158bits,转换成36bits的数据,共有33个,为了寻址方便,可以在512D36W分配连续64个36bits的单元给一个1158bits数据总线,这样浪费了 31个36bits的存储单元,寻址地址设计方便了,第一个1158bits数据从O开始,第二个从64开始,以此类推。也可以只分配33个36bits的存储单元给一个1158bits的数据,寻址地址设计稍微麻烦,第一个1158bits数据从O开始,第二个从33开始,第三个从66开始,以此类推,虽然这样的方式在寻址设计上略显麻烦,但节省了存储资源。S3、从所述块状存储器中读取所述被切分数据,将所述被切分数据拼接成所述原始数据进行输出。宽度扩展是宽度切分的反过程,具体为,当内部高速时钟域CLKFAST对所 述第一时钟域CLK进行采样,当采样到所述第一时钟域CLK的一个下降沿的同时,对读信号rd进行判断,若读信号有效,则按照原始数据的宽度,从所述块状存储器中连续读取若干组数据并依次拼接,得到所述原始数据,完成原始数据恢复的过程。以读取I个1152bits的数据为例,CLKFAST采样到CLK的下降沿的同时对rd信号做判断,如果rd信号有效,则开始按照36bits为单位从512D36W的块状存储器中连续读取32个36bits的存储数据,拼接成一个1152bits的数据总线信号rddata[1152:0]输出。如图2所示,详细解释了存储器宽度变换的过程,以写一个1152bits的数据为例,步骤I是在CLK时钟的上升沿输出一个1152bits的数据,步骤2是在CLK时钟的下降沿,CLKFAST开始切分1152bits的数据总线,从Dl [35:0]开始,连续切分32个数据,同时每切分一个36bits数据就写入到512D36W的块状存储器中,一直到D32[35:0]结束。然后又开始另一个新的1152bits的数据切分。参阅图3,为提高FPGA存储器利用率装置的示意图,在本实施方式中,该装置包括输入单元、切分单元、输出单元。所述输入单元用于输入一原始数据;其中,在第一时钟域,一般为CLK,的一个上升沿输入一个原始数据;所述原始数据往往为一段很宽很浅的FIFO。以Xilinx公司的Virtex4系列的FPGA XC4VLX100为例,V4系列包含总共具有18432bits存储位的BLOCK RAM,即块状存储器,可以实现18432DxlW,9216Dx2W,…,512Dx36W大小的双端口存储器,其中最大位宽是36bits。切分单元用于切分所述原始数据的宽度得到若干被切分数据,并将所述被切分数据存储于一块状存储器中;具体为,第二时钟域是一内部高速时钟信号,一般为CLKFAST,其频率至少是CLK信号频率的33倍,为了简化异步时钟域的设计,同时为了使CLKFAST和CLK的频率变化时,不需要重新设计,可以规定CLKFAST的频率=(数据总线位宽/36x2+2) X CLK频率;所述第二时钟域CLKFAST对所述第一时钟域CLK进行采样,当采样到所述第一时钟域CLK的一个下降沿的同时,对写信号wr进行判断,若写信号wr有效,则将所述原始数据的宽度按照块状存储器的宽度切分成若干等份,并将所述被切分数据存储于一块状存储器中,完成切分所述原始数据的过程。以存储一个1152bits的原始数据为例,CLKFAST采样到CLK的下降沿的同时对wr信号做判断,如果wr信号有效,则开始按照36bits为单位将所述1152bits的原始数据切分成32等份,每切分出一份36bits的数据,就写入512D36W的块状存储器中。输出单元用于从所述块状存储器中读取所述被切分数据,将所述被切分数据拼接成所述原始数据进行输出。宽度扩展是宽度切分的反过程,具体为,当内部高速时钟域CLKFAST对所述第一时钟域CLK进行采样,当采样到所述第一时钟域CLK的一个下降沿的同时,对读信号rd进行判断,若读信号有效,则按照原始数据的宽度,从所述块状·存储器中连续读取若干组数据并依次拼接,得到所述原始数据,完成原始数据恢复的过程。以读取I个1152bits的数据为例,CLKFAST采样到CLK的下降沿的同时对rd信号做判断,如果rd信号有效,则开始按照36bits为单位从512D36W的块状存储器中连续读取32个36bits的存储数据,拼接成一个1152bits的数据总线信号rddata[1152:0]输出。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。本申请可用于众多通用或专用的计算系统环境或配置中。例如个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护
范围之内。
权利要求
1.一种提高FPGA存储器利用率的方法,其特征在于该方法包括以下步骤 51、输入一原始数据; 52、切分所述原始数据的宽度得到若干被切分数据,并将所述被切分数据存储于一块状存储器中; 53、从所述块状存储器中读取所述被切分数据,将所述被切分数据拼接成所述原始数据进行输出。
2.根据权利要求I所述的提高FPGA存储器利用率的方法,其特征在于,在第一时钟域中,输入一原始数据;在第二时钟域中,切分所述原始数据的宽度得到若干被切分数据,并将所述被切分数据存储于一块状存储器中,所述第一时钟域比所述第二时钟域慢。
3.根据权利要求2所述的提高FPGA存储器利用率的方法,其特征在于,在第一时钟域中,从所述块状存储器中读取所述被切分数据,将所述被切分数据拼接成所述原始数据进行输出。
4.根据权利要求3所述的提高FPGA存储器利用率的方法,其特征在于,所述步骤S2中“切分所述原始数据的宽度得到若干被切分数据”具体为将所述原始数据的宽度按照所述块状存储器的宽度切分成若干等份。
5.根据权利要求4所述的提高FPGA存储器利用率的方法,其特征在于,所述步骤S2中,所述第二时钟域对所述第一时钟域进行采样,当采样到所述第一时钟域的一个下降沿的同时,对写信号进行判断,若写信号有效,则进行切分所述原始数据的过程。
6.根据权利要求4所述的提高FPGA存储器利用率的方法,其特征在于,所述步骤S3具体为按照原始数据的宽度,从所述块状存储器中连续读取若干组切分数据并依次拼接,得到所述原始数据。
7.根据权利要求6所述的提高FPGA存储器利用率的方法,其特征在于,所述步骤S3中,所述第二时钟域对所述第一时钟域进行采样,当采样到所述第一时钟域的一个下降沿的同时,对读信号进行判断,若读信号有效,则进行将存储的切分数据拼接成所述原始数据的过程。
8.一种提高FPGA存储器利用率的装置,其特征在于,该装置包括 输入单元用于输入一原始数据; 切分单元用于切分所述原始数据的宽度得到若干被切分数据,并将所述被切分数据存储于一块状存储器中; 输出单元用于从所述块状存储器中读取所述被切分数据,将所述被切分数据拼接成所述原始数据进行输出。
9.根据权利要求8所述的提高FPGA存储器利用率的装置,其特征在于,所述输入单元工作于第一时钟域,所述切分单元工作于第二时钟域,所述第一时钟域比所述第二时钟域慢。
10.根据权利要求9所述的提高FPGA存储器利用率的装置,其特征在于,所述输出单元工作于第二时钟域。
全文摘要
本发明涉及一种通过长宽变换提高FPGA内部存储器利用率的方法和装置,其中,所述方法包括S1.输入一原始数据;S2.切分所述原始数据的宽度得到若干被切分数据,并将所述被切分数据存储于一块状存储器中;S3.从所述块状存储器中读取所述被切分数据,将所述被切分数据拼接成所述原始数据进行输出。本发明通过利用内部高速时钟进行FPGA内部数据总线的变换,实现存储器长度的变换,充分利用了FPGA内部块状存储器的长度和宽度的限制,提高了FPGA内部块状存储器的利用率,同时相关的逻辑消耗较小。
文档编号G06F12/06GK102955744SQ20111024805
公开日2013年3月6日 申请日期2011年8月26日 优先权日2011年8月26日
发明者许俊 申请人:盛科网络(苏州)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1