分频,简单来说就是根据输入时钟,使用计数器计数输入时钟的上升沿个数或者时钟下降沿个数,而后在你想设置分频数的位置进行输出信号的高低电平翻转,以此实现将输入信号的高频率信号转变为低频率输出信号。
下面介绍分频的两种方式,原理都是一样的,只是代码编写略有不同。
1.常规操作,手动将分频系数除以2
在此处进行设置分频系数时,可手动除以2,例如设置的分频系数为4,则此处的div直接设置成2即可。
module fenpin(
clk, //system clock
rst, //reset
div, //分频系数
clk_out //输出时钟
);
input clk;
input rst;
input [3:0] div; //自行设置
output clk_out;
reg [3:0] cnt; //计数器
always @(posedge clk or negedge rst)
begin
if(!rst)
begin
cnt <= 4'b1;
clk_out <= 1'b0;
end
else
begin
if(cnt==div) //此处设置时就将分频系数先除以2
begin
cnt <= 4'b1;
clk_out <= ~clk_out;
end
else
cnt <= cnt+1'b1;
en