时间:2014-10-21 11:43 文章来源:http://www.lunwenbuluo.com 作者:欧春湘等 点击次数:
摘 要: 为了完成高频率下相关器的时分复用,相关器的低频输入数据须通过循环移位寄存器移位。提出了在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的一致。
联系方式
随机阅读
热门排行