一种基于FIFO与随机存储器结合的模块间流控制通信方法技术

技术编号:21453841 阅读:29 留言:0更新日期:2019-06-26 04:45
本发明专利技术公开了一种基于FIFO与随机存储器结合的模块间流控制通信方法,属于电子技术领域,在FPGA中建立FIFO的输入模块、计算模块和FIFO的输出模块,FIFO的输入模块和FIFO的输出模块均包括FIFO数据缓存器,设定FIFO数据缓存器的深度为FIFO_Size、宽度为FIFO_Width,将FIFO数据缓存器分成N个块,FIFO数据缓存器的一次性读写数据的大小为一个块大小的数据,解决了以块为单位进行数据读写操作的技术问题,对数据进行缓存,解决模块间数据处理速度的差异;适合以块为单位进行操作的应用场景,FIFO支持按地址进行随机读写,满足多种读写需求。

【技术实现步骤摘要】
一种基于FIFO与随机存储器结合的模块间流控制通信方法
本专利技术属于电子
,特别涉及一种基于FIFO与随机存储器结合的模块间流控制通信方法。
技术介绍
在通信系统中,通常两个模块之间需要传输数据,若模块间的数据处理速度相同,则可以直接两模块间进行数据传输,但在FPGA的设计中,两模块间的执行速率通常不一致,需要对数据进行缓存,传统的通信系统中,使用RAM来进行数据缓存,但是RAM只能按位进行读写,当需要进行块读写时,RAM则表现的不够灵活。
技术实现思路
本专利技术的目的是提供一种基于FIFO与随机存储器结合的模块间流控制通信方法,解决了以块为单位进行数据读写操作的技术问题。为实现上述目的,本专利技术采用以下技术方案:一种基于FIFO与随机存储器结合的模块间流控制通信方法,包括以下步骤:步骤1:在FPGA中建立FIFO的输入模块、计算模块和FIFO的输出模块,FIFO的输入模块用于读取并存储输入数据,计算模块用于读取FIFO的输入模块存储的输入数据,并进行处理后输出到FIFO的输出模块,FIFO的输出模块用于存储并输出计算模块处理后的数据;步骤2:FIFO的输入模块和FIFO的输出模块均包括FIFO数据缓存器,设定FIFO数据缓存器的深度为FIFO_Size、宽度为FIFO_Width,将FIFO数据缓存器分成N个块,N为正整数,每一个块的存储大小均相同,设定每一个块的深度为BSize、宽度为BWidth,N=FIFO_Size÷BSize;FIFO数据缓存器的一次性读写数据的大小为BSize大小的数据;所述FIFO数据缓存器中每一个块的地址顺序编号为0,1,2...N-1;步骤3:在FPGA中检测FIFO数据缓存器的写使能信号:当写使能信号为1时,表示可以向FIFO数据缓存器中写入数据;设定FIFOBwInc为块写满标志位,当FIFO数据缓存器中的一个块被写满时,FIFOBwInc置位为1,此时FIFO数据缓存器继续将数据写入下一个块;设定FIFO_Full为缓冲器写满标志位,当整个FIFO数据缓存器均被写满时,FIFO_Full置位为1,此时不能对FIFO数据缓存器进行写操作;步骤4:在FPGA中检测FIFO数据缓存器的读使能信号:当读使能信号为1时,表示可以从FIFO数据缓存器中读出数据;设定FIFOBrInc为块读完标志位,当FIFO数据缓存器中的一个块被读完时,FIFOBrInc置位为1,此时FIFO数据缓存器继续读取下一个块的数据;设定FIFO_Empty为缓冲器读完标志位,当整个FIFO数据缓存器均被读完时,FIFO_Empty置位为1,此时不能对FIFO数据缓存器进行读操作。优选的,所述FIFO数据缓存器的写操作只能按照每一个块的地址顺序写入数据,当所有块按顺序写满时,若此时FIFO_Full信号不为1,则重新按照0,1,2...N-1的顺序向所述FIFO数据缓存器的中循环写入数据,设定WrPtr标志位指向当前写入块的首地址;所述FIFO数据缓存器的读操作只能按照每一个块的地址顺序读取数据,当所有块按顺序读完时,若此时FIFO_Empty信号不为1,则重新按照0,1,2...N-1的顺序对所述FIFO数据缓存器的中循环读出数据,设定Rd_Ptr标志位指向当前读取块的首地址。优选的,设定读操作的行地址为RdAddr,读取所述FIFO数据缓存器中一个块的数据时,按照RdAddr进行读取,当一行地址读完时,读取下一行地址的数据,直到一个块的数据完全读完;设定写操作的行地址为WrAddr,向所述FIFO数据缓存器的一个块写入数据时,按照WrAddr进行写入,一行地址被写满时,继续向下一行地址写入数据,直到一个块完全写满。优选的,当对所述FIFO数据缓存器同时进行读或写时,设定标志位FIFO_Level表示还剩多少块没读,所述FIFO数据缓存器为空时,不进行读操作,所述FIFO数据缓存器为满时不进行写操作,FIFO_Level的值说明如下:只写一个块数据不进行读操作,且FIFO_Level<N时,FIFO_Level加1;只读取一个块数据不进行写操作,且FIFO_Level>0,则FIFO_Level减1;同时对所述FIFO数据缓存器进行读写,且所述FIFO数据缓存器为空,则FIFO_Level值加1;同时对所述FIFO数据缓存器进行读写,且所述FIFO数据缓存器为满,则FIFO_Level值减1;同时对所述FIFO数据缓存器进行读写,且所述FIFO数据缓存器既不空也不满,则FIFO_Level值不变;当FIFO_Level值等于N,则FIFO_Full置1,表示当前所述FIFO数据缓存器为满状态;当FIFO_Level值等于0,则FIFO_Empty置1,表示当前所述FIFO数据缓存器为空。优选的,所述计算模块按绝对地址随机读取所述FIFO输入模块的数据,计算模块按绝对地址随机向所述FIFO的输出模块写入数据;所述FPGA按绝对地址随机向FIFO的输入模块写入数据,同样所述FPGA按绝对地址随机读取所述FIFO输出模块数据。本专利技术所述的一种基于FIFO与随机存储器结合的模块间流控制通信方法,解决了以块为单位进行数据读写操作的技术问题,本专利技术对数据进行缓存,解决模块间数据处理速度的差异;本专利技术对FIFO数据缓存器进行分块读写,特别适合以块为单位进行操作的应用场景,可以对FIFO数据缓存器进行随机读写,灵活性较高,满足多种FIFO数据缓存器读写需求;本专利技术循环利用FIFO数据缓存器,节省系统存储开销,对FIFO数据缓存器进行同步读写控制,支持同步读写。附图说明图1是本专利技术的FIFO通信框架图;图2是本专利技术的FIFO分块示意图;图3是本专利技术的FIFO结构图;图4是本专利技术的写操作流程图;图5是本专利技术的读操作流程图。具体实施方式如图1-图5所示的一种基于FIFO与随机存储器结合的模块间流控制通信方法,包括以下步骤:步骤1:在FPGA中建立FIFO的输入模块、计算模块和FIFO的输出模块,FIFO的输入模块用于读取并存储输入数据,计算模块用于读取FIFO的输入模块存储的输入数据,并进行处理后输出到FIFO的输出模块,FIFO的输出模块用于存储并输出计算模块处理后的数据;步骤2:FIFO的输入模块和FIFO的输出模块均包括FIFO数据缓存器,设定FIFO数据缓存器的深度为FIFO_Size、宽度为FIFO_Width,将FIFO数据缓存器分成N个块,N为正整数,每一个块的存储大小均相同,设定每一个块的深度为BSize、宽度为BWidth,N=FIFO_Size÷BSize;FIFO数据缓存器的一次性读写数据的大小为BSize大小的数据;所述FIFO数据缓存器中每一个块的地址顺序编号为0,1,2...N-1;步骤3:在FPGA中检测FIFO数据缓存器的写使能信号:当写使能信号为1时,表示可以向FIFO数据缓存器中写入数据;设定FIFOBwInc为块写满标志位,当FIFO数据缓存器中的一个块被写满时,FIFOBwInc置位为1,此时FIFO数据缓存器继续将数据写入下一个块;设定FIFO_Full为缓冲器写满标志位,当整个FIFO数据缓存器均被写满时,FIFO_Full置位为1,此时不能对FIF本文档来自技高网...

