令clk为原始时钟,则1000分频的时钟其行为可以表述成“由clk计数,每计500个脉冲,输出信号clkout翻转一次”。因此,可以用verilog语言实现,代码如下:
module clk_divider(clk, rst, clkout);
input clk,rst;
output clkout;
reg clkout;
reg [8:0] counter;
always @(posedge clk)
if(rst)
begin
counter <= 9'b0;
clkout <= 1'b0;
end
else
begin
if(counter == 499)
begin
counter <= 9'b0;
clkout <= ~clkout;
end
else
counter <= counter + 1'b1;
end
endmodule
加油