gen_clk_2.v

来自「基于Verilog-HDL的硬件电路的实现 9.3 脉冲计数与显示   」· Verilog 代码 · 共 59 行

V
59
字号

/** 产生规定数目的时钟脉冲 **/
/** 产生占空比不同的时钟脉冲,高电平占2个时钟,低电平占1个时钟 **/

					
module GEN_CLK (CLK_IN, CLR, CLK_OUT);		
    input   CLK_IN, CLR;
    output  CLK_OUT;  
    reg     [5:0] Q;
    reg     [2:0] R;
    wire    CLK;
    reg     Q_OR;
    parameter NUM=12;             // 产生12个时钟脉冲

    assign   CLK=CLK_IN & Q_OR;

   always @ (posedge CLK or negedge CLR)
     begin
       if (!CLR)
         begin
           Q=NUM*3;
           Q_OR=1;
         end
       else if (Q==0)
         begin
           Q=0;
         end
       else
         begin
           Q=Q-1;
           Q_OR=Q[5]|Q[4]|Q[3]|Q[2]|Q[1]|Q[0];
         end
     end	
    
   always @ (posedge CLK or negedge CLR)
     begin
       if (!CLR)
         begin
           R=0;
         end
       else if (R==0)
         begin
           R=4;
         end
       else if (R==5)
         begin
           R=0;
         end
       else 
         begin
           R=R+1;
         end        
     end

   assign  CLK_OUT=R[2];
endmodule


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?