使用Systemverilog描述状态机
描述 状态机 SystemVerilog 使用
2023-09-14 09:10:02 时间
使用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。这个例子是很好的实践,因为这样写可以确保在综合时不会由于代码编写时的疏忽而产生锁存器。在过程块中再次用到case语句,该结构与ASM图相对应。在每个状态中,为无条件的输出赋值;有条件的赋值则跟在if条件语句后面。
module traffic_1 (
output logic start_timer,major_green,mintor_green,
input logic clock,n_reset,timed,car
相关文章
- Python描述器引导(转)
- SPSS科普 | 统计描述
- SPSS科普 | 统计描述
- javascript中关于坐标 大小 的描述
- seo标题关键字描述字数限制Title,keywords,description长度最长多长 ?
- OpenCV每日函数 特征检测和描述模块(3) ORB类(关键点检测器和描述符提取及匹配)
- OpenCV每日函数 特征检测和描述模块(8) GFTT类 (提取关键点和计算描述符)
- 描述一下JVM加载class文件的原理机制?
- 总结描述TCP三次握手四次挥手
- 资源描述框架RDF
- 使用CDS view获得CRM订单的状态值和描述信息
- python 简单了解一下 描述器
- java中会存在内存泄漏吗,请简单描述。
- 004-JVM指令集(指令码、助记符、功能描述)
- Verilog写状态机的三种描述方式之二段式
- iOS 证书申请 iOS描述文件配置
- Redis key的生命周期详解及故障案例描述(三)