欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 计数器code

计数器code

2025/1/19 5:26:43 来源:https://blog.csdn.net/m0_46644085/article/details/145206758  浏览:    关键词:计数器code

理论学习:

                计数是一种最基本的运算,计数器就是实现着这种运算的逻辑电路。在数字系统中,计数器主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能。

code

                实现不带标志信号的计数器

module    counter#(parameter        CNT_MAX    =    32'd24_999_999)(input    wire    sys_clk          ,input    wire    sys_rst_n        ,output   reg    led_out    
);reg    [31:0]    cnt    ;always@(posedge sys_clk or negedge sys_rst_n    )beginif( sys_rst_n == 1'b0 )begincnt    <=    32'd0    ;endelse if( cnt == CNT_MAX )begincnt    <=    32'd0    ;endelsebegincnt    <=    cnt    + 1'b1    ;endendalways@(posedge sys_clk or negedge sys_rst_n)beginif( sys_rst_n    ==    1'b0 )beginled_out    <=    1'b0    ;endelse if( cnt == CNT_MAX )beginled_out    <=    ~led_out    ;endendendmodule

                实现带标志信号的计数器

module    counter#(parameter    CNT_MAX    =    32'd24_999_999)(input    wire    sys_clk      ,input    wire    sys_rst_n    ,output   reg     led_out);reg    [31:0]    cnt         ;reg              cnt_flag    ;always@(posedge sys_clk or negedge sys_rst_n )beginif( sys_rst_n == 1'b0 )begin   cnt    <=    32'd0    ;endelse if( cnt == CNT_MAX )begincnt    <=    32'd0    ;endelsebegincnt    <=    cnt    + 1'b1    ;endendalways@(posedge sys_clk or negedge sys_rst_n )beginif( sys_rst_n == 1'b0 )begincnt_flag    <=    1'b0    ;endelse if( cnt == CNT_MAX - 1'b1 )begincnt_flag    <=    1'b1endelsebegincnt_flag    <=    1'b0    ;endendalways@( posedge sys_clk or negedge sys_rst_n )begin]if( sys_rst_n == 1'b0 )beginled_out    <=    1'b0    ;endelse if( cnt_flag == 1'b1 )beginled_out    <=    ~led_out    ;endendendmodule

对比发现,第一种方法用了两个always,第二种方式用了三个always,发现第一种方法产生了两组寄存器,第二种产生了三组寄存器。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com