zoukankan      html  css  js  c++  java
  • 【连载】 FPGA Verilog HDL 系列实例顺序脉冲发生器

    【连载】 FPGA Verilog HDL 系列实例  

    Verilog HDL 之 顺序脉冲发生器

    一、原理

      在数字电路中,能按一定时间、一定顺序轮流输出脉冲波形的电路称为顺序脉冲发生器。 在数字系统中,常用来控制某些设备按照事先规定的顺序进行运算或操作。
      顺序脉冲发生器也称脉冲分配器或节拍脉冲发生器,一般由计数器(包括移位寄存器型计数器)和译码器组成。作为时间基准的计数脉冲由计数器的输入端送入,译码器即将计数器状态译成输出端上的顺序脉冲,使输出端上的状态按一定时间、一定顺序轮流为1,或者轮流为0。顺序脉冲发生器分为计数器型顺序脉冲发生器和移位型顺序脉冲发生器。
      计数器型顺序脉冲发生器一般用按自然态序计数的二进制计数器和译码器构成。移位型顺序脉冲发生器由移位寄存器型计数器加译码电路构成。其中环形计数器的输出就是顺序脉冲,故可不加译码电路就可直接作为顺序脉冲发生器。

    二、实现

    在设计文件中输入Verilog代码

     1  /****************************** 分频模块  *************************************/
    2
    3 `timescale 1 ns / 1 ps
    4 module qu_dou ( clk ,rst , a ,b );
    5
    6 input clk ;
    7 wire clk ;
    8 input rst ;
    9 input a ;
    10 wire a ;
    11
    12 output b ;
    13 reg b ;
    14
    15 reg [31:0] cnt ;
    16 reg clkout ;
    17 always @ ( posedge clk or negedge rst )
    18 begin
    19 if ( rst == 1'b0 )
    20 cnt <= 0 ;
    21 else begin if ( a==1'b1 ) begin
    22 if ( cnt >= 32'd3000000 )
    23 b <= 1 ;
    24 else
    25 cnt <= cnt + 1'b1 ;
    26
    27 end
    28 else begin b <= 1'b0 ;
    29 cnt <= 0 ;
    30 end
    31 end
    32 end
    33
    34
    35 endmodule

    功能实现

     1 `timescale 1 ns / 1 ps
    2
    3 module pulsegen ( Q ,clr ,clk ,sysclk , rst);
    4
    5 input clr ;
    6 wire clr ;
    7 input clk ;
    8 wire clk ;
    9 input sysclk ;
    10 wire sysclk ;
    11 input rst ;
    12 wire rst ;
    13
    14 output [7:0] Q ;
    15 wire [7:0] Q ;
    16 reg [7:0] temp ;
    17 reg x;
    18
    19 /***************** 例化去抖模块 *************************************/
    20 wire clk_r ;
    21 qu_dou qu_dou (
    22 .clk (sysclk) ,
    23 .rst (rst) ,
    24 .a (clk),
    25 .b (clk_r));
    26
    27 //********************************************************************
    28 assign Q =temp;
    29 always @ ( posedge clk_r or posedge clr )
    30 begin
    31 if ( clr==1)
    32 begin
    33 temp <= 8'b00000001;
    34 x= 0 ;
    35 end
    36 else
    37 begin
    38 x<= temp[7] ;
    39 temp <= temp<<1 ;
    40 temp[0] <=x;
    41 end
    42 end
    43 endmodule
  • 相关阅读:
    winform 与 html 交互 简单案例
    Winform窗口弹出位置控制
    c#预处理指令
    最简单的数据绑定
    Asp.Net细节性问题精萃
    AjaxUploader使用
    Log4net对文件的支持
    Log4net对数据库的支持
    Log4net使用
    Log4net介绍
  • 原文地址:https://www.cnblogs.com/kongtiao/p/2151878.html
Copyright © 2011-2022 走看看