0 引言
跳频通信具有较强的抗干扰、抗多径衰落、抗截获等能力,已广泛应用于军事、交通、商业等各个领域。频率合成器是跳频系统的心脏,直接影响到跳频信号的稳定性和产生频率的准确度。目前频率合成主要有三种方法:直接模拟合成法、锁相环合成法和直接数字合成法(DDS)。直接模拟合成法利用倍频(乘法)、分频(除法)、混频(加法与减法)及滤波,从单一或几个参考频率中产生多个所需的频率。该方法频率转换时间快(小于100ns),但是体积大、功耗高,目前已基本不用。锁相环合成法通过锁相环完成频率的加、减、乘、除运算。该方法结构简单、便于集成,且频谱纯度高,目前使用比较广泛,但存在高分辨率和快转换速度之间的矛盾,一般只能用于大步进频率合成技术中。DDS是近年来迅速发展起来的一种新的频率合成方法。这种方法简单可靠、控制方便,且具有很高的频率分辨率和转换速度,非常适合跳频通信的要求。
1DDS的基本原理
DDS的原理如图1所示,包含相位累加器、波形存储器(ROM)、数模转换器(DAC)和低通滤波器4个部分。在参考时钟的驱动下,相位累加器对频率控制字N位进行累加,得到的相位码L作为ROM的地址,根据地址ROM输出相应幅度的波形码,然后经过DAC生成阶梯波形,经低通滤波器后得到所需要的连续波形。
理想单频信号可以表示为Y(t)=Usin(2πf0+θ0)。如果振幅U和初始相位θ0为一个常量,即不随时间变化,则输出频率由相位唯一确定f0=θ(t)/2πt。
以采样频率fc(Tc=1/fc)对单频信号进行抽样,则可得到相应的离散相位序列
其中△θ·n=2πf0/fc是连续两次采样之间的相位增量,控制△θ可以控制合成信号的频率。把整个周期的相位2π分割成q等份,每一份δ=2π/q为可选择的最小相位增量,得到最低频率输出fmin=δ/2πTc=fc/q,经过滤波后得到S(t)=cos(2πfct/q)。
如果每次相位的增量选择为δ的R倍,即可得到信号频率f0=Rδ/2πTc=Rfc/q,相应得到的模拟信号为S(t)=cos(2πfcR/q)。
由以上原理可知,DDS输出信号的频率与参考时钟频率及控制字之间的关系为f0=K·fc/2N,式中f0为DDS输出信号的频率,K为频率控制字,fc为参考时钟频率,N为相位累加器的位数。在波形存储器中写入2N个正弦波数据,每个数据有D位。不同的频率控制字导致相位累加器的不同相位增量,从而使波形存储器输出的正弦波的频率不同。
2 基于DDS的跳频信号产生核心模块的设计
图2为基于DDS跳频信号产生的总体设计。
如图2所示,整个系统由两个部分组成,即逻辑地址控制单元和DDS单元。其中DDS单元又包括相位累加器和ROM查询表。逻辑地址控制单元用来产生不同的频率控制字,改变相位累加器的累加值。DDS单元依据频率控制字产生相应频率的信号。
2.1 逻辑地址控制单元
在本设计中,逻辑地址控制单元由一个6级移位寄存器和6位存储器构成。系统时钟clk经过64分频后得到时钟clk_64,将clk_64作为逻辑地址控制单元的驱动时钟。当一个时钟clk_64上升沿到来时,r(1:5)=r(0:4)同时。这样移位寄存器中的状态将改变,并存入存储器中,得到频率控制字k(5:0)。
2.2 DDS单元
DDS单元为本设计的核心,由相位累加器和ROM查询表两部分组成。在频率控制字(5:0)的控制下产生相应频率的信号。
2.2.1 相位累加器
相位累加器是DDS的重要的组成部分。被用来实现相位的累加,并将其累加结果存储。如果相位累加器的初值为φ0,则经过一个时钟周期后相位累加器值为φ1,即φ1=φ0+k,其中k为频率控制字。当经过n个时钟周期后φn=φ0+nk。可见φn为一等差数列。
在本文中基于FPGA的相位累加器设计如图2所示。从图2中可以看出,相位累加器由一个数字全加器和一个数字存储器构成。为了提高DDS输出频率的分辨率,一般要求n足够大,这样就要求ROM中存储大量数据。但是考虑到硬件资源有限,所以在相位累加器中采用了截短处理,这样既可保证较小的频率分辨率,又节省了硬件资源。
2.2.2 ROM查询表
ROM中所存储的数据是数字波形的幅值,在一个系统时钟周期内,相位累加器将输出一个位宽为L的序列对其进行寻址,经过低通滤波器后得到所需要的波形。若相位累加器的输出序列的位宽L=16,ROM中存储的数据位宽为M=16,可以计算出ROM的存储量为2L×M=1048576bits,虽然一块FPGA开发芯片上提供了大量的ROM,可以显著提高输出信号频率精确度和信号幅值准确性,但这样会使成本提高、功耗增大。
在保证输出信号具有良好频率分辨率的前提下,以产生正弦信号为例,考虑到基于DDS产生的正弦波具有周期性,因此本设计的ROM中存储1/4周期正弦波。如图2所示为存储1/4周期正弦波形ROM查询表设计。利用正弦信号的对称性,通过改变ROM存储器地址及对其输出端控制,最终得到整周期正弦信号。
3 仿真结果及分析
3.1 DDS单元仿真结果及分析
3.1.1 仿真参数
为分析本设计中DDS所产生频率的精确度,现使用Xilinx ISE 8.11中DDS IP Core进行对比,在同等仿真参数条件下,分别对本设计的DDS和DDS IP Core进行仿真测试。表1中分别给出基于本设计DDS和DDS IP Core的仿真参数。
3.1.2 仿真结果及分析
如图3所示,clk是系统时钟,new_dds_sine为在频率控制字k=16时基于本设计DDS产生的频率为1.5625MHz(理论值)的正弦波,dds_ip_ core_sine为基于DDS IP Core产生的频率为1.5625MHz(理论值)的正弦波。
图4给出在k为1~16时,本设计的DDS所产生信号的频率和DDS IP Core所产生信号的频率与理论频率值的对比。从图中可以看出,本设计DDS所产生的信号频率与理论频率值比较接近,且本设计DDS中ROM查询表中存储的点数少,从硬件的角度考虑更加节省资源,能耗更低。
3.2 基于FPGA跳频信号仿真结果
图2中给出了基于本设计DDS跳频信号生成的总体设计图。共由四部分组成:系统时钟、分频器、逻辑地址控制单元及DDS单元。跳频信号的产生是通过随机地改变频率控制字来达到改变信号的输出频率,图5给出了系统工作流程图。
如图5所示,系统时钟clk经过64分频得到clk_64。逻辑控制单元由6级移位寄存器构成。在每个clk_64上升沿到来时,逻辑控制单元将产生一个6位的频率控制字(k)。当DDS使能信号ce为高电平时,DDS将停止工作。当ce为低电平时,在clk上升沿时DDS被触发,在当前状态下k的控制下,得到相应地址所对应的信号幅值。当k没有变化时,DDS输出正弦信号的频率没有任何变化,在一个clk_64上升沿到来时,k发生变化,从而使得DDS输出的正弦信号的频率发生变化。当复位信号reset为高电平时,逻辑地址控制单元和DDS单元同时回到初始状态,并保持不变,输出端dds_FH输出一直为零。当reset变为低电平时,在一个clk上升沿时系统开始工作。
为方便观察仿真结果,本设计采用ModelSim SE 6.1d作为仿真波形测试软件。通过3.1节分析,由于本设计的DDS所产生的频率性能稳定,且跳频信号的误差并不累加。因此本节只给出仿真结果,不做其性能分析。图6为基于DDS的跳频信号,图6给出图5中各个控制信号的仿真结果。表2中给出图6中不同频率控制字所对应的正弦信号的频率与理论值的对比,可以看出本设计的DDS与理论值的误差较小。由于ROM中存储的点数较少,更加节省资源。
4 结束语
在FPGA硬件平台下设计基于DDS的跳频信号产生系统,不仅实现了大量数据快速运算,提高了仿真的速度,而且可以灵活、重复地对系统的参数进行优化配置,便于提高跳频系统的性能。本文所设计的DDS,结构简单、硬件资源占用率少,且产生频率相对准确。根据对所需跳频信号精确度要求的不同,合理配置参数,协调硬件资源与频率准确之间的矛盾关系,最终实现跳频系统的最优配置。