题解 | #任意小数分频#

任意小数分频

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

全部评论

相关推荐

暴杀流调参工作者:春招又试了一些岗位,现在投递很有意思,不仅要精心准备简历,投递官网还得把自己写的东西一条一条复制上去,阿里更是各个bu都有自己的官网,重复操作无数次,投完简历卡完学历了,又该写性格测评、能力测评,写完了又要写专业笔试,最近还有些公司搞了AI辅助编程笔试,有些还有AI面试,对着机器人话也听不明白录屏硬说,终于到了人工面试又要一二三四面,小组成员面主管面部门主管面hr面,次次都没出错机会,稍有不慎就是挂。 卡学历卡项目卡论文卡实习什么都卡,没有不卡的😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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