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

占空比50%的奇数分频

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

`timescale 1ns/1ns

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

//*************code***********//
//定义分频系数
parameter CLK_INV = 3'd7;
parameter CLK_INV1 = CLK_INV/2;

//时钟两触发沿对应信号
reg clk_out7_n;
reg clk_out7_p;

//分频计数器
reg [2:0]cnt;

//分频计数器计数
always@(posedge clk_in or negedge rst)begin
    if(!rst)
        cnt <= 3'd0;
    else if(cnt == CLK_INV-1)
        cnt <= 3'd0;
    else    
        cnt <= cnt + 1'b1;
end

//上升沿触发
always@(posedge clk_in or negedge rst)begin
    if(!rst)
        clk_out7_p <= 1'b0;
    else if(cnt == CLK_INV1)
        clk_out7_p <= 1'b1;
    else if(cnt == CLK_INV-1)
        clk_out7_p <= 1'b0;
    else    
        clk_out7_p <= clk_out7_p;
end

//下降沿触发
always@(negedge clk_in or negedge rst)begin
    if(!rst)
        clk_out7_n <= 1'b0;
    else if(cnt == CLK_INV1)
        clk_out7_n <= 1'b1;
    else if(cnt == CLK_INV-1)
        clk_out7_n <= 1'b0;
    else    
        clk_out7_n <= clk_out7_n;
end

//奇数倍分频
assign clk_out7 = clk_out7_p | clk_out7_n;
//*************code***********//
endmodule

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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