Verilog设计分频器(一)

分频器,顾名思义,就是将一个波形,分成具有若干占空比的波。占空比是指在一个脉冲循环内,通电时间相对于总时间所占的比例。占空比(Duty Ratio)在电信领域中有如下含义:例如:脉冲宽度1μs,信号周期4μs的脉冲序列占空比为0.25。在一段连续工作时间内脉冲占用的时间与总时间的比值。

在CVSD调制(continuously variable slope delta modulation)中,比特”1”的平均比例(未完成)。

引申义:

在周期型的现象中,某种现象发生后持续的时间与总时间的比。

例如,在俗语中有句话:「三天打渔,两天晒网」,是说五天里有两天在晒网,即周期为5天,”打渔”的占空比为5分之3。

在Verilog数字系统设计中,我们要深入理解输入与输出端口,以及模块化设计。下图为其模块:
这里写图片描述

可以看出,我们要得到分配后的时钟,为其输出端口。

例如,我们要设计一个三天打鱼两天晒网的分频器,可以设计Verilog代码如下:

module div(
      input clk,rst_n;
      output [4:0] Q;
      output clk_div;);
      always@(posedge clk or negedge rst_n)
      begin
          if(!rst_n) begin
              Q<=0;
              clk_div<=1;
          end
          else if(Q<=4) begin    //两天晒网
              clk_div<=1;
              Q<=Q+1;
          end
          else if(Q<=10&&Q>4) begin  //三天打鱼
              Q<=Q+1;
              clk_div<=0;
          end
          else
              Q<=0;           //自动清零
      end 
 endmodule

其testbeach测试代码如下:

`timescale 1ns/1ns
module div_tb();
    reg clk,rst_n;
    wire [4:0]Q;
    wire clk_div;

    initial begin
    clk=0;
    #10 forever clk=~clk;
    end

    initial begin
    rst_n=0;
    #20 rst_n=1;
    end

 div u1(
    .clk(clk),
    .rst_n(rst_n),
    .Q(Q),
    .clk_div(clk_div));
endmodule

猜你喜欢

转载自blog.csdn.net/qq_41883755/article/details/81535222