zoukankan      html  css  js  c++  java
  • 任意整数分频模块

     1//*******************************************************//
     2//                  任意整数分频模块                     //
     3//*******************************************************//
     4//功能:对输入时钟clock进行F_DIV倍分频后输出clk_out。
     5//其中F_DIV为分频系数,分频系数范围为1~2^n (n=F_DIV_WIDTH)
     6//若要改变分频系数,改变参数F_DIV或F_DIV_WIDTH到相应范围即可。
     7//若分频系数为偶数,则输出时钟占空比为50%;
     8//若分频系数为奇数,则输出时钟占空比取决于输入时钟占空比和分
     9//频系数(当输入为50%时,输出也是50%)。
    10//--------------------------------------------------------
    11//奇数倍分频:三倍分频的时序图如下所示。
    12//               1     2     3     4     5    6
    13//clock      |--|__|--|__|--|__|--|__|--|__|--|__|
    14//clk_p_r    |_____|-----------|_____|-----------|
    15//clk_n_r    ---|_____|-----------|_____|---------
    16//clk_out    |________|--------|________|--------|
    17
    18module  int_div(clock,clk_out);
    19
    20//I/O口声明
    21input    clock;                    //输入时钟
    22output    clk_out;                //输出时钟
    23
    24//内部寄存器
    25reg    clk_p_r;                    //上升沿输出时钟
    26reg clk_n_r;                    //下降沿输出时钟
    27reg[F_DIV_WIDTH - 1:0] count_p;    //上升沿脉冲计数器
    28reg[F_DIV_WIDTH - 1:0] count_n;    //下降沿脉冲计数器
    29
    30//参数--分频系数
    31parameter F_DIV = 48000000;        //分频系数<<<<-----修改这里
    32parameter F_DIV_WIDTH = 32;     //分频计数器宽度
    33
    34wire full_div_p;                //上升沿计数满标志
    35wire half_div_p;                //上升沿计数半满标志
    36wire full_div_n;                //下降沿计数满标志
    37wire half_div_n;                //下降沿计数半满标志
    38
    39//判断计数标志位置位与否
    40assign full_div_p = (count_p < F_DIV - 1);
    41assign half_div_p = (count_p < (F_DIV>>1- 1);
    42assign full_div_n = (count_n < F_DIV - 1);
    43assign half_div_n = (count_n < (F_DIV>>1- 1);
    44
    45//时钟输出
    46assign    clk_out = (F_DIV == 1? 
    47                clock : (F_DIV[0? (clk_p_r & clk_n_r) : clk_p_r); //F_DIV[0]用于判断奇偶数
    48
    49//上升沿脉冲计数
    50always @(posedge clock)
    51begin
    52    if(full_div_p)
    53    begin
    54        count_p <= count_p + 1'b1;
    55        if(half_div_p)
    56            clk_p_r <= 1'b0;
    57        else
    58            clk_p_r <= 1'b1;
    59    end
    60    else
    61    begin
    62        count_p <= 0;
    63        clk_p_r <= 1'b0;
    64    end
    65end
    66
    67//下降沿脉冲计数
    68always @(negedge clock)
    69begin
    70    if(full_div_n)
    71    begin
    72        count_n <= count_n + 1'b1;
    73        if(half_div_n)
    74            clk_n_r <= 1'b0;
    75        else
    76            clk_n_r <= 1'b1;
    77    end
    78    else
    79    begin
    80        count_n <= 0;
    81        clk_n_r <= 1'b0;
    82    end
    83end
    84
    85endmodule
    86
  • 相关阅读:
    JDBC数据库程序连接MySQL
    java中image显示图片,随上下左右键移动
    java匿名类关闭窗口
    一个通用的SQL客户程序
    我的第一个JavaApplet程序
    Java编译错误“No enclosing instance of type AA is accessible. Must qualify the allocation with an enclosing instance of type SimpleTh
    Java MessagePanel
    线程通信,生产者消费者问题(Java)
    Java程序显示正在运行的时钟(timer类)
    百度star2012初赛第一场的题目
  • 原文地址:https://www.cnblogs.com/yuxi/p/927772.html
Copyright © 2011-2022 走看看