分频计数

本文详细介绍了一种基于Verilog的时钟分频器设计方法,适用于奇数和偶数分频,通过上升沿和下降沿计数实现精确的N分频。提供了完整的代码示例,包括参数设置、计数器更新、时钟信号翻转和输出信号的逻辑运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时钟分频,分频计数分别是偶数分频时候n等于N/2-1,n1等于N-1。 奇数分频n等于(n-1)/2,n2等于N-1。
实现奇数(N)分频,分别用上升沿计数到(N-1)/2,再计数到N-1;用下降沿计数到(N-1)/2,再计数到N-1,得到两个波形,然后把它们相或即可得到N分频。代码如下:
module clk_div(

 inputclk_100,

 output clk_out

);

parameter N =9; // Dividend

reg [3:0] cnt_p= 0;

always@(posedge clk_100)

begin

if(cnt_p == N-1)

  cnt_p <= 4'd0;

else

 cnt_p<= cnt_p + 1'b1;

end

reg clk_p = 0;

always@(posedge clk_100)

begin

if(cnt_p == (N-1)/2)

  clk_p <= ~clk_p;

 elseif(cnt_p == (N-1))

  clk_p <= ~clk_p;

 else

  clk_p <= clk_p;

end

reg [3:0] cnt_n= 0;

always@(negedge clk_100)

begin

if(cnt_n == N-1)

  cnt_n <= 4'd0;

 else

  cnt_n <= cnt_n + 1'b1;

end

reg clk_n = 0;

always@(negedge clk_100)

begin

if(cnt_n == (N-1)/2)

  clk_n <= ~clk_n;

 elseif(cnt_n == (N-1))

  clk_n <= ~clk_n;

 else

  clk_n <= clk_n;

end

assign clk_out =clk_n | clk_p;

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值