牛客进阶题目16:占空比50%的奇数分频

根据题目中波形可以看出,周期为7,高电平和低电平分别持续3.5个周期。继续观察波形,输出信号拉高时和输入时钟下降沿对齐,拉低时和输入时钟上升沿对齐。由于同一个信号不能同时和上升沿和下降沿对齐。因此可以推断其是由两个信号进行组合逻辑得来,其中一个信号与上升沿对齐,另一个信号与下降沿对齐。由于手画的波形太丑,这里放一张题解中的波形。

alt

`timescale 1ns/1ns

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

//*************code***********//
reg clk_pos ;
reg clk_neg ;
reg [2:0]   cyc_cnt ;

always @(posedge clk_in or negedge rst) begin
    if(!rst)
        cyc_cnt <= 'd0 ;
    else begin
        if(cyc_cnt == 6)
            cyc_cnt <=  0    ;
        else
            cyc_cnt <= cyc_cnt + 1 ;
    end
end

always @(posedge clk_in or negedge rst) begin
    if(!rst)
        clk_pos <= 1'b0 ;
    else if(cyc_cnt == 3)
        clk_pos <= 1'b1 ;
    else if(cyc_cnt == 6)
        clk_pos <= 1'b0 ;
    else
        clk_pos <= clk_pos ;
end
always @(negedge clk_in or negedge rst) begin
    if(!rst)
        clk_neg <= 1'b0 ;
    else if(cyc_cnt == 3)
        clk_neg <= 1'b1 ;
    else if(cyc_cnt == 6)
        clk_neg <= 1'b0 ;
    else
        clk_neg <= clk_neg ;
end

assign clk_out7 = clk_pos | clk_neg ;
//*************code***********//
endmodule
posted @   骑猪上树的少年  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
回到顶部
点击右上角即可分享
微信分享提示