题解 | #占空比50%的奇数分频#
占空比50%的奇数分频
https://www.nowcoder.com/practice/ccfba5e5785f4b3f9d7ac19ab13d6b31
偶数分频和奇数分频,还是是否是50%占空比的分频都可以合并成一种思路。
偶数n分频:cnt记录一下上升沿的个数,[0 : n / 2 - 1],一共n/2个数,无论在哪个数翻转都可以。
奇数不要求占空比n分频:cnt记录一下上升沿的个数,[0 : n - 1], 在0处翻转,且在非0处翻转一次即可。
50%占空奇数n分频:cnt记录一下上升沿和下降沿的个数,[0 : 2 * n - 1],在x处翻转,在x + n再fanz
//50%占空比的7分频 `timescale 1ns/1ns module odo_div_or ( input wire rst , input wire clk_in, output wire clk_out7 ); //*************code***********// //占空比50的七分频 reg[3 : 0] cnt; reg outs; assign clk_out7 = outs; always @(posedge clk_in or negedge clk_in or negedge rst) begin if (!rst) cnt <= 0; else if (cnt == 13) cnt <= 0; else cnt <= cnt + 1; end always @(posedge clk_in or negedge clk_in or negedge rst) begin if (!rst) outs <= 0; //这里为什么是6,挺坑的,要看题目的波形图数一下才知道 else if (cnt == 6) outs <= ~outs; else if (cnt == 13) outs <= ~outs; else outs <= outs; end //*************code***********// endmodule