zoukankan      html  css  js  c++  java
  • 五分频器

    主体部分:

    数分频器的设计比偶数分频器复杂一些,特别是占空比为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 <= 3'd0;
    15 else if(cnt_p == 3'd4)
    16     cnt_p <= 3'd0;
    17 else 
    18     cnt_p <= cnt_p + 1'b1;
    19 
    20 always @ (posedge clk or negedge rst_n) 
    21 if(!rst_n)     
    22     clk_p <= 1'b0;
    23 else if((cnt_p == 3'd2) || (cnt_p == 3'd4))
    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 <= 3'd0;
    34 else if(cnt_n == 3'd4) 
    35     cnt_n <= 3'd0;
    36 else
    37     cnt_n <= cnt_n + 1'b1;
    38     
    39 always @ (negedge clk or negedge rst_n) 
    40 if(!rst_n) 
    41     clk_n <= 1'b0;
    42 else if((cnt_n == 3'd2) || (cnt_n == 3'd4)) 
    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

     2:3取或,变成2.5:2.5,实现百分之五十占比。

    YKJIAO
  • 相关阅读:
    Codeforces Round 546 (Div. 2)
    Codeforces Round 545 (Div. 2)
    Codeforces Round 544(Div. 3)
    牛客小白月赛12
    Codeforces Round 261(Div. 2)
    Codeforces Round 260(Div. 2)
    Codeforces Round 259(Div. 2)
    Codeforces Round 258(Div. 2)
    Codeforces Round 257 (Div. 2)
    《A First Course in Probability》-chaper5-连续型随机变量-随机变量函数的分布
  • 原文地址:https://www.cnblogs.com/ajiaoa/p/12621152.html
Copyright © 2011-2022 走看看