基于FPGA 的并行 DDS结构设计

摘 要:频率合成器称为电子系统的“心脏”,直接数字频率合成器(DDS)相对于传统的频率合成技术具有很明显的优点。然而,存在着输出频率有限、输出杂散严重的问题。用 FPGA 实现 DDS受制于芯片本身运行速度和功耗的影响,因此,基于 FPGA 实现高速、低功耗的 DDS具有重要的意义。主要设计了一种并行 DDS结构。相位累加器采用四路并行,并在每一路采用两级流水线结构提高寻址速度。通过查找表与类似于坐标旋转数字计算(CORDIC)算法的角度旋转方法相结合实现相幅转换。最后,采用多相结构实现四路并行输出,得到约-120dB的无杂散动态范围(SFDR)的正交波形。四路并行结构相对于单路 DDS,输出信号频谱带宽提高了四倍。

关键词:并行结构;直接数字频率合成;坐标旋转数字计算方法;高速

0 引 言

        直接数字频率合成器(DDS)是 Tierney等[1] 于1971年提出的一种全新的频率合成技术,它相对传统技术具有频率分辨率高、频率转换时间快、易于合成复杂波形和相位连续等优点。随着技术的不断发展,它在雷达、通信、电子仪表仪器等领域具有广泛的应用。然而,人们渐渐发现这种DDS 结构最大的缺点就是不能得到很高的输出频率。 

        由奈奎斯特采样定律可知,输出频率应小于采样频率的一半,而在实际工程中输出频率只有其40%。 FPGA作为一种可编程的数字集成电路,具有开发周期短、功能强、可靠性高和保密性好等优点,因此用FPGA实现 DDS具有更明显的优势。本文利用 FPGA实现四路并行 DDS的结构,在相位累加器中结合了流水线结构,相幅转换过程中将相位分为粗调和细调两个部分,粗调仍用 ROM 实现,细调则利用角度旋转的方法迭代。这样,在提高输出频率、保证无杂散动态范围的同时也扩大了频谱宽度。

        1 基本原理 DDS具体结构如图1所示,包括相位累加器 (PA)、相幅转化器(SCMF)、数模转换器(DAC)和低通滤波器(LPF)。N 位相位累加器是由加法器和寄存器组成,频率控制字 K 控制每次加法器步长,当其和大于2N 时溢出,完成一个周期。相幅转换器最初是利用查找表(ROM)来实现,即将一个周期的 正 弦 或 者 余 弦 函 数 采 样 2N 个 点 存 放 在 ROM 中,并量化为 W 位的幅度值,然后用相位累加器作为地址控制输出。系统时钟为fclk,对应时间为1/fclk =Tclk,完成一个周期所需时间 T0 = Tclk ×2N/K,所 对 应 系 统 输 出 频 率 f0 =fclk × K/2N 。可以看出当K=1时,得到最小输出频率即频率分辨率fmin =fclk/2N ,由此可见当 N 很大时可以得到非常高的频率分辨率。考虑到实际硬件条件,一般采用相位截断的方法,只取相位高 M 位作为 ROM 的地址,从而减小 ROM 的深度。所得到的数字信号通过 DAC,其类似于零阶保持电路, 将数字信号转化为模拟信号。最后通过低通滤波器滤掉杂散,得到想要的波形。

        2 相位累加器运行高速系统就必须要用高速的相位累加器寻址。目前提高加法器运算速度的主要途径[2]包括: 1)加快进位的产生,提高进位传递速度,缩减进位传播 途 径;2)降 低 进 位 的 产 生,提 高 加 法 器运行速 度;3)根 据 异 步 电 路 自 定 时 的 特 点,将加 法 器 运 算 速 度 从 最 坏 延 时 提 高 到 平 均 延 迟。已 有 很 多 文 献 根 据 这 3 种 方 法 设 计 出 高 速 加 法器。如要用 一 个 常 规 加 法 器 实 现 N =32bit的相位累加器,加法器要产生一次进位需要传播的途径太长。虽然节约了硬件,但是运行速度太慢。流水线结构是一种很常见的提高加法器速度的方法,它主要是利用缩减进位传播途径实现高速,其 缺点是增加了硬件的消耗。例如将32位加法器可以分解为4个8位或者8个4位的加法器级联。为了增加加法器的吞吐量,并行的相位累加器应运而生。图2中采用4个加法器并行运算,能提高4 倍的运算速度。 

        式中,ϕ(n)为第n 次相位累加器输出,K 为频率控制字,这里假设32位。ϕ(n+2)和ϕ(n+4)可以在加ϕ(n)之前,分别将K 左移一位和左移两位得到。ϕ(n+3)就直接根据ϕ(n+2)加上 K 得到。每一路时钟为多路选择器工作时钟的四分之一。然而,这种结构相对于一个加法器增加了4倍的面积和功耗,其最大运行速度也仅仅为一个加法器的4倍。

        为了得到更高的运行速度,可以将流水线和并行两种结构相结合得到 PPA(PipelinedParallel Accumulator)结构[3]。即将32位加法器分解为两个16位的上图结构相级联,这样相对于单单的并行加法器每一路减小了一半的进位传播途径,从而进一步提高加法器速度。具体结构如图3所示, 频率控制字K 低16位在第一级计算得到四路相位的低16位,并将每一路产生的进位传递给对应的高16位。频率控制字 K 高16位在第二级相对于第一级延迟一个周期后,四路同时运算得到四路相位的高16位。最后将高低位合并得到四路32位的相位,每一路相位值之间相差一个相位值 K,从而为后面并行的 DDS提供了相位偏移。 

