Verilog的状态机编程

1、状态机的设计

 

状态机是一种设计思路,将一个事件分成多个完整的状态,每个状态通过输入和输出进入下一个状态,这就是状态机思维。

为什么要用状态机思维呢,因为这种思维可以清晰快速的将事情分成多个独立的小部分,将这些小部分分别编程,可以最大程度的节约资源和时间。很多复杂的东西,堆在一起没有头绪,但分成好多状态后就会发现,所谓的复杂,只不过是多个状态的叠加而已。

2、状态机的Verilog编程(以野火教程:FPGA Verilog开发实战指南 第23章状态机为例)

用Verilog构成状态机通常有五部分:

第一部分:定义输入输出端口(没啥好说的)

第二部分:将每个状态进行编码

状态少于20个,使用独热码比较合适。状态太多就改为格雷码。但如果是要用于高频系统的话,只能使用独热码。

第三部分:定义状态变量和其他变量

 定义变量state来存储当前的状态,state的位数就是状态的个数。

有时候会将多个输入信号合成一个多位的变量,只是为了编程更简便而已。

第四部分:第一段状态机:

 第一部分状态机用来描述根据输入进入下一个状态。通常使用case与if-else做一个状态选择。

 第二段状态机的always模块个数是由输出数量决定的,两个输出就是两个always。每个always管一个变量。第二段状态机通常是描述根据当前状态和输入决定输出的过程

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值