Verilog 编写状态机的指导原则

不管是VHDL还是Verilog,在设计状态机时应遵循以下原则:
1.给状态机的输出分配默认值,防止综合器产生不必要的锁存器。
2.将状态机逻辑和所有的算术逻辑功能以及数据路径分离,包括与状态机输出值的分配分离,这也是为何推荐大家尽量使用多进程来描述状态机的原因。
3.如果设计中包含一个在多个状态都要使用的运算,那么在状态机外面定义这个运算,然后让状态机的输出逻辑来使用该运算结果。
4.使用简单的同步或异步复位来确保状态机定义了一个上电初始状态。如果状态机设计中,复位逻辑比较复杂,比如同时使用了一个异步复位和异步加载信号来定义初始状态,那么综合工具只会将状态机综合成普通逻辑。

采用Verilog编写时,为了更好地让综合工具识别Verilog编写的状态机,除了以上介绍的指导原则外,下面单独列出一些只针对Verilog的注意事项。
1.如果使用的是System Verilog,一定要使用枚举类型来描述状态机。
2.使用参数(Parameter)来对状态机进行分配,因为参数会使得状态机易读以及减少编码过程中的错误。
3.尽管Quartus II能够识别出整数,但是不建议直接使用整数来定义状态值
4.如果在状态转换逻辑中使用了下例所示的算术运算,那么Quartus II将不会识别状态机。

case(state)
0: begin
	if(ena) next_state <= state + 2;
	else next_state <= state + 1;
end
1: begin
...
endcase

5.如果将状态变量作为输出,那么Quartus II将无法识别状态机。
6.状态机中使用有符号变量,那么Quartus II将无法识别状态机。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值