一种基于FPGA双口RAM实现的高速数据速率匹配方法
技术领域
本发明属于数字信号处理技术领域,尤其涉及的是一种基于FPGA双口RAM实现的高速数据速率匹配方法。
背景技术
目前在高速采样系统的应用情况中,FPGA作为高速采样数据处理的中心,承载着很重要的工作任务。在很多多数据速率处理情况下,由于采样速率与存储速率、传输速率不匹配,采样数据宽度与存储数据宽度、传输数据位宽不匹配,使得数据处理分析的各个流程不能很好地协调工作。所以,在FPGA中对不同速率数据的匹配设计是使各个数据处理环节协调工作的关键环节。通常通过单个FPGA片载RAM进行数据间断式的等待存储和读取的方式存在等待时间长、处理速率慢等缺点,而通过多个FPGA片载RAM进行数据轮循存储和读取的方式存在FPGA资源开销大、时序逻辑复杂、速率并未大幅提高等缺点。本设计采用FPGA双口RAM进行高速数据速率匹配设计,通过不同速率输入输出追逐存储和读取的思路,使得数据转换处理效率最大化,资源占用率小,数据处理速率大幅提高。该速率匹配设计方法可应用于FPGA中存储缓冲转换、数据接口传输、数据转换外传等多种情况。
通常情况下,可以通过单个FPGA片载RAM进行数据速率的匹配设计,但FPGA片载RAM通常为单端口资源,及该RAM的数据总线既当输入总线使用,又当输出总线使用,同一时间只能存在一种工作模式,当进行写入时就无法进行读取操作,当进行读取时就不能进行写入操作。因此,使用该RAM资源进行数据速率匹配设计时,读写存在很大的等待时间周期,必须以间断式等待工作的方式进行存储和读取工作流程,数据速率转换较慢。
也可以通过多个FPGA片载RAM进行数据轮循存储和读取的方式来匹配数据速率,同样的,对于多个RAM中的一个,只有其进行完写操作之后,读取操作才可以进行。通过不同RAM交替读写的方式在一定程度上可以提高数据速率转换的效率,但该方法由于使用多个RAM资源,存在FPGA资源开销大、时序逻辑复杂等缺点。
因此,现有技术存在缺陷,需要改进。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种基于FPGA双口RAM实现的高速数据速率匹配方法。
本发明的技术方案如下:
步骤1:设置FPGA双口RAM的两路分别独立操作RAM空间的A路总线与B路总线,所述A路总线以速率S1进行数据的不间断写入;进入步骤2;
步骤2:所述A路总线的地址递增1后进入步骤3,同时,判断所述A路总线的地址是否等于最大寻址深度L,是则所述A路总线的地址归零后返回步骤1,否则返回步骤1;
步骤3:判断所述A路总线的地址是否大于等于安全追逐间隔N,是则进入步骤4,否则返回步骤1;
步骤4:判断所述B路总线的地址是否已经启动读取操作,是则返回步骤1,否则进入步骤5;
步骤5:将所述B路总线的地址归零后进入步骤6;
步骤6:设置所述B路总线以速率S2进行数据的不间断读取,进入步骤7;
步骤7:所述B路总线的地址递增1,判断所述B路总线的地址是否等于最大寻址深度L,是则进入步骤8;否则返回步骤6;
步骤8:判断所述A路总线的地址是否大于等于安全追逐间隔N,是则返回步骤5,否则暂停所述B路总线读取操作,返回步骤3。
所述的高速速率匹配方法,其中,所述步骤1中的设置所述A路总线进行数据写操作,设置所述B路总线进行数据读操作。
所述的高速速率匹配方法,其中,所述步骤1中的设置所述A路总线数据宽度与所述B路总线数据宽度相同。
所述的高速速率匹配方法,其中,所述步骤1中的设置所述A路总线数据速率S1小于所述B路总线数据速率S2。
所述的高速速率匹配方法,其中,所述步骤2中的所述最大寻址深度L为FPGA双口RAM在特定容量及特定总线宽度下,确定得到的最大存储深度。
所述的高速速率匹配方法,其中,所述步骤3中的安全追逐间隔N的公式为:来确定,其中N表示为除法结果向上取整。
本发明方法是使用FPGA双口RAM进行速率匹配的设计,双口RAM具备两套独立的数据、地址、控制总线,可分别独立的对双口RAM资源进行读写操作,所以在匹配速率的应用中,其一个总线端口可专供进行写操作,另一个总线端口可专供进行读取操作,两者对同一块RAM资源的操作可同时进行而互不干涉。所以相比于单端口RAM资源来说,可节省大量的读写等待时间。本发明方法再通过双端口RAM资源的深度、数据写入速率、数据读取速率等关系,通过追逐竞技的思想,使得双口RAM在进行读写时转换速率达到最大化,工作效率得以大幅提升。
附图说明
图1为本发明方法的流程图。
具体实施方式
以下结合附图和具体实施例,对本发明进行详细说明。
实施例1
如图1所示,本发明一种基于FPGA双口RAM实现的高速数据速率匹配方法,其特征在于,包括以下步骤:
步骤1:设置FPGA双口RAM的两路分别独立操作RAM空间的A路总线与B路总线,所述A路总线以速率S1进行数据的不间断写入;进入步骤2;
步骤2:所述A路总线的地址递增1后进入步骤3,同时,判断所述A路总线的地址是否等于最大寻址深度L,是则所述A路总线的地址归零后返回步骤1,否则返回步骤1;这里是要都返回步骤1,这个支路在返回步骤1时判断是否到了寻址最大处,是则地址归零重新开始,否则继续进行存储,实现A路的不间断写入工作;
步骤3:判断所述A路总线的地址是否大于等于安全追逐间隔N,是则进入步骤4,否则返回步骤1;
步骤4:判断所述B路总线的地址是否已经启动读取操作,是则返回步骤1,否则进入步骤5;
步骤5:将所述B路总线的地址归零后进入步骤6;
步骤6:设置所述B路总线以速率S2进行数据的不间断读取,进入步骤7;
步骤7:所述B路总线的地址递增1,判断所述B路总线的地址是否等于最大寻址深度L,是则进入步骤8;否则返回步骤6;
步骤8:判断所述A路总线的地址是否大于等于安全追逐间隔N,是则返回步骤5,否则暂停所述B路总线读取操作,返回步骤3。此处暂停B路总线读取操作是为了避免在下一轮的读写操作中B路读操作赶上A路写操作,并不是最终目的,暂停后会返回到步骤3,等待在下一轮过程中依据步骤3的条件重新开启B路数据的读操作。
上述方法中,所述步骤1中的设置所述A路总线进行数据写操作,设置所述B路总线进行数据读操作。
上述方法中,所述步骤1中的设置所述A路总线数据宽度与所述B路总线数据宽度相同。
上述方法中,所述步骤1中的设置所述A路总线数据速率S1小于所述B路总线数据速率S2。
上述方法中,所述步骤2中的所述最大寻址深度L为FPGA双口RAM在特定容量及特定总线宽度下,确定得到的最大存储深度。
上述方法中,所述步骤3中的安全追逐间隔N的公式为:来确定,其中N表示为除法结果向上取整。
实施例2
在上述实施例的基础上,本发明进一步以XILINX公司FPGA系列的18kb双端口RAMRAMB18或36kb双端口RAM RAMB36为FPGA硬件基础进行设计,通过不同速率数据追逐竞技的思想设计算法进行高速数据不同速率间的快速匹配转换,使得双口RAM使用效率大幅提高,数据速率转换效率大幅提高。
18kb双端口RAM标称RAMB18,其可配置为1,2,4,8,16位宽数据宽度,分别对应于可实现最大16k,8k,4k,2k,1k的存储深度。36kb双端口RAM标称RAMB36,其可配置为1,2,4,8,16,32位宽数据宽度,分别对应于可实现最大32k,16k,8k,4k,2k,1k的存储深度。同时每个字节及每8位数据对应1位奇偶数据位,该位也可作为普通数据位使用,进行数据位的扩展位使用。双口RAM具备两组可独立操作的数据总线、地址总线、控制总线,每组总线都可独立的对同一块RAM资源进行读写操作,这是本发明方法使用其来设计数据速率匹配的主要原因,两组总线相互独立进行读写操作,可节省大量的单总线读写等待时间。
本发明方法中,使用双口RAM的一路总线来专门进行数据写操作,如拟定使用A路进行写操作;使用双口RAM的另一路总线来专门进行数据读操作,如拟定使用B路进行读操作。使用两路数据来进行不同数据率数据的读写匹配设计,为使得数据速率转换效率最大化是本发明方法的关键部分,在本发明方法中,参考追逐竞技的思想来解决上述问题,即在数据写入双口RAM后,读取数据永远追赶着写数据操作进行,因为数据只有被写入后才能进行读取,才能进行数据率的转换,所以本发明算法的应用有两个限定条件,如下所示:
一是:双口RAM写入数据的数据宽度和读取数据的数据宽度一样。
二是:双口RAM写入数据的数据速率低于读取数据的数据速率。
在以上限定条件下,以RAMB3632位宽,即1k存储深度,写入数据速率为90MHz,读取速率为100MHz为例进行本发明方法的讲解,然后进行通用方法的推导说明。
在最大存储深度1k的情况下,及双口RAM可最大存储1024次32位的输入操作。此时如果从开始写入数据后,读取操作追赶着写数据进行,在两者之间最大保持怎样的数据间隔才会使得读写操作同时进行时确保读操作在整个1k寻址读取的过程中都赶不上写操作。即在A路数据从开始写入多少个数据后,B路数据从开始读取在整个寻址空间都不会赶上A路数据。首先,计算100MHz速率读取1k数据需用时10ns×1024=10240ns;90MHz速率写入1k数据需用时约11.11ns×1024=11377.78ns;即读完全部数据比写完全部数据快11377.78-10240=1137.78ns,该时差可写入1137.78÷11.11=102.41个数,及在双口RAM A路从开始写入103数后再从开始于B路不间断的进行读取操作,直到读写完整个RAM寻址空间,B路读取操作始终处于A路后面。
当B路数据读到最后地址时,如果此时A路在下一轮的写操作中,写入数据的个数小于103时,此时需暂停B路数据的读取操作,等到A路数据写入大于等于103时,再开启B路数据的读取操作;当B路数据读取最后地址时,如果此时A路在下一轮的写操作中,写入数据的个数大于等于103时,此时B路数据的读取操作可继续重头进行,不需要暂停。依此往复的进行,即可最大化的匹配90MHz输入数据与100MHz读取数据的协调工作。
对于多级级联的双口RAM的应用可以使数据宽度和存储深度进行扩展,如RAM资源可无限量的不受限制,则本发明方法则不受存储深度和数据宽度的限制。
通过以上特例的说明,进行通用方法的推导进一步说明。首先,在以上两个限定条件下,假设双口RAM A路数据写入的速率为S1,B路数据读取的速率为S2,这里依限定条件需满足S1〈S2;假设双口RAM的存储深度为L。则计算可得均从开始读写,在A路写入多少个数N时,开始B路的读取在整个寻址范围内B路数据都赶不上A路数据,有以下公式:
N表示除法结果向上取整。
双口RAM的A路作为写入专用总线,B路作为读取专用总线使用。首先,依据限定条件和写入速率S1、读取速率S2、存储深度L,进行计算确定安全追逐间隔数N的大小。A路以S1速率从开始进行数据的不间断循环写入操作,即当A路写入到地址空间的最后时,再返回地址空间的开始处重新开始写入。当A路写入次数大于等于N后启动B路数据的读取工作。B路以S2速率从地址空间的开始处不间断的读取RAM中的数据,直到地址空间的最后,此时判断此刻A路数据领先B路数据的多少,当A路数据在新一轮写入的次数大于等于N时,说明此时B路继续读取也在安全追逐范围内,在整个地址寻址空间都不会追上A路数据操作,此时B路可继续从地址空间开始处重新开始读取操作。如此刻A路数据在新一轮写入的次数小于N,则说明如果此时B路继续进行重新读取工作将会在后续读取过程中超过A路写入操作,发生错误,所以此时B路应该暂停读取,等到A路写入的次数大于等于N后,即在安全追逐范围内后,再启动B路数据的重新读取操作。依此往复进行,即可最大化的匹配S1速率与S2速率数据之间的数据率转换问题。
相比于使用单端口RAM的设计方案,使用双口RAM的方案在一个寻址空间过程就比单口RAM方案的快(L-N)×S1的时间,大大提高了数据速率的转换效率。同样的,本发明方法相比于多个单口RAM轮循的方法,不但转换效率较高,FPGA资源开销也少很多,同时FPGA时序复杂度也小很多。
基于FPGA双口RAM实现的高速数据速率匹配方法,采用FPGA做数据速率匹配实现,以高速A/D采样输出的高速数据与后端存储部分及传输部分的速率匹配应用为背景,成功解决了FPGA中高速数据不同速率间的快速匹配转换问题,大幅提高了速率转换匹配的效率,同时在FPGA资源使用和逻辑复杂度等方面相对其他方式有很大优势。本发明方法采用FPGA双口RAM资源进行不同数据速率的匹配设计,充分利用了双口RAM的特性和工作方式,解决了其他方法所需的读写不能同时进行的长时间等待问题,使得数据速率转换效率提升得以突破。同时在读写算法上采用追逐竞技的思想,使得数据速率转换效率最大化,大大提高了FPGA信号处理的工作效率。同时相对其他方法也节省了FPGA资源开销,简化了FPGA时序逻辑的复杂度。由于双口RAM的可级联性,使得本发明方法在寻址深度和接口宽度方面具备灵活的可扩展性。本发明方法在FPGA高速信号处理领域有很高的推广应用价值。
本发明方法是使用FPGA双口RAM进行速率匹配的设计,双口RAM具备两套独立的数据、地址、控制总线,可分别独立的对双口RAM资源进行读写操作,所以在匹配速率的应用中,其一个总线端口可专供进行写操作,另一个总线端口可专供进行读取操作,两者对同一块RAM资源的操作可同时进行而互不干涉。所以相比于单端口RAM资源来说,可节省大量的读写等待时间。本发明方法再通过双端口RAM资源的深度、数据写入速率、数据读取速率等关系,通过追逐竞技的思想,使得双口RAM在进行读写时转换速率达到最大化,工作效率得以大幅提升。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。