一种基于fifo实现循环移位寄存器的系统及方法
【技术领域】
[0001]本发明涉及现场可编程逻辑阵列FPGA(Field Programmable Gate Array)硬件设计领域,尤其涉及FPGA中循环移位寄存器的实现方法,具体涉及一种基于FIFO实现循环移位寄存器的系统及方法。
【背景技术】
[0002]在高动态接收机的捕获算法中往往需要进行大量的高速相关运算,因此为了解决大量的高速相关运算的问题需要采用大量的相关器及存储器。由于现有的普通存储器需要大量的外部读写地址线,控制逻辑复杂,这对于提高相关运算的效率问题非常不利。此外采用大量的存储器和相关器必然导致资源的浪费以及计算速率的显著降低。
【发明内容】
[0003]本发明所要解决的技术问题是利用基于FIFO的循环移位寄存器,以实现时分复用相关器的方法。
[0004]为了实现上述技术目的,本发明提供一种基于FIFO实现循环移位寄存器的系统,所述系统包含:若干串联的FIFO核及若干相关器,且每个FIFO核与一个相关器相连;
[0005]所述每个FIFO核是一个深度为2"的先入先出缓存器;用于实现数据的循环移位,循环移位后的数据输出给所述相关器,实现相关器的循环移位;
[0006]串联的FIFO核的前一个FIFO核中O地址的数据输出给下一个FIFO核,实现FIFO核的串联。
[0007]可选的,每个FIFO核包含的FIFO同步工作。
[0008]每个FIFO核以时分复用的方式共用一个相关器。当相关运算频率f I为124MHz且输入数据的频率f2为15.5MHz时,则串联的FIFO核的数量为32,相关运算器的数量为32个。且当相关运算频率f I为124MHz时一个相关运算器时分复用8次。
[0009]此外,本发明还提供了一种基于FIFO实现循环移位寄存器的方法,所述方法为:
[0010]首先将FPGA中的32个同步FIFO核在f I时钟下对输入数据进行循环移位,然后将32个FIFO核的输出数据分别作为32个相关器的输入数据进行相关运算,同时将每个FIFO核的输出数据输入至与各FIFO核串联的下一个FIFO核中;其中,fl为相关运算频率,f2为输入数据频率。
[0011]可选的,每个FIFO核的深度为8且宽度为6bit。
[0012]与现有技术相比,本发明的技术优势在于:
[0013]本发明采用相关器的时分复用技术,不仅节约了 FPGA资源而且而且提高了整体运算速率;本发明在实现相关运算时采用FIFO核中的循环移位寄存器有效克服了采用普通存储器控制复杂的问题,且将循环移位寄存器与一个相关器相连最终实现了相关器的时分复用,进而有效节约了 FPGA的资源。
【附图说明】
[0014]图1是FIFO基本工作原理图;
[0015]图2是本发明基于FIFO实现循环移位寄存器整体方案结构图;
[0016]图3是本发明实施例采用FIFO实现循环移位寄存器过程框图。
【具体实施方式】
[0017]下面结合附图对技术方案进行详细阐述。
[0018]本发明提供了一种采用基于FIFO的循环移位寄存器,以实现时分复用相关器的方法,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
[0019]图1描述了 FIFO的基本工作原理。FIFO是一种先进先出的数据缓存器。它与普通存储器的区别是没有外部读写地址线,控制逻辑简单。缺点是只能顺序读写数据,其数据地址由内部读写指针自动加I完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。FIFO的主要参数是它的宽度和深度。FIFO的宽度指的是FIFO —次读写操作的数据的位数;深度指的是FIFO可以存储的数据的最大个数。
[0020]根据FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟。在时钟沿来临时同时发生读写操作。异步FIFO是指读写时钟不一致,读写时钟是互相独立的。在本方法中采用的是同步FIFO。
[0021]实施例
[0022]以下以相关运算频率法f I为124MHz,输入数据频率f2为15.5MHz,且FIFO核的深度为8时为例进行技术方案的详细阐述。
[0023]本实施例需要256个相关器在124MHz时钟下做256次相关运算。输入数据频率为15.5MHz,因此在124MHz时钟下可以使用32个相关器时分复用8次以实现256次相关。FPGA中的32个同步FIFO核在124MHz时钟下对输入数据进行循环移位,每一个FIFO的输出数据作为32个相关器的输入数据进行相关运算。
[0024]32个FIFO模块以串联模式工作。每个FIFO的深度为8,宽度为6bit。输入数据在15.5MHz时钟下写入至FIFO,每124MHz时钟FIFO内部数据进行一次移位,同时将FIFO内最先进入FIFO的数据输出给累加器ADD做相关运算。一个ADD模块在124MHz时钟下时分复用8次,相当于8个相关器。在下一个15.5MHz时钟时,将此FIFO第一次输出给ADD模块的数据同时输出给下一个FIFO模块。每个FIFO的工作模式一致。
[0025]整体方案结构如图2所示,图2中的相关器O至相关器7实质上是通过时分复用相关器达到的效果(即通过8次时分复用相关器类似存在8个相关器),而不是实际存在这八个相关器。FIF0_0和FIF0_1分别为前后两个串联的FIFO模块。输入数据在15.5MHz时钟下写入至FIF0_0,在下一个15.5MHz时钟时,将当前O位置上第一次输出给ADD模块的数据同时输出给下一个FIFO模块Fifo_l。一个FIFO模块在124MHz时钟下连续输出8个数据,该8个数据依次在124MHz时钟下ADD相关模块中作相关运算,每个相关结果均打8拍等待下一个数据的到来。结合图3进行说明,最右一列的数据为FIFO的输出数据。第一时段最右一列的数据1,2,3,4,5,6,7,8依次作相关运算,其中数据“ I”的相关结果打八拍等待第二时段最右一列第一行数据“2”再作累加相关,数据“2”的相关结果打八拍等待第二时段最右一列第二行数据“3”再作累加相关,依次类推。
[0026]FIFO实现循环移位寄存器过程如图3所示。假设依次输入的数据为
I, 2,3,4, 5,6, 7,8,9, 10..........FIFO 在 124MHz 时钟下工作。一个时段指 8 拍 124MHz
时钟即一个15.5MHz输入数据时钟,每一个时段输入一个新数据。从第I个时段可看出,当向FIFO写了七个数据后,读出一个数据,按照FIFO先进先出的原则,读出的是第一个写进去的数据“I”(如第一时段第I行所示);下一个124MHz时钟将第八个数据“8”(在此称为新进数)写入FIFO,同时读出第二个写进去的数据“2” (如第一时段第2行所示);在第一时段内由于除了第一个写入的数据“I”外,其他的数据均要被后面的时段采用,所以在读出数据“2”后,下一个时钟再将其回写入FIFO,同时读出第三个写进去的数据“3” (如第一时段第3行所示);同理下一个时钟将数据“3”回写入FIFO,读出第四个写进去的数据“4”,依次类推。
[0027]第一时段第I行读取的数据“I”和第二时段第I行读取的数据“2”依次输入到下一个FIFO中。两个相邻FIFO之间同一级数据应该相差8个124M时钟,即当第i个FIFO写入第9个数据的同时,写入第i个FIFO的第一个数据写入第i+Ι个FIFO ;也可以理解为同一个数据写入前后两个FIFO的时间上相差8个124M时钟。
[0028]而从图3可以看出,第一个时段中当写入第八个数据“8”的同时已经将写入第一个数据“ I”读出了,所以为了满足上述的时序关系,将读出的数据“ I”在124M时钟下打8拍再送入下一个FIFO;同理第二时段第一行读出的数据“2”也在124M时钟下打8拍再送入下一个FIFO。将320个FIFO按照上述时序关系串联起来就实现了 2560级循环移位寄存器。
[0029]以上所述仅为本发明的一个【具体实施方式】,并非用于限定本发明的保护范围,本领域的技术人员应当理解,在不脱离发明原理的前提下,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的保护范围中。
【主权项】
1.一种基于FIFO实现循环移位寄存器的系统,其特征在于,所述系统包含:若干串联的FIFO核及若干相关器,且每个FIFO核与一个相关器相连; 所述每个FIFO核是一个深度为2n的先入先出缓存器,用于实现数据的循环移位,循环移位后的数据输出给所述相关器,进而实现相关器的相关运算; 其中,串联的FIFO核的前一个FIFO核中O地址的数据输出给下一个FIFO核,实现FIFO核的串联。
2.根据权利要求1所述的基于FIFO实现循环移位寄存器的系统,其特征在于,每个FIFO核包含的FIFO同步工作。
3.根据权利要求1所述的基于FIFO实现循环移位寄存器的系统,其特征在于,每个FIFO核以时分复用的方式共用一个相关器。
4.根据权利要求1或3所述的基于FIFO实现循环移位寄存器的系统,其特征在于,当相关运算频率fl为124MHz且输入数据的频率f2为15.5MHz时,则串联的FIFO核的数量为32,相关器的数量为32个。
5.根据权利要求4所述的基于FIFO实现循环移位寄存器的系统,其特征在于,当相关运算频率Π为124MHz时一个相关运算器时分复用8次。
6.一种基于FIFO实现循环移位寄存器的方法,所述方法为: 首先将FPGA中的32个同步FIFO核在fl时钟下对输入数据进行循环移位,然后将32个FIFO核的输出数据分别作为32个相关器的输入数据进行相关运算,同时将每个FIFO核的输出数据输入至与各FIFO核串联的下一个FIFO核中; 其中,Π为相关运算频率,f2为输入数据频率。
7.根据权利要求6所述的基于FIFO实现循环移位寄存器的方法,其特征在于,每个FIFO核的深度为8且宽度为6bit。
【专利摘要】本发明公开了一种基于FIFO实现循环移位寄存器的系统及方法,所述系统包含:若干串联的FIFO核,及与每个FIFO核相连的相关器;所述每个FIFO核是一个深度为2n的先入先出缓存器;用于实现数据的循环移位,循环移位后的数据输出给所述相关器,实现相关器的循环移位;串联的FIFO核的前一个FIFO核中0地址的数据输出给下一个FIFO核,实现FIFO核的串联。每个FIFO核包含的FIFO同步工作。每个FIFO核以时分复用的方式共用一个相关器。
【IPC分类】H04B1-16, G05B19-042
【公开号】CN104597805
【申请号】CN201410748909
【发明人】欧春湘
【申请人】北京临近空间飞艇技术开发有限公司
【公开日】2015年5月6日
【申请日】2014年12月9日