⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pulse_width_g.v

📁 基于Verilog-HDL的硬件电路的实现 9.5 脉冲周期的测量与显示   9.5.1 脉冲周期的测量原理   9.5.2 周期计的工作原理   9.5.3 周期测量模块的设计与实现
💻 V
字号:


/** 计算脉冲宽度 **/

module  PULSE_WIDTH_G  (CLK, CLKX, RST, WIDTH);   
    input    CLK, CLKX, RST;
    output   [16:0] WIDTH; 
    reg      [16:0] WIDTH; 
    reg      [16:0] OUT;   
    reg      CNT_EN;
    reg      LOAD;
    wire     CNT_CLR; 
    wire     CLK_M, CLKX_M;    
    reg      [3:0] Q;           

    assign   CLKX_M=CLKX & (Q[3]|Q[2]|Q[1]|Q[0]); 

    always @ (posedge CLKX_M or negedge RST)
       begin
         if (!RST)
           begin
             Q=9;
             CNT_EN=0;
             LOAD=1;
           end
         else if (Q==0)
           begin
             Q=0;
             CNT_EN=0;
           end
         else
           begin
             Q=Q-1;
             CNT_EN=~CNT_EN;
             LOAD=~CNT_EN;	
           end
        end
    
			
    assign   CNT_CLR=~(~CLKX_M&~CNT_EN);

    assign   CLK_M=CLK & (Q[3]|Q[2]|Q[1]|Q[0]);

    always @(posedge CLK_M or negedge CNT_CLR)
       begin
        if (!CNT_CLR)   
           OUT=0;
        else if (CNT_EN)
           begin
             if (OUT==99999)
               begin
                 OUT=99999;
               end
             else
               begin
                 OUT=OUT+1;
               end
           end
       end

    always @ (posedge LOAD)
       begin
         WIDTH=OUT;
       end
endmodule

⌨️ 快捷键说明

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