基于FPGA的正交数控振荡器(NCO)的设计与实现

分享到:
点击量: 218102

  摘要: 在研究数控振荡器NCO 工作原理的基础上,通过分析对比几种不同的NCO 设计方法,采用了算法简单、节省资源的基于ROM 查找表的设计方法。针对正交数控振荡器NCO 的主要部件正余弦存储表、可变模计数器进行了算法设计和电路设计,并在Altera 公司的FPGA 上进行了验证,波形仿真结果表明了电路设计的正确性。采用查找表的方法可以有效提高系统功能的可扩展性和系统的可集成性,使得NCO 功能模块可以通过配置存储表、频率控制字来满足多种应用场合下的NCO 设计需要,可以广泛地应用于各种现代通信系统中。

  随着数字通信技术的飞速发展,软件无线电的应用愈加的广泛, 而影响软件无线电性能的关键器件数控振荡器NCO(Numerical CONtrolled Oscillator) 的设计至关重要;NCO的设计采用直接数字频率合成(DDS)技术;1971 年3 月美国学者J.Tierncy、C.M.Rader 和B.Gold **提出了直接数字频率合成(DDS)技术。这是一种从相位概念出发直接合成所需要的波形的新的全数字频率合成技术。同传统的频率合成技术相比,DDS 技术具有频率精度高、转换时间短、频谱纯度高以及频率相位易编程、输出的频率稳定度与系统的时钟稳定度相同等一系列优点, 广泛应用于现代各种通信系统中,包括数字上下变频、中频变换、频率合成以及扩频系统和各种频率相位数字调制解调系统中。

  在软件无线电及通信领域, 经常使用正交的数字信号;针对此类应用, 本文给出了一种基于FPGA 的正交NCO 设计方法,可以实现正交的、连续相位、高性能、高精度、可重利用的数控振荡器,适合于多种应用场景的片上系统的设计。

  1 NCO 实现原理

  直接数字频率合成(DDS)技术是一种全数字技术,同传统的频率合成技术相比,DDS 技术具有多项优点: 频率切换时间短、频率分辨率高、相位变化连续、容易实现对输出信号的多种调制等。

  DDS 的原理框图如图1 所示, 其实质是以基准频率源(系统时钟)对相位进行等间隔的采样。由图1 可见,DDS 由相位累加器和波形存储器(ROM 查询表)构成的数控振荡器(NCO)、数模转换器(DAC)以及低通滤波器(LPF)3 部分组成。而DDS 的核心是NCO 的设计与实现,NCO 一般是由相位累加器和正余弦查找表两部分组成,其中相位累加器的设计较简单,故设计NCO 的关键是设计正、余弦函数发生器。

  实现函数发生器的方法为查表法(LUT),对于一个相位位数为L,输出信号幅度位数为M 的NCO,所需查找表的大小为M×2L。

图1 DDS 基本原理框图

  在每一个时钟周期,L 位相位累加器与其反馈值进行累加,其结果的高N 位作为ROM 查询表的地址,然后从ROM中读出相应的幅度值送到DAC。低通滤波器LPF 用于滤除DAC 输出中的高次谐波。因此通过改变频率控制字K 就可以改变输出频率fout。容易得到输出频率fout与频率控制字K 的关系为:fout=Kfc /2L,其中fc为相位累加器的时钟频率,L 为相位累加器的位数。定义当K=1 为系统频率分辨率,即f=fc /2L

  2 NCO 几种常见设计方法

  常见的NCO 实现的方法目前主要有计算法、CORDIC(Coordinated RotATIon Digital Computer)算法和查表法等。

  计算法是一种以软件编程的方式通过实时计算产生正弦波样本, 该方法耗时多且只能产生频率相对较低的正弦波,而需要产生高速的正交信号时,用此方法不能很好的满足要求。

  CORDIC 算法即坐标旋转数字计算方法, 其基本思想是用一系列固定角度的不断偏摆逼近所需旋转的角度,实现包括乘除、平方根、三角函数、向量旋转(即复数乘法) 以及指数运算,该算法往往需要通过乘法器和查找表才能实现多种超越函数的计算,这会导致硬件电路实现复杂、运算速度降低,此外它能够计算的角度范围也有限,故CORDIC 算法在实际使用时有较大的限制条件。

  在实际应用中一般采用*有效、*简单的查表法,即事先根据各个NCO 正弦波相位计算好相位的正弦值, 并以相位角度作为地址把该相位的正弦值数据存储在表中,然后通过相位累加产生地址信息读取当前时刻的相位值在表中对应的正弦值,从而产生所需频率的正弦波;同时由于正余弦波形的对称性,只需要存储部分数据即可完成全相位的数值输出。这种实现方法,设计简单、运算速度较高,可以很好的满足在数字变频、扩频、调制解调等多种场合的要求。

  3 正交NCO 的查找表实现方法

  基于FPGA 的正交NCO 设计原理框图如图2 所示,主要由3 部分组成: 可变模计数器、正余弦查找表和输出单元3个模块组成。

图2 NCO 的设计原理框图