奇数分频器电路设计

1.1 概念

奇数分频,指的是分频后的频率和分频前的的频率比例是奇数,比如100Mhz时钟,进行三分频后就是33.333Mhz。

1.2 实现原理

分别用上升沿计数到N/2 +1,分频后输出时钟进行翻转,再计数到N/2输出out_clk1;再用下降沿计数到到N/2 +1,分频后输出时钟进行翻转,再计数到N/2输出out_clk2; 将out_clk1与out_clk2相或即可。

1.3 五分频电路设计

下面展示 功能代码

`timescale 1ns / 1ps
///

// Verilog 功能代码如下:
module divide_5(
   input   sys_clk ,
   input   sys_rst_n,
   output  div_clk

    );
    
    parameter  N=5 ;
    
    reg  [3:0] cnt1 ;
    reg  [3:0] cnt2 ;
    
    reg  clk1 ;
    reg  clk2 ;
      
always @ (posedge sys_clk or negedge sys_rst_n)
      if(!sys_rst_n)begin
           cnt1 <= 4'b1 ;
           clk1 <= 1'b0 ;
      end
      else if(clk1 == 1'b0)
                if(cnt1 == N/2 +1) begin
                    clk1 <= ~ clk1 ;
                    cnt1 <= 1'b1 ;
                 end
                 else 
                    cnt1 <= cnt1 + 1'b1 ;
            else if(cnt1 == N/2) begin 
                      clk1 <= ~ clk1 ;
                      cnt1 <= 1'b1 ;
                  end
                  else
                       cnt1 <= cnt1 + 1'b1 ;

always @ (negedge sys_clk or negedge sys_rst_n)
      if(!sys_rst_n)begin
           cnt2 <= 4'b1 ;
           clk2 <= 1'b0 ;
      end
      else if(clk2 == 1'b0)
                if(cnt2 == N/2 +1) begin
                    clk2 <= ~ clk1 ;
                    cnt2 <= 1'b1 ;
                 end
                 else 
                    cnt2 <= cnt2 + 1'b1 ;
            else if(cnt2 == N/2) begin 
                      clk2 <= ~ clk2 ;
                      cnt2 <= 1'b1 ;
                  end
                  else
                       cnt2 <= cnt2 + 1'b1 ;
                       
assign  div_clk = clk1 | clk2 ;

endmodule



仿真代码如下:
module tb_divide_5(

    );
    
    reg  clk ;
    reg  rst ;
    wire out ;
    
  initial  begin
      clk = 1'b0 ;
      rst = 1'b0 ;
      #200
      rst = 1'b1 ;
      
  end
    
 always #5 clk = ~clk ;
 
 divide_5  divide_5_inst(
       .sys_clk (clk),
       .sys_rst_n(rst),
       .div_clk(out)
    );
    
endmodule


1.4 仿真时序图

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值