对于时钟的分频,Verilog而言如果是偶数分频那就可以直接用计数的方式进行分频。
如对频率进行二分频:
always@(posedge Clk or negedge Rst)
begin
if(!Rst)
div_2_r<=0;
else
div_2_r<=~div_2_r;
end
对于四分频如下:
reg [1:0]count;
always@(posedge Clk or negedge Rst)
begin
if(!Rst)
count<=0;
else
count<=count+1'b1;
end
always@(posedge Clk or negedge Rst)
begin
if(!Rst)
div_4_r<=0;
else if (count==0||count==2'b10)
div_4_r<=~div_4_r;
else
div_4_r<=div_4_r;
end
而对于三分频,五分频的话用以上计数的方式就似乎行不通了。这里用了一种很巧妙的方式来处理:
reg [1:0]s;
reg [1:0]n;
parameter s0=2'b00;
parameter s1=2'b01;
parameter s2=2'b10;
parameter n0=2'b00;
parameter n1=2'b01;
parameter n2=2'b10;
always