2025年2月24日 星期一 甲辰(龙)年 腊月廿四 设为首页 加入收藏
rss
您当前的位置:首页 > 电子 > 设计制造与封装测试

低于时钟频率的任意频率生成(相位累加器)

时间:01-20来源:作者:点击数:41

相位累加器主要用在直接数字频率合成器(DDS)中,其中的几个主要的参数为输入频率fc,输出频率fo,计数器位宽N,频率控制字K(即计数器递增步长)。它们之间的关系为:fo=(fc * K) / 2N,假设输入频率fc为100MHz,计数器位宽N为32,要产生1kHz的信号,则K=(fo * 2N) / fc = 85.9 * fo = 42950。当计数值小于等于2N-1时,输出低电平,当计数值大于2N-1时,输出高电平,依次循环,就可以产生占空比为50%的1kHz信号了。

据此可以设计如下程序:

任意分频示例,输出1kHz,占空比50%

  • `timescale 1ns/1ps
  • /***************************************
  • 晶振频率 fc = 100MHz
  • 输出频率 fo = 1kHz(根据需要可以设为任意值)
  • 控制参数 K = (fo*2^N)/fc = 42950
  • 参数 N = 2^32,(32为计数器的位宽)
  • ****************************************/
  • module div(
  • input clk,
  • input rst,
  • output reg clk_out
  • );
  • reg [31:0] cnt;
  • always @(posedge clk or posedge rst)
  • if(rst)
  • cnt <= 0;
  • else
  • cnt <= cnt + 32'd42950; //计数器步长K
  • always @(posedge clk or posedge rst)
  • if(rst)
  • clk_out <= 1'b0;
  • else if(cnt < 32'h7FFF_FFFF)
  • clk_out <= 1'b0;
  • else
  • clk_out <= 1'b1;
  • endmodule
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门