数字IC手撕代码(2)——奇分频

本文详细描述了一种奇分频电路的设计,通过上升沿和下降沿采样实现不同占空比的分频,如3分频、5分频和7分频,强调了正确设置拉高和拉低电平的重要性。代码示例展示了如何用Verilog实现5分频的时钟分频器,并配合测试模块进行验证。
摘要由CSDN通过智能技术生成

奇分频,先以占空比50%为例:

3分频:占空比1/3的 上升沿 采样的三分频和一个占空比1/3 下降沿 采样的三分频,或运算。

5分频:占空比2/5的 上升沿 采样的五分频和一个占空比2/5 下降沿 采样的五分频,或运算。

7分频:占空比3/7的 上升沿 采样的七分频和一个占空比3/7 下降沿 采样的七分频,或运算。

也就是说,N分频,就是把占空比 [(N-1)/2]/N上升沿 采样N分频和 下降沿 采样的N分频,或运算。

这边有一个要注意的就是什么时候拉高电平什么时候拉低,不然一不注意就变成2/3占空比了,那就应该做与运算了。

//5分频,占空比2/5的 上升沿有效与下降沿有效 5分频 做或cnt=1翻转一次 cnt==4翻转一次

module test (
    input clk,
    input rst_n,
    output clk_div5
);
reg [2:0]cnt_pos,cnt_neg;
reg clk_div5_pos;
reg clk_div5_neg;

always @(posedge clk or negedge rst_n) begin
    if (~rst_n) begin
        cnt_pos <= 0;
        clk_div5_pos <= 0;
    end
    else if (cnt_pos == 4) begin 
        cnt_pos <= 0;
        clk_div5_pos <= 1;
    end
    else if (cnt_pos == 1) begin
        cnt_pos <= cnt_pos + 1;
        clk_div5_pos <= 0;
    end
    else begin
        cnt_pos <= cnt_pos + 1;
        clk_div5_pos <= clk_div5_pos;
    end

end

always @(negedge clk or negedge rst_n) begin
    if (~rst_n) begin
        cnt_neg <= 0;
        clk_div5_neg <= 0;
    end
    else if (cnt_neg == 4) begin 
        cnt_neg <= 0;
        clk_div5_neg <= 1;
    end
    else if (cnt_neg == 1) begin
        cnt_neg <= cnt_neg + 1;
        clk_div5_neg <= 0;
    end
    else begin
        cnt_neg <= cnt_neg + 1;
        clk_div5_neg <= clk_div5_neg;
    end
end   
assign  clk_div5 = clk_div5_pos | clk_div5_neg ;
endmodule

testbench:

module tb_test ();
reg clk;
reg rst_n;
wire clk_div5;

initial begin
    clk = 0;
    rst_n = 0;
    #10
    rst_n = 1; 
    #500000000
    $finish;
end

always #5 clk = ~clk;

test div_1(
    .clk(clk),
    .rst_n(rst_n),
    .clk_div5(clk_div5)
);
endmodule

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值