DDS流水线结构的改进
DDS(Direct Digital Synthesizer) 以其频率分辨率高、转换速度快及波形变换灵活等特点,已广泛应用于通讯、雷达、GPS、蜂窝基站及HDTV等领域。DDS相位字长及运算速度决定了DDS的性能[1],相位累加器、移相加法器及LUT的字长越长,频率分辨率及波形精度越高,相位截尾误差越小[2]。目前DDS相位累加器的位数一般在32~48位之间;而时钟频率越高,输出频率的范围越大。流水线是高速电路中一种常用的技术[3],高速、高精度DDS的相位累加器、相移加法器、用于调幅及正交调制的乘法器都采用了流水线结构。普通的流水线结构所占用的寄存器资源和其级数的平方成正比,无论是现有的专用DDS集成电路,还是采用FPGA等可编程器件实现,都将占用大量寄存器资源。其实,DDS中的输入数据一般在一个较长的时间内保持不变。基于这一特点,本文提出一种改进的DDS流水线结构,可以大大减少占用的寄存器资源。
1 问题的提出
1.1 DDS结构及工作原理
图1是包含移相及调幅部分的相位累加型DDS的结构框图。每一时钟周期,N位相位累加器PA与 N位频率控制字FW累加一次。其结果的高M位作波形表LUT(Look-Up Table)的地址,如果加上PSR的值可实现移相,从LUT中读出D位波形数据送DAC。若乘以AR的值还可实现调幅。改变FW的值可改变输出频率,改变PSR的值可实现调相,改变AR的值可以实现调幅。一般情况下,FW、PSR及AR刷新频率要比DDS系统时钟慢得多。
1.2 DDS中的流水线结构
当DDS的相位字长较长、速度较高时,相位累加器、移相加法器或其综合及调幅乘法器一般都采用流水线结构。以下仅以相位累加器为例,分析流水线的结构、性能及其改进。当相位累加器采用m级n位流水线结构时,有,这里PA,FW分别是相位累加器的值和相位阶距,PAm是各级加法器的部分和。其中,输入缓冲流水线为m级n位,占用寄存器位,而相位累加器输出的高M位需级流水线,占用是取整运算)。图2、3分别是m=4、n=4、M=8时相位累加器的结构及时序图。此时,输入流水线占用24位寄存器;m=8、n=4时(32位相位累加器),输入流水线占用112位寄存器;m=12、n=4,(48位相位累加器),占用264位寄存器;若选取m=48、n=1,则占用1128位寄存器。如果省去输入流水线,改变相位阶距时,将导致相位紊乱。
2 改进的流水线结构
2.1 结构及其工作原理
一般来说,DDS控制数据刷新速率远低于系统时钟。以相位累加器为例,进入各组加法器的频率控制字值,只在数据更新后的前m个时钟周期变化。以后各个周期不再变化。基于这种情况,可以对累加器进行改进,从而节省部分寄存器。图4是改进输入流水线的相位累加器结构图,图5是输入数据及控制信号的时序图。
在输入数据D0~15(N)准备好后,由外部控制系统向流水线刷新控制电路CON发出一启动信号Start,CON在Start下降沿后的第一时钟上升沿到来时,输出写入脉冲WR0,将D0~3(N)写入第一级流水线寄存器;第二时钟上升沿到来时,输出写入脉冲WR1,将D4~7(N)写入第二级流水线寄存器;依次类推,到第四上升沿到来时,输出写入脉冲WR3,将D12~15(N)写入第四级流水线寄存器,完成一次数据的刷新。在以后的周期内,这些数据将保持不变,直至新的Start到来。
改进后的流水线所占用的寄存器位数和相位的字长相等,与流水线的级数无关。相位字长较长时,这种改进的效果是非常明显的。
2.2 刷新控制器的设计
刷新控制器实质上是一种阵发式脉冲分配器,由Start启动,当完成一个周期的脉冲分配输出后,便停止计数。阵发式脉冲分配器的设计及实现方法很多,以下是基于Altera的FPGA,以MAX+Plus II的HDL实现的阵发式脉冲分配器,流水线中的寄存器为上升沿有效,延迟时间为12.5ns,速度可达80MHz(FLEX 10K20RC240-4),图6是其仿真结果。
SUBDESIGN control
(cp, start : INPUT;
q3,q2,q1,q0 : OUTPUT;)
VARIABLE
s:MACHINE OF BITS(q3,q2,q1,q0)WITH STATES
(s0=b″0000″,s1=b″0001″,s2=b″0010″,
s3=b″0100″,s4=b″1000″);
BEGIN
s.clk = cp;
s.reset = start;
TABLE s=>s;
s0=>s1;s1=>s2;s2=>s3;s3=>s4;s4=>s4;
END TABLE;
END;
2.3 性能改善
2.3.1 寄存器的减少
输入流水线结构改进后,寄存器的位数和相位累加器的位数呈线性关系,位数大大减少,特别是对级数较多的流水线,即使对寄存器密集型的FPGA,这也是有益的。
2.3.2 功耗降低
由于仅在刷新数据时,流水线中各触发器的状态发生改变,在以后很长一段时间内,状态不再改变,这对降低电路的功耗是有益的。
2.4 应用
在
- 32位DSP设计中的流水线数据相关问题及解决办法(05-04)
- 适用于RISC CPU的转移指令的原理及仿真(07-26)
- 一种带Cache的嵌入式CPU的设计与实现(07-30)
- 基于高速超微型C8051F300单片机的CCD驱动电路设计(06-11)
- 扩大ARM SoC的验证覆盖缩短仿真时间(07-20)
- Proteus在单片机系统设计中的应用(04-21)