【技术保护点】
1.一种基于FIFO与随机存储器结合的模块间流控制通信方法,其特征在于:包括以下步骤:步骤1:在FPGA中建立FIFO的输入模块、计算模块和FIFO的输出模块,FIFO的输入模块用于读取并存储输入数据,计算模块用于读取FIFO的输入模块存储的输入数据,并进行处理后输出到FIFO的输出模块,FIFO的输出模块用于存储并输出计算模块处理后的数据;步骤2:FIFO的输入模块和FIFO的输出模块均包括FIFO数据缓存器,设定FIFO数据缓存器的深度为FIFO_Size、宽度为FIFO_Width,将FIFO数据缓存器分成N个块,N为正整数,每一个块的存储大小均相同,设定每一个块的深度为BSize、宽度为BWidth,N=FIFO_Size÷BSize;FIFO数据缓存器的一次性读写数据的大小为BSize大小的数据;所述FIFO数据缓存器中每一个块的地址顺序编号为0,1,2...N‑1;步骤3:在FPGA中检测FIFO数据缓存器的写使能信号:当写使能信号为1时,表示可以向FIFO数据缓存器中写入数据;设定FIFOBwInc为块写满标志位,当FIFO数据缓存器中的一个块被写满时,FIFOBwInc置位为1,此时FIFO数据缓存器继续将数据写入下一个块;设定FIFO_Full为缓冲器写满标志位,当整个FIFO数据缓存器均被写满时,FIFO_Full置位为1,此时不能对FIFO数据缓存器进行写操作;步骤4:在FPGA中检测FIFO数据缓存器的读使能信号:当读使能信号为1时,表示可以从FIFO数据缓存器中读出数据;设定FIFOBrInc为块读完标志位,当FIFO数据缓存器中的一个块被读完时,FIFOBrInc置位为1,此时FIFO数据缓存器继续读取下一个块的数据;设定FIFO_Empty为缓冲器读完标志位,当整个FIFO数据缓存器均被读完时,FIFO_Empty置位为1,此时不能对FIFO数据缓存器进行读操作。...

