摘 要: 为了完成高频率下相关器的时分复用,相关器的低频输入数据须通过循环移位寄存器移位。提出了在FPGA中采用多级串联FIFO核实现循环移位寄存器。对上述方案进行FPGA仿真实验,经实测表明基于FIFO的循环移位寄存器工作稳定,能够实时地提供准确数据给时分复用相关器模块。
关键词: FIFO; 移位寄存器; FPGA; 相关器
中图分类号: TN915.04-34 文献标识码: A 文章编号: 1004-373X(2014)19-0060-03
Implementation of circulating shift-register based on FIFO
OU Chun-xiang1, YANG Jia-wei2, REN Xiao-song1
(1. Information Technology Academy of China Aerospace Science & Industry Corporation, Beijing 100071, China;
2. Defense Technology Academy of China Aerospace Science & Industry Corporation, Beijing 100854, China )
Abstract: Since the low frequency input data of the correlator should be shifted by circulating shift-register to accomplish time division multiplexing of the correlator in high frequency, an implementation method of circulating shift-register which adopts series FIFO (First input first output) core in FPGA is proposed. FPGA simulation of the scheme mentioned above was performed. The results shows that the shift-register based on FIFO works stable and can provide accurate data to the time division multiplexing correlator.
Keywords: FIFO; shift-register; FPGA; correlator
0 引 言
在高动态接收机的时域相关+FFT捕获算法中需要进行大量的高速相关运算[1-2],因此在FPGA实现中需要产生大量的相关器。为了节省有限的FPGA资源、降低成本,同时相关运算频率[f1]是相关输入数据(后简称“输入数据”)频率[f2]的整数倍,因此时分复用相关器是达到目的的可行方法[3-4]。
输入数据在频率[f1]下经过普通移位寄存器会造成数据的丢失。只有经过循环移位才能保证在下一个输入数据来之前,寄存器内之前的[N(N=f1f2)]个输入数据均在[f1]频率下进行了相关运算。由于FIFO先进先出的原理,利用深度为[N]的FIFO实现循环移位寄存器。
1 FIFO简介
FIFO(First Input First Output)是一种先进先出的数据缓存器,如图1所示。它与普通存储器的区别是没有外部读写地址线,控制逻辑简单。缺点是只能顺序读写数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址[5]。
FIFO的主要参数是它的宽度和深度。FIFO的宽度指的是FIFO一次读写操作的数据位;深度指的是FIFO可以存储N(设宽度为N)位数据的个数[6]。
根据FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO[7]。同步FIFO是指读时钟和写时钟为同一个时钟。在时钟沿来临时同时发生读写操作。异步FIFO是指读写时钟不一致,读写时钟是互相独立的。在本文中采用的是同步FIFO。
2 方案设计
在工程中需要2 560个相关器在124 MHz时钟下做2 560次相关运算。输入数据频率为15.5 MHz,因此在124 MHz时钟下可以使用320个相关器时分复用8次以实现2 560次相关。FPGA中的320个同步FIFO核在124 MHz时钟下对输入数据进行循环移位,每一个FIFO的输出数据作为320个相关器的输入数据进行相关运算[8]。整体方案结构如图2所示。
320个FIFO模块以串联模式工作。图2中FIFO_0和FIFO_1分别为前后两个串联的FIFO模块。每个FIFO的深度为8,宽度为6 b。输入数据在15.5 MHz时钟下写入至FIFO_0,每124 MHz时钟FIFO内部数据进行一次移位,同时将最先进入FIFO的数据即移位到0位置的数据输出给累加器ADD做相关运算。一个ADD模块在124 MHz时钟下时分复用8次,相当于8个相关器add7~add0。在15.5 MHz时钟的控制下,将当前0位置上第一次输出给ADD模块的数据同时输出给下一个FIFO模块FIFO_1。每个FIFO的工作模式均与FIFO_0的一致。
以第一个FIFO为例说明FIFO模块的具体工作过程。假设依次输入的数据为1,2,3,4,5,6,7,8,9,10,…。具体实现过程如图3所示。
FIFO在124 MHz时钟下工作。一个时段指8拍124 MHz时钟即一个15.5 MHz输入数据时钟,每一个时段输入一个新数据。从第1个时段可看出,当向FIFO写了7个数据后,读出一个数据,按照FIFO先进先出的原则,读出的是第一个写进去的数据“1”(如第一时段第1行所示);下一个124 MHz时钟将第八个数据“8”(在此称为新进数)写入FIFO,同时读出第二个写进去的数据“2” (如第一时段第2行所示);在第一时段内由于除了第一个写入的数据“1”外,其他的数据均要被后面的时段采用,所以在读出数据“2”后,下一个时钟再将其回写入FIFO,同时读出第三个写进去的数据“3” (如第一时段第3行所示);同理下一个时钟将数据“3”回写入FIFO,读出第四个写进去的数据“4”,依次类推。
(www.fabiaoba.com),是一个专门从事期刊推广期刊发表、投稿辅导、发表期刊的网站。
本站提供如何投稿辅导、发表期刊,寻求论文刊登合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级论文刊登/国家级论文刊登/
CSSCI核心/医学投稿辅导/职称投稿辅导。
投稿邮箱:fabiaoba365@126.com
在线咨询:
275774677、
1003180928
在线咨询:
610071587、
1003160816
联系电话:13775259981