题解 | #任意小数分频#

任意小数分频

https://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***********//
//在每87个输入周期,共有3个8分频和7个9分频合成10个平均8.7分频
//输出从高电平开始

reg [7:0] cnt;
always@(posedge clk_in, negedge rst) begin
    if(!rst) begin
        cnt <= 8'd0;
    end
    else begin
        if(cnt == M_N) cnt <= 8'd1;
        else cnt <= cnt + 8'd1;
    end
end

reg clk_temp;
always@(*) begin
    if(!rst) clk_temp <= 1'b0;
    else begin
        case(cnt)
        8'd1:   clk_temp <= 1'b1;
        8'd5:   clk_temp <= 1'b0;
        8'd9:   clk_temp <= 1'b1;
        8'd13:   clk_temp <= 1'b0;
        8'd17:   clk_temp <= 1'b1;
        8'd21:   clk_temp <= 1'b0;
        8'd25:   clk_temp <= 1'b1;
        8'd29:   clk_temp <= 1'b0;
        8'd34:   clk_temp <= 1'b1;
        8'd38:   clk_temp <= 1'b0;
        8'd43:   clk_temp <= 1'b1;
        8'd47:   clk_temp <= 1'b0;
        8'd52:   clk_temp <= 1'b1;
        8'd56:   clk_temp <= 1'b0;
        8'd61:   clk_temp <= 1'b1;
        8'd65:   clk_temp <= 1'b0;
        8'd70:   clk_temp <= 1'b1;
        8'd74:   clk_temp <= 1'b0;
        8'd79:   clk_temp <= 1'b1;
        8'd83:   clk_temp <= 1'b0;
        endcase
    end
end

assign clk_out = clk_temp;

//*************code***********//
endmodule

全部评论

相关推荐

怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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