基于FPGA的正交数字混频器中数控振荡器的设计与实现
扫描二维码
随时随地手机看文章
要CORDIC(COordination Rotation DIgital Computer)算法实现正交数字混频器中的数控振荡器的方法。首先推导了算法产生正余弦信号的实现过程,然后给出了在中设计数控振荡器的顶层电路结构,并根据算法特点在设计中引入流水线结构设计。
CORDIC算法;
/余弦信号正交特性好等特点。而且的相位、幅度均已数字化,可以直接进行高精度的数字调制解调。随着数字通信技术的发展,传送的数据速率越来越高。如何得到一个可数控的高频载波信号是实现高速数字通信系统必须解决的问题。本文将介绍如何在中实现高速正交数字混频器中的数控振荡器设计。
1NCO的顶层电路结构
2CORDIC迭代算法的流水线结构
3NCO的部分仿真时序图
, 传统做法是采用查表法,即事先根据各个正余弦波相位计算好相位的正余弦值,并按相位角度作为地址在存储器中对其进行寻址,构成一个幅度相位转换电路即波形存储器,通过该转换电路进行查表获得正余弦信号样本。为了提高数控振荡器的频率分辨率,往往需要扩大波形存储器的容量,造成存储资源的大量消耗。而且,如果需要外挂来存储波形,由于受到读取速度的影响,数控振荡器的输出速率必然受到制约。因此,当设计高速、高精度的数控振荡器时,查表法就不适合采用
/余弦样本。基于矢量旋转的算法正好满足了这一需求该算法有线性的收敛域和序列的特性,只要迭代次数足够,即可保证结果有足够的精度。统一的形式的基本原理是,初始向量1(x,y)旋转角度V(x,y):
2=xcos1sin
2=ycos1sin (1)
2=(x-ytancos
2=(y+xtancos
2的整数次幂,即:-i)+1表示逆时针旋转,表示顺时针旋转,故第步旋转可用K表示,以字长为例,则为了抵消迭代对比例因子的影响,可将每级迭代的输入数据、校正后再参与运算,以避免在迭代运算中增加校正运算,降低算法的速度。
z表示第次旋转时与目标角度之差,n次旋转后,式经次迭代可以得到以下结果z输入,通过、两式的迭代运算,迭代结果输出的n和n就是所需要的三角函数值。
FPGA实现
1是数控振荡器的顶层电路结构。可以看到,频率控制字寄存器将接收到的的频率控制字送入相位累加器,相位累加器对系统时钟进行计数,每到达输入频率控制字的值即对相位进行累加,随后将累加值送入相位相加器,与相位控制字寄存器接收到的初始相位相加,得到当前的相位值。其中,相位累加器是决定性能的一个关键模块,可以利用器件的进位链实现快速、高效的电路结构。然而由于进位链必须位于临近的逻辑阵列块和逻辑单元内,所以长的进位链会减少其它逻辑使用的布线资源;同时,过长的进位链也会制约整个系统速度的提高。因此,设计中采用进位链和流水线技术相结合的办法。采用以上做法实现的相位累加器既能保证具有较高的资源利用率又能大幅提高系统的性能和速度。
/余弦相位序列,将此序列送入基于算法的波形发生器,最终获得两路正交的正余弦输出序列。
CORDIC运算迭代单元,然后在系统时钟的驱动下,将本级的输出作为本级的输入,通过同一级迭代完成运算。这种方法虽然很直观但是为了将计算结果提供给下一级运算,会占用大量的寄存器资源,带来许多额外的资源消耗。而且其最大的缺点是运算速度较慢需要个时钟周期才能输出一个数据,不利于数据的高速实时处理。
2所示的由级运算单元组成的流水线结构,正常工作时只需一个时钟周期就能输出一个数据,为数据实现高速实时处理提供了保障。每一级实现的功能是根据式进行一次迭代,移位的位数等于当前的迭代级数,加减法选择由该级中的最高位符号位决定,得到下一级的、和的值。经过级流水线运算后,的值变为,和的值则为初始值0的余弦和正弦值。每一级电路结构主要包括两个移位器和三个加减法器,arctan(2),可将该小数转换为二进制数后,保存于存储单元中,为每一级流水线提供查找表。
n级迭代序列:,则迭代所能覆盖的角度范围仅有的迭代,将迭代序列扩展从而使角度覆盖范围也扩大。
Altera公司的软件,采用对上述数控振荡器结构进行描述,在上通过功能仿真,结果正确后综合出电路网表,最后将程序下载至器件780C6中实现。
Stratix器件,该器件的位加减器工作频率可以达到以上,从而为产生高速的正交信号提供高速可靠的工作时钟。考虑到的工作时钟瓶颈是在相位累加器,因此可以根据具体需要缩减相位累加器的位数来提高的工作时钟频率。本文设计的工作时钟为,相位累加器的位数为位,输入的频率控制字为,根据公式: ,,其中为输入的频率控制字,clk为工作时钟,为相位累加器位数,可算出输出的正余弦信号的频率out=30MHz,频率分辨率。频率分辨率说明:通过输入频率控制字来改变输出正余弦信号的频率时,可以达到的最小步进。另外,也可以根据实际需要的频率改变输入频率控制字值。当然,输出频率的上限要受到定律的限制,即out的最大值为clk/2,实际设计一般不大于clk。
3为数控振荡器的部分仿真时序图。
FPGA器件中利用迭代算法产生正余弦信号。可以看到,该数控振荡器不但省去了传统庞大的存储器资源,仅用移位寄存器和加法器就可产生正余弦信号,结构简单,非常适用于在正交数字混频器中进行高速高精度的数字调制解调。