一、引言
软件无线电是近几年在无线通信领域提出的一种新的通信系统体系结构,其基本思想是以开发性、可扩展、结构最简的硬件为通用平台,把尽可能多的通信功能用可升级、可替换的软件来实现。这一新概念一经提出,就得到了全世界无线电领域的广泛关注。由于它所具有的灵活性、开放性等特点,不仅在军、民无线通信中获得了应用,而且还被推广到其它领域。
FPGA (现场可编程门阵列) 是上世纪80年代中期出现的一类新型可编程器件。应用FPGA设计功能电路时,可以让人们的思路从传统的以单片机或DSP芯片为核心的系统集成型转向单一专用芯片型设计。FPGA技术的发展使单个芯片上集成的逻辑门数目越来越多,实现的功能越来越复杂,人们通过硬件编程设计和研制ASIC,可以极大地提高芯片的研制效率,降低开发费用。
基于上述优点,用FPGA实现软件无线电发射机,不仅降低了产品成本,减小了设备体积,满足了系统的需要,而且比专用芯片具有更大的灵活性和可控性。在资源允许下,还可以实现多路调制,并能对每一路发射信号的幅度和相位进行细调,这也是实现3G智能波束跟踪算法的基础。
本文在设计上使用了基于多相滤波和单MAC的成形滤波器和高效CIC插值滤波器,充分考虑了性能和资源占用率的关系,并用MATLAB仿真出各模块最佳的输入输出位数,从而实现了资源占用最少而性能最佳的目的。整个设计利用安立公司的PHS专用测试仪MT8801C对其频谱、眼图、星座图和其它各项发射指标进行测试,均达到或超过专用TSP芯片AD6623的效果。
二、软件无线电发射机数学模型
软件无线电发射机是软件无线电两大组成部分之一,它的主要功能是把需发射或传输的用户信息经基带处理上变频,调到规定的载频上,再通过功率放大后送至天线,把电信号转换为空间传播的无线电信号,发向空中或经传输介质送到接收方的接收端,由其进行接收解调。其基本组成如图1所示。本设计要做是用FPGA实现其中的基带调制和上变频部分。
众所周知,任何一个无线电信号可表示为
式中,a(t)、φ(t)分别表示该信号的幅度调制信息和相位调制信息,f0为信号载频。
对式(1)进行数字化,可得:
式中,Ts=1/fs为采样间隔。
式(2)通常简写为
式中,ω0=2πf0Ts为数字角频率,取值0~π(实信号)。
为便于进行信息调制,通常把式(3)进行正交分解:
调制的方法是先根据调制方式求出I(n)、Q(n),然后分别与两个正交本振cos(ω0n)、sin(ω0n)相乘并求和,即可得调制信号。但为了抑制已调信号的带外辐射,在同相和正交支路上还分别增加一个具有线性相位特性和平方根升余弦幅频特性的低通滤波器。另外,为了使产生的基带信号与后面的采样速率相匹配,在进行正交调制前还必须通过内插把低速的基带信号提升到采样频率上,整个实现过程如图2所示。
三、软件无线电发射机的FPGA实现
1.调制映射的实现
调制映射是指把串行比特流映射到星座图上的相位点,包括串并变换、相位字累加器、延迟单元和一个ROM查找表。其中相位累加器的前端输入数据宽度为3 bit,其值可为001、011、101或111,它是由串并后的两比特数据决定。由编码规则可知,00对应001,01对应011,11对应101,10对应111。将累加器输出的3 bit数据延迟1个码元周期与前端输入相加,并把累加器的输出作为ROM的地址线,通过读取ROM里事先存好的I、Q值,即达到映射的目点。
上述映射方法适用于所有的数字调制,改变的只是累加器的位数、ROM的深度和内部的I、Q值。若调制方式为绝对调制,即一个星座点固定对应一个数据时,则去掉累加器和延迟单元,仅用串并后的数比特作为ROM的地址线即可。
2.成形滤波器的实现
根据PHS空中接口RCR STD-28协议[4],其调制的成形滤波器的幅频特性如式(5)所示:
式中T=(1/192)×10-3s,α=0.5。
用MATLAB模拟上述的成形滤波器,考虑到资源占用和逼近程度,采用了40 阶、系数宽度为16 bit的FIR滤波器。考虑到成形滤波前还需5倍插值,采用了插值器的多相滤波结构,其结构图如图3所示。
由图3可见,数字滤波位于内插器之前,即数字滤波在提速之前进行,这对降低数字滤波的实时性要求很有好处。另外,分支滤波器(Rk(z))阶数只有原来的五分之一,有利于提高运算精度,降低对字长的要求。
将原有的40个滤波器系数分成5组,得h(5n+k),其中0≤n≤7,0≤k≤4。由多相滤波的公式推导可知Rk(n)= h(5n+k), 0≤n≤7,0≤k≤4。由于这5个分支滤波器的结构完全相同,故只需编写一个分支滤波器的程序,其它的只要重复调用即可。后面的插值和延迟单元相当于一个多路选择开关,其选择速率为输入数据速率的5倍,开关选择的顺序是从R4(z)到R3(z)、R2(z)、R1(z)、R0(z),再到R4(z),循环得到5倍于输入速率的输出数据。上述的选择开关用简单的状态机即可以实现,难点是分支滤波器的设计。
分支滤波器也就是普通的FIR滤波器,为什么说它难设计呢?原因在于分支滤波器的个数较多,是影响资源占用的关键因素,因此必须尽可能地降低单个分支滤波器所需的资源。FIR滤波器的设计方法很多,但都是各有优缺点。以本设计中用到的8阶系数不对称的FIR滤波器为例,基于全并行的乘累加实现方法需8个乘法器和7个加法器,占用资源很大,它的优点就是速度快,单个时钟周期就能输出一个结果。基于DA(分布式算法)的FIR滤波器实现方法把传统的MAC重新分别求和,再由相应的二次幂加权并累加,B(输入数据的位宽)个时钟周期输出一个结果,在位宽B较小而阶数较大时优势比较明显,但所需的LUT较大。还有就是所用的位移寄存器实现起来也较费资源。基于单个MAC的FIR滤波器实现方法只需要一个乘法器和一个累加器,资源占用很少,但当阶数较大时对时钟速率要求很高,为输入数据速率的N(滤波器阶数)倍。
由于本模块对资源要求较高,而速率要求相对较低(192×8 kHz),且本设计使用了插值器的多相滤波结构,使系统先滤波后插值,故选择基于单MAC的FIR设计方法。其实现框图[3]如图4所示。
要实现的运算为C和X的内积,即
其中N=8,C为1×8的行矢量,X为8×1的列矢量,在FPGA内系数C和数据X均用BlOCKRAM实现,以节省所用的逻辑资源。不过对BLOCKRAM的读写控制要合理有序,既要保证到达乘法器的系数和数据具有对应性,又要保证在下一个新数到达前,完成一次内积,输出一个滤波结果。在乘法器后加入流水线寄存器是为了改善时序特性,减小时延。
3.CIC插值滤波器的FPGA实现
CIC滤波器即积分梳状滤波器[2],是指滤波器的单位冲激响应具有如下形式:
式中D为CIC滤波器的阶数,也是抽取或插值因子。
根据Z变换的定义,CIC滤波器的Z变换为
将Z=ejω带入上式,得到CIC滤波器的频率响应为
其幅频特性如图5所示。
其中(0~2π/D)区间为CIC滤波器的主瓣,而其它区间为旁瓣。由图可见随着频率的增大,旁瓣电平不断减小,其中第一旁瓣电平为
可见单级CIC滤波器的旁瓣电平是比较大的,只比主瓣低13.46 dB,这就意味着阻带衰减很差,一般难以满足实际系统的要求。为了降低旁瓣电平,需要采用多级CIC滤波器实现级联,则Q级CIC实现时的频率响应为
同理可求得Q级CIC滤波器的旁瓣抑制为
转贴于 中国论文下载中心http://www.studa.net为了满足系统对邻道干扰的要求,设计中采用了4级级联的CIC插值滤波器,插值因子D=40。由于CIC滤波器的系数全为1,设计中只需要加法器、减法器和延时单元,而无需乘法器,这对于提高实时性、降低占用资源大有益处。为了便于实现,同时又保证每一级都不溢出,加减法器的输入输出位数均采用全精度。此外,为了改善FPGA的时延特性,提高系统的时钟频率,设计采用了流水线技术,在各级积分器之间插入寄存器。
4.NCO的FPGA实现
图2中的NCO实际上是一个10.8M载波产生器。用38.4M的时钟来分别采样10.8M的余弦波和反正弦波得到离散值 cos (2π×10.8n/38.4)和-sin(2π×10.8n/38.4),其中n为非负整数,可以看出这些值具有周期性,周期为32。我们把cos(2π×10.8n/38.4)和-sin(2π×10.8n/38.4)(0≤n≤31)这32个数量化后存入ROM,用38.4M时钟把这些数循环读出,即得到所需的正交数字载波。
除了上述的模块外,还有乘法器和加法器模块,分别用来实现频谱搬移和I、Q的合并,它们与其他模块配合,共同完成整个调制和数字上变频。
本设计选用的FPGA芯片为xilinx的xc2s200e-6pq208,以下是ISE工具产生的布局和布线报告,为单路调制的资源占用情况:
四、仿真和实测结果分析
为了验证设计的正确性,编写testbench文件把modelsim的仿真数据保存下来,并用MATLAB对其进行频谱分析,得到其中的一些频谱图如图6~8所示(以π/4 DQPSK调制为例)。
经过一系列的仿真后,将程序下载到FPGA芯片中,进行硬件调试,然后利用PHS专用测试仪MT8801C对D/A输出的π/4 DQPSK调制模拟信号进行测试,得到如图9~10所示的结果。
五、结论
由以上的实测数据可以看出,本设计用了871个slice,完成整个调制和上变频过程,调制的矢量误差约0.7%,邻道干扰值约-60 dB,结果令人满意。另外,本设计是基于PHS系统的π/4 DQPSK调制,实际上只要改变里面的调制映射和成形滤波模块,就可以实现其它各种数字调制,满足不同通信系统的要求,具有通用性,是对软件无线电思想的一个小小尝试。