verilog 自动售货机状态机实现_Verilog描述语言与电路模型(九)

本文介绍了如何使用Verilog语言实现自动售货机状态机中的计数器,通过两种不同的建模方式展示了1ms计数器的详细设计。第一种方法直接计数1ms,第二种方法将1ms分为200个5us计数。虽然第二种方法消耗更多资源,但其最大工作频率更高,体现了FPGA设计中面积与速度的权衡问题。
摘要由CSDN通过智能技术生成

用Verilog文本描述硬件电路的框架已有,现在我们对FPGA开发中最常用的计数器模型做详细的介绍。

因为FPGA是并行工作的,而算法的本质却是在有限的步骤下完成我们需要的功能,有限的步骤就说明有先后,有先后就要有时间的概念,我们需要区分先后,FPGA中最常用的就是状态机(后面我们会详细探讨),今天我们来讨论计数器。我的理解计数器也是一种特殊的状态机,计数器以系统时钟为基准源,根据时钟的个数判断时间的先后。

在电机控制中输出PWM就需要有一个三角波作为载波,这个三角波就是用计数器实现的。

建模方式1:下面我对计数器进行建模,系统时钟用50MHz,我们计时1ms,具体代码如下图1所示。

代码解读:计数器建模的是时序逻辑电路,所以always块内的变量定义成reg类型,采用非阻塞赋值,敏感信号为时钟的上升沿或者复位信号的下降沿,当其中之一有效时always块内的代码执行一遍。always块内采用if..else条件语句完成逻辑描述,如果复位信号有效cnt_1ms变量赋值为0;否则在计数器加1条件add_cnt_1ms有效并且计数器计满结束标志有效时cnt_1ms变量赋值为0,否则只有计数器加1条件add_cnt_1ms有效时cnt_1ms加1。代码中将常量参数化定义,便于后续代码维护。

9e936fdde5c64bd343278b214b57712b.png

图 1

计数器在Quartus软件中综合后的RTL视图如图2所示。

740aeae6c969a88db9ee6939d44a748e.png

图 2

图3是映射到FPGA中是视图,Technology Map Viewer - Post-Mapping视图。

f32bdca552fa3e72ab0d88f79f32f3d5.png

图 3

图4是Chip Planner视图,从中可以看到使用的资源情况,使用16个reg和28个LUT资源。

467267d98d83fd550762692d659451af.png

图 4

图5是该建模下的寄存器最大的运行频率为198.18MHz。

23ff6c0ad5de5c4ab2d61312c4fdeda7.png

图 5

建模方式2:下面我们来看另一种计数器的建模,代码如图6所示,也是实现1ms计数器的功能。将1ms的时间分成200个5us来实现,如图中的两个计数器;5us计数器用来以5us为计数单位,cnt_5us计数器变量可以用8 bit reg型;1ms计数器的加1条件是5us计数器的结束条件,同样1ms计数器的cnt_1ms也是8 bit reg型。代码的含义同图1相同。

eb2ffdcb65a6e30322fff283fcd25bce.png

图 6

图7是第二种计数器建模Quartus软件中综合后的RTL视图。可以看出综合出的电路与图2不同。

909883d445a56d8a32b61305d9c6d94e.png

图 7

图8是映射到FPGA中是视图,Technology Map Viewer - Post-Mapping视图。可以看出图3与图8是一样的,即映射到FPGA中的硬件相同。

db9a77bdffe7d65d52da0b245d57aa6f.png

图 8

图9是Chip Planner视图,从中可以看到使用的资源情况,16个reg和32个LUT资源。

7cfe6bc54ffccc224bae1d8ae7791eb0.png

图 9

图10是该建模下的寄存器最大的运行频率为333.35MHz。

df5b2bc7141a0ee8e1c9b1c6b304884c.png

图 10

总结:我们对计数器做了两种建模方式,从资源上第一种模型节省资源,第二种浪费资源;从工作频率上,第二种的最大工作频率远大于第一种。这就涉及到FPGA设计硬件电路时的一个原则:面积与速度的平衡,这个需要我们根据实际情况来处理。

得到金句:  要生存就要变化,要变化就要成长,要成长就要不断地自我创新。--亨利.柏格森 得到APP--得到金句产品
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值