首页 > 其他分享 >牛客进阶题目17:任意小数分频(重点)

牛客进阶题目17:任意小数分频(重点)

时间:2023-01-08 23:14:03浏览次数:34  
标签:分频 cnt 进阶 17 clk rst div parameter reg

此题无思路,抄一个题解在这

`timescale 1ns/1ns

module div_M_N(
 input  wire clk_in,
 input  wire rst,
 output reg 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]   cnt_87  ;
reg [2:0]   cnt_8   ;
reg [3:0]   cnt_9   ;

always @(posedge clk_in or negedge rst) begin
    if(!rst)
        cnt_87 <= 'd0 ;
    else if(cnt_87 == (M_N - 1))
        cnt_87 <= 'd0 ;
    else
        cnt_87 <= cnt_87 + 1 ;
end

always@(posedge clk_in or negedge rst) begin
    if(!rst)
        cnt_8 <= 'd0;
    else if(cnt_87 < c89)
        cnt_8 <= (cnt_8==div_e-1) ? 'd0 : cnt_8 + 1 ;
    else
        cnt_8 <= 'd0 ;
end
always@(posedge clk_in or negedge rst) begin
    if(!rst)
        cnt_9 <= 'd0;
    else if(cnt_87 >= c89)
        cnt_9 <= (cnt_9==div_o-1) ? 'd0 : cnt_9 + 1 ;
    else
        cnt_9 <= 'd0 ;
end


always @(posedge clk_in or negedge rst) begin
    if(!rst)
        clk_out <= 1'b0 ;
    else if(cnt_87 < c89) begin
        if(cnt_8 == div_e/2||(cnt_8==0))
            clk_out <= ~clk_out ;
        else
            clk_out <= clk_out ;
    end
     else if(c89 <= cnt_87 < M_N) begin
        if(cnt_9 == (div_o-1)/2||(cnt_9==0))
            clk_out <= ~clk_out ;
        else
            clk_out <= clk_out ;
    end 
    else
        clk_out <= 1'b0 ;
end  

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

标签:分频,cnt,进阶,17,clk,rst,div,parameter,reg
From: https://www.cnblogs.com/icwangpu/p/17035669.html

相关文章

  • 牛客进阶题目16:占空比50%的奇数分频
    根据题目中波形可以看出,周期为7,高电平和低电平分别持续3.5个周期。继续观察波形,输出信号拉高时和输入时钟下降沿对齐,拉低时和输入时钟上升沿对齐。由于同一个信号不能同时......
  • OpenJ_Bailian - 1751
    OpenJ_Bailian-1751题解:最小生成树问题,Kruskal算法已经帮你建好的边就不用再建了,直接合并,当然我们这一题需要将给的坐标转化成边的,然后我们如何输出建哪几条路呢?我们......
  • GB/T 35279-2017 信息安全技术 云计算安全参考架构 附录下载地址
    声明本文是学习​​GB-T35279-2017信息安全技术云计算安全参考架构.下载地址http://github5.com/view/594​​而整理的学习笔记,分享出来希望更多人受益,如果存在侵权......
  • 178.分数排名
    题目描述编写SQL查询对分数进行排序。排名按以下规则计算:分数应按从高到低排列。如果两个分数相等,那么两个分数的排名应该相同。在排名相同的分数后,排名数应该是下......
  • 牛客进阶题目15:自动贩售机2
    跟上题基本类似,加了个sel选择`timescale1ns/1nsmoduleseller2( inputwireclk, inputwirerst, inputwired1, inputwired2, inputwiresel, ou......
  • 牛客进阶题目14:自动贩售机1
    用计数器对输入金额进行计数,大于等于1.5元时出货并找零。注意在出货的同时也可能投币,并且不支持同时投入三种货币`timescale1ns/1nsmoduleseller1( inputwireclk......
  • 牛客进阶题目13:时钟分频(偶数)
    用计数器来翻转即可`timescale1ns/1nsmoduleeven_div(inputwirerst,inputwireclk_in,outputwireclk_out2,outputwir......
  • 牛客进阶题目12:重叠序列检测
    注意看波形,flag相对于data的输入延迟两拍。也就是在输入1011后,第一拍进行检测,第二拍拉高flag。`timescale1ns/1nsmodulesequence_test2( inputwireclk, inputw......
  • CodeForces - 1701C Schedule Management
    CodeForces-1701CScheduleManagement题解:二分答案很显然如果你给的时间越长,所有工作就越容易被完成,所以时间存在二分性,我们直接二分时间但是我们现在需要解决一......
  • CodeForces - 1730B Meeting on the Line
    CodeForces-1730BMeetingontheLine题解:思维,找货舱位置/二分答案首先直接来引理,假设现在一个数轴上有许多点,那么一个点到这些点距离最短之和的点肯定在数轴最左端......