分频计数

时钟分频,分频计数分别是偶数分频时候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;

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值