1、偶数分频电路实现
目标:可参数化偶数分频电路,占空比50%。参数WIDTH和DIV_RATIO。
【1】DIV_RATIO:分频系数
【2】WIDTH:分频系数的位宽
example:12分频电路,修改两个参数实现任意偶数分频。
code:
module clk_div_even #(
parameter WIDTH = 4,
parameter DIV_RATIO = 12
) (
input clk ,
input rst_n ,
output reg clk_even
);
localparam THRESH_HOLD = DIV_RATIO >> 1;
wire c_timeout ;
wire [WIDTH-1:0] nxt_cnt;
reg [WIDTH-1:0] r_cnt;
wire c_half_value;
assign c_timeout = (r_cnt == DIV_RATIO-1) ? 1'b1 : 1'b0;
assign nxt_cnt = c_timeout ? {WIDTH{1'b0}} : r_cnt + 1;
always@(posedge clk or negedge rst_n) begin
if(~rst_n) r_cnt <= 0;
else r_cnt <= nxt_cnt;
end
//duty ratio
assign c_half_value = (r_cnt < THRESH_HOLD) ? 1'b0 : 1'b1;
always@(posedge clk or negedge rst_n) begin
if(~rst_n) clk_even <= 1'b0;
else clk_even <= c_half_value;
end
endmodule
2、奇数分频电路实现
待续!!!