论文部分内容阅读
摘要:文章介绍了高速DDS芯片AD9851的内部结构、工作原理及功能特点,利用CPLD控制的简单接口实现了正弦波、频率键控波、相位键控波的产生。
关键词:DDSAD9851CPLD频率键控相位键控
频率合成技术发展至今,DDS(Direct Digital Synthesis)可谓后起之秀。DDS以其高精度,频率建立和频率切换快,可控制性好,容易实现扫频和频率调制等优点得到了飞速的发展。DDS通常通过在CPLD或FPGA内设置逻辑电路来实现,理论上可以达到MHz级的信号输出。但是对于高频信号,DDS的输出波形容易产生由于DA速度不够而带来的失真,同时产生高频信号要求D/A转换后级的I-V转换电路中的运放具有很高的带宽增益积和响应速度。经实验测试,FPGA内部实现 DDS在输出3MHz信号时幅值已经不稳定。而专用DDS芯片克服了以上缺点,本文介绍的就是其中表现优秀的一款高速DDS芯片。
AD9851结构和工作原理
AD9851是Analog Device公司推出的采用先进CMOS技术生产的具有高集成度的低功耗直接数字频率合成器。内置可软件选通的高速时钟6倍频电路可以只用外部提供较低时钟而产生较高内部参考时钟,对于实际应用中的内部工作频率150MHz,仅需一个25MHz晶振即可,因此减小了高频辐射,提高了系统的电磁兼容能力。32位的频率累加器可以实现高精度的频率步进,10Bit高速DA转换器可以保证输出信号波形的稳定。另外,高速比较器可以实现由正弦波到方波的变换,从而直接提供数字电路使用。各功能模块见AD9851的内部结构框如图1所示。
AD9851控制说明
AD9851的可编程功能主要是通过对内部的5个输入数据寄存器写入40位的控制字来实现的。其控制字寄存器的内容如表1所示:
在150MHz系统时钟的情况下频率分辨率是0.035Hz,相位最小步进是11.25°。控制字的写入有并行和串行两种方式,并行方式是通过数据总线D0-D7来完成的。而串行方式是把D7上的数据按位串行移入到输入寄存器。并行工作方式如图2所示。连续5个W_CL K上升沿后完成全部40位控制数据的输入,此后W_CL K信号的边沿无效。FQ_UD上升沿到来时40位数据从输入寄存器被写入频率/相位控制寄存器,更新输出频率和相位。
串行工作方式如图3所示。40位输入结束后,任何W_CL K上升沿到来都会造成数据顺序移出并导致原来数据无效,此时FQ_UD的上升沿就可以更新芯片的输出频率和相位。
通常为了充分发挥AD9851的高性能,我们在资源允许的条件下尽可能选择并行方式。为求得频率控制字和相位控制字,设其相位累加器的位数为N,相位控制字的值为FN,频率控制字的位数为M,频率控制字的值为FM,内部工作时钟为FCC,频率和相位可由下式来决定:
前者可决定输出信号的频率,后者确定信号的初始相位。
另外需要说明的是,基于AD9851的输出信号带有高次谐波分量,所以在后级需要进行滤波,由于频率较高,只能采用无源滤波电路。为了达到较好的衰减特性,常采用了切比雪夫型的滤波电路。关于切比雪夫滤波器的设计请参考其他相关文献。
AD9851应用实例
AD9851实现正弦波输出非常简单,按照前述的时序和控制字计算方式直接将计算得到的控制字写入即可。如参考时钟源为25×6=150MHz,要输出初始相位为900,频率为1MHz的正弦信号。则频率控制字为:(2^32-1)×(30M/150M)=33333333H。相位控制字为:90/11.25=8。故40位控制字为:40 33 33 33 33 H。用FPGA或者CPLD将此数据按所需时序写入,相应控制代码如下所示:
always @ (negedge CLK)
begin
if(Convert)
case(state)
S_Start:beginRST<=0;FQ_UD<=0;state<=S_Write;
index<=6'd0;data<=Control;end
S_Write:begin WCLK<=1'b0;Dout<=data[39:32];
state<=S_Send; end
S_Send:begin WCLK<=1'b1;
if(index<3'd4) begin index<=index+1'b1;
data<=(data<<4'd8);state<=S_Write;end
else begin
state<=S_Update;index<=4'd0;end
end
S_Update:beginFQ_UD<=1'b1;state<=S_Idle;end
S_Idle:begin state<=S_Idle; end
endcase
elsestate <= S_Start;
end
频率键控和相位键控的实现主要通过对频率和相位控制字的设置来实现,根据输入控制模块的二进制信号是“0”或“1”来判断。如下代码所示:
always@(posedge CLK)
begin
case(Mod)
2'b11:begin Control<={Phas,Freq}; end//sine
2'b10:begin//FSK
if(Squ==1'b1) Control<={8'd41,Freq+32'h2BB0CFH};
else Control<={8'd41,Freq-32'h2BB0CFH};
end
2'b00:begin//PSK
if(Squ==1'b1) Control<={8'd41,Freq};
elseControl<={8'd91,Freq};
end
endcase
end
结论
本文给出了AD9851的原理和Verilog的接口控制实现。实验表明,利用AD9851可以产生从100Hz到20MHz的频谱纯净、稳定度高的正弦信号,同时可以通过极简单的设置实现FSK和PSK的键控调制实现。另外,通过将模拟信号用AD采样,再用采样值去改变频率控制字又可以实现FM信号。这样,利用一片DDS集成芯片就可以实现一般场合的信号源或时钟源的需要,小巧方便,简单实用。
(作者单位:武汉大学电子信息学院)
参考文献
1、黄根春,陈小桥,张望先.电子设计教程[M].电子工业出版社,2007.
2、夏宇闻.Verilog数字系统设计教程[M].北京航空航天大学出版社,2007.
关键词:DDSAD9851CPLD频率键控相位键控
频率合成技术发展至今,DDS(Direct Digital Synthesis)可谓后起之秀。DDS以其高精度,频率建立和频率切换快,可控制性好,容易实现扫频和频率调制等优点得到了飞速的发展。DDS通常通过在CPLD或FPGA内设置逻辑电路来实现,理论上可以达到MHz级的信号输出。但是对于高频信号,DDS的输出波形容易产生由于DA速度不够而带来的失真,同时产生高频信号要求D/A转换后级的I-V转换电路中的运放具有很高的带宽增益积和响应速度。经实验测试,FPGA内部实现 DDS在输出3MHz信号时幅值已经不稳定。而专用DDS芯片克服了以上缺点,本文介绍的就是其中表现优秀的一款高速DDS芯片。
AD9851结构和工作原理
AD9851是Analog Device公司推出的采用先进CMOS技术生产的具有高集成度的低功耗直接数字频率合成器。内置可软件选通的高速时钟6倍频电路可以只用外部提供较低时钟而产生较高内部参考时钟,对于实际应用中的内部工作频率150MHz,仅需一个25MHz晶振即可,因此减小了高频辐射,提高了系统的电磁兼容能力。32位的频率累加器可以实现高精度的频率步进,10Bit高速DA转换器可以保证输出信号波形的稳定。另外,高速比较器可以实现由正弦波到方波的变换,从而直接提供数字电路使用。各功能模块见AD9851的内部结构框如图1所示。
AD9851控制说明
AD9851的可编程功能主要是通过对内部的5个输入数据寄存器写入40位的控制字来实现的。其控制字寄存器的内容如表1所示:
在150MHz系统时钟的情况下频率分辨率是0.035Hz,相位最小步进是11.25°。控制字的写入有并行和串行两种方式,并行方式是通过数据总线D0-D7来完成的。而串行方式是把D7上的数据按位串行移入到输入寄存器。并行工作方式如图2所示。连续5个W_CL K上升沿后完成全部40位控制数据的输入,此后W_CL K信号的边沿无效。FQ_UD上升沿到来时40位数据从输入寄存器被写入频率/相位控制寄存器,更新输出频率和相位。
串行工作方式如图3所示。40位输入结束后,任何W_CL K上升沿到来都会造成数据顺序移出并导致原来数据无效,此时FQ_UD的上升沿就可以更新芯片的输出频率和相位。
通常为了充分发挥AD9851的高性能,我们在资源允许的条件下尽可能选择并行方式。为求得频率控制字和相位控制字,设其相位累加器的位数为N,相位控制字的值为FN,频率控制字的位数为M,频率控制字的值为FM,内部工作时钟为FCC,频率和相位可由下式来决定:
前者可决定输出信号的频率,后者确定信号的初始相位。
另外需要说明的是,基于AD9851的输出信号带有高次谐波分量,所以在后级需要进行滤波,由于频率较高,只能采用无源滤波电路。为了达到较好的衰减特性,常采用了切比雪夫型的滤波电路。关于切比雪夫滤波器的设计请参考其他相关文献。
AD9851应用实例
AD9851实现正弦波输出非常简单,按照前述的时序和控制字计算方式直接将计算得到的控制字写入即可。如参考时钟源为25×6=150MHz,要输出初始相位为900,频率为1MHz的正弦信号。则频率控制字为:(2^32-1)×(30M/150M)=33333333H。相位控制字为:90/11.25=8。故40位控制字为:40 33 33 33 33 H。用FPGA或者CPLD将此数据按所需时序写入,相应控制代码如下所示:
always @ (negedge CLK)
begin
if(Convert)
case(state)
S_Start:beginRST<=0;FQ_UD<=0;state<=S_Write;
index<=6'd0;data<=Control;end
S_Write:begin WCLK<=1'b0;Dout<=data[39:32];
state<=S_Send; end
S_Send:begin WCLK<=1'b1;
if(index<3'd4) begin index<=index+1'b1;
data<=(data<<4'd8);state<=S_Write;end
else begin
state<=S_Update;index<=4'd0;end
end
S_Update:beginFQ_UD<=1'b1;state<=S_Idle;end
S_Idle:begin state<=S_Idle; end
endcase
elsestate <= S_Start;
end
频率键控和相位键控的实现主要通过对频率和相位控制字的设置来实现,根据输入控制模块的二进制信号是“0”或“1”来判断。如下代码所示:
always@(posedge CLK)
begin
case(Mod)
2'b11:begin Control<={Phas,Freq}; end//sine
2'b10:begin//FSK
if(Squ==1'b1) Control<={8'd41,Freq+32'h2BB0CFH};
else Control<={8'd41,Freq-32'h2BB0CFH};
end
2'b00:begin//PSK
if(Squ==1'b1) Control<={8'd41,Freq};
elseControl<={8'd91,Freq};
end
endcase
end
结论
本文给出了AD9851的原理和Verilog的接口控制实现。实验表明,利用AD9851可以产生从100Hz到20MHz的频谱纯净、稳定度高的正弦信号,同时可以通过极简单的设置实现FSK和PSK的键控调制实现。另外,通过将模拟信号用AD采样,再用采样值去改变频率控制字又可以实现FM信号。这样,利用一片DDS集成芯片就可以实现一般场合的信号源或时钟源的需要,小巧方便,简单实用。
(作者单位:武汉大学电子信息学院)
参考文献
1、黄根春,陈小桥,张望先.电子设计教程[M].电子工业出版社,2007.
2、夏宇闻.Verilog数字系统设计教程[M].北京航空航天大学出版社,2007.