奇偶分频(二)附代码和时序

以下是奇分频代码,做了一个带参数可调的代码,用的芯片还是EP4CE10F17C8,

现在写的是5分频,如果有什么更好的设计思想,欢迎留言讨论。

module div_2nx1           //任意奇分频
#(    
parameter DIV_NUM = 32'd5
)
(
    input  wire clk      ,  //50Mhz
    input  wire rst_n    ,  //复位
    
    output wire  div_clk 
);
 //localparam
 
localparam CNT_MAX =  DIV_NUM-1'b1;  //  5-1=4
 
 reg [31:0]  cnt_pose;
 reg [31:0]  cnt_nege;
 reg          clk_pose;
 reg          clk_nege;

 //cnt_pose:上升沿计数器,0~4循环计数
always @(posedge clk ,negedge rst_n)
begin 
    if(~rst_n)
        cnt_pose <= 32'd0;
    else if(cnt_pose == CNT_MAX)  //计数满,就清0
     cnt_pose <= 32'd0;
     else 
     cnt_pose <= cnt_pose +1'b1;
end

//cnt_nege:下降沿计数器  0~4循环计数
always @(negedge clk,negedge rst_n)
begin 
    if(~rst_n)
        cnt_nege <= 32'd0;   //清0
    else if(cnt_nege == CNT_MAX)  //计数满,就清0
        cnt_nege <= 32'd0;
    else 
        cnt_nege <= cnt_nege +1'b1;
end

//两个特殊的  clk_posedge :在上升沿变化的时钟信号
always@ (posedge clk,negedge rst_n)
begin 
    if(~rst_n)
    clk_pose<=0;
    else if(cnt_pose > CNT_MAX/2)  //3-4拉高
    //else if(cnt_pose>CNT_MAX>>1)
    clk_pose<=1;
    else 
    clk_pose <=0;
end

//两个特殊的  clk_negedge :在下降沿变化的时钟信号
always@ (negedge clk,negedge rst_n)
begin 
    if(~rst_n)
    clk_nege<=0;    //
    else if(cnt_nege > CNT_MAX/2)  //括号内 clk_nege>CNT_MAX>>1
                                // cnt_pose==4||cnt_pose==0
    clk_nege<=1;

    else 
    clk_nege <=0;
end

/* always@ (negedge clk,negedge rst_n)
begin 
    if(~rst_n)
    clk_nege<=0;    //
    else if(cnt_pose ==2||cnt_pose== 3)  //括号内 clk_nege>CNT_MAX>>1
                                // cnt_pose==1||cnt_pose==0
    clk_nege<=1;

    else 
    clk_nege <=0;
end */

//不可行的    
    //always@(posedge clk,negedge rst_n)
    // begin
    // div_clk=clk_pose|clk_nege;
    // end

assign div_clk = clk_pose | clk_nege;
endmodule

以下是五分频用或逻辑做的时序图

以下是与逻辑做的时序图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值