<转自http://oomusou.cnblogs.com/>
设计一个占空比为50%的奇数分频:
产生两个clock,一个是posedge clk,一个是negedge clk,最后將两个clock做or,这样就可以
产生出0.5個clock了.
module div_odd (
input clk,
input rst_n,
output o_clk
);
parameter odd=7; //分频系数
parameter cn=odd-1; //计数器最大值
parameter N=(odd-1)/2; //电平翻转点
reg [2:0] cnt_p;
reg [2:0] cnt_n;
reg clk_p;
reg clk_n;
assign o_clk = clk_p | clk_n & rst_n;
always@(posedge clk )
begin
if (!rst_n)
cnt_p <= 0;
else if (cnt_p == cn) //
cnt_p <= 0;
else
cnt_p <= cnt_p + 1;
end
always@(posedge clk )
begin
if (cnt_p < N)
clk_p <= 1;
else
clk_p <= 0;
end
always@(negedge clk )
begin
if (!rst_n)
cnt_n <= 0;
else if (cnt_n == cn)
cnt_n <= 0;
else
cnt_n <= cnt_n + 1;
end
always@(negedge clk )
begin
if (cnt_n < N)
clk_n <= 1;
else
clk_n <= 0;
end
endmodule