任意分频模板和技巧
(一) 偶数的分频技巧
(1) 任意偶数分频(占空比为50%)的模板
/******************** N dividen clk (1:1) duty Template ***************/
module clk_div(
inputclk_100,
output clk_out
);
/********* 10 dividen clk 1:1 duty success *********/
// 1--2--3--4--5-- ...--9--0--1 10分频就只需要10个状态
parameter N =4'd8; // here replace: 14, 12, 10, 8, 6, 4, 2
reg [3:0] cnt =4'd0;
always@(posedge clk_100)
begin
if(cnt == (N-1) )
cnt <= 4'd0;
else
cnt <= cnt + 1'b1;
end
reg clkout =1'b0;
always@(posedge clk_100)
begin
if(cnt == 4'd0)
clkout <= 1'b1;
else if(cnt == (N/2))
clkout <= 1'b0;
else
clkout <= clkout;
end
assign clk_out =clkout;
/***********************************************************/
上面的仿真图:
(2) 任意偶数分频(占空比为任意)的模板
/********************偶数任意分频 占空比为 (N/2+X):(N/2-X)的 模板 success ***************/
module clk_div(
inputclk_100,
output clk_out
);
// 1--2--3--4--5-- ...--9--0--1 10分频就只需要10个状态
parameter N =4'd8; // 14, 12, 10, 8 ,6 ,4 ,2
parameter X =4'd2;
reg [3:0] cnt =4'd0;
always@(posedge clk_100)
begin
if(cnt == (N-1) )
cnt <= 4'd0;
else
cnt <= cnt + 1'b1;
end
reg clkout =1'b0;
always@(posedge clk_100)
begin
if(cnt == 4'd0)
clkout <= 1'b1;
else if(cnt == (N/2 + X))
clkout <= 1'b0;
else
clkout <= clkout;
end
assign clk_out =clkout;
/***********************************************************************************/
上面的仿真图:
(二) 奇数的分频技巧
(1) 任意奇数分频(占空比为50%)的模板
/******************************* 任意奇数分频 (占空比为50%)************************************/
module clk_div(
inputclk_100,
output clk_out
);
parameter N =9; // Dividend
reg [3:0] cnt_p= 0;
always@(posedge clk_100)
begin
if(cnt_p == N-1)
cnt_p <= 4'd0;
else
cnt_p<= cnt_p + 1'b1;
end
reg clk_p = 0;
always@(posedge clk_100)
begin
if(cnt_p == (N-1)/2)
clk_p <= ~clk_p;
elseif(cnt_p == (N-1))
clk_p <= ~clk_p;
else
clk_p <= clk_p;
end
reg [3:0] cnt_n= 0;
always@(negedge clk_100)
begin
if(cnt_n == N-1)
cnt_n <= 4'd0;
else
cnt_n <= cnt_n + 1'b1;
end
reg clk_n = 0;
always@(negedge clk_100)
begin
if(cnt_n == (N-1)/2)
clk_n <= ~clk_n;
elseif(cnt_n == (N-1))
clk_n <= ~clk_n;
else
clk_n <= clk_n;
end
assign clk_out =clk_n | clk_p;
/*****************************************************************************/
仿真图如下:
(2) 任意奇数分频(占空比为任意)的模