module div3(
input clkin ,
input rstn ,
output clkout
);
reg [1:0] cnt ;
always @(posedge clkin or negedge rstn) begin
if(!rstn)
cnt <= 'd0 ;
else
cnt <= (cnt == 'd2) ? 'd0 : cnt + 1'b1 ;
end
reg clkp,clkn ;
always @(posedge clkin or negedge rstn) begin
if(!rstn)
clkp <= 1'b0 ;
else if( cnt == 'd1 || cnt == 'd2)
clkp <= ~clkp ;
end
always @(negedge clkin or negedge rstn) begin
if(!rstn)
clkn <= 1'b0 ;
else if( cnt == 'd1 || cnt == 'd2)
clkn <= ~clkn ;
end
assign clkout = clkn | clkp ;
endmodule
着种方法得到的三分频电路确实可以实现50占空比
缺点就是电路翻转率过大,功耗比较高

仿真图
module div3(
input clkin ,
input rstn ,
output clkout
);
reg [1:0] cnt ;
always @(posedge clkin or negedge rstn) begin
if(!rstn)
cnt <= 'd0 ;
else
cnt <= (cnt == 'd2) ? 'd0 : cnt + 1'b1 ;
end
reg clkp,clkn ;
always @(posedge clkin or negedge rstn) begin
if(!rstn)
clkp <= 1'b0 ;
else if( cnt == 'd2 )
clkp <= ~clkp ;
end
always @(negedge clkin or negedge rstn) begin
if(!rstn)
clkn <= 1'b0 ;
else if( cnt == 'd1 )
clkn <= ~clkn ;
end
assign clkout = clkn ^~ clkp ; //同或
endmodule
降低反转率,降低功耗,三分频优化代码

优化之后仿真图