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

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

3天内不再提示

Verilog时序逻辑中同步计数器的功能和应用

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-03-15 11:06 次阅读

没有任何寄存器逻辑,RTL设计是不完整的。RTL是寄存器传输级或逻辑,用于描述依赖于当前输入和过去输出的数字逻辑。

48b095fe-9756-11ec-952b-dac502259ad0.png

如果所有存储元件均由相同的源时钟信号触发,则称该设计为同步设计。同步设计的优点是总体传播延迟等于触发器或存储元件的传播延迟。STA对于同步逻辑分析非常容易,甚至可以通过使用流水线来提高性能。大多数ASIC/FPGA实现都使用同步逻辑。本节介绍同步计数器的设计。

四位二进制计数器用于从“0000”到“1111”进行计数,四位BCD计数器用于从“0000”到“1001”进行计数。图5.14显示了四位二进制计数器,其中每个阶段被两计数器分割。

48c23980-9756-11ec-952b-dac502259ad0.png

图5.14四位二进制计数器

如图5.14所示。计数器有四条输出线“QA、QB、QC、QD”,其中“QA”是LSB,“QD”是MSB。“QA”处的输出在每个时钟脉冲上切换,因此除以2。“QB”处的输出每两个时钟周期切换一次,因此可被四整除,“QC”处的输出每四个时钟周期切换一次,因此输出被八整除。类似地,“QD”处的输出每8个周期切换一次,因此“QD”处的输出除以输入时钟时间周期的16。在实际应用中,计数器被用作时钟分频器网络。在分频综合器中使用偶数计数器来产生可变频率输出。

三位递增计数器

计数器用于在时钟的活动边缘上生成预定义和所需的计数序列。在ASIC/FPGA设计中,使用可综合结构为计数器编写有效的RTL代码是至关重要的。用Verilog描述了三位向上计数器生成可综合设计。计数器在时钟的正边缘从“000”计数到“111”,在计数的下一个正边缘环回到“000”。示例5.7中描述的计数器是可预设的计数器,它具有同步激活的高“load_en”输入,以对所需的三位预设值进行采样。数据输入为三位,表示为“data_in”。

计数器具有有效的低电平异步“reset_n”输入,当其处于低电平时,输出到“q_out”上的状态为“000”。在正常操作期间,“reset_n”处于高电平状态。

可综合输出如图5.15所示,具有三位数据输入线“data_in”、有源高电平“load_en”和有源低电平复位输入“reset_n”。输出由“q_out”和“clk”触发的正边缘时钟指示。

48d615cc-9756-11ec-952b-dac502259ad0.png

示例5.7三位递增计数器的Verilog RTL

48ec0e5e-9756-11ec-952b-dac502259ad0.png

图5.15三位递增计数器综合顶层图

三位递减计数器Three-Bit Down Counter

用Verilog描述了三位递减计数器的产生和综合设计。计数器从“111”计数到“000”,在时钟的正边缘触发,并在达到计数值“000”后在计数的下一个正边缘环回到“111”。三位递减计数器的时序如图5.16所示。

示例5.9中描述的计数器是可预设计数器,它具有同步激活的高“load_en”输入,用于采样三位所需的可预设值。数据输入为三位,表示为“data_in”。

49028f3a-9756-11ec-952b-dac502259ad0.png

图5.16三位二进制递减计数器的时序

491941d0-9756-11ec-952b-dac502259ad0.png

示例5.8三位递减计数器的Verilog RTL

49317372-9756-11ec-952b-dac502259ad0.png

图5.17综合三位递减计数器顶层图

计数器具有低电平异步“reset_n”输入,当其处于低电平时,输出“q_out”上的状态为“000”。在正常操作期间,“reset_n”处于高电平状态。

可综合输出如图5.17所示,具有三位数据输入线“data_in”、有源高电平“load_en”和有源低电平复位输入“reset_n”。输出由“q_out”和“clk”触发的正边缘时钟指示。

三位增、减计数器

用Verilog描述了三位增、减计数器产生的可综合时序设计。递减计数器计数从“111”到“000”,在时钟的正边缘触发,并在达到计数值“000”后,在计数的下一个正边缘环回到“111”。递增计数器从“000”计数到“111”,在时钟的正边缘触发,并在达到计数值“000”后在计数的下一个正边缘环回到“000”。

图5.18给出了三位二进制增、减计数器的内部结构。对于UP/DOWN等于逻辑“1”,计数器充当递增计数器,对于UP/DOWN等于“0”,计数器充当递减计数器。

示例5.9中描述的计数器是可预设计数器,它具有同步激活的高“load_en”输入,用于采样三位所需的可预设值。数据输入为三位,表示为“data_in”。递增或递减计数操作由输入“up_down”选择,“up_down=1”计数器用作向上/递减计数器,“up_down=0”计数器用作向下/递减计数器。

