任意整数分频

以下代码可实现任意整数分频。只需按需要更改参数即可

//
**************************************************************************               任意整数分频,占空比为 1:2 //************************************************************************** module div_clk //========================< 参数 >========================================== #( parameter DIV = 2 //分频系数(奇偶任意) ) //========================< 端口 >========================================== ( input wire clk , //时钟,50Mhz input wire rst_n , //复位,低电平有效 output wire div_clk //分频时钟 ); //========================< 信号 >========================================== reg [31:0] pos_cnt ; wire pos_clk ; reg [31:0] neg_cnt ; wire neg_clk ; //========================================================================== //== clk上升沿分频 //========================================================================== always @(posedge clk or negedge rst_n) begin if(!rst_n) pos_cnt <= 0; else if(pos_cnt == DIV - 1) pos_cnt <= 0; else pos_cnt <= pos_cnt + 1; end assign pos_clk = (pos_cnt < DIV/2) ? 0 : 1; //========================================================================== //== clk下降沿分频 //========================================================================== always @(negedge clk or negedge rst_n) begin if(!rst_n) neg_cnt <= 0; else if(neg_cnt == DIV - 1) neg_cnt <= 0; else neg_cnt <= neg_cnt + 1; end assign neg_clk = (neg_cnt < DIV/2) ? 0 : 1; //========================================================================== //== 奇偶判断后,输出正确的分频 //========================================================================== assign div_clk = DIV[0] ? (pos_clk & neg_clk) : pos_clk; endmodule

 

对应RTL视图:

 

参考:咸鱼IC

 

posted @ 2023-12-22 15:13  DOVI666  阅读(63)  评论(0)    收藏  举报