一种高效实用直接数字频率合成器设计和实现

时间:2007-05-27
1 引 言

频率控制是现代通信技术中很重要的一环,能够获得宽带(频率控制范围宽)、快速(转换时间快)、精细(分辨率高)、杂散小(频谱纯)的频率控制信号一直是通信领域中的一个重要研究内容,。直接数字频率合成(DDS)技术是从相位概念出发直接合成所需波形的一种新的频率合成技术,具有频率分辨率高、频率变换速度快、相位可连续线性变化等优点,在基于数字信号处理的现代通信频率控制中已被广泛采用。

目前,各大芯片制造商相继推出采用先进CMOS工艺生产的高性能和多功能的专用DDS芯片,但是在某些场合,专用DDS芯片在控制方式、置频速率等方面与系统的要求差距很大。现场可编程门阵列(FPGA)器件具有工作速度快、集成度高、可靠性高和现场可编程的优点,可以考虑利用他来设计符合自己需要的DDS电路就是一个很好的解决方法。

本文基于DDS的基本原理和正弦函数的对称性,充分利用Altera公司的FPGA芯片FLEXl0系列器件中的RAM结构完成了一个DDS系统的设计,设计完成后可得到频率和初始相位可以任意改变的正弦模拟信号。

2 DDS电路的原理

DDS的基本原理是:对于正弦信号f(t)=sin(2πf0t),沿其相位轴方向,以等量的相位间隔对其进行相位/幅值取样,得到该信号的抽样序列,并将其用M位二进制数表示,当频率控制字改变时,相位增量发生变化,抽样值的周期随之而变,从而合成所需的频率。抽样序列通过数/模转换器形成量化的正弦波,通过低通滤波器平滑,生成标准的正弦波。

基于上述原理,这里给出一个基本的DDS电路工作原理框图,如图1所示。

在该DDS电路组成上,包括基准时钟、频率累加器、相位累加器、幅度/相位转换电路、D/A转换器和低通滤波器。频率累加器对输入信号进行累加运算,产生频率控制数据,相位累加器对代表频率的M位二进制码进行累加运算,产生后面波形存储器所需的查表地址,幅度/相位转换电路实际上就是一个波形存储器,供查表使用,读出的数据送人D/A转换器和低通滤波器。

该电路的具体工作过程如下:在时钟脉冲fclk的控制下,M位频率累加器将初始相位φ0与频率控制数据K相加,把相加后的结果送至相位累加器的输人端,相位累加器一方面将在上一时钟周期作用后产生的新的相位数据反馈到自身的输入端,在下一个时钟的作用下继续与频率控制数据K相加,另一方面将这个值作为取样地址值送人幅度/相位转换电路(波形存储器),幅度/相位转换电路根据这个地址值输出相应的N位二进制波形数据,经D/A转换器和低通滤波器将波形数据转换成所需要的模拟波形。

相位累加器在基准时钟的作用下,进行线性相位累加,当相位累加器累加满量时就会产生溢出,这样就完成了一个周期,这个周期就是DDS信号的频率周期。

3 利用FPGA设计DDS

FLEXl0K是Altera公司1995年推出的产品系列,不仅在芯片上集成了1万个门,还首次集成了嵌入式存储器块,可为用户提供多达3kX8b的片内RAM,以满足存储器密集型应用的需要。FLEXIOK系列器件具有如下特点:

高密度阵列嵌入式编程逻辑器件系列;0.5μm CMOS SRAM工艺制造;在线可编程;所有I/O端口有输入输出寄存器;快速有效地实现特大规模电路,包括存储器、DSP、专用算术逻辑、微处理器和微控制器等;专用进位链路,可实现快速加法器和计数器功能;专用级联链路,有效地实现高速多输入功能;内部三态总线,支持系统集成;支持多时钟系统的低时滞要求;具有JTAG边界扫描测试内建电路;3.3V或5.0V工作模式;由Altera公司的MAXPLUSII开发系统提供软件支持。

依据上述DDS电路的工作原理,在对称性的基础上,采用FLEXl0K器件实现的DDS电路如图3所示。

DDS的输出信号频率f0与/ffclk时钟频率之间的关系满足:

/, 尺/
/o=;n/db

因此,DDS的频率分辨率厶fmin可达;

厶fmin=

可见,设定相位累加器的位数、频率控制字和基准时钟的值,就可以产生任意频率的输出信号。

考虑到正弦函数的对称性:在[0,2π]范围内,正弦函数以χ=π为奇对称,在[0,π]内,以χ=π/2为轴对称。因此,可以在正弦函数表中只储存角度在[0,π/2]的函数值,并且这些值都是正值。这样,通过一个正弦码表的前1/4周期就可以经过适当变换得到正弦和余弦的整个周期码表,节省了将近3/4的资源,非常可观。利用正弦函数的对称性,产生sin(27πf0t)的电路图如图2所示。

图3中,phase为初始相位控制宇,clk0为系统时钟,en为使能引脚,reset为复位引脚,输入端尺为频率控制字,addr[9..o]为相位累加器的输出信号,其低8b实际上就是rom8×8的输入地址。addr8为他的次高位,控制对输入地址的处理。当他为ˊ0ˊ,时,对输入地址addr[7..0]不做任何处理,当他为ˊ1ˊ,时,对addr[7..0]取反。addr9控制终输出数据的符号,当他为ˊ0ˊ,时,输出的数据就是ROM中的数据,当他为ˊ1ˊ,时,对从ROM中出来的数据取反,sin data[8..0]为输出的正弦离散序列值。

模块ADDER 9×9为10相位累加器,用来实现合成正弦波的相位。模块SUM 9×9为10b字长的相位累加器,是DDS的,他的VHDL语言实现的主要部分如下:

architecture fun Of sum99 is signal temp;std_logic_vector(9 downto 0);
begin
process(elk,en,reset)
begin
if reset:ˊ1ˊthen
temp<=〞000000000〞;
else if clk'event and clk=ˊ1ˊthen
if en=ˊ1ˊthen
temp<=temp+k;
end if;
end if;
end if;
out1<=temp;
end process;
end fun;

模块rom8×8为被调用的LPM_ROM元件,利用他在FLEXIOK器件的内部RAM中存放一张28×8b的正弦表。表中的数据是通过在Matlab语言环境下生成﹒mif文件后得到的。由于存储表的值都为正值,查询表的输出数据还要加上符号位才是DDS的终输出数据,输出数据的位数也就增加了1位,变为9位,提高了输出结果的量化。当然,表中也可存放其他形式的波形,从而实现任意波形的产生。模块ADDR_PROC实现地址的取反,模块OUT_DATA实现对从正弦表中出来的数据进行符号扩展和取反的处理。和模块SUM9X9一样,其他所有模块的功能都是用VHDL语言来实现的。

4 仿真结果

在clk0的周期为20ns、初相φ为000H、频率控制字K为002H时,通过MAXPLUS II软件进行仿真,得到图3中各数据之间的时序关系,如图4所示。仿真结果生成*.tbl文件后,利用Matlab软件,将终的数瞩绘制成波形,如图5所示。图中的毛刺对应于仿真波形的暂态过程,通过D/A转换器和低通滤波后就可以得到稳定的模拟正弦信号。

5 结 语

本文根据DDS的基本原理,结合正弦函数的对称性,合成出了正弦离散序列,配以D/A转换器和低通滤波器就可以构成一个DDS系统。

 

  
上一篇:软件无线电及其实现的技术课题
下一篇:蓝牙安全机制在无线耳机中的应用

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料