使用Systemverilog描述状态机

本文介绍了如何使用Systemverilog语言描述状态机。通过示例代码展示了状态机的always_ff和always_comb过程块,强调了状态保存、异步复位、输出逻辑以及避免锁存器产生的注意事项。
摘要由CSDN通过智能技术生成

使用Systemverilog描述状态机

系统的状态必须保存在内部寄存器中。在SystemVerilog语言中,状态可以用枚举类型(enumerated type)表示。这种类型的可能值是状态名,而变量名列在一系列可能值的后面。例如:

enum{s0,s1,..} state;

在下面的代码中,有两个过程块。每个过程块都标有自己的名字。第一个标有SEO的过程块描述了一个状态机。该过程块等待时钟的正跳变沿的到来,或者等待复位信号的负跳变沿的到来。首先测试的是异步复位信号,如果复位信号的负跳变沿到来,则默认值G被赋值给状态变量state。否则,跳转到case语句分支,根据当前的状态值进人不同的分支。因此,case语句的每个分支等价于图6.9中两个状态中的一个状态及判断盒。在第一个分支中,测试是否有汽车到来(car为真/假),然后设置状态。若没有汽车到来(car=0),则状态保持不变(即仍旧为G)。将该过程块声明为always_ff块,因此期望该状态将映射到一个或几个由正跳变沿触发的触发器。其他状态用类似方法构造。

在第二个标有OP的过程块中,输出被设置为1。该过程块是一个与组合逻辑对应的 always_comb块。请注意在过程块的一开始就为start_timer和其他输出设置了默认值0。这个例子是很好的实践,因为这样写可以确保在综合时不会由于代码编写时的疏忽而产生锁存器。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻童:CPU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值