计数器具有有效的低电平异步“reset_n”输入,当其处于低电平时,输出“q_out”上的状态为“000”。在正常操作期间,“复位”处于高电平状态(示例5.9)。

493f1234-9756-11ec-952b-dac502259ad0.png

图5.18三位递增、递减计数器

可综合输出如图5.19所示,具有三位数据输入线“data_in”、有源高电平“load_en”和有源低电平复位输入“reset_n”。输出由“q_out”和“clk”触发的正边缘时钟指示,选择行为“up_down”。

4975c6da-9756-11ec-952b-dac502259ad0.png

示例5.9三位递增、递减计数器的Verilog RTL

498acbf2-9756-11ec-952b-dac502259ad0.png

图5.19三位递增、递减计数器顶层综合模块

格雷码计数器Gray Counters

格雷码计数器用于多时钟域设计中,因为时钟边沿上只有一位发生变化。同步器中也会使用格雷码。

该示例中描述了格雷码计数器,在该示例中,相对于计数器的先前输出,活动时钟边缘上只有一位发生变化。在这种情况下,高电平复位输入为“rst”。当“rst=1”时,计数器“out”的输出赋值给“0000”。

示例5.10中描述的计数器是可预设计数器,它具有同步激活的高“load_en”输入,用于采样四位所需的可预设值。数据输入为四位,表示为“data_in”。

计数器具有激活的高电平异步复位“rst”输入,当它处于激活的高电平时,输出行“out”上的状态为“0000”。正常运行期间,“rst”处于低电平状态。

49a66970-9756-11ec-952b-dac502259ad0.png

49bfe238-9756-11ec-952b-dac502259ad0.png

示例5.10四位Gray计数器

格雷码和二进制计数器

在大多数实际应用中,需要使用二进制和格雷码计数器。通过使用组合逻辑,可以从二进制计数器输出生成格雷码计数器。有关二进制到格雷码和格雷码到二进制代码转换器,请参阅前面文章。

示例中描述了参数化二进制和格雷码计数器,并描述了Verilog RTL以生成四位二进制和格雷码输出。对于“rst_n=0”,二进制和格雷码计数器输出赋值为“0000”。四位格雷码输出表示为“gray”(示例5.11)。

四位二进制计数器的模拟结果如下面的时序图5.20所示,并且对于时钟计数器的每个正边缘,输出增量为1。

49d526fc-9756-11ec-952b-dac502259ad0.png

示例5.11参数化二进制和格雷码计数器的Verilog RTL

49ea88bc-9756-11ec-952b-dac502259ad0.png

图5.20四位二进制计数器的时序

环形计数器Ring Counters

实际应用中使用环形计数器来提供预定义的延迟。这些计数器本质上是同步的,以引入一定量的预定义延迟,并用于实际应用中,如交通灯控制器定时器。图5.21显示了四位环形计数器使用D触发器的内部逻辑结构,如图所示,MSB触发器的输出反馈到LSB触发器输入,计数器在时钟信号的每个活动边上移动数据。

示例5.12中描述了四位环形计数器的Verilog RTL,计数器具有“set_in”输入,以将输入初始化值设置为“1000”,并在时钟信号的正边缘工作。

综合逻辑如图5.22所示。

4a1e5c32-9756-11ec-952b-dac502259ad0.png

图5.21环形计数器内部结构

4a36a760-9756-11ec-952b-dac502259ad0.png

示例5.12四位环形计数器的Verilog RTL

4a4ea5ea-9756-11ec-952b-dac502259ad0.png

图5.22四位环形计数器的综合逻辑

约翰逊计数器Johnson Counters

约翰逊计数器是一种特殊类型的同步计数器,采用移位寄存器设计。三位约翰逊计数器的内部结构如图5.23所示。

四位约翰逊计数器的Verilog RTL如例5.13所示。

综合逻辑如图5.24所示。

4a65b3de-9756-11ec-952b-dac502259ad0.png

图5.23三位约翰逊计数器

4a7e8936-9756-11ec-952b-dac502259ad0.png

示例5.13四位约翰逊计数器的Verilog RTL

4aae0c1a-9756-11ec-952b-dac502259ad0.png

图5.24四位约翰逊计数器的综合逻辑

参数化计数器

在实际应用中,为了提高计数器的可读性和可重用性,通过定义参数来设计计数器。参数整数值可用于定义计数器的位数。8位参数化计数器的Verilog RTL如图5.25所示。

参数化计数器的可综合顶层模块如图5.26所示。

4abfa40c-9756-11ec-952b-dac502259ad0.png

图5.25八位参数化计数器的Verilog RTL

4ad629de-9756-11ec-952b-dac502259ad0.png

图5.26参数化计数器的综合逻辑

