【Verilog基础】7.计数器

这篇具有很好参考价值的文章主要介绍了【Verilog基础】7.计数器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

4位计数器

module count4(out,reset,clk);
    output[3:0] out;
    input reset,clk;
    reg[3:0] out;
always @(posedge clk)
    begin
        if (reset) out<=0; 
        else out<=out+1; 
    end
endmodule

如果是电平触发的话,只需要把posedge clk 换成reset or clk 就可以了;

4位计数器--带清零端、置数端和使能端

module cnt16(co,q,clk,r,s,en,d);
    output[3:0] q; //计数输出端
    output co; //进位信号
    input clk,r,s,en; //时钟信号、清零端、置数端和使能端
    input[3:0] d; //预置数数据端
    reg [3:0] q;
    reg co;
always @(posedge clk)
     if(r)
         begin q=0; end
     else
         begin 
             if(s)
                 begin q=d; end
             else
                 if(en)
                     begin 
                         q=q+1;
                     if(q==4'b1111)
                         begin co=1; end
                      else
                         begin co=0; end
                      end
                 else
                     begin q=q; end
                 end
endmodule

同步置数和同步清零的计数器

module count(out,data,load,reset,clk);
    output[7:0] out;
    input[7:0] data;
    input load,clk,reset;
    reg[7:0] out;
always @(posedge clk) //clk 上升沿触发
    begin
        if (!reset) out = 8'h00; //同步清 0,低电平有效
            else if (load) out = data; //同步预置
        else out = out + 1; //计数
    end
endmodule

4 位 Johnson 计数器(异步复位)

Johnson 计数器是一种数字电路, 具有以反馈方式连接的一系列触发器。 如果位数为N,则Verilog Johnson计数器是对2N个状态进行计数的计数器。
该电路是一种特殊类型的移位寄存器, 中最后一个触发 器的补码输出反馈到第一个触发器的输入。 类似于环形计数器。文章来源地址https://www.toymoban.com/news/detail-533711.html

module johnson(clk,clr,out);
    input clk,clr;
    output[3:0] out;
    reg[3:0] out;
always @(posedge clk or posedge clr)
    begin
        if (clr) out<= 4'h0;
        else
        begin out<= out<< 1;
              out[0]<= ~out[3];
        end
    end
endmodule

十进制模 24 计数器

module cnt24(ten,one,co,clk,clr);
    output[3:0] ten,one;
    output co;
    input clk,clr;
    reg[3:0] ten,one;
    reg co;
always @(posedge clk)
    begin
         if(clr) 
             begin ten<=0;one<=0; end
         else
             begin
                 if({ten,one}==8'b00100011)
                 begin ten<=0;one<=0;co<=1; end
             else if(one==4'b1001)
                  begin one<=0;ten<=ten+1;co<=0; end
              else
                  begin one=one+1;co<=0; end
                 end
     end
endmodule

模为 60 的 BCD 码加法计数器

module count60(qout,cout,data,load,cin,reset,clk);
    output[7:0] qout;
    output cout;
    input[7:0] data;
    input load,cin,clk,reset;
    reg[7:0] qout;
always @(posedge clk) //clk 上升沿时刻计数
    begin
        if (reset) qout<=0; //同步复位
        else if(load) qout<=data; //同步置数
        else if(cin)
            begin
                if(qout[3:0]==9) //低位是否为 9,是则
                begin
                qout[3:0]<=0; //回 0,并判断高位是否为 5
                if (qout[7:4]==5) qout[7:4]<=0;
                else
                qout[7:4]<=qout[7:4]+1; //高位不为 5,则加 1
                end
                else //低位不为 9,则加 1
                qout[3:0]<=qout[3:0]+1;
           end
       end

assign cout=((qout==8'h59)&cin)?1:0; //产生进位输出信号
endmodule

减法计数器

module jian_cnt10(q,clk,rst);
    output[3:0] q; //计数器输出端
    input clk,rst; //时钟、复位
    reg[3:0] q;
always @(posedge clk)
    begin
        if(rst) 
             begin q<=0; end
         else if(q==4'b0000)
         begin q<=4'b1001; end
         else 
         begin q<=q-1; end
    end
endmodule

到了这里,关于【Verilog基础】7.计数器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数电实验3】Verilog—1位十进制可逆计数器

    【2022.04西南交大数电实验】 【2022.04.17 更新修改了一个错误: ~clr改为了clr: 另外 ,把代码修得整齐好看了一点】 【代码参考博主weixin_49270464,已进行适当修改,符合实验要求。本代码及波形已通过老师验收。仅供参考。】    信号名 主板器件 PIN 信号名 主板器件 PIN clr

    2024年02月06日
    浏览(41)
  • 【Verilog基础】7.计数器

    如果是电平触发的话,只需要把posedge clk 换成reset or clk 就可以了; Johnson 计数器是一种数字电路, 具有以反馈方式连接的一系列触发器。 如果位数为N,则Verilog Johnson计数器是对2N个状态进行计数的计数器。 该电路是一种特殊类型的移位寄存器, 中最后一个触发 器的补码输出

    2024年02月13日
    浏览(35)
  • Verilog基础之十、计数器实现

    目录 一、前言 二、工程设计 2.1 设计代码 2.2 综合结果 ​2.3 仿真结果     计数器是较为基础的逻辑,很多其他逻辑可依靠计数器实现,如控制器,分频。原理为通过统计时钟脉冲的个数来输出计数值。 工程设计以计数20的计数器为例 测试代码 综合后的网表可知,6位的计

    2024年02月09日
    浏览(40)
  • 用Verilog设计一个8位二进制加法计数器,带异步复位端口,进行综合和仿真。

    点此处编译 这里还需将rst置1才有效 可以在clk=0;后加rst=1; 或者在clk=0;后加rst=0; 并且在#DELY clk=~clk;后加#(DELY*20) rst=~rst; 仿真即可

    2024年02月04日
    浏览(35)
  • verilog手撕代码5——计数器(置位、加减、环形、扭环形、格雷码计数器实现)

    2023.5.12 编写一个十六进制计数器模块,计数器输出信号递增每次到达0,给出指示信号 zero ,当置位信号 set 有效时,将当前输出置为输入的数值 set_num 。 注意 :这里zero=1和num=0是同一拍输出的,按道理如果根据num=0,然后去输出zero=1应该延迟一拍。所以这里考虑将number延迟一

    2024年02月07日
    浏览(44)
  • 北邮22级信通院数电:Verilog-FPGA(11)第十一周实验(1)用JK触发器实现8421码十进制计数器

    北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1  JK_8421.v 1.2  JK_ff.v 1.3  debounce.v 二.管脚分配 三.实

    2024年02月05日
    浏览(37)
  • verilog计数器

    (1) 深入了解计数器原理 (2) 学习使用 Verilog 实现同步计数器 ( 模八) 计数器的功能是记忆脉冲个数,它是数字系统中应用最为广泛的时序逻辑构件。 下图为设计 计数器从0开始每隔25_000_000个时钟周期(0.25秒)数码管末位显示加一,最大值为7,7后复0值              这

    2024年02月05日
    浏览(53)
  • Verilog实现按键计数器

    一、简介 计数器我们都知道,这里我们旨在使用Verilog HDL 来实现按键计数器的操作,功能有: 1、按下一个键,计数加一(+1); 2、按下另一个键,计数减一(-1); 3、按下复位键,则计数清零。 4、最多计数60次。 二、 代码实现 我们使用了两个模块,第一个是按键消抖模

    2024年02月04日
    浏览(28)
  • 奇偶校验器设计(奇偶校验与奇偶检测,XOR法和计数器法|verilog代码|Testbench|仿真结果)

    数字IC经典电路设计 经典电路设计是数字IC设计里基础中的基础,盖大房子的第一部是打造结实可靠的地基,每一篇笔者都会分门别类给出设计原理、设计方法、verilog代码、Testbench、仿真波形。然而实际的数字IC设计过程中考虑的问题远多于此,通过本系列希望大家对数字I

    2024年02月11日
    浏览(36)
  • 【Verilog异步清零计数器】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本人只是初学,代码经过实验验证,仅供参考 我自己查找模仿编写运行的代码,如有侵权,联系删除。 这是异步清零+控制加减法+进位指示灯的计数器 代码如下(示例): 这个程序适合已经了解书本例

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包