《硬件架构的艺术》笔记(四)

时钟分频器

4.1 同步整数分频器(偶分频)

        偶数分频器可以用摩尔型状态机或者计数器很容易实现。

4.2 奇数整数分频(%50占空比) 

        产生具有50%占空比的奇数分频时钟最简单的方式是以输出频率的一半生成两个正交相位时钟(两个时钟之间有90度相位差),然后将两个波形异或得到输出时钟(以N=3为例)。

步骤1: 创建由时钟上升沿触发的0到(N-1)的计数器,N自然数,用于对参数时钟进行分频(N不等于偶数)
        对3 分频:从0计数到2···N=3
        对5分频:从0计数到4···N=5
        对7分频:从0计数到6···N=7

步骤 2: 使用两个开关触发器,按以下方式产生其使能信号。
        tffl_en: TFF1在计数值为0时使能。

        tff2_en:TFF2在计数值为 (N+1)/2 时使能(2对应3分频,3对应5分频,依此类推),如图4.2所示。

 步骤3: 产生以下信号。
        div1:TFF1的输出一由输人时钟 (ref_clk) 上沿触发;div2:TFF2的输出一由输人时钟 (ref_clk)下沿触发。

步骤4:通过异或 div1 和 div2 产生波形。

 4.3 非整数分频(非50%占空比)

        1.5倍分频

 注意:上述电路在仿真时可以正确工作,但是在综合时可能出现问题,因为在多路器的选择端切换开关时两个输入端的延时并不相等。多路器的输出不能马上改变并可能在输出时钟上产生毛刺。随着参考时钟 (ref_clk) 频率的增加,出现错误的可能性会越来越大。

1.5 倍分频的查找表实现

4.5倍分频计数器

        每9参考时钟包含两个对称脉冲。使用使用移位寄存器对非整数分频电路进行优化,使输出时钟不含毛刺。

(1)使用复位值为000000001的9位移位寄存器,在时钟上升沿使移位寄存器循环左移一位。
(2)产生4.5倍分频的第一个脉冲,将在半周期移位第1位并将之与第1位与第2位进行或操作(占空比40%)
(3)产生4.5倍分频的第二个脉冲,第5位和第6位在半周期时移动并与第6位进行或操作

reg    [8:0]    shift_cnt

always@(posedge clk or negedge rstn)begin 
    if(~rstn)begin 
        shift_cnt <= 9'b000000001;
    end else begin 
        shift_cnt <= shift_cnt << 1;
    end 
end 

always@(negedge clk or negedge rstn)begin 
    if(~rstn)begin 
        ps_cnt0 <= 1'b0;
        ps_cnt4 <= 1'b0;
        ps_cnt5 <= 1'b0;
    end else begin 
        ps_cnt1 <= shift_cnt[0];
        ps_cnt4 <= shift_cnt[4];
        ps_cnt5 <= shift_cnt[5];
    end 
end 

assign clk_out = (shift_cnt[0]|shift_cnt[1]|ps_cnt[0]) |                         
                 (shift_cnt[4]|shift_cnt[5]|ps_cnt[5]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值