- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA的DDS分频原理
二、任意分频原理以及性能
1.?DDS相位累加器
(1)DDS合成流程
首先讲诉DSS(直接频率合成法)的原理。
DDS是重要的频率合成方法,在波形发生器中有极其重要的应用。DDS主要由以下几部分组成:
a) 相位累加器
b) RAM数据读取
c) D/A转换器
d) 低通滤波器
见如下流程图:直接频率合成法的流程图,有固定模块,输入频率控制器,输出固定频率的波形。
此电路最主要模块是相位累加器,通过相位累加器循环计数,循环读取RAM的数据,从而得到固定频率的波形数据。
(2)相位累加器原理
相位累加原理流程如上所示:
输入频率控制字,根据算法,来实现相位的变化,分析如下所示:
假定FPGA基准频率为50MHz,即基准频率:
(MHz)
假定计数器为32位计数器,即;
K为频率控制字,则相位输出的频率为:
?(1)
即
?(2)
根据相位累加原理,以及RAM缓存读取数据,每一次的循环,RAM数据间隔K读取一次。
当K=1的时候,公式能输出最小频率,根据公式(1):
所以,最小波形频率步进为0.011655Hz。
当fo=1Hz的时候,根据公式(2)
所以,每Hz的增减,K的步进为85.90。
当K=N/2的时候,公式能输出最大频率(因为每个CLK跳变一次),此时,根据公式(1),得到:
因此,根据频率控制字K的变化,能输出及固定频率的波形。
2.?任意频率分频原理
在FPGA中某些应用场合,对频率要求比较高的情况下,用相位累加器原理来生成固定频率的方法,未尝不可。
我们规定,对Cnt进行对半50%拆分,具体如下:
(1)当的时候,,即低电平;
(2)当的时候,fo=1,即高电平。
同上:
在FPGA中应用,Verilog代码如下所示:
/***************************************************
* Module Name : clk_generator
* Engineer : Crazy Bingo
* Target Device : EP2C8Q208C8
* Tool versions : Quartus II 9.1SP1
* Create Date : 2011-6-25
* Revision : v1.0
* Description :??
**************************************************/
/*************************************************
fc = 50MHz 50*10^6
fo = fc*K/(2^32)
K = fo*(2^32)/fc
= fo*(2^32)/(50*10^6)
**************************************************/
module clk_generator
#
(
parameter FREQ_WORD = 32d8590 //1KHz
)
(
input clk, //50MHz
input rst_n, //clock reset
output reg clk_out
);
//--------------------------------------
reg [31:0] max_value;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
max_value = 1b0;
else
max_value = max_value + FREQ_WORD;
end
//--------------------------------------
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
clk_out = 1b0;
else
begin
if(max_value 32h7FFF_FFFF)
clk_out = 1b0;
else
clk_out = 1b1;
end
end
endmodule
本代码由 从DDS相位累加器中,相应移植总结出来的任意频率分频原理,本模块应用在多个对频率精准度要求比较高的工程中(如UART中,要得到115200Hz的bps,用这种任意分频的原理来得到精准的方法,一定程度上能够提高数据传输的准确率)。
基于FPGA的两种DDS实现
引言??? DDS(Direct Digital Freqiaency Synthesizers)广泛应用于雷达系统、数字通信、电子对抗、电子测量等民用军用设备中。它是随着半导体技术和数字技术的快速发展而发展起来的新型的频率合成技术,与传统的VCO+PLL的模拟方式产生所需频率相比,DDS技术具有频率分
文档评论(0)