基于FPGA的直接数字频率合成器实现 | |
作者:聂 兵,谢兆鸿 时间:2006-09-15 来源: | |
摘 要:首先描述了直接数字频率合成器(DDS) 的原理,然后完成了利用FPGA 实现DDS 的一个实例并给出了仿真结果。 关键词:直接数字频率合成;FPGA;波形产生 引言 频率合成器是通信系统不可或缺的重要组成部分,为通信系统提供稳定、精确的频率工作点。直接数字频率合成技术(Directed - Digital Synthesis ,DDS)具有频率分辨率高、频率变化速度快、相位误差小等特点,因而在通信和雷达系统中得到广泛应用。随着电子技术的发展, 现场可编程门阵列( FieldProgrammable Gate Array ,FPGA) 得到快速发展,应用日益广泛。本文基于DDS的原理,利用Altera公司的FPGA 芯片FLEX10K系列,完成了一个DDS 系统的设计。 设计原理 DDS的原理如图1所示。图中fc为时钟频率,f0为输出频率,N 为相位累加器的字长,m可以选择为N的一部分高位或全部位数。相位累加器根据频率控制字M,自动累加产生存储器ROM 的地址,存储器存储所需产生波形的一个相位周期的幅度值,如存储正弦信号0 ~2π 范围内的幅度值, 则ROM地址范围0~1/2m与相位0~2π相对应,由ROM地址以查表方式,得到对应相位的信号幅度值,经过数模转换,就可以得到一定频率的信号输出波形,低通滤波器对输出的信号波形进行平滑处理,滤除杂波和谐波。由于控制字M 经过2N/M次累加,相位累加器满量溢出,完成一个周期运算,所以输出频率f0 =M/2N fc ,理论上最小频率分辨率Δf =1/2N fc 。采用DDS方法实现频率合成,其优点是: ①频率的分辨率高:频率的分辨率由时钟频率和累加器字长N决定,选择合适的时钟频率和足够大的N ,理论上可以得到相应分辨精度,这是传统方法难以实现的。 ②频率变换速度快:DDS 的频率变换速度取决于滤波器的带宽,影响因素有D/ A 转换和数字处理产生的时延,由于DDS中不需要相位反馈控制器,因此,其切换速度明显优于PLL 。 ③相位误差小:DDS 的相位改变是线性过程,其误差主要取决于时钟的相位特性。 图1 DDS 原理图 一个DDS 的FPGA 实现实例 Altera的FLEX 10K系列器件是业界第一块嵌入式可编程逻辑器件( Programming Logic Device ,PLD) ,它基于可重复配置的CMOS SRAM工艺,为柔性逻辑元素阵列架构。每一个FLEX 10K系列的器件包含一个嵌入式阵列和一个逻辑阵列。嵌入式阵列由一系列的嵌入式模块( Embedded Array Block ,EAB) 组成,当实现存储器的功能时,每一个EAB提供2048比特的存储空间,可以用来实现RAM、ROM、双口RAM及FIFO 的功能。嵌入式阵列还可用来实现复杂的逻辑功能,如数字信号处理器、微控制器、宽数据通道的交换和数据转换功能等。使用逻辑阵列可以实现通用逻辑,如计数器、加法器、状态机和多路复用器。通过联合使用嵌入式阵列和逻辑阵列,使得设计者可以在单个芯片上实现整个系统的功能。 这里DDS 的实现采用FLEX 10K系列的FLEX10K20RC240 - 3 ,其实现框图如图2 ,包括一个32 位的累加器,其8 个最高有效位作为正弦函数查找表SIN - ROM的地址,从而获得所需要的正弦函数值。 图2 DDS 的FPGA实现实例 累加器acc和ROM均在一片FLEX 10K20RC240- 3上以参数化模块库(Library of ParameterizedModules ,LPM) 器件的形式实现,其实体定义如下: ENTITYDSS- Implement IS GENERIC(WIDTH : INTEGER : = 32) ; - Bit width PORT (M : IN STD-LOGIC-VECTOR (WIDTH - 1 DOWNTO 0) ; - - Control word clk : IN STD-LOGIC; —Clock acc , sin :OUT STD-LOGIC-VECTOR (7 DOWNTO 0) ) ; - - MSB of acc and sine func. END DSS- Implement ; 下面是累加器功能实现的主要部分: ARCHITECTURE fun-gen OF DSS- Implement IS SIGNAL s , acc32 : std-logic-vector (WIDTH - 1 DOWNTO 0) ; SIGNAL msbs : std-logic-vector ( 7 DOWNTO 0) ; - - Auxiliary vectors select1 :PROCESS(acc32) VARIABLE i : INTEGER ; BEGIN FOR i IN 7 DOWNTO 0 LOOP msbs (i) < = acc32 (31 - 7 + i) ; END LOOP ; END PROCESS select1 ; acc < = msbs ; END fun-gen ; 如设置M = 715827883 (232/ 6) ,得到的输出波形周期就是6 个时钟周期长。通过MaxPlusII 软件仿真,得到仿真结果如图3所示(设定时钟周期为25 ns) 。从图中可以看出获得的6 分频正弦离散序列。 图3 DDS 的仿真结果 结束语 本文应用DDS原理,利用FPGA,以查表方式得到了所需的正弦离散序列,配合D/A变换和低通滤波器,就可构成一个DDS系统。若需其它形式的波形,可在ROM中存储其它形式波形即可。 |
标签: 信号完整性;电磁干扰;波形分析器 |
发表评论 |
文章评论(0条评论)
登录后参与讨论