基于FPGA的宽带信号检测设计概述
2021-05-16唐聆韬
唐聆韬
四川大学 电子信息学院 四川 成都 610065
引言
当前主要的频谱检测方法有能量检测法、匹配滤波器法和循环平稳特征检测法等。匹配滤波器法能使接收信号的信噪比最大化,在短时间里获得高处理增益,但是进行信号检测必须具有传输信号的先验信息,即要事先获得所有子信道用户的参数信息。所以匹配滤波器法不适用于多信号的盲检测。循环平稳特征检测法是利用调制后的信号的循环特征进行检测。调制后信号的均值和自相关等特征具有循环平稳特性,而噪声的统计特征不具有这一特性,利用这一特征可以有效地将噪声和信号区分开来。但是其计算复杂度过高,检测周期较长,也不适合大带宽多子带信号的频谱检测。与以上两种方法相比,能量检测法[1]就相对简单,适合在硬件中实现。
1 宽带检测算法
1.1 常用检测方法介绍
能量检测法中最常用的是双门限法[2],工程实现中经常出现。相对于传统的门限法,利用两个门限对信号进行筛选,进而更加有效地对信号进行估计。在单门限检测模型的基础上再加一个门限,设置成双门限检测模型。通常设置为:
双门限法的检测效率虽然比单门限更精确,但也很容易受噪声影响。如图1所示,有些信号因为功率能量不能达到门限的要求,就会被算法判定是噪声而排除掉。这样检测效率就大大降低了。针对这一问题,本文提出一种易于硬件实现,精确度较高的门限检测算法,它能对每个信号设置单独的门限检测出信号,大大降低漏检率。
图1 信号频谱图
1.1 改进的双门限算法
(2)进行第二次扫频,将每个频点的值与上步算出的底噪进行比较,如果大于底噪的范围为有信号的区域。
(4)对频域进行第三次扫频,将信号区域的点与之对应的门限值进行比较,大于信号的部分就是精确估计的有效信号。如下为算法检测出信号的结果。产生多个信号段,采样频率为10MHz,信号信噪比为6~12dB,信号调制种类有5种(2ASK,2FSK,4FSK,BPSK,QPSK)。在允许相对误差小于4%的情况下统计出载波频率和带宽的精确度。
图2 信号检测结果图
表1 检测信号载波频率和带宽精确度
从图2和表1中可以看出,该方法可以较好地检测出各个信号,验证了信号的可行性,接下来将介绍算法的FPGA设计。
2 模块设计
信号主要分为两大部分:频域转换部分和信号检测部分。利用频域转换将时域数据转换成频域数据并计算出信号的功率谱数据,然后由信号检测部分估计出载波频率和带宽[4]。
图3 频域转换结构图
首先,使能信号控制状态机开始工作,输出当前状态送入判断1、判断2、判断3模块中进行判断,以产生需要的标志信号。判断2模块与状态机产生的状态配合控制计数器1对FFT IP核转换次数进行计数。当计数器1计数到设置的数值时会告诉判断1模块输出结束变换的标志信号。判断3模块产生IP核开始转换的标志信号,而计数器2告诉IP核当前输入的是第几个信号数据。IP核会计算出数据信号的频域信息并依次输出,最后通过乘法器求平方得到功率谱,同时配合计数器3依次将频域数据存入存储器中。最后由标志信号经判断4模块判断数据是否完全存储完毕。
图4 信号检测状态图
上图为信号检测模块的状态图,在转换完成时,calcu_p=1,状态机进入ST_FIND_MIN状态,此时会对频谱进行扫描,找出频谱中的最小值,用最小值设置频谱的底噪并找出大于底噪的部分,将该部分视为信号区间。扫描完成后进入ST_FIND_MAX中进行第二次扫描。该次扫描主要用于找出信号区间中的最大值,利用最大值设置一个判断门限,如果大于判断门限的部分就认为是信号。第二次扫描完成后,进入ST_FIND_MAXSUB3DB状态,在该状态中,模块会对每个信号区间的判断门限与信号进行比较,精确估计出信号的载波频率和带宽,判断完成后回到最开始的待机状态ST_IDLE中[5]。
如图5所示,状态机负责状态的转换并将当前状态输入到其他模块中进行运算,当状态处于ST_FIND_MIN/ST_FIND_MAX/ST_FIND_MAXSUB3DB状态时,系统都需要对频谱数据进行扫描将信号数据从dpram存储器中读出来,其中判断2模块就是输出NFFT个raddr读地址信号,从存储器中读出当前需要的数据。当状态处于ST_FIND_MIN时,寻找底噪模块会找出频谱中的最小值并设置一个最小的底噪值。当状态为ST_FIND_MAX时,系统会将信号与底噪进行比较,将有信号的部分标志出来,标志信号由判断1模块中输出。最大值模块则会找出每个有信号区域的最大值,而设置门限模块会利用最大值和其点数值位置生成每个有信号区域的门限值(用于检测信号频谱起始点和终止点)和标志信号(FIFO模块的写使能)。这里的门限是将最大值下降3dB。
图5 信号检测结构图
上面已经产生了FIFO的数据输入和写使能。而FIFO模块的读使能由判断3模块输出,在ST_FIND_MAXSUB3DB状态下如果数据位置处于底噪左侧临界点处可以产生一个标志信号作为FIFO模块的读使能。FIFO读出的门限数据输入到判断4中,如果信号数据大于门限数据则认为这是有效信号并记录下起始点x1和终止点x2。通过这两个坐标就可以计算出载波频率和带宽。
3 仿真实验
利用Matlab产生2PSK、4PSK、8PSK三个信号,它们的采样频率为12MHz,载波频率分别为1.92MHz、4.32MHz、7.2MHz,符号速率为960kHz、1152kHz、768kHz,信噪比设置为8dB,采样点数为4096。频域如下:
图6 信号频域图
将该信号数据送入模块进行检测得到下图:
图7 带宽和载波数据
从图中可以得到信号的载波频率和带宽,因为对频谱数据进行存储时是从频段中间开始存储的,所以得到的信号中心频率大于2048的数据需要减去2048,小于2048的数据需要加上2048,得到三个信号的载波点数位置是675、1492、2476,信号带宽点数是363、427、287。利用公式:
得到载波频率分别为1.977MHz、4.371MHz、7.253MHz。信号带宽分别为1063.47kHz、1250.97kHz、840.82kHz。其误差在允许范围内。
4 结束语
本文根据信号处理问题在硬件上难以实施的难点,通过对传统方法进行改进,使算法能较好地检测信号并且能够在硬件中实现。首先通过软件进行理论验证,然后再设计出FPGA的硬件结构,最后通过仿真得到硬件计算的结果,验证了方法的可行性。