基于单片块ram的并行写入多fifo实现方法

文档序号:6437561阅读:474来源:国知局
专利名称:基于单片块ram的并行写入多fifo实现方法
技术领域
本发明属于信息技术应用领域。具体是涉及一种采用单片块RAM实现多个要求并行写入和随机顺序读出的FIFO的实现方法,为低成本FPGA的应用提供一种解决方案。
背景技术
随着大规模可编程技术的发展,FPGA的应用在电子设计中应用越来越广泛。FPGA 主要由输入输出控制块、可编程逻辑块、可编程连线、嵌入式存储块(块RAM)等部分组成, 其中块RAM是非常宝贵的片上资源,应用灵活、功能强大,可定制实现RAM、ROM、CAM、DPRAM、 FIFO等各种存储结构。其中,FIFO应用尤其广泛,在数据缓存、异步时钟域数据传输几乎不可或缺。对于低端FPGA芯片,块RAM的数量非常有限,若采用ip核向导来定制FIFO,每个块RAM只能实现一个FIFO。单片块RAM的容量一般比较大,如altera的为9Kbit,xilinx 的达18Kbit,在一般设计现实中,作为数据缓存的FIFO往往不需要这么大的容量,而一个块RAM例化一个FIFO后,剩余的存储空间不能再用于别的用途,白白浪费掉了,导致资源利用率低。特别是在FIFO数量需求较多、且每个FIFO的深度要求较小、但要求各FIFO能够在一定程度上并行写入时,FPGA设计经常出现总体存储容量充足,但存储器个数严重不足的问题。

