跳频通信具有较强的抗干扰、抗多径衰落、抗截获等能力,已广泛应用于军事、交通、商业等各个领域。频率合成器是跳频系统的心脏,直接影响到跳频信号的稳定性和产生频率的准确度。目前频率合成主要有三种方法:直接模拟合成法、锁相环合成法和直接数字合成法(DDS)。直接模拟合成法利用倍频(乘法)、分频(除法)、混频(加法与减法)及滤波,从单一或几个参考频率中产生多个所需的频率。该方法频率转换时间快(小于 100ns),但是体积大、功耗高,目前已基本不用。锁相环合成法通过锁相环完成频率的加、减、乘、除运算。该方法结构简单、便于集成,且频谱纯度高,目前使用比较广泛,但存在高分辨率和快转换速度之间的矛盾,一般只能用于大步进频率合成技术中。DDS 是近年来迅速发展起来的一种新的频率合成方法。这种方法简单可靠、控制方便,且具有很高的频率分辨率和转换速度,非常适合跳频通信的要求。


1、 DDS 的基本原理

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,结构简单、硬件资源占用率少,且产生频率相对准确。根据对所需跳频信号精确度要求的不同,合理配置参数,协调硬件资源与频率准确之间的矛盾关系,最终实现跳频系统的最优配置。