题解 | #占空比50%的奇数分频#

占空比50%的奇数分频

https://www.nowcoder.com/practice/ccfba5e5785f4b3f9d7ac19ab13d6b31

偶数分频和奇数分频,还是是否是50%占空比的分频都可以合并成一种思路。

偶数n分频:cnt记录一下上升沿的个数,[0 : n / 2 - 1],一共n/2个数,无论在哪个数翻转都可以。
奇数不要求占空比n分频:cnt记录一下上升沿的个数,[0 : n - 1], 在0处翻转,且在非0处翻转一次即可。
50%占空奇数n分频:cnt记录一下上升沿和下降沿的个数,[0 : 2 * n - 1],在x处翻转,在x + n再fanz
//50%占空比的7分频
`timescale 1ns/1ns

module odo_div_or
   (
    input    wire  rst ,
    input    wire  clk_in,
    output   wire  clk_out7
    );

//*************code***********//
    //占空比50的七分频
    reg[3 : 0] cnt;
    reg outs;
    assign clk_out7 = outs;

    always @(posedge clk_in or negedge clk_in or negedge rst) begin
        if (!rst) cnt <= 0;
        else if (cnt == 13) cnt <= 0;
        else cnt <= cnt + 1;
    end

    always @(posedge clk_in or negedge clk_in or negedge rst) begin
        if (!rst) outs <= 0;
        //这里为什么是6,挺坑的,要看题目的波形图数一下才知道
        else if (cnt == 6) outs <= ~outs;
        else if (cnt == 13) outs <= ~outs;
        else outs <= outs;
    end

//*************code***********//
endmodule
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务