【技术特征摘要】
1.一种基于FIFO与随机存储器结合的模块间流控制通信方法,其特征在于:包括以下步骤:步骤1:在FPGA中建立FIFO的输入模块、计算模块和FIFO的输出模块,FIFO的输入模块用于读取并存储输入数据,计算模块用于读取FIFO的输入模块存储的输入数据,并进行处理后输出到FIFO的输出模块,FIFO的输出模块用于存储并输出计算模块处理后的数据;步骤2:FIFO的输入模块和FIFO的输出模块均包括FIFO数据缓存器,设定FIFO数据缓存器的深度为FIFO_Size、宽度为FIFO_Width,将FIFO数据缓存器分成N个块,N为正整数,每一个块的存储大小均相同,设定每一个块的深度为BSize、宽度为BWidth,N=FIFO_Size÷BSize;FIFO数据缓存器的一次性读写数据的大小为BSize大小的数据;所述FIFO数据缓存器中每一个块的地址顺序编号为0,1,2...N-1;步骤3:在FPGA中检测FIFO数据缓存器的写使能信号:当写使能信号为1时,表示可以向FIFO数据缓存器中写入数据;设定FIFOBwInc为块写满标志位,当FIFO数据缓存器中的一个块被写满时,FIFOBwInc置位为1,此时FIFO数据缓存器继续将数据写入下一个块;设定FIFO_Full为缓冲器写满标志位,当整个FIFO数据缓存器均被写满时,FIFO_Full置位为1,此时不能对FIFO数据缓存器进行写操作;步骤4:在FPGA中检测FIFO数据缓存器的读使能信号:当读使能信号为1时,表示可以从FIFO数据缓存器中读出数据;设定FIFOBrInc为块读完标志位,当FIFO数据缓存器中的一个块被读完时,FIFOBrInc置位为1,此时FIFO数据缓存器继续读取下一个块的数据;设定FIFO_Empty为缓冲器读完标志位,当整个FIFO数据缓存器均被读完时,FIFO_Empty置位为1,此时不能对FIFO数据缓存器进行读操作。2.如权利要求1所述的一种基于FIFO与随机存储器结合的模块间流控制通信方法,其特征在于:所述FIFO数据缓存器的写操作只能按照每一个块的地址顺序写入数据,当所有块按顺序写满时,若此时FIFO_Full信号不为1,则重新按照0,1,2...N-1的顺序向所述FIFO数据缓存器的中循环写入数据,设定WrPtr标志位指向当前写入块的首地址;所述FIFO...

【专利技术属性】
技术研发人员:刘媛媛胡彦多
申请(专利权)人:南京威翔科技有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1