module clkgen (clock,clkdiv,clk500);
input clock;
output clkdiv;
output clk500;
reg [31:0] counter1;
reg clkdiv;
reg clk500;
reg [31:0] counter0;
parameter C_COUNT0=25'd500_00_000;//变量0用于产生1HZ的信号
parameter C_COUNT1=25'd100_000;//变量1用于产生500HZ的信号
/********产生1HZ频率的信号*********/
always @ (posedge clock)
begin
if(counter0==0)
begin
counter0<=C_COUNT0;
clkdiv<=~clkdiv;
end
else
counter0<=counter0-1;
end
/********产生500HZ频率的信号*********/
always @ (posedge clock)
begin
if(counter1==0)
begin
counter1<=C_COUNT1;
clk500<=~clk500;
end
else
counter1<=counter1-1;
end
endmodule
在该程序段中,只要更改变量counter的值,就可以改变输出频率。适当调节counter1的值,使得数码管动态显示在一个最佳的显示状态。变量counter的计算方法是:已知所需要的频率,根据公式(counter值=系统基准频率/所需频率)即可求得变量值。下载本文