审核编辑:郭婷

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

    关注

    31

    文章

    5327

    浏览量

    120055
  • Verilog
    +关注

    关注

    28

    文章

    1345

    浏览量

    109996
  • 计数器
    +关注

    关注

    32

    文章

    2254

    浏览量

    94374

原文标题:Verilog时序逻辑硬件建模设计(三)同步计数器

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    时序逻辑电路的精华——计数器

    时序逻辑电路的精华——计数器
    的头像 发表于 12-29 09:23 1328次阅读

    规模集成时序逻辑设计

    规模集成时序逻辑设计:计数器:在数字逻辑系统,使用最多的
    发表于 09-01 09:09 13次下载

    移位型计数器反馈逻辑电路的设计

    摘要:移位型计数器是以移位寄存为主体构成的同步计数器。这类计数器具有电路连接简单,编码别具特色的特点,用途十分广泛。文中介绍了移位型
    发表于 04-26 11:16 29次下载

    时序逻辑电路

    实验十六  时序逻辑电路? 实验(1) 计数器?一、实验目的?⒈ 熟悉计数器的设计方法及工作原理。?⒉ 了解同步
    发表于 09-24 22:17 3311次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>逻辑</b>电路

    基于MSI的N进制计数器设计方法

    计数器是数字逻辑系统的基本部件,它是数字系统中用得最多的时序逻辑电路,本文主要阐述了用规模集
    发表于 02-28 11:41 7143次阅读
    基于MSI的N进制<b class='flag-5'>计数器</b>设计方法

    基于Multisim的计数器设计仿真

    计数器是常用的时序逻辑电路器件,文中介绍了以四位同步二进制集成计数器74LS161和异步二-五-十模值
    发表于 07-26 11:38 134次下载
    基于Multisim的<b class='flag-5'>计数器</b>设计仿真

    计数器时序电路

    1、了解时序电路的经典设计方法(D触发、JK触发和一般逻辑门组成的时序逻辑电路)。 2、
    发表于 07-10 14:37 15次下载

    计数器逻辑功能测试实验报告

    本文主要介绍了计数器逻辑功能测试实验报告。时序逻辑电路,有一种电路叫
    发表于 06-27 08:00 15次下载
    <b class='flag-5'>计数器</b><b class='flag-5'>逻辑</b><b class='flag-5'>功能</b>测试实验报告

    采用规模集成计数器进行任意进制计数器设计的解决方案

    计数器是数字逻辑系统的基本部件, 它是数字系统中用得最多的时序逻辑电路,其主要功能就是用
    的头像 发表于 05-30 08:24 1.6w次阅读
    采用<b class='flag-5'>中</b>规模集成<b class='flag-5'>计数器</b>进行任意进制<b class='flag-5'>计数器</b>设计的解决方案

    同步计数器和异步计数器是什么 同步计数器和异步计数器的主要区别?

    在数字电子产品计数器是由一系列触发组成的时序逻辑电路。顾名思义,计数器用于计算输入在负或正
    的头像 发表于 03-25 17:31 2.5w次阅读
    <b class='flag-5'>同步</b><b class='flag-5'>计数器</b>和异步<b class='flag-5'>计数器</b>是什么 <b class='flag-5'>同步</b><b class='flag-5'>计数器</b>和异步<b class='flag-5'>计数器</b>的主要区别?

    时序逻辑电路设计之计数器

    前面已经学习了时序逻辑电路的基本单元:触发,这次就用其来整点活,实现计数器的设计,计数器可以
    的头像 发表于 05-22 16:54 5211次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>逻辑</b>电路设计之<b class='flag-5'>计数器</b>

    时序逻辑电路设计之同步计数器

    时序电路的考察主要涉及分析与设计两个部分,上文介绍了时序逻辑电路的一些分析方法,重点介绍了同步时序电路分析的步骤与注意事项。 本文就
    的头像 发表于 05-22 17:01 3165次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>逻辑</b>电路设计之<b class='flag-5'>同步</b><b class='flag-5'>计数器</b>

    时序逻辑电路设计之异步计数器

    上文介绍了同步计数器的设计原则以及各注意事项,本文承接上文继续介绍异步计数器以及三种常用的集成计数器的相关内容。
    的头像 发表于 05-22 17:07 4561次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>逻辑</b>电路设计之异步<b class='flag-5'>计数器</b>

    同步计数器和异步计数器的区别主要在哪里

    同步计数器和异步计数器的区别详解 同步计数器和异步计数器是数字电路
    的头像 发表于 12-13 14:54 1w次阅读

    同步计数器和异步计数器各有什么特点

    同步计数器和异步计数器是两种常见的数据结构,它们都用于控制对共享资源的访问。它们的主要作用是实现多个线程之间的同步和并发控制。尽管它们都被用于同步
    的头像 发表于 12-15 10:49 1900次阅读