分频器是数字系统设计中最常见的基本电路之一。所谓“分频”,就是把输入信号的频率变成成倍的低于输入频率的输出信号。分频器分为偶数分频器和奇数分频器,和计数器非常类似。
六分频计数器
module divider(
input wire sys_clk,
input wire sys_rst_n,
output reg clk_out
);
reg [1:0] cnt;
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
cnt <= 2'd0;
else if(cnt == 2'd2)
cnt <= 2'd0;
else
cnt <= cnt + 2'd1;
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
clk_out <= 1'd0;
else if(cnt == 2'd2)
clk_out <= ~clk_out;
else
clk_out <= clk_out;
endmodule
仿真代码(没有仿真出来结果,还没找到哪一步出了问题)
module tb_divider;
// Inputs
reg sys_clk;
reg sys_rst_n;
// Outputs
wire clk_out;
initial begin
// Initialize Inputs
sys_clk = 1'b1;
sys_rst_n <= 1'b0;
// Wait 20 ns for global reset to finish
#20
sys_rst_n <= 1'b1;
end
always #10 sys_clk = ~sys_clk;
// Instantiate the Unit Under Test (UUT)
divider uut (
.sys_clk(sys_clk),
.sys_rst_n(sys_rst_n),
.clk_out(clk_out)
);
endmodule