码迷,mamicode.com
首页 > 其他好文 > 详细

五分频器

时间:2020-04-02 17:33:28      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:mes   ever   splay   time   奇数   复杂   style   inpu   close   

主体部分:

数分频器的设计比偶数分频器复杂一些,特别是占空比为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

 

五分频器

标签:mes   ever   splay   time   奇数   复杂   style   inpu   close   

原文地址:https://www.cnblogs.com/ajiaoa/p/12621152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!