3 相幅转换结构传统

DDS结构中 ROM 对运行速度和芯片功耗有很大的影响,所以在输出频谱没有较大影响的情况下应尽量减小 ROM 的容量。近几十年人们提出很多方法,最常见的方法是利用正弦函数的对称性,只将四分之一的波形幅 度 存 在 ROM 中,然后牺牲地址高两位来映射整个周期的波形。具体包括: 1)角度 分 解,将 相 位 分 解 为 粗 相 位 和 细 相位。如将相位A 分为高相位C 和低相位F 两部分: sinA =sin(C+F)=sinC·cosF+sinF·cosC ≈ sinC+sinF·cosC (2) 然后将两项分别放入两个ROM 中,即用粗调和细调两 个 小 ROM 来 代 替 原 来 的 一 个 大 容 量 ROM。 2)角 度 转 换, 最 常 见 的 方 法 就 是 应 用 CORDIC算法,如采用 ROM 与 CORDIC 相结合的方法[4]。 3)幅度压缩,如ε(x)=Asin( π 2 x)-x,将误差存入 ROM 中,然后用加法器再加上对应相位, 从而达到减小 ROM 的目的。 4)多项式近似,其中包括一阶和高阶近似,如泰勒公式展开。本文相幅转换将相位分为粗调和细调两个部分,粗调部分仍然采用 ROM 的方式实现,细调部分应用类似于 CORDIC算法的角度旋转结构[5]。

3.1 角度旋转算法

        根 据 正 交 信 号 的 性 质 可 知,正 弦 函 数 在 [0,π/4]的幅度值等于余弦函数在[π/4,π/2]的幅度值。因此,只需要存储第一卦限θ=[0,π/4]的幅度值,即八分之一个周期。然后利用截断后相位高三位将其映射到其他几个卦限,得到一个周期 波形,具体实现如表1所示。表中地址取反,是当 MSB[3]为 1 时,ROM 地址取其反码。表中负数是根据映射规则在八分之一周期的幅度值前加上符号位。 

将低相位重新编码后,变成有符号的数。因此在后面的运算中应作为有符号数处理,同时相位 MSB[3]控制其是否取反码。将 K 乘以XM ,YM 一起存进 ROM 中。式(6)可改写为

3.3 粗调部分

        由于相位累加器输出相位局限于[0,π/4]内, 对于32位的相位控制字K 而言,0和π/4分别相当于0和4294967295,所以粗细相位都应乘以π/4。为了避免浮点运算,这里相位没有除以232。同时由式(6)知道 K 是独立于t的常数,所以也可将直接乘以 XM 和YM 存入 ROM 中。细相位乘以π/4 在其他文献中大都采用其泰勒展开式,通过移位 相加得到。本文为了减小延迟和芯片功耗,根据关系式先用 XM 和YM 乘以π/4分别得到XR 和YR, 并把数值存入另外两个 ROM 中。由于相对于存放XM ,YM 的两个ROM,XR 和YR 量化位数更少, 其 ROM 容量更小。具体关系由式(10)给出: 

4 总体框架与仿真本文采用四路 并 行 的 DDS结 构,相 位 累 加器采用图3的 PPA 结 构,每 一 路 相 幅 转 换 采 用图4结构。每一路频率控制字相当于4K,相邻两路相位控制字差为 K。以单路工作时钟的4倍时钟实现并串转换,相当于四路数据相互内插。

选用 Xilinx公司的 XC6VLX240T 芯片仿真, 频率控制字K 为32位,相位截断取高20位。存放 XM 和YM 的ROM量化位数为17bit,XR 和YR 量化位数为7bit,输出信号位数为16位。XST 综合后报告显示,每一路 最 大 工 作 时 钟 可 达 236.351 MHz。这里 系 统 输 入 时 钟 采 用 100 MHz,利 用 PLL倍频设置每一路 DDS工作时钟200MHz,系统总的工作时钟为400MHz,由于 FPGA 将数据传给 DAC,因 此 这 里 采 用 原 语 OSERDES1 的 ODDR模式。可知频率分辨率约为0.186Hz。由前面的分析可知,当工作时钟为200MHz时输出频率 最 大 为 80 MHz。图 6 和 图 7 分 别 给 出 用 Modelsim 仿真频率为200MHz和25MHz的I、Q 信号。

5 结束语要满足高速 DDS结构,相位累加器要给出高速的寻址,同时 ROM 不能太大。流水线和并行加法器都能提高一定的运行速度,但是又各自存在着缺点。将两种结构结合在一起,使得在速度和资源消耗方面做出了很好的平衡。减小 ROM,虽然能提高一定速度和减小功耗,但是输出波形质量不能得到保证。因此,结合类似 CORDIC 算法迭代能得到高精度波形的特性,在提高速度的同时兼 顾 了 波 形 质 量。然 而,它 又 不 同 于 传 统 的 CORDIC算法,每次都需要根据剩余角度判断下一次的旋转方向,从而影响运行速度。传统结构中对于17位的相位寻址,需要 ROM 深度为217。而采用本文中的方法仅需27,大大减小了 ROM 容量,从而提高了速度和减小了功耗。20位的相位寻址使得具有约-120dBc的无杂散动态范围。当然在实际硬件实现的电路中还会存在相位噪声等 因素[6]影响波形性能。并行的 DDS是通过提高采样频率,增大了输出信号的频谱,同时减小了总功 耗,从而在雷达系统中具有广泛的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值