五分频器

Posted ajiaoa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了五分频器相关的知识,希望对你有一定的参考价值。

主体部分:

数分频器的设计比偶数分频器复杂一些,特别是占空比为50%的奇数分频器。如果对占空比没有明确的要求,则可以直接对上升沿计数,计数到(N-1)/2 时让输出翻转,计数到(N-1)时让输出状态再次翻转,并将计数器清零,这样就可以得到一个占空比为2:3的N分频(N为奇数)的分频器。而如果要实现50%的占空比,可以通过“错位相或”的方法实现。具体方法是用刚才的方法先通过对上升沿计数产生一个占空比为不是50%的N分频器,再用同样的方法对下降沿计数产生一个占空比也不是50%的N分频器,最后将这两个分频器的输出进行“或”运算,就可以得到占空比为50%的奇数N分频器,具体实现代码如下:

 1 module Freq_divide
 2 (
 3     input clk,
 4     input rst_n,
 5     output clk_divide
 6  );
 7  
 8 //----------count the posedge---------------------
 9 reg [2:0] cnt_p;
10 reg clk_p;
11 
12 always @ (posedge clk or negedge rst_n) 
13 if(!rst_n) 
14     cnt_p <= 3d0;
15 else if(cnt_p == 3d4)
16     cnt_p <= 3d0;
17 else 
18     cnt_p <= cnt_p + 1b1;
19 
20 always @ (posedge clk or negedge rst_n) 
21 if(!rst_n)     
22     clk_p <= 1b0;
23 else if((cnt_p == 3d2) || (cnt_p == 3d4))
24     clk_p <= ~ clk_p;
25 //---------------------------------------------
26 
27 //----------count the negedge------------------
28 reg [2:0] cnt_n;
29 reg clk_n;
30 
31 always @ (negedge clk or negedge rst_n) 
32 if(!rst_n) 
33     cnt_n <= 3d0;
34 else if(cnt_n == 3d4) 
35     cnt_n <= 3d0;
36 else
37     cnt_n <= cnt_n + 1b1;
38     
39 always @ (negedge clk or negedge rst_n) 
40 if(!rst_n) 
41     clk_n <= 1b0;
42 else if((cnt_n == 3d2) || (cnt_n == 3d4)) 
43     clk_n <= ~clk_n;
44 //----------------------------------------------
45 
46 assign clk_divide = clk_p | clk_n;
47 
48     
49 endmodule

 

tb部分:

技术图片
 1 `timescale 1ns / 1ps
 2  
 3 module clk_divide_tb(
 4  
 5     );
 6     reg clk;
 7     reg rst_n;
 8     wire clk_divide;
 9     
10     
11     initial begin
12         clk = 0;
13         forever 
14             #2 clk = ~clk;//时钟周期4ns,频率250MHz
15     end
16     
17     initial begin
18         
19         rst_n = 0;
20         
21         #11
22         rst_n = 1;
23     
24     
25     
26     end
27     
28     Freq_divide u0(
29     .clk(clk),
30     .rst_n(rst_n),
31     .clk_divide(clk_divide)
32     );
33     
34     
35 endmodule
View Code

 

以上是关于五分频器的主要内容,如果未能解决你的问题,请参考以下文章

FPGA三分频,五分频,奇数分频

基础项目任意时钟分频程序设计讲解

求一个用verilog实现二分之一分频(是提高频率,不是降低频率)的代码

时钟分频

Flutter - 垂直分频器和水平分频器

systemC构建时钟分频器