分频:简单来说,二分频后的方波一个周期为标准方波高低电平循环两个周期,四分频为4个周期。分频后的时钟周期为原来的n倍,即为n分频。
频率和周期的关系:f=1/T
(1)简单的计数器
计数器实质是对输入的驱动时钟进行计数,在某种意义上讲,等同于对时钟进行分频。
下面举例来说明:假设寄存器位数为n,最大计数长度为2n(从0计数到N-1)的计数器。假设位数为3,从0开始依次计数为:000、001、010、011、100、101、110、111。一共计8个数,计满后下一次计数为000,开始循环计数。观察这几个数的最高位,00001111,每一个周期计数一次,共计8次,8个周期,8分频。次高位为00110011,4个周期完成循环,为4分频。最低位为01010101,2个周期完成循环,为2分频。最高位的输出为N=2^n分频,次高位为N/2分频。
module test#(parameter N=3)(
input clk,
input rst_n,
output clk_div
);
reg [N-1:0] div_reg ;//分频计数器
always @(posedge clk or negedge rst_n)
if (rst_n == 1'b0 )
div_reg <= 0 ;
else
div_reg <= div_reg + 1'b1 ;
assign clk_div = div_reg[N-1] ;
endmodule
当n不是2的整数次幂时,如n为5,从0计数到n-1,其最高位作为时钟输出(占空比不一定为 50%),即从0计数到4后又返回0,那么需要定义一个三位的寄存器。寄存器的计数过程为:
000-001-010-011-100-000-001-010-011-100-000-001-010-011-100-000-001-010-011-100···
最高位为0-0-0-0-1-0-0-0-0-1,计数5次,5个周期,为5分频。但占空比不是50%。
可以看出:一个最大计数长度为N(从0计数到N-1)的计数器,其最高位的输出,是输入频率的N分频。
(2)偶数分频(50%占空比)
当进行2、4、8(2的n次)分频时,输出2的n次最高位即为相应分频,并且占空比为50%,但6、10这样的分频,占空比就不是50%了,该怎么办呢?
解决办法很简单,以6分频举例,当计数到3时,将时钟翻转,计数清零并重新计数。当n=6时,6/2=3,计算机计数从0开始,0、1、2、3共计数4次。
module test#(parameter N=6)(
input clk

文章详细介绍了如何使用Verilog进行分频,包括简单计数器实现的分频,偶数分频保证50%占空比的方法,以及奇数倍分频实现接近50%占空比的技巧,提供了具体的Verilog代码示例。
最低0.47元/天 解锁文章
1056

被折叠的 条评论
为什么被折叠?



