0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verilog实现计数器在某个区间内循环计数,递增递减

邹逸谦 来源:邹逸谦 作者:邹逸谦 2022-04-07 17:33 次阅读

有时候在复杂系统设计的时候会用遇到让“计数器在某个区间内来回不停递增递减”的问题。

话不多说,我们直接上代码。

以0-10的循环计数为例。

工具:Modelsim, VScode

1.准备工作

首先在电脑上新建三个文件夹,SRC、TB以及SIM,用来放置源代码、仿真文件以及仿真工程文件。

一定不要怕麻烦,特别是新手一定要注意代码的分类工作!良好的分类能够大大的提高工作效率。

刚接触代码量小,几十行代码一个文件就搞定了。但是随着从业时间的增加,工作复杂度的提升,代码的难度也会随之提升,如果不做好分类管理,面对几十个源代码,十几个仿真文件……崩溃是必然的。

请注意:一定不能有中文路径!!

poYBAGJOrDmARXC8AAA2ZMhSnLM789.png这样是错误的

pYYBAGJOrI6AVnMiAAA4VSHNhEg615.png应该这样修改

2.工程建立

  • 在src文件中添加一个.v文件,名字自拟,最好能够体现出文件的特性。
module test (
    input   sys_clk,
    input   rst_n,
   
);
    
    

    reg  flag;
    reg [7:0]  adc_data;
    
    always @(posedge sys_clk or negedge rst_n) begin
        if (~rst_n) 
            flag  <=  1'd0;
        else 
            case (flag)
                1'd0:
                    if (adc_data == 8'd9) // -1
                        flag  <=  1'd1;
                    else
                        flag  <=  1'd0;
                1'd1:
                    if (adc_data == 8'd1) // +1
                        flag  <=  1'd0;
                    else
                        flag  <=  1'd1;
                default: flag  <=  flag;
            endcase
    end

    always @(posedge sys_clk or negedge rst_n) begin
        if (~rst_n) begin
            adc_data  <=  8'd0;
        end
        else if (flag == 1'd0)
            adc_data  <=  adc_data + 8'd1;
        else if (flag == 1'd1)
            adc_data  <=  adc_data - 8'd1;
        else
            adc_data  <=  adc_data;
    end

    

endmodule 
  • 在tb文件夹中新建文件,给出仿真所需要的激励。我们此次所需的只有时钟和复位。时钟设置为50Mhz,复位1000ns。
`timescale 1 ns /1 ps
module tb_test;
reg  sys_clk;
reg  rst_n;


test  u_tb_test(
    
    .sys_clk    (sys_clk),
    .rst_n      (rst_n)
    
);
  
   initial begin
   
     sys_clk  = 0;
   
     rst_n    = 0;
    #1000;
    rst_n  =  1;
    #20000;
   end
  always  #10  sys_clk = ~ sys_clk;

endmodule
  • 在sim文件夹中新建一个Modelsim仿真工程,添加src,tb中的文件,此过程不再展示。

3.仿真验证

仿真1us,观察波形。实现了0-10直接的循环计数,设计成功。

poYBAGJOr5qAFlL0AACTavGPYfo707.png

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21734

    浏览量

    603098
  • 仿真分析
    +关注

    关注

    3

    文章

    105

    浏览量

    33654
收藏 人收藏

    评论

    相关推荐

    雷击计数器的概述与应用分析

    雷击计数器 是一种用于监测和记录电力系统、通信系统、建筑物等关键设施遭受雷击次数的设备。它能够有效地帮助管理人员掌握雷电活动的情况,以便进行预防性维护和风险评估。雷击计数器根据工作原理可以分为无源
    的头像 发表于 10-21 10:31 291次阅读
    雷击<b class='flag-5'>计数器</b>的概述与应用分析

    74ls163是几进制同步计数器

    到9,然后回到0,形成一个循环。 以下是关于74LS163的一些基本信息: 功能 :74LS163 是一个同步计数器,意味着所有的计数位同时更新。它通常用于需要精确控制计数序列的应用中
    的头像 发表于 10-18 13:54 928次阅读

    计数器的特点和参数

    计数器作为一种常用的电子元件,电子设备和系统中扮演着至关重要的角色。它们不仅用于存储和增减数字值,还广泛应用于时序和频率测量、事件计数、控制步进电机和伺服系统、错误检测和纠正以及计算机数据存储和操作等领域。以下将详细阐述
    的头像 发表于 08-29 14:54 948次阅读

    计数器同步和异步怎么判断

    计数器同步和异步是数字电路设计中的一个重要概念,它们很多应用场景中都扮演着关键角色。 一、计数器概述 计数器是一种常见的数字电路,它可以对输入信号进行
    的头像 发表于 07-23 11:14 1221次阅读

    PLC计数器的工作原理与功能

    至关重要的角色。计数器能够统计输入信号的脉冲次数,实现某个事件的计数和监控,是控制系统实现精确控制的关键元件之一。本文将详细阐述PLC中
    的头像 发表于 06-18 11:51 2056次阅读

    SN74HC193-Q1 4位同步递增/递减计数器数据表

    电子发烧友网站提供《SN74HC193-Q1 4位同步递增/递减计数器数据表.pdf》资料免费下载
    发表于 06-04 10:46 0次下载
    SN74HC193-Q1 4位同步<b class='flag-5'>递增</b>/<b class='flag-5'>递减</b><b class='flag-5'>计数器</b>数据表

    SN54LS668、SN54LS669、SN74LS668、sn74ls669同步4位递增/递减计数器数据表

    电子发烧友网站提供《SN54LS668、SN54LS669、SN74LS668、sn74ls669同步4位递增/递减计数器数据表.pdf》资料免费下载
    发表于 06-04 10:40 0次下载
    SN54LS668、SN54LS669、SN74LS668、sn74ls669同步4位<b class='flag-5'>递增</b>/<b class='flag-5'>递减</b><b class='flag-5'>计数器</b>数据表

    SN54LS696、SN54LS697、SN54LS699、SN74LS696、SN74LS697、sn74ls 699同步递增/递减计数器手册

    电子发烧友网站提供《SN54LS696、SN54LS697、SN54LS699、SN74LS696、SN74LS697、sn74ls 699同步递增/递减计数器手册.pdf》资料免费下载
    发表于 06-04 10:38 0次下载
    SN54LS696、SN54LS697、SN54LS699、SN74LS696、SN74LS697、sn74ls 699同步<b class='flag-5'>递增</b>/<b class='flag-5'>递减</b><b class='flag-5'>计数器</b>手册

    二进制串行计数器工作原理是什么?

    在数字电路设计中,计数器是一种非常关键的组件,用于测量时间、计数事件或跟踪状态变化等。其中,二进制串行计数器作为一种常用的计数器类型,多种
    的头像 发表于 05-28 15:52 849次阅读

    同步计数器和异步计数器的区别

    在数字电子领域中,计数器是一种用于统计脉冲信号数量的重要设备。其中,同步计数器和异步计数器是两种不同类型的计数器,它们工作原理、特性以及应
    的头像 发表于 05-24 14:36 4195次阅读

    计数器的结构和工作原理

    计数器,作为一种基础的电子设备,广泛应用于数字电路、计算机系统以及工业自动化等多个领域。它通过对输入信号进行计数和状态转换,实现对事件发生次数的统计和显示。本文将深入探讨计数器的定义、
    的头像 发表于 05-23 15:34 4810次阅读

    脉冲计数器的分类和作用

    电子技术和数字系统中,脉冲计数器作为一种基本而重要的逻辑器件,其应用广泛且功能多样。脉冲计数器不仅能够实现基本的计数操作,还具备多种输出功
    的头像 发表于 05-15 17:11 1197次阅读

    计数器怎么判断同步和异步 计数器异步和同步的区别

    应用中的各自优势和限制。 一、计数器概述 计数器是一个数值型的变量,它能够用于存储和追踪特定事件的发生次数。计算机系统中,计数器起到非常重要的作用,例如统计程序执行的指令数、计算
    的头像 发表于 02-22 15:14 3642次阅读

    计数器怎么用 计数器的作用有哪些

    计数器是一种被广泛应用于各个领域的实用工具,我们的日常生活中随处可见。无论是进行时间统计,协助工作任务的完成,还是用于科学研究和编程技术,各个领域都起到了重要的作用。本文将详细介绍计数器
    的头像 发表于 02-03 10:04 5390次阅读

    雷击计数器综合选型应用方案

    雷击计数器的基本原理是利用雷电流通过导线时产生的感应电压或电流来驱动计数器计数。根据计数器的类型,可以分为机械式雷击计数器和电子式雷击
    的头像 发表于 01-31 09:50 560次阅读
    雷击<b class='flag-5'>计数器</b>综合选型应用方案