4、FPGA设计-复位与状态机

1、系统复位
1.1、Recovery time:恢复时间

撤销复位时,恢复到非复位状态的电平必须在时钟有效沿来临之前的一段时间到来,才能保证有效地恢复到非复位状态,此段时间为 recovery time。类似于同步时钟的 setup time。

1.2、Removal time:去除时间

复位时,在时钟有效沿来临之后复位信号还需要保持的时间为去除时间 removal time。类似同步时钟 hold time。

1.3、复位电路设计时,总是建议使用异步复位

(1)为了更有效地利用期间资源。
(2)异步复位设计使电路更加鲁棒。

2、状态机
2.1、摩尔型状态机和米利型状态机。

摩尔机的输出值只与当前状态状态有关。
米利机的输出值与当前状态和输入值有关。
在这里插入图片描述优点: 相对于其他时序电路,状态机更加稳定,运行模式类似CPU,易于控制。
问题:
(1)两个状态转换时,会出现过渡状态。
(2)在运行过程中,会进入非法状态。
(3)状态机占用资源比较多。
(4)一个器件上综合出来的结果,在其他器件上不能得到相符的结果。

2.2、编码方式
(1)顺序码:状态编码遵循传统的状态二进制序列。
(2)格雷码:除了相邻状态编码之间只有一个位变化外,其他和顺序码类似。
(3)独热码:每一个状态分配一个触发器。

在实际设计当中,一般采用独热码,慎用格雷码,不用顺序码。
状态机分为:一段式、二段式和三段式。
在实际设计当中,输入端都会引入噪声。采用米利机的时候,尽量不要采用一段式。噪声很容易传递到输出端,致使系统设计失败。 建议采用二段式和三段式状态机设计

2.3、在设计状态机时,应注意以下原则:
(1)状态机的输出分配默认值,防止综合器产生不必要的锁存器。
(2)将状态机逻辑和所有的算术逻辑功能以及数据路径分离,包括与状态机输出值的分配分离。
(3)如果设计中包含一个在多个状态都要使用的运算,那么在状态机外面定义这个运算,然后让状态机的输出逻辑来使用该运算结果。
(4)使用简单的同步或异步复位来确保状态机定义了一个上电初始状态。
2.4、状态机程序编写时的指导原则:
(1)如果使用的是SystemVerilog,--定要使用枚举类型来描述状态机。
(2)使用参数(Parameters)来对状态机进行分配,因为参数会使得状态机易读以及减少编码过程中的错误。
(3)尽管Quartus II 能够识别出整数,笔者不建议大家直接使用整数来定义状态值。
(4)如果在状态转换逻辑中使用了下例所示的算术运算,那么Quartus II 将不会识别状态机。

本文为读书笔记

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值