描述
设计一个同时输出7分频的时钟分频器,占空比要求为50%
注意rst为低电平复位
`timescale 1ns/1ns
module odo_div_or
(
input wire rst ,
input wire clk_in,
output wire clk_out7
);
//*************code***********//
reg [2:0] cnt1,cnt2 ;//也可以只用一个计数器
reg clk_p , clk_n;
always@(posedge clk_in or negedge rst)begin
if(!rst) begin
cnt1 <= 0;
end
else if (cnt1==3'd6)begin
cnt1 <= 0;
end
else begin
cnt1 <= cnt1 + 1 ;
end
end
always@(posedge clk_in or negedge rst)begin
if(!rst) begin
clk_p <= 0;
end
else begin
if (cnt1==3'd3 | cnt1==3'd6)//每三个时钟翻转一次,
clk_p <= ~clk_p;
else
clk_p <= clk_p;
end
end
always@(posedge clk_in or negedge rst)begin
if(!rst) begin
cnt2 <= 0;
end
else if (cnt2==3'd6)begin
cnt2 <= 0;
end
else begin
cnt2 <= cnt2 + 1 ;
end
end
always@(negedge clk_in or negedge rst)begin
if(!rst) begin
clk_n <= 0;
end
else begin
if (cnt2==3'd3 | cnt2==3'd6)
clk_n <= ~clk_n;
else
clk_n <= clk_n;
end
end
assign clk_out7= clk_p | clk_n;
//*************code***********//
endmodule