实现占空比50%的偶分频
Verilog代码:
module evenfreq
#(
parameter DivNum = 8
)
(
input clk,
input rst,
output oclk
);
reg [DivNum:0] count;
reg tmp;
always @(posedge clk or negedge rst) begin
if(rst) begin
count <= 0;
tmp <= 1'b0;
end
else begin
if(count == ((DivNum>>1) - 1)) begin
count <= count + 1;
tmp <= 1'b1;
end
else if(count == (DivNum - 1)) begin
count <= 0;
tmp <= 1'b0;
end
else
count <= count + 1;
end
end
assign oclk = tmp;
endmodule
testbench仿真文件:
module evenfreq_tb();
reg clk;
reg rst;
wire oclk;
initial begin
clk = 0;
rst = 1'b1;
#16 rst = 1'b0;
end
initial begin
forever #5 clk = ~clk;
end
evenfreq freq1(
.clk(clk),
.rst(rst),
.oclk(oclk)
);
endmodule
仿真波形: