使用一个双端口随机存储器实现两个先进先出队列的方法

文档序号:6758879阅读:215来源:国知局
专利名称:使用一个双端口随机存储器实现两个先进先出队列的方法
技术领域
本发明涉及先进先出队列(FIFO)的可编程逻辑设计方法,具体地说涉及使用一个双端口随机存储器实现两个先进先出队列的方法。
本发明的目的在于提供一种使用一个双端口随机存储器实现两个先进先出队列的方法,使用该方法块存储器资源的利用率较高,能够减少可编程逻辑设计中需要的块存储器的数量,降低设计成本并简化设计。
为达到上述目的,本发明提供的使用一个双端口随机存储器实现两个先进先出队列的方法使两个先进先出(FIFO)队列分别同时占用双端口随机存储器(RAM)的一个端口,其中一个FIFO队列占用双端口RAM的低端空间,另一个占用双端口RAM的高端空间,通过切换逻辑完成读地址指针和写地址指针的切换。
上述两个FIFO队列,一个FIFO队列从双端口RAM的第一个端口写入,并从第一个端口读出;另一个FIFO队列从双端口RAM的第二个端口写入,并从第二个端口读出。
所述地址切换逻辑在同一个FIFO队列的读地址指针和写地址指针之间切换。
本发明提供的使用一个双端口随机存储器实现两个先进先出队列的方法还可以是使两个先进先出(FIFO)队列分别分时占用双端口随机存储器(RAM)的二个端口,其中一个FIFO队列占用双端口RAM的低端空间,另一个占用双端口RAM的高端空间,通过切换逻辑完成读地址指针和写地址指针的切换。
上述两个FIFO队列,一个FIFO队列从双端口RAM的第一个端口写入,从第二个端口读出;另一个FIFO队列从双端口RAM的第二个端口写入,从第一个端口读出。
所述地址切换逻辑在第一个FIFO队列的读地址指针和第二个FIFO队列的写地址指针之间切换及第一个FIFO队列的写地址指针和第二个FIFO队列的读地址指针之间切换。
本发明采用使两个FIFO队列分别同时或分时占用双端口RAM的一个或二个端口,其中一个FIFO队列占用双端口RAM的低端空间,另一个占用双端口RAM的高端空间,通过切换逻辑完成读地址指针和写地址指针的切换的方法,使得使用一个双端口RAM即可实现两个FIFO队列,由于本发明充分利用了双端口RAM中的块存储器资源,提高了块存储器资源的利用率,能够减少可编程逻辑设计中需要的块存储器的数量,降低设计成本并简化设计,因此采用本发明的方法有可能只用较小规模的可编程逻辑器件就可以实现以前需要较大规模的可编程逻辑器件才能实现的设计。
采用现有方法实现的独立式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_WEN,读地址指针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_WEN同时还连接地址切换逻辑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写入,并从第一个端口,即端口A读出,上述FBQ队列占用双端口RAM的低端空间,PIQ队列占用RAM的高端空间,当然也可以FBQ队列占用双端口RAM的高端空间,PIQ队列占用RAM的低端空间,上述2个队列通过切换逻辑完成读地址指针和写地址指针的切换,即地址切换逻辑40在FBQ队列的写地址指针20和PIQ队列的读地址指针70之间切换,地址切换逻辑80在PIQ队列的写地址指针60和FBQ队列的读地址指针30之间切换。
图3中,DPRAM管脚DIA、WEA、ADDRA、DOA分别为第一个端口的数据输入管脚、写控制信号管脚、地址线管脚和数据输出管脚,上述管脚分别用于连接第一个队列FBQ的输入数据FBQ_D、写控制信号FBQ_WEN、地址切换逻辑40和第二个队列的数据输出PIQ_Q,写地址指针20还连接时钟线CLK和第一个队列的写控制信号FBQ_WEN,读地址指针30连接时钟线CLK和第一个队列的读控制信号FBQ_REN;写控制信号FBQ_WEN同时还连接地址切换逻辑40以对地址切换逻辑40进行两个队列的读地址指针20、写地址指针80之间的切换控制,因此地址切换逻辑40还与FBQ队列的写地址指针20和PIQ队列的读地址指针70连接;管脚DIB、WEB、ADDRB、DOB分别为第二个端口的数据输入管脚、写控制信号管脚、地址线管脚和数据输出管脚,上述管脚分别用于连接第二个队列PIQ的输入数据PIQ_D、写控制信号PIQ_WEN、地址切换逻辑80和第一个队列FBQ的数据输出FBQ_Q,写地址指针60还连接时钟线CLK和第二个队列的写控制信号PIQ_WEN,读地址指针70还连接时钟线CLK和第二个队列的读控制信号PIQ_REN;写控制信号PIQ_WEN同时还连接地址切换逻辑80以对地址切换逻辑80进行队列FBQ读地址指针30和队列PIQ写地址指针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队列的总的容量之和不超过块存储器的容量,在本发明的基础上,使地址切换逻辑在多个队列之间的读、写地址指针之间切换即可实现。
权利要求
1.一种使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于使两个先进先出(FIFO)队列分别同时占用双端口随机存储器(RAM)的一个端口,其中一个FIFO队列占用双端口RAM的低端空间,另一个占用双端口RAM的高端空间,通过切换逻辑完成读地址指针和写地址指针的切换。
2.根据权利要求1所述的使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于一个FIFO队列从双端口RAM的第一个端口写入,并从第一个端口读出;另一个FIFO队列从双端口RAM的第二个端口写入,并从第二个端口读出。
3.根据权利要求1或2所述的使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于所述地址切换逻辑在同一个FIFO队列的读地址指针和写地址指针之间切换。
4.一种使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于使两个先进先出(FIFO)队列分别分时占用双端口随机存储器(RAM)的二个端口,其中一个FIFO队列占用双端口RAM的低端空间,另一个占用双端口RAM的高端空间,通过切换逻辑完成读地址指针和写地址指针的切换。
5.根据权利要求4所述的使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于一个FIFO队列从双端口RAM的第一个端口写入,从第二个端口读出;另一个FIFO队列从双端口RAM的第二个端口写入,从第一个端口读出。
6.根据权利要求4或5所述的使用一个双端口随机存储器实现两个先进先出队列的方法,其特征在于所述地址切换逻辑在第一个FIFO队列的读地址指针和第二个FIFO队列的写地址指针之间切换及第一个FIFO队列的写地址指针和第二个FIFO队列的读地址指针之间切换。
全文摘要
本发明公开了一种使用一个双端口RAM实现两个FIFO列的方法,该方法使两个FIFO队列分别同时占用双端口RAM的一个端口或分时占用双端口RAM的二个端口,其中一个FIFO队列占用双端口RAM的低端空间,另一个占用双端口RAM的高端空间,通过切换逻辑完成读地址指针和写地址指针的切换,采用上述方案,使用一个双端口RAM即可实现两个FIFO队列,这样可以充分利用双端口RAM中的块存储器资源,提高块存储器资源的利用率,因此能够减少可编程逻辑设计中需要的块存储器的数量,降低设计成本并简化设计,使得有可能只用较小规模的可编程逻辑器件就可以实现以前需要较大规模的可编程逻辑器件才能实现的设计。
文档编号G11C16/00GK1434453SQ0210075
公开日2003年8月6日 申请日期2002年1月23日 优先权日2002年1月23日
发明者雷春, 涂君 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1