FPGA分频

在大部分的教科书中,都会提到如何分频,包括奇数分频,偶数分频,小数分频等。

DDS相位累加器
(1)DDS合成流程
首先讲述DSS(直接频率合成法)的原理。
DDS是重要的频率合成方法,在波形发生器中有极其重要的应用。DDS主要由以下几部分组成:
a) 相位累加器
b) RAM数据读取
c) D/A转换器
d) 低通滤波器
直接频率合成法的流程图,有固定模块,输入频率控制器,输出固定频率的波形。如下图:

    此电路最主要模块是相位累加器,通过相位累加器循环计数,循环读取RAM的数据,从而得到固定频率的波形数据。

  (2)相位累加器原理
    相位累加原理流程如下:

   输入频率控制字,根据算法,来实现相位的变化,分析如下所示:
   假定FPGA基准频率为50MHz,即基准频率:

    假定计数器为32位计数器,即:

    K为频率控制字,则相位输出的频率为:

    即:

   根据相位累加原理,以及RAM缓存读取数据,每一次0~(N-1)的循环, RAM数据间隔K读取一次。当K=1的时候,公式能输出最小频率,即:

    最小波形频率步进为0.011655Hz。当fo=1Hz的时候:

   所以,频率每变化1Hz,K的步进为85.90。当K=N/2的时候,公式能输出最大频率(因为每个CLK跳变一次),此时:

    因此,根据频率控制字K的变化,能输出及固定频率的波形。

任意频率分频原理

    在FPGA中某些应用场合,对频率要求比较高的情况下,用相位累加器原理来生成固定频率的方法,未尝不可。

    我们规定,对Cnt进行对半50%拆分,具体如下:当cnt < N/2时,f0 = 0,也就是低电平;而当cnt > N/2时,f0 = 2,也就是低电平。

同理:

在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*(232)/(50*106)

**************************************************/

module clk_generator

(

parameter FREQ_WORD = 32’d8590 //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 <= 1’b0;

else

max_value <= max_value + FREQ_WORD;

end

//****************************************************/

always@(posedge clk or negedge rst_n)

begin

if(!rst_n)

clk_out <= 1’b0;

else

begin

if(max_value < 32’h7FFF_FFFF)

clk_out <= 1’b0;

else

clk_out <= 1’b1;

end

end

endmodule
/*******************************************************/
本模块可应用在多个对频率精准度要求比较高的工程中(如UART中,需要115200Hz的bps,用这种任意分频的原理来得到精准的方法,一定程度上能够提高数据传输的准确率)。

    DDS中的相位累加器的任意分频原理,在一般工程中同样可以应用。在某些应用场合,还是值得考虑的。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值