认知无线电中的宽带频谱感知技术的FPGA实现
扫描二维码
随时随地手机看文章
项目背景
项目名称:认知无线电中的宽带频谱感知技术的FPGA实现
项目背景:随着无线通信技术的飞速发展,无线用户的数量急剧增加,可用频谱资源变得越来越稀缺。当前的绝大多数频谱资源都是采用固定的分配模式,由专门的频率管理部门分配特定的授权频段以供不同的通信业务使用。而对于工作在非授权频段的通信业务,由于近年来发展迅速,导致非授权频段日趋饱和。认知无线电技术则解决了上述矛盾,它能自动检测周围的环境情况,智能调整自身参数,在不对授权频段造成干扰的情况下,检测频谱空洞并利用空闲频段进行通信。以往的频谱检测大都是基于窄带的检测,极少对宽带频谱进行检测,也没有考虑噪声不确定度对能量检测的影响。 窄带检测一次只能检测一个信道,大大削弱了频谱感知的效率,不利于频谱利用率的提高。例如,某一时刻检测到某一信道被使用,CR用户不能使用该信道,但是还有大量的空闲信道,由于一次只能检测一个信道,导致了CR用户不能使用该信道。而我们本项目中提出的宽带频谱检测,一次能够检测多个信道,这样就解决了以往窄带频谱检测的局限性,使问题迎刃而解。能量检测简单易行且可以实现盲感知而被广泛采用。能量检测的决策门限依赖于环境噪声的功率,理想的能量检测往往认为噪声功率是已知的,而实际环境中,噪声功率是时变的,即噪声具有不确定性,导致了能量检测性能的降低。项目中我们将设计克服噪声不确定度的算法模块,并用FPGA实现。
项目内容:
本项目主要研究认知无线电宽带频谱感知技术的FPGA实现,采用认知无线电中最常用的检测方法—能量检测。首先对输入信号进行抗混叠滤波,再进行A/D采样得到一组数字信号,然后进行64点高速并行流水线FFT运算,进一步对运算的输出的幅频信号进行求模平方运算,求得每个频段内信号的功率,再对16个历史功率数据求均值,最后执行克服噪声不确定度算法对噪声方差变化进行补偿,从而判断频带的利用情况以选择频谱空洞进行通信。
项目目标:本项目旨在设计实现一个既能实现宽带频谱感知而又能克服噪声不确定度的实用性宽带频谱感知实现平台。
项目难点:如何设计高度优化的并行流水线64点FFT算法和高速低延时的排序算法是设计的关键。
项目的开发意义: 认知无线电宽带频谱检测技术的FPGA实现克服了噪声不确定度对能量检测的影响,解决了以前窄带检测效率较低、宽带检测性能较差的问题,使宽带频谱检测技术真正达到实用化。
开发平台:Spartan-6
项目系统方案
根据项目内容,我们设计项目方案主要包含:
项目总体框架
能量检测模块
能量检测算法
能量检测FFT设计模块
1) 高度优化复数乘法器设计
2) 基四蝶形单元设计
3) 16点FFT的流水线实现
克服噪声不确定度算法模块
FCME算法
排序算法模块实现
比较模块实现
下面详细介绍项目各模块具体设计
(一) 项目总体框架
项目有两个核心模块:能量检测模块和克服噪声不确定度模块。系统主控负责各模块的时序控制。
(二) 能量检测模块
能量检测算法
能量检测原理:能量检测的出发点是信号加噪声的能量大于噪声的能量。首先设定一个门限,然后在一定频带范围内作能量积累,如果积累的能量高于门限,则说明有信号存在,如果低于门限,则说明仅有噪声。直接对时域信号采样求模,然后平方累积求和就可以得到能量检测统计量Y(利用FFT转换到频域,然后对频域信号求模平方也可以得到)。下图为能量检测框图:
首先对输入信号进行抗混叠滤波,再进行A/D采样得到一组数字信号,然后进行64点高速并行流水线FFT运算,然后取平方求得检测统计量Y即相应频段上的总能量,与设定的门限值进行比较,判断频谱利用情况。以前的频谱检测都是基于窄带(窄带指的就是所测的频段的带宽较小)的检测,一次只能检测一个信道,检测效率低。而本项目中,我们要实现的是宽带检测,一次能够检测多个信道,提高了检测性能,也有效地克服了噪声不确定度的影响。
假设某信号传输需要2M带宽,对于32信道就需要64M带宽,根据采样定理可知A/D采样频率至少应为128M。这就要求我们设计的64点FFT运算要在0.5μs的时间内完成,为了满足高速性能,我们采用并行流水线FFT设计,能够达到较高的时钟频率,更好的满足实时处理的要求。
能量检测FFT设计模块
FFT内核在FPGA中已经包括,但是效率不高。为了满足实时处理的要求,在这里我们自己设计了一个高度并行的、纯流水线的64点基四FFT。
由上图我们可以看出,64点FFT我们可以调用16点FFT,16点FFT调用基四蝶形完成运算。基四蝶形运算单元的核心运算为加法和复数乘法,加法运算我们采用的是超前进位加法,运算速度较快。下面我们讨论高度优化复数乘法器设计
2.1高度优化复数乘法器设计
复乘的公式
下图为复数乘法器的并行实现框图:乘法器为自己设计的8位输入,16位输出。图中A+aj和B+bj为两个设计输入, 为输出的实部, 为输出的虚部。共需两级流水。
图四 复数乘法器
由于采用并行流水线FFT设计需要大量的slice,为了保证时钟频率达到要求的情况下最大可能的减少硬件开销,我们对复数乘法器中的旋转因子做了优化处理。
实际操作中,我们发现我们可以对复乘的公式做出相应的变形推导处理,可以看出其节约了乘法器的个数,而我们知道乘法器占用硬件面积较大,而当FFT点数较大的时候会节省较多的资源。而当FFT点数确定时, 旋转因子可以根据其周期性,对称性和欧拉公式做出相应变形,减少运算所需乘法器个数,节省了较大的硬件资源。 [!--empirenews.page--]
2.2基四蝶形单元设计
由基四FFT运算原理可得:x(n)为一长度为M的有限长序列定义x(n)的N点离散傅里叶变换为
令: ;
;
;
;
则:
令
,即
图五 基四FFT基本信号流图
2.3 16点FFT的流水线实现
16点FFT是64点FFT的重要部分,以下为16点FFT的流水线实现图。为了保证在满足系统时钟频率要求的情况下,最大可能的减少硬件开销,我们利用旋转因子
的周期性和对称性对16点FFT进行了乘法器和旋转因子的优化,节约了较多的slice。
图六16点FFT的流水线实现图
排序算法模块实现
排序算法是FCME算法的核心部分,高速有效的排序是FCME算法执行的关键技术。在这里我们提出了改进的排序方案,来提高排序系统的速度。因为我们设计的系统框架是通过流水线方式实现的,为了提高时钟速度,我们采用一种新的方案,该方案可以有效地提高速度性能,让排序的平均时间算法复杂度为O(N),排列n个数据需要n个时钟周期,比传统的那些排序算法更有效,而且结构简单易于实现。
该并行排序机制示意图是如下图所示,整个处理单元,它可以用N个时钟周期排列N个数据,D触发器来执行产生的N个周期必要的数据存储和传送, N级级联子模的包括比较器,与非门,D触发器,多路复用器。其中n表示第n子模块,n = 1,..N,输入数据,使能信号。输入数据是串行的,整个排序算法如下:
首先,所有的D触发器初始化为最小值。输入数据与队列子模块中D触发器的输出数据进行比较,决定是否使能对应子模块的D触发器。由多路复用器选择数据插入到那一级子模块,同时后面子模块中的数据,依次移入下一级子模块,前面子模块的数据不变。 重复n次使n个数据全部插入其中,从而得到有序的队列。
比较模块实现
基于公式(3),我们看出,FCME算法的实现还需要一个比较电路,比较Q(K+1)与前k项的Q(i)和的大小。设计的比较模块如下:
控制电路提供一个初值控制FIFO读取k个信道的能量值,然后通过一个加法电路进行能量求和,将前k个信道的能量和与第k+1个信道能量通过一个比较器进行大小比较。若前者大于后者,说明第k+1个信道为空闲信道,否则继续由控制电路将k值加1,继续进行比较。
项目小结
在认知无线电网络中,频谱检测的本质是由认知用户来判断某信道中是否存在授权用户,从而找到可以利用的频谱空穴。同时,认知用户需要通过频谱检测判断授权用户的再次出现,并进行避让,以避免或降低对授权用户的干扰。宽带频谱感知的FPGA实现将解决窄带检测检测效率较低的问题,克服噪声不确定度对检测性能的影响,使宽带频谱检测技术实用化。