晶振時鐘頻率爲50MHz,欲得到4Hz的頻率,就要進行50MHz/4Hz=12.5M次分頻(晶振時鐘週期爲20ns,欲得到0.25s的時鐘週期信號,就要進行0.25s/20ns=12.5M次分頻)。時鐘翻轉要等待的時間爲0.125s,則0.125s=20ns*(12.5M/2),所以需要等待12.5M/2次,即50MHz/4Hz/2次時鐘上升沿跳變。容易得到分頻器的條件公式:
p==晶振頻率/2/欲得到的時鐘頻率 - 1;(p爲整型計數值,從零開始計數)
module div(
input clk,
output reg clk_4Hz
);
integer p;
always @(posedge clk)
begin
if(p==25000000/4 - 1)
begin
p=0;
clk_4Hz <= ~clk_4Hz;
end
else
p = p + 1;
end
endmodule