提及分频器我们首先会想到计数器,计数器实际上是控制时序的一个很好的方法,所以对计数器有一个比较深入的了解是十分必要的事情。下面我们就从计数器开始对分频器做一个简单的介绍。
1、计数器
说到计数器的电路结构其实非常简单,无非就是一个寄存器和一个加法器。
module test(
clk,
rst,
count
);
input clk,rst;
output[3:0] count;
reg [3:0]count;
always@(posedge clk or negedge rst)
begin
if(!rst)
count<=0;
else if(count==5)
count<=0;
else
count<=count+1;
end
endmodule
2、整数分频
电路的输入时钟频率为1MHz,要求输出250KHz,1:3的方波。
代码分为两个部分,一个是计时器,另一个是占空比的处理。
module test(
clk,
rst,
dout1
);
input clk,rst;
output dout1;
reg dout1;
reg [1:0]count1;
always@(posedge clk or negedge rst)
begin
if (!rst)
count1<=0;
else if(count1==3)
count1<=0;
else
count1<=count1+1;
end
always@(posedge clk or negedge rst)
begin
if (!rst)
dout1<=0;
else if(count1==0)
dout1<=1;
else if (count1==1)
dout1<=0;
else
dout1<=dout1;
end
endmodule
3、小数分频
关于小数分频,我们来分析一个例子,这里只做思路上的分析。
例:由68MHz得到9MHz。
68/9=7......5;可以推出68/9分频,可以看成5个8分频和4个7分频,这个7分频和8分频中的数字7和8就是从商中得出来的。那5个8分频和4个7分频中的数字5和4就是从余数中的出来的,5是余数,4是(9-5)。