CN100385387C - 一种提高ram利用效率的方法 - Google Patents

一种提高ram利用效率的方法 Download PDF

Info

Publication number
CN100385387C
CN100385387C CNB2006100333861A CN200610033386A CN100385387C CN 100385387 C CN100385387 C CN 100385387C CN B2006100333861 A CNB2006100333861 A CN B2006100333861A CN 200610033386 A CN200610033386 A CN 200610033386A CN 100385387 C CN100385387 C CN 100385387C
Authority
CN
China
Prior art keywords
ram
data
clock
write
fifo
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
Application number
CNB2006100333861A
Other languages
English (en)
Other versions
CN1858695A (zh
Inventor
范嘉旗
张玉泉
李星
何军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2006100333861A priority Critical patent/CN100385387C/zh
Publication of CN1858695A publication Critical patent/CN1858695A/zh
Application granted granted Critical
Publication of CN100385387C publication Critical patent/CN100385387C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Dram (AREA)
  • Static Random-Access Memory (AREA)

Abstract

本发明公开了一种提高PLD中RAM的利用效率的方法,将RAM读写数据的时钟频率与外部时钟频率分离,使用倍频时钟作为RAM的时钟,在多个RAM时钟周期内依次读写一个外部读写数据周期所读写的数据,使得位宽小的RAM可以适用于位宽大的PLD中的功能模块,同样也使得一块RAM块可以适用于一个以上的PLD中的功能模块,有效的提高了RAM块的利用效率,节约了资源。

Description

一种提高RAM利用效率的方法
技术领域
本发明涉及数字电路设计领域,更具体的说,涉及到数字电路设计PLD(可编程逻辑器件)中RAM(随机存储模块)的使用。
背景技术
PLD(Programmable Logic Device可编程逻辑器件)技术和FPGA(FieldProgrammable Gate Array现场可编程门阵列)技术是电子设计领域中最具活力和发展前途的一项技术,几乎能完成任何数字器件的功能,它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由地设计一个数字系统。虽然PLD和FPGA两者名称有异,但两者的功能基本相同,只是实现原理略有不同。本发明所述的方法对PLD和FPGA都能适用且不存在原理性的区别,因此下文中忽略两者的区别,统称为可编程逻辑器件或PLD。
复杂的PLD器件会嵌入一些RAM块,以满足存储数据的需要。这些RAM块的存储容量一般为512位、4096位等等。虽然不同的PLD器件可能包含不同数目不同种类的RAM块,但是,RAM块在PLD器件中的使用都存在共同的限制:
1、RAM块必须成块分配,如果一个RAM块分配给了一个功能模块,则不能被其他功能模块使用。
2、每个RAM块的宽度有限(一般最大为16位宽),如果要存储32位宽的数据,则需要由两个RAM块拼起来使用。
在数字电路设计中,经常会使用FIFO(First in First out,先进先出)模块来存储数据,下面以FIFO为例来阐述现有技术PLD器件中的RAM使用情况,如附图1所示:其中的双端口RAM在PLD器件中就需要使用RAM块来实现,其中的“写数据”、“写信号”、“满/几乎满”为FIFO入口信号;“读数据”、“读信号”、“空/几乎空”为FIFO出口信号;写地址产生逻辑控制双端口存储器的写地址和写信号;读地址产生逻辑控制双端口存储器的读地址和读信号;空/满标志产生逻辑产生FIFO的空/满状态信号,数据在控制信号的控制下分别从“写数据”端口写入、从“读数据”端口读出。
由于上述的PLD器件中RAM块使用的限制,所以一个FIFO必须使用一块或多块RAM。当FIFO深度较小,且位宽较大时就会造成RAM资源严重浪费,因为多块RAM模块拼接后的位宽必须与FIFO的位宽一致,如果FIFO位宽较大,则需要多块位宽较小的RAM模块拼接,但当FIFO深度较小时,需要使用的RAM的存储容量并不大。例如,一个宽度为64位、深度为16位的FIFO,只需要使用1024位的RAM资源。假设每个RAM块最大位宽为16位,则如果用512位的RAM块来实现,需要使用4块,占用了2048位的RAM资源,但实际使用的资源只有1024位,浪费了1024位的RAM资源;如果使用4096位的RAM块来实现,同样需要使用4块,占用了16K位的RAM资源,浪费更加严重。
因此,现有技术中PLD器件实现深度浅,位宽大的RAM时资源利用率低,浪费严重。
发明内容
本发明的目的在于提供一种提高RAM利用效率的方法,以解决现有技术中RAM在PLD中使用时利用率低的问题。
为实现上述目的,本发明采用的技术方案是这样实现的:一种提高RAM利用效率的方法,该方法包括以下步骤:
a、将所述的RAM写数据的时钟频率设置为外部写数据的时钟频率的整数倍n,将所述的RAM读数据的时钟频率设置为外部读数据的时钟频率的整数倍n;
b、写数据时,将一个外部写数据的时钟周期所写入的数据分成n份在n个RAM时钟周期内依次写入所述的RAM,读数据时,依次在n个RAM时钟周期内从所述的RAM中读出一个外部时钟周期内应读取的数据。
其中所述的整数倍n是根据所述的外部读、写数据的位宽与RAM的位宽的比值确定的。
本发明还公开了另一种提高RAM利用效率的方法,包括下列步骤:
a、将所述的RAM写数据的时钟频率设置为外部写数据的时钟频率的整数倍n,将所述的RAM读数据的时钟频率设置为外部读数据的时钟频率的整数倍n,同时将RAM分成整数份m;
b、写数据时,将一个外部写数据的时钟周期所写入的数据分成n份在n个RAM时钟周期内依次写入所述的分成m份的RAM,读数据时,依次在n个RAM时钟周期内从所述的分成m份的RAM中读出一个外部时钟周期内应读取的数据。
其中所述的整数倍m是根据共用同一个所述RAM的功能模块的个数确定并且小于或者等于n。
本发明克服现有技术不足,采用将RAM读写数据的时钟频率与外部时钟频率分离的方法,使用倍频时钟作为RAM的时钟,使得位宽小的RAM可以适用于位宽大的PLD中的功能模块,同样也使得一块RAM块可以适用于一个以上的PLD中的功能模块,有效的提高了RAM块的利用效率,节约了资源。
附图说明
图1是现有技术中FIFO结构示意图;
图2是本发明实施例一的FIFO结构示意图;
图3是本发明实施例二的FIFO结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行进一步详细的说明。
实施例一、如附图2所示,对于一个位宽比双端口RAM宽的FIFO,可以对其读写数据的方式进行修改,首先将RAM时钟与FIFO的时钟分离,设置RAM的写时钟和读时钟,其频率为FIFO时钟频率的n倍,将外部写入FIFO的数据分成n份,分别用“写数据1”、“写数据2”......“写数据n-1”、“写数据n”表示,将从FIFO读出的数据也分成n份,分别用“读数据1”、“读数据2”......“读数据n-1”、“读数据n”表示,由于RAM的写时钟频率为FIFO写时钟频率的n倍,RAM读时钟频率为FIFO读时钟频率的n倍,RAM带宽相应为FIFO带宽的n倍。当外部数据写入FIFO时,每个RAM时钟周期写入相当于FIFO一个时钟周期写入数据的1\n份,FIFO在一个其本身时钟周期要求写入的数据,在n个RAM时钟周期内分次写入,在FIFO内部第一个RAM时钟周期写入上述分成n份的数据的第1份数据“写数据1”,第二个RAM时钟周期写入第2份数据“写数据2”,如此类推,第n个RAM时钟周期写入了第n份数据“写数据n”,至此,在一个FIFO时钟周期应该写入的数据已经全部写入完毕,只是分成了n次。读操作与上述的写操作原理一样,当从FIFO中读取数据时,将FIFO一个时钟周期的数据分成n份,依次在n个RAM时钟周期内读取。
以下通过具体的例子来说明,假设FIFO的位宽为64位、深度为16,拟使用16位宽的4096位RAM,在现有技术中需要4块RAM拼接才能满足FIFO的位宽要求,但采用本发明所述的方法只需1块RAM即可。首先根据FIFO和RAM的位宽比确定n的值,也就是RAM时钟频率倍频的倍数,此时应确定n为4,设置RAM的时钟频率为FIFO时钟频率的4倍,同时将在一个FIFO时钟周期内写入FIFO或者从中读出的数据分成4份,在写入或者读出数据时,在每一个RAM时钟周期写入或者读取一份数据,在4个RAM时钟周期写入或者读取一个FIFO时钟周期的全部数据。
因此,将FIFO的数据分成n份以后依次写入FIFO或者从FIFO依次读出,同时提高内部读写数据的频率,在不影响数据读写速度的情况下降低了对RAM的位宽要求,由此达到了提高RAM利用率的效果。
实施例二、如果FIFO宽度与双端口RAM一样,通过本发明所述的方法还可以将RAM空间分为多份,给多个FIFO使用,生成多个FIFO,以此克服前述的一块RAM块只能分配给一个模块使用的缺陷。如附图3所示,首先将RAM时钟与FIFO的时钟分离,设置RAM的写时钟和读时钟,其频率为FIFO时钟频率的n倍,修改时钟后,RAM带宽为FIFO带宽的n倍。此外还需修改该FIFO内部的各个逻辑模块,将双端口RAM分为n份(每份可以大小不同),分别为“RAM1”、“RAM2”......“RAMn”,将外部FIFO接口扩展为n个,分别为“FIFO1”、“FIFO2”、......“FIFOn”、每个FIFO使用其对应的一份RAM。写操作时,n个FIFO在一个外部FIFO时钟周期同时写入数据,但是在内部,实际是使用了n个RAM时钟周期,在每一个RAM时钟周期针对每个FIFO依次写入数据,第一个RAM时钟周期将“FIFO1”的数据写入,第二个RAM时钟周期将“FIFO2”的数据写入,......第n个RAM时钟周期将“FIFOn”数据写入,如此类推,在一个完整的FIFO时钟周期内将数据全部写入所有的FIFO。同理,读操作也是一样。这样,达到了n个FIFO同时使用一个RAM的目的,同样提高了RAM利用率。假如n为2,则一块RAM就可以生成两个FIFO。例如:一个4096位的RAM块就可以生成2个宽度为16位,深度为64的FIFO。此时,RAM块的利用率为100%。而传统方法只能生成一个FIFO,RAM块的利用率为50%。
实施例三、前面所述的两种方法中,第一种方法是一个FIFO占用RAM的所有时间片(n个RAM时钟周期),第二种方法是一个FIFO占用RAM的一个时间片(1个RAM时钟周期)。其实,两种方法也可以结合使用,可以将内部RAM时钟频率提高为外部FIFO时钟频率的n倍,然后将RAM分成m份对应外部的m个FIFO,(m小于等于n),将RAM时间片(时钟周期)合理分配给每个FIFO,就可以满足宽度、深度各异的FIFO的需要。例如:m=3、n=4,则可以生成3个FIFO,其中一个占用2个时间片,数据宽度为RAM的两倍。另外2个各占一个时间片,数据宽度与RAM一样。同理如m=2、n=4,则可以生成2个FIFO,每个FIFO占用2个时间片,数据宽度都为RAM的两倍。

Claims (4)

1.一种提高RAM利用效率的方法,其特征在于,该方法包括以下步骤:
a、将所述的RAM写数据的时钟频率设置为外部写数据的时钟频率的整数倍n,将所述的RAM读数据的时钟频率设置为外部读数据的时钟频率的整数倍n;
b、写数据时,将一个外部写数据的时钟周期所写入的数据分成n份在n个RAM时钟周期内依次写入所述的RAM,读数据时,依次在n个RAM时钟周期内从所述的RAM中读出一个外部时钟周期内应读取的数据。
2.根据权利要求1所述的方法,其特征在于,所述的整数倍n是根据所述的外部读、写数据的位宽与RAM的位宽的比值确定的。
3.一种提高RAM利用效率的方法,其特征在于,该方法包括以下步骤:
a、将所述的RAM写数据的时钟频率设置为外部写数据的时钟频率的整数倍n,将所述的RAM读数据的时钟频率设置为外部读数据的时钟频率的整数倍n,同时将RAM分成整数份m;
b、写数据时,将一个外部写数据的时钟周期所写入的数据分成n份在n个RAM时钟周期内依次写入所述的分成m份的RAM,读数据时,依次在n个RAM时钟周期内从所述的分成m份的RAM中读出一个外部时钟周期内应读取的数据。
4.根据权利要求3所述的方法,其特征在于,所述的整数倍m根据共用同一个所述RAM的功能模块的个数确定并且小于或者等于n。
CNB2006100333861A 2006-01-24 2006-01-24 一种提高ram利用效率的方法 Active CN100385387C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100333861A CN100385387C (zh) 2006-01-24 2006-01-24 一种提高ram利用效率的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100333861A CN100385387C (zh) 2006-01-24 2006-01-24 一种提高ram利用效率的方法

Publications (2)

Publication Number Publication Date
CN1858695A CN1858695A (zh) 2006-11-08
CN100385387C true CN100385387C (zh) 2008-04-30

Family

ID=37297605

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100333861A Active CN100385387C (zh) 2006-01-24 2006-01-24 一种提高ram利用效率的方法

Country Status (1)

Country Link
CN (1) CN100385387C (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977327A (zh) * 2017-11-24 2018-05-01 中国航空工业集团公司西安航空计算技术研究所 一种fpga中使用双端口ram实现多端口存储单元的电路
CN109542799B (zh) * 2018-11-05 2023-03-28 西安智多晶微电子有限公司 块存储器拼接方法、拼接模块、存储装置及现场可编程门阵列
CN113076061A (zh) * 2021-03-18 2021-07-06 四川和芯微电子股份有限公司 单ram多模块数据的缓存方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1540494A (zh) * 2003-04-26 2004-10-27 华为技术有限公司 基于fifo队列的数据包线速处理方法及其装置
US20050160215A1 (en) * 2004-01-20 2005-07-21 International Business Machines Corporation Flow through asynchronous elastic FIFO apparatus and method for implementing multi-engine parsing and authentication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1540494A (zh) * 2003-04-26 2004-10-27 华为技术有限公司 基于fifo队列的数据包线速处理方法及其装置
US20050160215A1 (en) * 2004-01-20 2005-07-21 International Business Machines Corporation Flow through asynchronous elastic FIFO apparatus and method for implementing multi-engine parsing and authentication

Also Published As

Publication number Publication date
CN1858695A (zh) 2006-11-08

Similar Documents

Publication Publication Date Title
CN101231877B (zh) 存取n端口存储器m个存储器地址的方法及n端口存储器
CA2391213C (en) Simultaneous addressing using single-port rams
CN102208005A (zh) 一种2-d卷积器
CN103279309A (zh) 基于fpga的ddr控制装置及方法
CN101236774B (zh) 单端口存储器实现多端口存储功能的装置和方法
CN104407809A (zh) 多通道fifo缓冲器及其控制方法
CN100385387C (zh) 一种提高ram利用效率的方法
CN102520902B (zh) 基于单片块ram的并行写入多fifo实现方法
CN106250321B (zh) 2r1w存储器的数据处理方法及数据处理系统
CN102004626B (zh) 双口存储器
CN102541769B (zh) 一种存储器接口访问控制方法及装置
CN105577985A (zh) 一种数字图像处理系统
US6259652B1 (en) Synchronous integrated memory
CN100568382C (zh) 先进先出存储器
CN103365791B (zh) 一种nand闪存
CN102169425B (zh) 一种具有四种工作模式的fifo缓存电路
CN101876960B (zh) 一种apb总线系统及一种芯片
US5479128A (en) Single ram multiple-delay variable delay circuit
CN101377952B (zh) 一种sram中数据的读写方法及装置
US6324122B1 (en) RAM synchronized with a signal
CN102118304B (zh) 一种信元交换方法和装置
CN102760487A (zh) 一种高性能静态随机存储器内部最优分级的方法及其架构
CN101165805A (zh) 多端口存储器存取控制模块
Zhang et al. Asynchronous FIFO implementation using FPGA
US6085280A (en) Parallel-access memory and method

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