[原创] 【FPGA代码学习】实践一下FPGA时钟分频

574433742   2015-10-7 15:44 楼主
以前小伙伴一起讨论过关于  关于  FPGA 时钟分频?  这些奇葩的分频,可能也只在IC内部用的到吧,由于好奇,我也来尝试一下。
一、 具有50% 占空比的奇数的整数分频
对时钟进行N分频,创建由时钟沿触发的计数器,计数到N-1
对于3分频,从0计数到2   即是 N=3
对于3分频,从0计数到3   即是 N=4
……

3分频.png

图:3分频




代码如下:

  1. module half_clk_dai(
  2.                      clk_in,
  3.                      rst,
  4.                      clk_out,
  5.                      cnt
  6.                      );
  7. input clk_in;
  8. input rst;
  9. output clk_out;
  10. output [0:1] cnt;
  11. reg clk_out;
  12. reg [0:1] count= 2'b00;
  13. assign cnt = count;
  14. always@(posedge clk_in or negedge rst or negedge clk_in)
  15. begin
  16.    if(!rst)
  17.      clk_out<=0;
  18.    else
  19.      begin           
  20.        if(count==2)
  21.          begin
  22.            count=0;
  23.            clk_out<=~clk_out;
  24.          end
  25.       else
  26.          count=count+1;
  27.      
  28.      end
  29.      
  30. end

  31. endmodule  



二、非50%占空比的非整数分频

实现一个 4.5 倍分频,占空比为40%,不含毛刺。
4,5 倍分频.png

图:4.5倍分频 40% 占空比


代码如下:
  1. module half_clk_dai(
  2.                     clk_in,
  3.                     rst,
  4.                     clk_out,
  5.                     cnt
  6.                     );
  7. input clk_in;
  8. input rst;
  9. output clk_out;
  10. output [0:1] cnt;
  11. reg clk_out;
  12. reg [0:2] count= 3'b00;
  13. reg  [0:1] flag=2'b00;
  14. reg [0:3]temp =4'b0011;
  15. assign cnt = count;
  16. always@(posedge clk_in or negedge rst or negedge clk_in)
  17.   begin
  18.     if(!rst)
  19.       clk_out<=0;
  20.     else
  21.       begin
  22.         if(count == temp )
  23.             begin
  24.               count=0;
  25.               clk_out<=~clk_out;
  26.               if(flag==2)
  27.                 begin
  28.                   if(temp==3)temp=4;
  29.                   else temp=3;
  30.                   flag = 0;
  31.                 end
  32.               flag=flag+1;
  33.             end
  34.         else
  35.             count=count+1;

  36.       end

  37.     end

  38. endmodule


三、小结


分频主要是对时钟的操作,以及计数器的实现。

参考:   群聊天
   网络
《硬件架构的艺术》

分享铸就美好未来。。。

回复评论 (6)

赞一个
training
点赞  2015-10-7 16:09
点赞  2015-10-7 17:32
作业已收!
作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅! EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
点赞  2015-10-8 16:13
引用: elvike 发表于 2015-10-8 14:13
作业已收!

   
小玉老师,快写评语。。。
分享铸就美好未来。。。
点赞  2015-10-8 16:14
引用: 574433742 发表于 2015-10-8 16:14
小玉老师,快写评语。。。

已阅!
作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅! EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
点赞  2015-10-8 16:16

  果然是小玉老师
分享铸就美好未来。。。
点赞  2015-10-8 16:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复