专利名称:基于fpga的多普勒调频率估计方法
技术领域:
本发明属于数字信号处理技术领域,特别涉及利用现场可编程逻辑门阵列FPGA实现多普勒调频率估计方法,可应用于合成孔径雷达实时成像处理。
背景技术:
合成孔径雷达SAR作为一种主动式微波传感器,不受光照和气候条件的限制实现全天时、全天候对地观测,获取高分辨的地面场景信息,还可以透过地表和植被获取地表下信息,并能探测隐蔽目标。这些特点使它在军事领域,如战场地形探测及预警,民用领域,如资源考察、环境监测、水文观测等应用具有独特的优势。多普勒调频率是影响SAR成像方位聚焦性能的主要因素,在SAR成像处理中扮演重要角色,常用的多普勒调频率估计方法有图像偏移算法MD、对比度方法、子孔径相关法和 最小熵方法。在传统的实时成像处理中,对多普勒调频率的估计大都是采用数字信号处理器DSP作为核心处理芯片,并且为了达到提高速度的要求,大多数情况下同时使用多块DSP进行运算,但这种做法的缺点就是系统结构复杂、功耗大、效率低,并且由于DSP处理本身是一种串行处理,采用DSP实现相对耗时较长,针对某些实时性要求更为苛刻的场合,通常难以满足实时处理要求。
发明内容
本发明的目的在于针对上述已有技术的不足,提供一种基于FPGA的多普勒调频率估计方法MD的工程实现,以降低系统结构复杂度,减少系统功耗,提高多普勒调频率估计的处理速度。本发明的技术思路是基于冒泡排序方法,通过控制状态机及RAM块的读写,筛选出功率强的距离单元数据;通过调用FPGA内部的IP核,实现快速傅里叶变换FFT和快速逆傅里叶变换IFFT —系列操作,完成对方位前孔径和后孔径数据的快速相关计算;通过插值处理,提高了多普勒调频率计算的精度。其实现步骤包括如下(I)将经过距离脉压、徙动校正后的二维数据按距离单元方位连续地送入FPGA,对逐个距离单元的方位连续数据求功率和,得到每个距离单元的总功率,并将该二维数据直接存入外接存储器DDRII SDRAM中;(2)将得到的距离单元总功率数据进行冒泡排序,得到距离单元数据在二维数据中按功率强弱排序的位置,建立索引向量,并将其存入FPGA内部的RAM模块中供后续操作使用;(3)对于外接存储器DDRII SDRAM中存储的二维数据,以RAM中存储的位置索引值为基地址,按照距离单元总功率递减的顺序,依次通过FPGA读出32个距离单元数据;(4)对于每次读出的单个距离单元数据,将其沿方位向划分为前孔径数据和后孔径数据,并分别对前孔径和后孔径两组数据进行后端补零;(5)将补零后的两组数据分别进行FFT处理和取模操作,并将处理结果缓存在FPGA的FIFO缓冲器中;(6)从FIFO缓冲器中读出经过FFT处理和取模操作的两组数据,确保两组数据同步,并对前孔径数据和后孔径数据进行快速相关处理,得到相关向量R(i),i =1,2,3......32 ;(7)利用状态机实现循环操作,对从外接存储器DDRII SDRAM中读出的32个距离单元数据分别进行步骤(4) (6)操作,将得到的相关向量进行累加求和,得到总相关向量R;(8)对总相关向量R进行最大值搜索,得到总相关向量R最大值所在位置pos,即位置偏移的整数部分;根据最大值所在位置pos,得到最大值及左右相邻的两个数,并对该最大值及其相邻的两个数进行插值运算,得到位置偏移的小数部分;将位置偏移的整数部 分和小数部分相加,再将相加结果与成量化系数相乘,得到最终的多普勒调频率估计值。本发明具有以下优点第一,本发明采用FPGA作为核心处理芯片,FPGA内部集成大量的乘法器、RAM甚至处理器核,具有基于数据流的强大定点处理能力,处理速度快,灵活性好,降低系统结构复杂度,提高了整个系统的实时性。第二,本发明由于利用“冒泡排序”方法,利用FPGA中RAM资源对数据做缓存,以及状态机控制使得排序快速高效,排序过程各个状态易于控制。第三,本发明中利用了 FPGA并行处理和流水线工作性能,充分发挥了 FPGA实现的优势,节省了整个多普勒调频率计算过程的处理时间以及FPGA内部存储资源,在很大程度上提闻了估计效率。
图I是本发明的总流程图;图2是本发明中快速相关处理子流程图;图3是本发明中计算多普勒调频率子流程图。
具体实施例方式下面结合附图对本发明做进一步的描述。参照图1,本发明的具体实施步骤如下步骤I.对输入二维数据各距离单元求功率和,并将输入二维数据存入外接存储器 DDRII SDRAM 中。I. I)将脉冲回波数据在MATLAB软件中做距离脉压和徙动校正的预处理,得到复数浮点数据,将复数浮点数据分成实部、虚部两路,并将实部、虚部量化到16位位宽的有符号定点数,再将量化后的实部、虚部定点数据分别写入文本文件。I. 2) FPGA从两个文本文件中读取数据,得到经距离脉压、徙动校正后的二维距离单元方位连续输入数据,该二维输入数据分实部、虚部两路进行各距离单元功率和计算,这时应确保两路数据同步且连续,若不能保证,则将数据先存入FPGA中两个深度较小的FIFO缓冲器进行缓冲,然后从两个FIFO缓冲器中同时读取,使数据满足同步要求;I. 3)利用IP核生成的乘法器对实部、虚部两路数据分别进行平方操作,将结果通过IP核生成的累加器求得实部、虚部数据的平方和,再将两个平方和结果相加得到各距离单元数据的功率和数据;I. 4)同时将二维输入数据直接存入到外接存储器DDRII SDRAM中。步骤2.对功率和数据进行冒泡排序,建立位置索引向量。用FPGA的IP核生成两个RAM块,一个用于暂存二维输入数据各距离单元的功率和数据,另一个存放各功率和数据对应的各距离单元在DDRII SDRAM中的行地址即索引向量,通过状态机控制存储功率和数据的RAM块的读写,以实现对各距离单元的功率和数据冒泡排序,在排序的同时对索引向量做与存储功率和数据的RAM块相同的调整,使索引向量按各距离单元数据功率和强弱的顺序排列。步骤3.根据索引向量从外接存储器DDRII SDRAM中读出各距离单元数据。从索引向量中每次读出一个值作为外接存储器DDRII SDRAM的行地址,依据行地址从外接存储器DDRII SDRAM中读出距离单元方位向连续数据送入FPGA中,即按各距离单元功率和强弱的顺序读出二维输入数据。步骤4.将各距离单元数据划分为前孔径数据和后孔径数据。将从外接存储器DDRII SDRAM读出来的各距离单元方位向连续数据从中间位置划分为前孔径数据和后孔径数据,将前孔径、后孔径两路数据输入到FPGA的两个较小的FIFO进行缓存,使得这两路数据同步,之后对前孔径、后孔径数据后端进行补零,使其与各距离向数据等长。步骤5.对前孔径数据和后孔径数据进行FFT处理和取模操作。5. I)调用FPGA中的IP核,将该IP核的模式设置为Variable Streaming模式,工作方式设置为正序输入、反序输出;5. 2)利用所述的IP核分别对前孔径数据和后孔径数据进行FFT处理,即快速傅里叶变换,使其从时域变换到频域,得到方位向前孔径和后孔径的频谱数据。5. 3)对前孔径和后孔径的频谱数据分别进行取模操作,之后将取模结果缓存到FPGA 的 FIFO 中。步骤6.从FIFO缓冲器中读出前孔径和后孔径两路频谱数据,两路频谱数据同步后进行快速相关处理。参照图2,本步骤地具体实现如下6. I)调用FPGA中的IP核,将该IP核的模式设置为Variable Streaming模式,工作方式设置为反序输入、正序输出;6. 2)利用6. I)所述的IP核对两路频谱数据分别进行FFT处理,使得前孔径和后孔径的频谱数据恢复为正常顺序,这样极大地减少了 FFT处理过程中因为排序所消耗的时间;6. 3)调用FPGA中的一个乘法器,以步骤5和步骤6. 2)两次FFT处理后的前孔径 数据和后孔径数据的结果分别作为被乘数和乘数,完成两者的对应元素共轭相乘操作,得到一路相乘结果;6. 4)调用FPGA中的IP核,将该IP核的模式设置为Variable Streaming模式,工作方式设置为正序输入、正序输出;6. 5)利用6. 4)所述的IP核对一路相乘结果进行IFFT处理,再将IFFT结果进行取模操作,得到每个距离单元方位连续数据的前孔径数据和后孔径数据做相关操作后的相关向量 R(i),i = 1,2,3......32。步骤7 循环操作求出总相关向量R。循环执行步骤3到步骤6,直到得到前32个距离单元方位连续数据的前孔径和后孔径的相关向量R(i),再将R(i)进行累加求和得到总相关向量R。步骤8.根据总相关向量R计算多普勒调频率。参照图3,本步骤的具体实现如下8. I)将总相关向量R缓存在FPGA中的RAM块;8. 2)从缓存总相关向量R的RAM块中读出总相关向量R的第一个数据作为R的最大值,并用R的最大值寄存器max暂存下来,此时将R最大值所在位置寄存器pos的值置为I,接着从RAM中读出R的下一个数据,将该数据与R的最大值寄存器max的值进行比较, 若该数据大于R的最大值寄存器max的值,则用该数据替换R的最大值寄存器max的值,相应的R最大值所在位置寄存器pos的值变为该数据的位置;若该数据不大于R的最大值寄存器max的值,则R的最大值寄存器max的值和R最大值所在位置寄存器pos的值不变。循环此读取比较操作,直至比较完R的最后一个数据,实现对总相关向量R的最大值搜索操作,得到总相关向量R最大值所在位置pos,也就是位置偏移的整数部分;8. 3)采样数据的脉冲重复频率的倒数是有符号浮点小数,用MATLAB软件将其量化成与总相关向量R具有相同位宽的有符号定点数,也就是将其扩大2的整数幂倍后再取整,该整数的大小与总相关向量R位宽有关。量化得到有符号定点数作为参数供FPGA使用,即量化系数。8. 4)根据R最大值所在位置pos从总相关向量R的缓存RAM中读出总相关向量R的最大值及其左右相邻的两个数,并对该最大值及其相邻的两个数做插值,得到位置偏移的小数部分;将位置偏移的整数部分和小数部分相加,相加结果乘以固定的量化系数,即可得到多普勒调频率估计值。本发明的结果可以通过以下仿真测试进一步说明I.验证和仿真条件用ModelSim软件做功能仿真时,输入数据是8组用MATLAB软件量化后的距离向采样点数为256,方位向采样点数为1024的经过距离脉压和徙动校正后的有符号定点二维数据,即输入数据矩阵大小是256 X 1024。2.验证和实测结果用FPGA和MATLAB分别对8组二维数据进行多普勒调频率估计,将两者所得结果进行对比,结果如表I。表I FPGA与MATLAB对二维数据的多普勒调频率估计结果对比表
权利要求
1.一种基于FPGA的多普勒调频率估计方法,包括如下步骤 (1)将经过距离脉压、徙动校正后的二维数据按距离单元方位连续地送入FPGA,对逐个距离单元的方位连续数据求功率和,得到每个距离单元的总功率,并将该二维数据直接存入外接存储器DDRII SDRAM中; (2)将得到的距离单元总功率数据进行冒泡排序,得到距离单元数据在二维数据中按功率强弱排序的位置,建立索引向量,并将其存入FPGA内部的RAM模块中供后续操作使用; (3)对于外接存储器DDRIISDRAM中存储的二维数据,以RAM中存储的位置索引值为基地址,按照距离单元总功率递减的顺序,依次通过FPGA读出32个距离单元数据; (4)对于每次读出的单个距离单元数据,将其沿方位向划分为前孔径数据和后孔径数据,并分别对前孔径和后孔径两组数据进行后端补零; (5)将补零后的两组数据分别进行FFT处理和取模操作,并将处理结果缓存在FPGA的FIFO缓冲器中; (6)从FIFO缓冲器中读出经过FFT处理和取模操作的两组数据,确保两组数据同步,并对前孔径数据和后孔径数据进行快速相关处理,得到相关向量R(i),i = 1,2,3……32 ; (7)利用状态机实现循环操作,对从外接存储器DDRIISDRAM中读出的32个距离单元数据分别进行步骤(4) (6)操作,将得到的相关向量进行累加求和,得到总相关向量R ; (8)对总相关向量R进行最大值搜索,得到总相关向量R最大值所在位置pos,即位置偏移的整数部分;根据最大值所在位置pos,得到最大值及左右相邻的两个数,并对该最大值及其相邻的两个数进行插值运算,得到位置偏移的小数部分;将位置偏移的整数部分和小数部分相加,再将相加结果与成量化系数相乘,得到最终的多普勒调频率估计值。
2.根据权利要求I所述的多普勒调频率估计方法,其中所述步骤(5)的FFT处理和所述步骤(6)中的快速相关处理,都要调用FPGA中的FFT核,并将模式设置为VariableStreaming。
3.根据权利要求I所述的多普勒调频率估计方法,其中所述步骤(5)的FFT工作方式设置为正序输入、反序输出。
4.根据权利要求I所述的多普勒调频率估计方法,其中所述步骤(6)的快速相关处理用到的FFT工作方式设置为反序输入、正序输出,IFFT工作方式设置为正序输入、正序输出。
5.根据权利要求I所述的多普勒调频率估计方法,其中所述步骤(2)的对方位向数据中功率进行排序操作,是用基于“冒泡排序”方法通过控制状态机以及对FPGA内部两个RAM读写操作实现。
6.根据权利要求I所述的多普勒调频率估计方法,其中所述步骤(8)的对数据进行缓存、插值、最大值搜索,利用FPGA生成的RAM核实现缓存,通过计数器控制状态机进而使能RAM读操作完成插值,利用快速搜索方法通过控制三段式状态机实现最大值搜索。
7.根据权利要求I所述的多普勒调频率估计方法,其中所述步骤(8)的量化系数,是根据采样数据的脉冲重复频率和总相关向量R的位宽通过MATLAB软件生成。
全文摘要
本发明公开了一种基于FPGA的多普勒调频率估计的实现方法,主要解决现有技术估计多普勒调频率系统结构复杂、功耗大、效率低的问题。其实现方法是对输入二维数据各距离单元求功率和,并将输入二维数据存入外接存储器中;对各距离单元的功率和进行冒泡排序,建立索引向量;根据索引向量从外接存储器中读出各距离单元数据;将各距离单元数据划分为前孔径数据和后孔径数据,并对其进行FFT和取模操作,得到两路频谱数据;将两路频谱数据同步后作快速相关处理,得到相关向量R(i);对R(i)累加求和得到总相关向量R;根据R计算出多普勒调频率。本发明降低了系统结构复杂度,减少系统功耗,提高多普勒调频率估计的处理速度,可用于合成孔径雷达实时成像处理。
文档编号G01S13/90GK102680945SQ20121015854
公开日2012年9月19日 申请日期2012年5月22日 优先权日2012年5月22日
发明者李学仕, 李蓓蕾, 梁毅, 邢孟道, 陈凯 申请人:西安电子科技大学