分享一个fpga任意分频的代码,非50%占空比的分频代码,
这里以16以内 的分频为例
module clkdiv #(
parameter div = 4
)
(
input clk,
input rst,
//input [3:0] div,
output reg clk_div
);
//reg clk_div;
reg [3:0] divcnt = 0;
always @(negedge clk or posedge rst) begin
if (rst == 1'b1) begin
divcnt <= 4'b0;
end else begin
if (divcnt == (div - 1)) begin
divcnt <= 4'b0;
end else begin
divcnt <= divcnt + 1;
end
end
end
always @(posedge clk or posedge rst) begin
if (rst == 1'b1) begin
clk_div <= 1'b0;
end else begin
if ((divcnt == 0) /*|| (r_divcnt ==0)*/) begin
clk_div <= 1'b1;
end else if(divcnt== (div>>1) ) begin //只有奇数可以
clk_div <= 1'b0;
end
end
end
endmodule
这里以下降沿计数数,上升沿分频的,时钟最好是50%的,不然容易出问题。