基于FPGA的数控振荡器设计*

2010-04-26 05:07冯延青
舰船电子工程 2010年4期
关键词:正弦波寄存器正弦

袁 林 徐 慨 冯延青

(海军工程大学电子工程学院 武汉 430033)

1 引言

随着微电子技术和数字集成技术的发展以及各种新型器件的不断涌现,数控振荡器已成为数字通信中调制解调必不可少的部分,同时也是DDS(Direct Digital Synthesizers)的核心。它可根据需要产生各种波形,如三角波﹑方波﹑锯齿波等。所产生的正弦和余弦信号可以用做 FSK、BPSK、QPSK等多种调制方式的载波。它被广泛应用于电子测量、调频通信、电子对抗等领域。本文根据NCO的基本原理,利用 QuartusⅡ软件实现了NCO的功能仿真和时序仿真,仿真结果表明设计的正确性。它的应用不仅使得数字电路系统的设计非常方便,节省了成本、并且还大大缩短了开发时间。

2 NCO的基本原理

数控振荡器主要是由相位累加器和波形数据产生器两部分组成。其结构图如图1所示。

图1 NCO结构框图

1)相位累加器是NCO的核心,用于实现相位的累加并存储累加结果。它由两个N位加法器和一个N位相位寄存器组成。工作过程如下:当一个时钟脉冲到来时,加法器将上个时钟周期内寄存器所寄存的值与输入参数K相加,其和存入寄存器作为相位加法器的当前相位值输出,若当前相位加法器的值为Σn,经过一个时钟周期后变为Σn+1,则满足[1]:

其中,Σ0为相位加法器的初始相位值。相位寄存器输出值与相位控制字相加,其和作为 ROM的寻址地址。显然,K就是一个时钟周期内的相位增量。当寄存器存满时,产生一次溢出,将整个相位累加器置零,从而完成一个周期性的动作。

2)波形数据产生器即正弦查找表(LUT)实际上是一个存储器,相位寄存器的输出与相位控制字相加的结果作为其地址[2]。它主要的功能是存储一个整周期正弦波的所有采样点的幅值数据,从而构成一个查找表。其内部存有一个完整周期正弦波的数字幅度信息,每个查找表的地址对应着正弦波中0°~360°范围的一个相位点。查找表把输入的地址信息映射成正(余)弦幅度信号。每一个时钟到来时,查找表根据相位累加器结果读取正弦波的采样数据,然后送出正弦波数据。总的来说,波形数据发生器的作用是根据相位信息输出该相位所对应的采样点的数据。

形成ROM表主要有两种方法:用逻辑单元实现ROM表和用LPM实现ROM[3]。用逻辑单元实现ROM表的方法志适用于简单而且变化缓慢的波形,例如方波和三角波;而对于数据点较多、手动计算困难的波形如正弦波则用LPM实现ROM的方法较为方便。

3 NCO的设计

根据NCO的基本原理,本文设计的相位累加器的字长N取16,截取高10位作为寻址地址,频率控制字K取十六进制数h1000,故产生的正弦序列为16倍过采样,即一个正弦周期采集16个样点。经程序编译后生成的相位累加器的寄存器传输级视图(RT L-Register Transfer Level)如图2所示。

图2 相位累加器的寄存器传输级视图

在本设计中,ROM查找表的实现用CYCLONEⅡ系列器件EP2C35F484C8中的M4K存储器来完成,在EP2C35F484C8器件中共有105个M4K存储器,同时每个M4K存储器块的大小为4608bit,故总容量为483840bit。

但是由于ROM容量的限制,正弦查找表的字长是有限,从而引起存放在ROM中的正弦波形幅度码字也是有限的。在本设计中,取查找表的字长为10,即输入地址宽度为10位,故存放在ROM中的数据个数设置为1024。波形文件数据用MATLAB生成,利用计算式511*sin([0:2*pi/(2^10):2*pi-2*pi/(2^10)])+512得到所需要的文件数据,并把它粘贴到QuartusⅡ的 sine.mif文件中,图 3是部分相位地址所对应的幅度码位地址所对应的幅度码。

这样得到了ROM的初始化数据文件,通过程序加载这些数据,这里利用QuartusⅡ的宏功能模块LPM_ROM,并加载刚才建立的sine.mif波形文件,初始化ROM,得到正弦波形的数据存储器。图4为生成的ROM的寄存器传输级视图,图中clock为系统的主时钟,address_a为查找表的正弦地址,address_b为查找表的余弦地址,q_a为正弦输出,q_b为余弦输出。

对数字载波NCO进行仿真,仿真结果如图5所示,其中clk为系统的主时钟,cos_addr为查找表地址,cos_out为NCO的输出,从图中结果可以看出数字载波NCO的功能正确。

4 结语

基于QuartusⅡ的FPGA开发软件对数控振荡器进行汇编设计,可以看出只要改变时钟频率 fs和频率控制字K就可以改变输出信号频率;只要相位累加器的位数N足够大,NCO的频率分辨率就足够精确;NCO中 ROM的容量是与地址线位数有关的,通过地址线位数来保证输出正弦波的幅度精度,而靠相位累加器的频率字位数来保证频率的分辨率。与DDS电路相比,由于NCO的输出只要求是离散的正(余)弦样本,因而不需要再通过模数转换器和低通滤波器将其转换成模拟信号,所以在设计上大大节省了设计时间和成本。结果表明系统产生的波形稳定,频率、相位和幅度调节方便,精度高,而且又便于修改,完全满足实际需求。

[1]潘志浪.基于FPGA的DDS信号源的设计[D].武汉:武汉理工大学,2007:6,9

[2]王美妮.基于FPGA的DDS的研究设计与实现[D].大连:大连海事大学,2006:10

[3]罗朝霞,高书莉.CPLD/FPGA设计及应用[M].北京;人民邮电出版社,2007:7

猜你喜欢
正弦波寄存器正弦
正弦、余弦定理的应用
Lite寄存器模型的设计与实现
采用BC5016S的纯正弦波逆变器设计及制作
二进制翻译中动静结合的寄存器分配优化方法
“美”在二倍角正弦公式中的应用
移位寄存器及算术运算应用
利用正弦定理解决拓展问题
基于STM32的风力摆控制系统的设计
正弦、余弦定理在三角形中的应用
Matlab环境下基于遗传算法的正弦波信号参数提取