第十四讲 偶分频

什么是偶分频?

就是把频率分成2,4,6,8......等的倍数的分频就是偶分频。

先写一个六分频

 

module divider_six (
    input   wire            sys_clk,
    input   wire            sys_rst_n,

    output   reg             clk_out
);
reg     [1:0]   cnt;

always @(posedge sys_clk or negedge sys_rst_n) 
begin
    if(sys_rst_n == 1'b0)
        cnt <=  2'd0;
    else    if(cnt ==2'd2)//2'd2的由来是偶分频公式y = x/2 - 1;
        cnt <= 2'd0;    
    else    
        cnt <= cnt + 2'd1;
end

always@(posedge sys_clk or negedge sys_rst_n)
    begin
    if(sys_rst_n == 1'b0)
        clk_out <= 1'b0;
    else    if(cnt == 2'd2)
        clk_out <=  ~clk_out;
    end    
    
endmodule

仿真文件

`timescale 1ns/1ns
module  tb_divider_six();

reg sys_clk ;
reg sys_rst_n ;

wire    clk_out;

initial
    begin
        sys_clk = 1'b1;
        sys_rst_n <= 1'b0;
        #20
        sys_rst_n <= 1'b1;
    end

always #10 sys_clk = ~sys_clk;

divider_six dicider_six_inst
 (
    .sys_clk(sys_clk),
    .sys_rst_n(sys_rst_n),

    .clk_out(clk_out)
);


endmodule

 仿真符合预期

该方法可以实现分频,在低速时钟下可以这样搞

但是在高速时钟下这样就不稳定

这样就引入了时钟网络这一概念,换句话说这个方式不好没有高速时钟网络稳定

改进方法采用flag

就是这里不一样 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值