题解 | #任意小数分频#

任意小数分频

http://www.nowcoder.com/practice/24c56c17ebb0472caf2693d5d965eabb

`timescale 1ns/1ns

module div_M_N(
 input  wire clk_in,
 input  wire rst,
 output wire clk_out
);
parameter M_N = 8'd87; 
parameter c89 = 8'd24; // 8/9时钟切换点
parameter div_e = 5'd8; //偶数周期
parameter div_o = 5'd9; //奇数周期
//*************code***********//
    reg    [6:0]    cyc_cnt;
    reg             div_flag;
    reg    [3:0]    clk_cnt;
    reg             clk_out_reg;
    
always@(posedge clk_in or negedge rst)begin 
    if(!rst)begin 
       cyc_cnt <= 7'd0; 
    end
    else    if(cyc_cnt == M_N - 1'b1)begin 
       cyc_cnt <= 7'd0; 
    end
    else    begin 
       cyc_cnt <= cyc_cnt + 1'b1; 
    end
end

always@(posedge clk_in or negedge rst)begin
    if(!rst)begin 
        div_flag <= 1'b0;
    end
    else    if((cyc_cnt == (c89 - 1'b1)) || (cyc_cnt == (M_N - 1'b1)))begin 
       div_flag <= ~div_flag; 
    end
    else    begin 
       div_flag <= div_flag; 
    end
end

always@(posedge clk_in or negedge rst)begin 
    if(!rst)begin 
        clk_cnt <= 4'd0;
    end
    else    case(div_flag)
        1'b0 : if(clk_cnt == (div_e - 1'b1))begin 
                    clk_cnt <= 4'd0;              
                end
                else    begin 
                    clk_cnt <= clk_cnt + 1'b1; 
                end
        1'b1 : if(clk_cnt == (div_o - 1'b1))begin 
                    clk_cnt <= 4'd0;
                end
                else    begin 
                    clk_cnt <= clk_cnt + 1'b1; 
                end  
    endcase
end

always@(posedge clk_in or negedge rst)begin 
    if(!rst)begin 
       clk_out_reg <= 1'b0; 
    end
    else    if(((div_flag == 1'b0) && (clk_cnt <= ((div_e>>2)+1))) || ((div_flag) && (clk_cnt <= ((div_o>>2)+1))))begin 
        clk_out_reg <= 1'b1;
    end
    else    
        clk_out_reg <= 1'b0;
end

assign clk_out = clk_out_reg;
//*************code***********//
endmodule
全部评论

相关推荐

01-14 10:23
已编辑
湖南师范大学 计调
太久没更新,前几天看到一条评论,说“牛客就是当年那群做题区毕业了开始找工作还收不住那股味”的群体。字里行间透着居高临下的评判,不是,他该不会以为自己很幽默?很犀利吧?作为在牛客混了不算短日子的用户,我感到的不只是被冒犯,更是一种深刻的悲哀——这种以“松弛感”为名,对另一种生存策略的轻蔑,颇有一种自己考不上大学早早出来混社会,嘲笑考上大学的人是书呆子,然后大言不惭地说:死读书有什么用,人脉和资源才是硬道理。我不知道说这个话的人,手头究竟握着多少真正管用的人脉与资源,也不知道他这么傲慢地说出“那股味”的时候,是站在哪一个巨人的肩膀上,才能如此“松弛从容”地俯视众生,还能品评出别人身上“没收住”的余...
淬月星辉:这种评论把正常的努力扭曲成卷😂,说白了就是自己不努力,看着身边努力的人一个个都事业有成了,自己的心里开始不平衡了,就发这种酸言酸语。牛客可以说是我用过那么多平台里社区氛围最好的论坛了,用了大半年了,基本上没见过有人吵架的,都是在互帮互助提建议,帮忙看简历的,帮忙选offer的,帮忙指点学习路线的,分享工作经验和趣事的,我觉得这才是互联网该有的样子。
点赞 评论 收藏
分享
头像
2025-12-27 13:01
三峡大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务