CN1253894C - 使用一个双端口随机存储器实现两个先进先出队列的方法 - Google Patents
使用一个双端口随机存储器实现两个先进先出队列的方法 Download PDFInfo
- Publication number
- CN1253894C CN1253894C CN 02100753 CN02100753A CN1253894C CN 1253894 C CN1253894 C CN 1253894C CN 02100753 CN02100753 CN 02100753 CN 02100753 A CN02100753 A CN 02100753A CN 1253894 C CN1253894 C CN 1253894C
- Authority
- CN
- China
- Prior art keywords
- address pointer
- port
- fifo queue
- port ram
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Static Random-Access Memory (AREA)
Abstract
本发明公开了一种使用双端口随机存储器实现两个先进先出队列的方法,该方法使两个先进先出(FIFO)队列分别同时占用双端口随机存储器(RAM)的一个端口或分时占用双端口RAM的二个端口,其中一个FIFO队列占用双端口RAM的低端空间,另一个占用双端口RAM的高端空间,通过地址切换逻辑完成读地址指针和写地址指针的切换,采用上述方案,使用一个双端口RAM即可实现两个FIFO队列,这样可以充分利用双端口RAM中的块存储器资源,提高块存储器资源的利用率,因此能够减少可编程逻辑设计中需要的块存储器的数量,降低设计成本并简化设计,使得有可能只用较小规模的可编程逻辑器件就可以实现以前需要较大规模的可编程逻辑器件才能实现的设计。
Description
技术领域
本发明涉及先进先出队列(FIFO)的可编程逻辑设计方法,具体地说涉及使用一个双端口随机存储器实现两个先进先出队列的方法。
背景技术
FIFO队列在可编程逻辑器件设计中被广泛应用,它在组成上通常分为两部分,双端口随机存储器(DPRAM)和控制逻辑。双端口RAM通常用可编程逻辑器件内部的块存储器(Block Memory)构成,现有的使用可编程逻辑器件进行FIFO的设计方法通常都是每个FIFO单独占用一个双端口RAM,将双端口RAM的其中一个端口作为写入端口,连接输入数据信号和写地址指针,另一个端口作为读出端口,连接输出数据信号和读地址指针。按照上述方案使用一个双端口随机存储器实现FIFO队列,块存储器只能整块地使用,如果FIFO队列容量比较小,只需要使用一个块存储器中的部分资源,则该块存储器中未被使用的资源实际上将被浪费掉。这样,在一个具体的设计中,可能出现块存储器的资源不够用而该设计中使用的FIFO容量又比较小的情况,导致该设计既浪费块存储器的资源,又增加了设计难度。
发明内容
本发明的目的在于提供一种使用一个双端口随机存储器实现两个先进先出队列的方法,使用该方法块存储器资源的利用率较高,能够减少可编程逻辑设计中需要的块存储器的数量,降低设计成本并简化设计。
为达到上述目的,本发明公开了一种使用一个双端口随机存储器实现两个先进先出队列的方法,使两个先进先出队列分别同时占用双端口随机存储器的一个端口,其中一个先进先出队列占用双端口随机存储器的低端空间,另一个占用双端口随机存储器的高端空间,两个先进先出队列各使用一个地址切换逻辑,第一地址切换逻辑连接第一个先进先出队列的写控制信号,以在第一个先进先出队列的读地址指针和写地址指针之间切换,第二地址切换逻辑连接第二个先进先出队列的写控制信号,以在第二个先进先出队列的读地址指针和写地址指针之间切换;一个先进先出队列从双端口随机存储器的第一个端口写入,并从第一个端口读出;另一个先进先出队列从双端口随机存储器的第二个端口写入,并从第二个端口读出。
第一个先进先出队列的写地址指针和读地址指针与第一先进先出队列的标志控制逻辑连接,第二个先进先出队列的写地址指针和读地址指针与第二先进先出队列的标志控制逻辑连接。
一种使用一个双端口随机存储器实现两个先进先出队列的方法,使两个先进先出队列分别分时占用双端口随机存储器的二个端口,其中一个先进先出队列占用双端口随机存储器的低端空间,另一个占用双端口随机存储器的高端空间,两个先进先出队列各使用一个地址切换逻辑,第一地址切换逻辑连接第一个先进先出队列的写控制信号,以在第一个先进先出队列的写地址指针和第二个先进先出队列的读地址指针之间切换,第二地址切换逻辑连接第二个先进先出队列的写控制信号,以在第二个先进先出队列的写地址指针和第一个先进先出队列的读地址指针之间切换;;一个先进先出队列从双端口随机存储器的第一个端口写入,从第二个端口读出;另一个先进先出队列从双端口随机存储器的第二个端口写入,从第一个端口读出。
地址切换逻辑在第一个先进先出队列的读地址指针和第二个先进先出队列的写地址指针之间切换及第一个先进先出队列的写地址指针和第二个先进先出队列的读地址指针之间切换。
第一个先进先出队列的写地址指针和读地址指针与第一队列的标志控制逻辑连接,第二个先进先出队列的写地址指针和读地址指针与第二队列的标志控制逻辑连接。
本发明采用使两个FIFO队列分别同时或分时占用双端口RAM的一个或二个端口,其中一个FIFO队列占用双端口RAM的低端空间,另一个占用双端口RAM的高端空间,通过切换逻辑完成读地址指针和写地址指针的切换的方法,使得使用一个双端口RAM即可实现两个FIFO队列,由于本发明充分利用了双端口RAM中的块存储器资源,提高了块存储器资源的利用率,能够减少可编程逻辑设计中需要的块存储器的数量,降低设计成本并简化设计,因此采用本发明的方法有可能只用较小规模的可编程逻辑器件就可以实现以前需要较大规模的可编程逻辑器件才能实现的设计。
附图说明
图1是现有方法使用一个双端口随机存储器实现FIFO队列的逻辑图;
图2是本发明第一个方案提供的实施例逻辑图;
图3是本发明第二个方案提供的实施例逻辑图;
图4是图2和图3中采用的地址切换逻辑图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细的描述。
采用现有方法实现的独立式FIFO的逻辑图参考图1。图中使用的可编程逻辑器件的块存储器的容量为4KBits,图中所示的FIFO队列(该队列名称为FBQ)将双端口RAM的其中一个端口作为写入端口,连接输入数据信号FBQ_D、写控制信号FBQ_WEN和写地址指针,另一个端口作为读出端口,连接输出数据信号FBQ_Q和读地址指针,由于读、写地址指针分别占用8位地址线ADDRA和ADDRB,其存储容量为256×8Bits共2KBits(1K=1024),这样,FIFO队列FBQ单独占用一个双端口RAM,双端口RAM用可编程逻辑器件器件DPRAM内部的块存储器产生,由于块存储器只能整块地使用,不能分成2个独立的存储器,因此图中的FIFO队列FBQ需要独立占用整块存储器,这样导致了块存储器中有一半的存储空间被浪费了。
采用本发明所述的方法,能够根据具体应用情况的不同,使用一个双端口RAM实现2个FIFO队列。
本发明提供的使用一个双端口随机存储器实现两个先进先出队列的方法有两套实现方案,第一套方案为:使两个先进先出(FIFO)队列分别同时占用双端口随机存储器(RAM)的一个端口,一个FIFO队列从双端口RAM的第一个端口写入,并从第一个端口读出;另一个FIFO队列从双端口RAM的第二个端口写入,并从第二个端口读出,其中一个FIFO队列占用RAM的低端空间,另一个占用RAM的高端空间,通过切换逻辑完成读地址指针和写地址指针的切换,所述地址切换逻辑在同一个FIFO队列的读地址指针和写地址指针之间切换。该方案的特点是同一个FIFO队列不能同时进行读写操作,但两个FIFO之间的操作完全独立。
图2是本发明第一个方案提供的实施例逻辑图。图中描述了一个具有2个FIFO队列的装置,该装置包括一个双端口随机存储器1、第一个FIFO队列FBQ的写地址指针2和读地址指针3、第二个FIFO队列PIQ的写地址指针6和读地址指针7;图中,两个FIFO队列FBQ和PIQ分别同时占用双端口RAM的一个端口,即端口A和端口B,FBQ队列从双端口RAM的第一个端口,即端口A写入,并从该端口读出;另一个FIFO队列PIQ从双端口RAM的第二个端口,即端口B写入,并从该端口读出,上述FBQ队列占用双端口RAM的低端空间,PIQ队列占用RAM的高端空间,当然也可以FBQ队列占用双端口RAM的高端空间,PIQ队列占用RAM的低端空间,上述2个队列通过切换逻辑完成读地址指针和写地址指针的切换,即地址切换逻辑4在FBQ队列的读地址指针3和写地址指针2之间切换,地址切换逻辑8在PIQ队列的读地址指针7和写地址指针6之间切换。可见图2中的同一个FIFO队列不能同时进行读写操作,但两个FIFO之间的操作完全独立。
图2中,DPRAM管脚DIA、WEA、ADDRA、DOA分别为第一个端口的数据输入管脚、写控制信号管脚、地址线管脚和数据输出管脚,上述管脚分别用于连接第一个队列FBQ的输入数据FBQ_D、写控制信号FBQ_WEN、地址切换逻辑4和数据输出FBQ_Q,写地址指针2还连接时钟线CLK和写控制信号FBQ_WEM,读地址指针3连接时钟线CLK和读控制信号FBQ_REN;写控制信号FBQ_WEN同时还连接地址切换逻辑4以对地址切换逻辑4进行读地址指针、写地址指针之间的切换控制,地址切换逻辑4还与写地址指针2和读地址指针3连接;管脚DIB、WEB、ADDRB、DOB分别为第二个端口的数据输入管脚、写控制信号管脚、地址线管脚和数据输出管脚,上述管脚分别用于连接第二个队列PIQ的输入数据PIQ_D、写控制信号PIQ_WEN、地址切换逻辑8和数据输出PIQ_Q,写地址指针6还连接时钟线CLK和写控制信号PIQ_WEN,读地址指针7还连接时钟线CLK和读控制信号PIQ_REN;写控制信号PIQ_WEM同时还连接地址切换逻辑8以对地址切换逻辑8进行读、写指针切换控制,地址切换逻辑8还与写地址指针6和读地址指针7连接。
图2中的两个FIFO队列FBQ的写地址指针2和读地址指针3和PIQ的写地址指针6和读地址指针7分别与各自队列的标志控制逻辑5、9连接,以在实际应用中通过标志控制逻辑5、9的队列满标志FBQ_FF、PIQ_FF和队列空标志FBQ_EF、PIQ_EF获取上述2个队列的状态,从而对该2个队列进行控制。
本发明的第二套方案为:使两个先进先出(FIFO)队列分别分时占用双端口随机存储器(RAM)的二个端口,一个FIFO队列从双端口RAM的第一个端口写入,从第二个端口读出;另一个FIFO队列从双端口RAM的第二个端口写入,从第一个端口读出,其中一个FIFO队列占用RAM的低端空间,另一个占用RAM的高端空间,通过切换逻辑完成读地址指针和写地址指针的切换,所述地址切换逻辑在第一个FIFO队列的读地址指针和第二个FIFO队列的写地址指针之间切换及第一个FIFO队列的写地址指针和第二个FIFO队列的读地址指针之间切换。其特点是同一个FIFO队列可以同时进行读写操作,但在写其中一个FIFO队列时不能读另一个FIFO队列。
图3是本发明第二个方案提供的实施例逻辑图。图中也描述了一个具有2个FIFO队列的装置,该装置包括一个双端口随机存储器10(DPRAM)、第一个FIFO队列FBQ的写地址指针20和读地址指针30、第二个FIFO队列PIQ的写地址指针60和读地址指针70;图中,两个FIFO队列FBQ和PIQ分别分时占用双端口RAM的二个端口,即端口A和端口B,FBQ队列从双端口RAM的第一个端口,即端口A写入,并从第二个端口,即端口B读出;另一个FIFO队列PIQ从双端口RAM的第二个端口,即端口B写入,并从第一RAM的一个端口,即端口A和端口B,FBQ队列从双端口RAM的第一个端口,即端口A写入,并从该端口读出;另一个FIFO队列P10从双端口RAM的第二个端口,即端口B写入,并从该端口读出,上述FBQ队列占用双端口RAM的低端空间,PIQ队列占用RAM的高端空间,当然也可以FBQ队列占用双端口RAM的高端空间,PIQ队列占用RAM的低端空间,上述2个队列通过切换逻辑完成读地址指针和写地址指针的切换,即地址切换逻辑4在FBQ队列的读地址指针3和写地址指针2之间切换,地址切换逻辑8在PIQ队列的读地址指针7和写地址指针6之间切换。可见图2中的同一个FIFO队列不能同时进行读写操作,但两个FIFO之间的操作完全独立。
图2中,DPRAM管脚DIA、WEA、ADDRA、DOA分别为第一个端口的数据输入管脚、写控制信号管脚、地址线管脚和数据输出管脚,上述管脚分别用于连接第一个队列FBO的输入数据FBQ_D、写控制信号FBO_WEN、地址切换逻辑4和数据输出FBO_Q,写地址指针2还连接时钟线CLK和写控制信号FBQ_WEN,读地址指针3连接时钟线CLK和读控制信号FBQ-REN;写控制信号FBQ_wEN同时还连接地址切换逻辑4以对地址切换逻辑4进行读地址指针、写地址指针之间的切换控制,地址切换逻辑4还与写地址指针2和读地址指针3连接;管脚D1B、WEB、ADDRB、DOB分别为第二个端口的数据输入管脚、写控制信号管脚、地址线管脚和数据输出管脚,上述管脚分别用于连接第二个队列PlQ的输入数据PlQ_D、写控制信号PlO-WEN、地址切换逻辑8和数据输出PlQ-Q,写地址指针6还连接时钟线CLK和写控制信号PlQ_wEN,读地址指针7还连接时钟线CLK和读控制信号PlQ-REN;写控制信60进行切换控制,因此地址切换逻辑80还与队列PIQ的写地址指针60和队列FBQ的读地址指针30连接;
图3中的两个FIFO队列FBQ的写地址指针20和读地址指针30和PIQ队列的写地址指针60和读地址指针70分别与各自队列的标志控制逻辑50、90连接,以在实际应用中通过标志控制逻辑50、90的队列满标志FBQ_FF、PIQ_FF和队列空标志FBQ_EF、PIQ_EF获取上述2个队列的状态,从而对该2个队列进行控制。
图4是图2和图3中采用的地址切换逻辑图,Addr_W为该模块输入的写地址信号,Addr_R为该模块输入的读地址信号,Addr_O为该模块输出的地址信号,WEN为地址切换模块的切换控制信号。当WEN有效(假设为1)时,地址切换模块的输出地址Addr_O等于输入的写地址Addr_W,当WEN无效(假设为0)时,地址切换模块的输出地址Addr_O等于输入的读地址Addr_R。
在以上两种设计方案中,通过控制两个FIFO的读地址指针和写地址指针的计数值范围可以实现对双端口RAM存储空间的任意分配,即只要合并的两个FIFO容量之和不大于一个块存储器的存储容量,两个FIFO的容量大小可以任意分配。
需要指出,如果使用一个双端口RAM实现多个FIFO队列,只要该多个FIFO队列的总的容量之和不超过块存储器的容量,在本发明的基础上,使地址切换逻辑在多个队列之间的读、写地址指针之间切换即可实现。
Claims (5)
1、一种使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于:使两个先进先出队列分别同时占用双端口随机存储器的一个端口,其中一个先进先出队列占用双端口随机存储器的低端空间,另一个占用双端口随机存储器的高端空间,两个先进先出队列各使用一个地址切换逻辑,第一地址切换逻辑连接第一个先进先出队列的写控制信号,以在第一个先进先出队列的读地址指针和写地址指针之间切换,第二地址切换逻辑连接第二个先进先出队列的写控制信号,以在第二个先进先出队列的读地址指针和写地址指针之间切换;一个先进先出队列从双端口随机存储器的第一个端口写入,并从第一个端口读出;另一个先进先出队列从双端口随机存储器的第二个端口写入,并从第二个端口读出。
2、如权利要求1所述的使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于,第一个先进先出队列的写地址指针和读地址指针与第一先进先出队列的标志控制逻辑连接,第二个先进先出队列的写地址指针和读地址指针与第二先进先出队列的标志控制逻辑连接。
3、一种使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于:使两个先进先出队列分别分时占用双端口随机存储器的二个端口,其中一个先进先出队列占用双端口随机存储器的低端空间,另一个占用双端口随机存储器的高端空间,两个先进先出队列各使用一个地址切换逻辑,第一地址切换逻辑连接第一个先进先出队列的写控制信号,以在第一个先进先出队列的写地址指针和第二个先进先出队列的读地址指针之间切换,第二地址切换逻辑连接第二个先进先出队列的写控制信号,以在第二个先进先出队列的写地址指针和第一个先进先出队列的读地址指针之间切换;;一个先进先出队列从双端口随机存储器的第一个端口写入,从第二个端口读出;另一个先进先出队列从双端口随机存储器的第二个端口写入,从第一个端口读出。
4、如权利要求3所述的使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于,地址切换逻辑在第一个先进先出队列的读地址指针和第二个先进先出队列的写地址指针之间切换及第一个先进先出队列的写地址指针和第二个先进先出队列的读地址指针之间切换。
5、如权利要求4所述的使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于,第一个先进先出队列的写地址指针和读地址指针与第一队列的标志控制逻辑连接,第二个先进先出队列的写地址指针和读地址指针与第二队列的标志控制逻辑连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02100753 CN1253894C (zh) | 2002-01-23 | 2002-01-23 | 使用一个双端口随机存储器实现两个先进先出队列的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02100753 CN1253894C (zh) | 2002-01-23 | 2002-01-23 | 使用一个双端口随机存储器实现两个先进先出队列的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1434453A CN1434453A (zh) | 2003-08-06 |
CN1253894C true CN1253894C (zh) | 2006-04-26 |
Family
ID=27627238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02100753 Expired - Fee Related CN1253894C (zh) | 2002-01-23 | 2002-01-23 | 使用一个双端口随机存储器实现两个先进先出队列的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1253894C (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100382553C (zh) * | 2004-01-18 | 2008-04-16 | 华为技术有限公司 | 一种采用主备页面实现lcas协议无损切换的方法 |
CN100403749C (zh) * | 2004-01-18 | 2008-07-16 | 华为技术有限公司 | 一种实现lcas协议无损切换的方法 |
CN100424663C (zh) * | 2004-02-10 | 2008-10-08 | 中国科学院计算技术研究所 | 用双端口随机存取存储器实现异步fifo数据传输的方法 |
US7570705B2 (en) * | 2005-02-16 | 2009-08-04 | Samsung Electronics Co., Ltd. | GMSK modulation using a dual-port memory |
CN100395680C (zh) * | 2005-05-26 | 2008-06-18 | 华为技术有限公司 | 一种异步时钟域参数的配置方法及装置 |
CN115017063B (zh) * | 2022-08-08 | 2022-11-08 | 北京紫光芯能科技有限公司 | 一种先进先出的数据缓存器及数据缓存系统 |
CN115604198B (zh) * | 2022-11-29 | 2023-03-10 | 珠海星云智联科技有限公司 | 一种网卡控制器、网卡控制方法、设备及介质 |
-
2002
- 2002-01-23 CN CN 02100753 patent/CN1253894C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1434453A (zh) | 2003-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2126915B1 (en) | Memory system and method with serial and parallel modes | |
AU721764B2 (en) | High performance universal multi-port internally cached dynamic random access memory system, architecture and method | |
US6405273B1 (en) | Data processing device with memory coupling unit | |
CN1253894C (zh) | 使用一个双端口随机存储器实现两个先进先出队列的方法 | |
CN101401166A (zh) | 具有多个地址、数据及命令总线的存储器装置及方法 | |
WO1995028677A1 (en) | Efficient addressing of large memories | |
US20090187701A1 (en) | Nand flash memory access with relaxed timing constraints | |
CN1524215A (zh) | 先进先出存储系统及其方法 | |
EP1811370A2 (en) | A first-in first-out (FIFO) memory architecture providing multiport functionality | |
US7136309B2 (en) | FIFO with multiple data inputs and method thereof | |
CN1967713A (zh) | 大容量高速缓冲存储器 | |
CN105930287B (zh) | 一种单片机超大数据外存扩展系统及其控制方法 | |
CN101813971B (zh) | 处理器及其内置存储器 | |
CN1858695A (zh) | 一种提高ram利用效率的方法 | |
CN103594110A (zh) | 替代双端口静态存储器的存储器结构 | |
EP0617530A1 (en) | Interconnection memory comprising an array of dual-port FIFO memories | |
CN211698930U (zh) | 一种嵌入式数据存储设备 | |
CN1434454A (zh) | 多计数器的构造方法、多计数器及使用其的多队列装置 | |
CN1251241C (zh) | 半导体存储器 | |
CN1859079A (zh) | 一种数字时分交换系统 | |
CN1851633A (zh) | 一种动态自管理缓冲区 | |
CN101055756A (zh) | 一种存储器控制器及其相关方法 | |
CN101604294A (zh) | 存储器控制装置和信息处理设备 | |
CN100464413C (zh) | 实现芯片管脚功能互换的电路及芯片 | |
CN1178398C (zh) | 在维特比译码器中生存路径的存储器管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060426 Termination date: 20170123 |