发明内容
本发明的目的是提供了一种在一片块RAM中实现多个可并行写入和随机顺序读出的FIFO的方法,可充分利用现有的存储容量,大大提高存储器的利用率,显著降低产品成本,提升市场竞争力。本发明所要解决的技术问题在于用单片块RAM设计多个可并行写入和随机顺序读出的FIFO。本发明采用以下技术方案解决上述技术问题基于单片块RAM的并行写入多FIFO实现方法,该方法包括5个步骤(1)将块RAM例化成DPRAM用于存储各通道FIFO数据,每通道FIFO在DPRAM中都有对应的存储空间,各存储空间互不重叠;(2)写入控制逻辑能接受各通道FIFO并行数据写入要求,并将数据写入相应的相应输入缓冲区;(3)写入控制逻辑在输入缓冲区接到数据后,产生内部写命令,将各FIFO数据从输入缓冲区取出,依次写入各FIFO在DPRAM对应的存储空间;(4)在接到外部读出请求时,读出控制逻辑将根据要求,将数据从DPRAM对应的存储空间读出,并送往FIFO数据输出端口 ;(5)标记设置逻辑用于设置各通道FIFO的空(full)、满(empty)、可编程空 (prog_empty)和可编程满(prog_full)标志,以满足并行写入和随机顺序读出的访问需求。所述步骤(1)中,通过调用FPGA开发平台的IP核例化工具将块RAM用例化成DPRAM ;根据FIFO的通道数目在DPRAM中设置储存区,每通道FIFO在DPRAM中都有对应的存储空间,各存储空间互不重叠;DPRAM的高位地址用于选择各FIFO的存储空间,DPRAM的低位地址用于存储空间内部访问。所述步骤O)中,输入缓冲区与写入控制逻辑接收到FIFO并行数据写入请求信号Wr_en后1)检测到full信号为0且ready信号为1时,内部写控制将latch信号置1,将外部数据写入各通道FIFO相应输入缓冲区,输入缓冲区深度可根据并行要求设置;2)将表示接收数据准备就绪标记ready置为0,在缓冲区数据写入DPRAM之前不再接收新的数据。所述步骤(3)中,输入缓冲区写入控制逻辑在输入缓冲区接到数据后,控制控制逻辑产生内部写 DPRAM命令wr_en_inter,将各通道FIFO数据从相应输入缓冲区取出,依次写入各通道FIFO 在DPRAM对应的存储空间1)内部写控制将通道编号ch_c0de_w设为0,确定是选择将通道0的FIFO的数据从缓冲区写入DPRAM ;2)根据当前通道号ch_c0de_w,地址选择器选择的当前地址指针write_p为 write_p_0 ;3)根据当前通道号ch_c0de_w,数据选择器选择通道0的数据缓冲输出作为DPRAM 写入端数据输入; 4) ch_code_w与write_p_0组合,得到存储器的写入端访问地址wr_addr,其中ch_ code_w 为 wr_addr 高位,write_p_0 为低位;5)若full_0为0,则写入数据;6)写入数据后,write_p加1 ;7)以同样的步骤1)-步骤6)将其余各通道的FIFO的数据从缓冲区写入DPRAM8)接收数据准备就绪ready信号置为1。所述步骤(4)中,读出控制逻辑主要由读出通道编码,读出端地址指针选择,DPRAM读出端地址合成和读出端各通道地址生成组成,在接到外部任意通道的FIFO读出请求时,读出控制逻辑将根据要求,将数据从该通道FIFO对应的DPRAM存储空间读出,并送往FIFO数据输出端口 ;在接到0通道FIFO的读请求信号rd_en_0后1)对rd_en_0进行编码,作为当前通道编码即ch_c0de_r置为0,确定对通道0的 FIFO进行操作;2)根据当前通道编码ch_c0de_r,地址选择器选择的当前通道FIFO地址指针 read_p 为 read_p_0 ; 3)由ch_c0de_r与read_p组合,得到存储器的写入端访问地址rd_addr,其中ch_ code_r 为 rd_addr 1 ^立,read_p ^1 ^ ;4)若empty_0为0,则读出数据;5) read_p_0 力口 1 ;其余各通道按步骤1)-步骤幻读出。
所述步骤(5)中,标记设置逻辑用于设置各通道FIFO的空、满、可编程空和可编程满标志,以满足并行写入和随机顺序读出的访问需求,标记设置方法如下各标记信号设置如下1. full 写入端标记,full为0表示所有各通道都非满,只要任意通道为满,full 置1 ;2.其余为各通道相关标志信号;1) empty_0 写入地址指针write_p_0与读出地址read_p_0相等,或写入地址指针 write_p_0比读出地址指针read_p_0多1而正在读出时,设置empty_0为1,否则设置为0 ;2) full_0 当FIFO写入地址指针write_p_0与读出地址指针read_p_0只有最高位不相同,或读出地址指针read_p_0比写入指针write_p_0地址多1而正在写入时,设置 full_0为1,否则设置为0 ;3)prOg_full_0 当存入字数大于或等于预先设置的个数时,设置为1,否则设置为0;4)prog_empty_0 当FIFO中空间大于或等于预先设置的字数时,设置为1,否则设置为0;5)其余各通道标记位设置方法按步骤1)-步骤4)设置。本发明的优点在于提出了一种在一片块RAM中实现多个可并行写入和随机顺序读出的FIFO的方法,可充分利用现有的存储容量,大大提高存储器的利用率,显著降低产品成本,提升市场竞争力,对于FPGA设计开发有着重要意义。在低成本的FPGA应用项目中, 由于FPGA中的块RAM数量有限,本发明可在块RAM数量不足但总体容量充足的情况,用单片块RAM实现多个要求并行写入和随机顺序读出的FIFO,可以更充分利用系统资源,降低对芯片要求,从而可以降低产品成本。


