碎碎思 · 2022年03月07日

Verilog时序逻辑硬件建模设计(五)异步计数器&总结

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

image.png

在异步计数器中,时钟信号不由公共时钟源驱动。如果LSB触发器的输出作为后续触发器的输入,则设计是异步的。异步设计的主要问题是由于级联,触发器的累积时钟到q延迟。由于存在小故障或尖峰问题,ASIC/FPGA设计中不建议使用异步计数器,甚至此类设计的时序分析也非常复杂。

所以接下来只介绍一种计数器

波纹计数器Ripple Counters

纹波计数器是一个异步计数器,如图5.33所示。如逻辑图所示,所有触发器均为正边缘触发,LSB寄存器从主时钟源接收时钟。LSB触发器的输出作为下一级的时钟输入。
image.png

图5.33三位纹波计数器逻辑图

四位纹波递增计数器的Verilog RTL如例5.18所示。综合逻辑如图5.34所示。

image.png

示例5.18四位纹波递增计数器的Verilog RTL
image.png

图5.34四位纹波递增计数器的综合逻辑

内存模块设计

在大多数ASIC/FPGA设计和基于SoC的设计中,存储器用于存储二进制数据。存储器可以是ROM、RAM、单端口或双端口类型。本节的目的是描述基本的单端口读写存储器。时序如图5.35所示。

如时序所示,读写操作由“rd_wr”控制,如果“cs”为高电平,则在时钟信号“clk”的正边缘对数据进行采样。地址输入由总线“address”描述。

单端口读写存储器的Verilog RTL如例5.19所示。

image.png

图5.35存储器的时序

image.png

示例5.19读写存储器的Verilog RTL

时序逻辑设计简单总结

下面是总结时序逻辑设计的要点。

    1. 锁存器对电平敏感,在设计中不推荐使用。
    1. 触发器是边缘触发的,建议在设计中使用。
    1. 触发器使用程序块“‘always”进行描述,并由“posedge clk”或“negedge clk”触发。
    1. 二进制计数器可以使用同步设计概念或异步设计概念进行设计
    1. 格雷码计数器可以通过使用二进制计数器和附加组合逻辑来设计。
    1. 设计中推荐使用同步计数器,因为STA分析很容易,而且不容易出现故障。
    1. 异步计数器容易出现小故障或尖峰,因此不建议在ASIC/FPGA设计中使用。
    1. 使用移位寄存器可以设计特殊计数器,如ring和Johnson。
    1. 可通过使用Verilog RTL执行读写操作来描述存储器。
原文:OpenFPGA
作者:碎碎思

相关文章推荐

更多FPGA技术干货请关注FPGA 的逻辑技术专栏。
推荐阅读
关注数
10614
内容数
577
FPGA Logic 二三事
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息