图1是本发明的系统框图。图2是本发明的FIFO存储空间分配框图。图3是本发明的写入控制逻辑框图。图4是本发明的读出控制逻辑框图。图5是本发明的标记设置逻辑框图。
具体实施例方式下面参照附图结合实施例对本发明作进一步的描述。本发明提出一种采用单片块RAM实现多个要求并行写入和随机顺序读出的FIFO 的实现方法。在该方法中,首先利用FPGA开发平台的IP核例化工具将块RAM例化成DPRAM 用于存储各通道FIFO数据;写入控制逻辑能接受并行的各通道FIFO数据写入要求,写入控制逻辑在接到外部写信号后,将数据存入各通道FIFO相应的缓冲区,然后产生内部写命令,依次将各缓冲区的数据写入DPRAM对应的存储空间;在接到外部读出请求时,读出控制逻辑将根据要求,将数据从DPRAM对应的存储空间读出,并送往FIFO数据输出端口 ;标记设置逻辑用于设置各通道FIFO的空、满、可编程空和可编程满标志,以满足并行写入和随机顺序读出的访问需求。图1是本发明的系统框图,其中详细展示了基于单片块RAM的并行写入多FIFO实现方法的四个部分。第一个部分进行的是存储空间分配,将块RAM例化成DPRAM用于存储各通道FIFO 数据,每通道FIFO在DPRAM中都有对应的存储空间且互不重叠;第二部分是写入控制逻辑, 写入控制逻辑能接受并行的各通道FIFO数据写入要求,写入控制逻辑在接到外部写信号后,将数据存入各通道FIFO相应的缓冲区,然后产生内部写命令,依次将各缓冲区的数据写入DPRAM对应的存储空间;第三部分是读出控制逻辑,在接到外部读出请求时,读出控制逻辑根据要求选择通道,将数据从DPRAM对应的存储空间读出,并送往FIFO数据输出端口 ; 第四部分是标记设置逻辑,用于设置各通道FIFO的空、满、可编程空和可编程满标志,以满足并行写入和随机顺序读出的访问需求。图2是本发明的FIFO存储空间分配框图,即将块RAM例化成DPRAM用于存储各通道FIFO数据,每通道FIFO在DPRAM中都有对应的存储空间,如在图2中所示的FIF00空间、 FIF01空间、FIF02空间,……,各存储空间互不重叠。其中wr_addr和din为DPRAM的写入端信号,rd_addr和dout为DPRAM的读出端信号。本发明通过调用FPGA开发平台的IP核例化工具将块RAM用例化成DPRAM(例如用ip核生成工具,选项中指定使用Block RAM(块RAM),DPRAM的两个端口一端用于写入, 另一端用于读出);根据FIFO的通道数目在DPRAM中设置储存区,每通道FIFO在DPRAM中都有对应的存储空间,各存储空间互不重叠;DPRAM的高位地址(即通道号,其中写入端为 Ch_COde_W,读出端为ch_c0de_r)用于选择各FIFO的存储空间,低位地址(即相应读写地址指针)用于存储空间内部访问。图3是本发明的输入缓冲和写入控制逻辑框图。主要由各通道地址指针生成、内部写控制、DPRAM写入端地址合成、DPRAM写入端数据选择,写入数据缓冲等部分组成。输入缓冲和写入控制逻辑能接受各通道FIFO并行数据写入要求,并将数据写入各通道FIFO相应输入缓冲区;检测到输入缓冲区接到数据后,写入控制逻辑产生内部写命令,将各通道FIFO数据从输入缓冲区依次取出,并写入各通道FIFO在DPRAM对应的存储空间。信号说明ready 表示各通道FIFO的数据已经全部存入DPRAM,可以接收新的数据;full 表示所有各通道写入端状态,0表示所有FIFO都非满,可以并行写入;write_p_n 通道η的地址指针,最高位为循环写入的轮次计数用,在设置标记位时,需要最高位,当地址使用时,不需最高位;ch_code_w 当前 FIFO 通道号;write_p 当前FIFO写入端地址指针,根据通道编码从write_p_n中选择一个,但不需最高位;wr_addr DPRAM 写入端地址;wr_en 并行写入信号,外部输入;latch 锁存信号,将外部输入数据存入缓冲区;
wr_en_n 通道η的FIFO的写信号,用于控制η通道写地址指针增量;din_n 通道η的FIFO外部数据输入;wr_en_inter =DPRAM写入端写使能信号;wr_addr =DPRAM 写入端地址;din =DPRAM写入端数据输入;数据的并行写入分成两个步骤,第一步数据先存入数据缓冲区;第二步将数据从缓冲区读出,写入到DPRAM ;具体实现如下1.写入控制逻辑接收各通道FIFO并行数据写入信号Wr_en后1)检测到full信号为0且ready信号为1时,内部写控制将latch信号置1,将外部数据写入各通道FIFO相应输入缓冲区,缓冲区深度可根据并行要求设置;2)将表示接收数据准备就绪标记ready置为0,在缓冲区数据写入DPRAM之前不再接收新的数据。2.(详见本发明图幻输入缓冲区接到数据后,控制控制逻辑产生内部写DPRAM 命令wr_en_inter,将各通道FIFO数据从相应输入缓冲区取出,依次写入各通道FIFO在 DPRAM对应的存储空间。输入缓冲区接到数据后,写入DPRAM过程具体实现如下1)内部写控制将通道编号ch_c0de_w设为0,确定是选择将通道0的FIFO的数据从缓冲区写入DPRAM ;2)根据当前通道号ch_c0de_w,地址选择器选择的当前地址指针write_p为 write_p_0 ;3)根据当前通道号ch_c0de_w,数据选择器选择通道0的数据缓冲输出作为DPRAM 写入端数据输入; 4) ch_code_w与write_p_0组合,得到存储器的写入端访问地址wr_addr,其中ch_ code_w 为 wr_addr 高位,write_p_0 为低位;5)若full_0为0,则写入数据;6)写入数据后,fifoO写地址模块将write_p_0加1 ;7)以同样的步骤将其余各通道的FIFO的数据从缓冲区写入DPRAM8)接收数据准备就绪ready信号置为1 ;图4是本发明的读出控制逻辑框图。读出控制逻辑主要由读出通道编码,读出端地址指针选择,DPRAM读出端地址合成,读出端各通道地址生成等部分组成。主要任务是在接到外部任意通道的FIFO读出请求时,读出控制逻辑将根据要求,将数据从该通道FIFO对应的DPRAM存储空间读出,并送往FIFO数据输出端口 ;信号说明ch_code_r 读出端当前通道FIFO编码序号;read_p 读出端当前通道FIFO地址指针;read_p_n 读出端第η个通道FIFO地址指针,在设置标记位时,需要最高位,当地址使用时,不需最高位;rd_en_n 第η个通道FIFO的读请求信号,外部输入;dout_n 第η个通道FIFO的数据输出;rd_addr =DPRAM存储器的读出端地址;
以通道0的FIFO为例,读出控制逻辑工作过程如下在接到0通道FIFO的读请求信号rd_en_0后1)对rd_en_0进行编码,作为当前通道编码即ch_c0de_r置为0,确定对通道0的 FIFO进行操作;2)根据当前通道编码ch_c0de_r,地址选择器选择的当前通道FIFO地址指针 read_p 为 read_p_0 ;3)由ch_code_r与read_p组合,得到存储器的写入端访问地址rd_addr,其中ch_ code_r 为 rd_addr 1 ^立,read_p ^1 ^ ;4)若empty_0为0,则读出数据;5) fifoO读地址加模块将read_p_0加1 ;其余各通道读出步骤相同。图5是本发明的标记设置逻辑框图。标记设置逻辑利用fifo满空信号产生模块来设置各通道FIFO的空、满、可编程空和可编程满标志,以满足并行写入和随机顺序读出的访问需求,标记设置方法如下信号说明full 写入端端标记,full为0表示所有各通道都非满;empty_n 第η个通道空信号;prog_mepty_n 第η个通道可编程空信号;full_n 第η个通道满信号;prog_full_n 第η个通道可编程满信号;各标记信号设置如下1. full 写入端标记,full为0表示所有各通道都非满,只要任意通道为满,full 置1 ;2.其余为各通道相关标志信号,以0通道FIFO标记设置为例1) empty_0 写入地址指针write_p_0与读出地址read_p_0相等,或写入地址指针 write_p_0比读出地址指针read_p_0多1而正在读出时,设置empty_0为1,否则设置为0 ;2)full_0 当FIFO写入地址指针write_p_0与读出地址指针read_p_0只有最高位不相同,或读出地址指针read_p_0比写入指针write_p_0地址多1 (两指针最高位不参与比较,且最高位应该不同)而正在写入时,设置full_0为1,否则设置为0 ;
3)prOg_full_0当存入字数大于或等于预先设置的个数时,设置为1,否则设置
4)prog_empty_0当FIFO中空间大于或等于预先设置的字数时,设置为1,否则设
5)其余各通道标记位设置相同,即也按步骤1)-步骤4)。 为0; 置为0;
权利要求
1.基于单片块RAM的并行写入多FIFO实现方法,包括如下步骤(1)将块RAM例化成DPRAM用于存储各通道FIFO数据,每通道FIFO在DPRAM中都有对应的存储空间,各存储空间互不重叠;(2)输入缓冲区和写入控制逻辑能接受各通道FIFO并行数据写入请求,并将数据写入各通道FIFO相应输入缓冲区;(3)输入缓冲区和写入控制逻辑在输入缓冲区接到数据后,产生内部写命令,将各通道 FIFO数据从输入缓冲区取出,依次写入各通道FIFO在DPRAM对应的存储空间;(4)在接到外部任意通道FIFO读出请求时,读出控制逻辑将根据要求,将数据从该通道FIFO在DPRAM对应的存储空间读出,并送该FIFO数据输出端口 ;(5)标记设置逻辑用于设置各通道FIFO的空(full)、满(empty)、可编程空(prog_ empty)和可编程满(prog_full)标志,以满足并行写入和随机顺序读出的访问需求。
2.如权利要求1所述的基于单片块RAM的并行写入多FIFO实现方法,其特征在于所述步骤(1)中,通过调用FPGA开发平台的IP核例化工具将块RAM用例化成DPRAM ;根据FIFO的通道数目在DPRAM中设置储存区,每通道FIFO在DPRAM中都有对应的存储空间,各存储空间互不重叠;DPRAM的高位地址用于选择各FIFO的存储空间,DPRAM的低位地址用于存储空间内部访问。
3 如权利要求1所述的基于单片块RAM的并行写入多FIFO实现方法,其特征在于所述步骤O)中,输入缓冲区与写入控制逻辑接收到FIFO并行数据写入请求信号wr_en后1)检测到full信号为0且ready信号为1时,内部写控制将latch信号置1,将外部数据写入各通道FIFO相应输入缓冲区,输入缓冲区深度可根据并行要求设置;2)将表示接收数据准备就绪标记ready置为0,在缓冲区数据写入DPRAM之前不再接收新的数据。
4.如权利要求1所述的基于单片块RAM的并行写入多FIFO实现方法,其特征在于所述步骤(3)中,输入缓冲区写入控制逻辑在输入缓冲区接到数据后,控制控制逻辑产生内部写DPRAM 命令wr_en_inter,将各通道FIFO数据从相应输入缓冲区取出,依次写入各通道FIFO在 DPRAM对应的存储空间1)内部写控制将通道编号ch_c0de_w设为0,确定是选择将通道0的FIFO的数据从缓冲区写入DPRAM ;2)根据当前通道号ch_c0de_w,地址选择器选择的当前地址指针write_p为write_P_0 ;3)根据当前通道号ch_COde_W,数据选择器选择通道0的数据缓冲输出作为DPRAM写入端数据输入;4)ch_code_w与write_p_0组合,得到存储器的写入端访问地址wr_addr,其中ch_ code_w 为 wr_addr 高位,write_p_0 为低位;5)若full_0为0,则写入数据;6)写入数据后,write_pW1 ;7)以同样的步骤1)-步骤6)将其余各通道的FIFO的数据从缓冲区写入DPRAM8)接收数据准备就绪ready信号置为1。
5.如权利要求1所述的基于单片块RAM的并行写入多FIFO实现方法,其特征在于所述步骤(4)中,读出控制逻辑主要由读出通道编码,读出端地址指针选择,DPRAM读出端地址合成和读出端各通道地址生成组成,在接到外部任意通道的FIFO读出请求时,读出控制逻辑将根据要求,将数据从该通道FIFO对应的DPRAM存储空间读出,并送往FIFO数据输出端口 ;在接到0通道FIFO的读请求信号rd_en_0后1)对rd_en_0进行编码,作为当前通道编码即ch_c0de_r置为0,确定对通道0的FIFO 进行操作;2)根据当前通道编码ch_c0de_r,地址选择器选择的当前通道FIFO地址指针read_p 为 read_p_0 ;3)由ch_c0de_r与read_p组合,得到存储器的写入端访问地址rd_addr,其中ch_ code_r 为 rd_addr 1 ^立,read_p ^1 ^ ;4)若empty_0为0,则读出数据;5)read_p_0力口 1 ;其余各通道按步骤1)-步骤幻读出。
6.如权利要求1所述的基于单片块RAM的并行写入多FIFO实现方法,其特征在于所述步骤(5)中,标记设置逻辑用于设置各通道FIFO的空、满、可编程空和可编程满标志,以满足并行写入和随机顺序读出的访问需求,标记设置方法如下各标记信号设置如下.1.full写入端标记,full为0表示所有各通道都非满,只要任意通道为满,full置1 ;.2.其余为各通道相关标志信号;1)empty_0 写入地址指针write_p_0与读出地址read_p_0相等,或写入地址指针 write_p_0比读出地址指针read_p_0多1而正在读出时,设置empty_0为1,否则设置为0 ;2)full_0当FIFO写入地址指针write_p_0与读出地址指针read_p_0只有最高位不相同,或读出地址指针read_p_0比写入指针write_p_0地址多1而正在写入时,设置 full_0为1,否则设置为0 ;3)prog_full_0当存入字数大于或等于预先设置的个数时,设置为1,否则设置为0 ;4)prog_empty_0当FIFO中空间大于或等于预先设置的字数时,设置为1,否则设置为.0 ;5)其余各通道标记位设置方法按步骤1)-步骤4)设置。
全文摘要
本发明公开一种基于单片块RAM的并行写入多FIFO实现方法,其步骤为将块RAM例化成DPRAM用于存储各通道FIFO数据,每通道FIFO在DPRAM中有对应的存储空间;输入缓冲区和写入控制逻辑能接受各通道FIFO并行数据写入请求,并将数据写入各通道FIFO相应输入缓冲区;输入缓冲区和写入控制逻辑在输入缓冲区接到数据后产生内部写命令,将各通道FIFO数据从输入缓冲区取出,依次写入各通道FIFO的存储空间;在接到外部任意通道FIFO读出请求时,读出控制逻辑将根据要求,将数据从该通道FIFO的存储空间读出,并送该FIFO数据输出端口;标记设置逻辑用于设置各通道FIFO的空、满、可编程空和可编程满标志。本发明能实现多个要求并行写入和随机顺序读出的FIFO。
文档编号G06F5/06GK102520902SQ20111034643
公开日2012年6月27日 申请日期2011年11月1日 优先权日2011年11月1日
发明者姚进根, 杨伟艺, 邹复民, 陈建顺, 龚志鹏 申请人:福建富顺电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1