数字集成电路设计(四、Verilog HDL数字逻辑设计方法)(三)


4. 有限同步状态机

  • !!产生:硬件描述语言对时序电路的设计方式。这种描述方式和真值表都差不多,都表征了对于一个数字电路通用的设计方式

  • !!!!功能很强大,但是并不代表在硬件描述语言中提倡这种方式,当电路设计到一定阶段时,我们更希望用基础的设计语言去做电路

  • 有限状态机是借助于综合工具实现电路的一种方式,如果对于状态转移图或者Verilog描述过程中如果产生错误或者不确定的理解,这时候设计就会产生很大问题
    在这里插入图片描述

  • 同其它时序电路一样,有限状态机也是由两部分组成:存储电路和组合逻辑电路。存储电路用来生成状态机的状态,组合逻辑电路用来提供输出以及状态机跳转的条件

  • 从中间画一条线把它分为上下两部分,称为二部图。二部图对于数字电路来讲是一个非常重要的概念,实际上联系了两部分不同性质的电路之间的关系。从图论的角度来讲,如果有一个edge能把上下两部分分开,这两部分就是独立的

  • 有限状态机分为两种类型:Mealy型和Moore型
    在这里插入图片描述

  • 最大的区别:Mealy 型状态机的输出与当前状态和输入有关系,Moore 型状态机的输出仅依赖于当前状态而与输入无关

  • !!!!对于Mealy电路,影响组合电路延迟的是由组合逻辑和输入信号的延迟决定的, 而对于Moore电路,输出逻辑只由输出组合逻辑决定。所以。Moore型的状态机要比Mealy型的状态机要快,因为它的输出延迟只由一部分输出逻辑决定,而Mealy型的延迟由输入信号决定,当输入信号延迟非常大时,输出结果将会是不对的,也就输输出频率会降下来

  • !!!!所以,在很长一段时间内,会从对状态机不了解到写成Moore型状态机。但是并不是说Mealy状态机不行,Mealy有它的特点,对于一些组合电路要求输出一定要跟着输入有变化的时候,Mealy型状态机就会产生很好的作用

  • !!!!从群延迟的角度来说,也就是只有一个信号和一个信号进行比较时,这时Mealy状态机是快的。Moore说它工作频率高主要是说它状态寄存器到输出,延迟只由输出组合逻辑决定,所以很快。Moore的工作频率很快,但是从绝对延迟来讲,Mealy更快,但是就是有的时候不稳定,如果对输入信号没有进行处理,或者对输入信号不了解的情况下,这时候做这个电路的压力就会非常大

  • 所以,这两种状态机的选择要根据自己的情况来定

  • 有限状态机是基础的电路设计的最后一部分,之前的电路是要求对电路的特点,电路到底用了什么电路,用了多少什么门一定要非常清楚,设计方法(查找表,移位寄存器等)一定要非常清楚。**!!!!但是对有限状态机来讲,在整个数字电路的硬件描述语言设计,唯一可以不用知道特点的,就是有限状态机,可以不用知道电路,按照模板写就行了。**因为在它的逻辑里,对状态会有编码,这种编码计算机在对它实现的时候非常了解,但是设计人员并不是很了解。简而言之,对于存储电路就是一个一拍的移位寄存器,输入信号,状态,输出信号也可以知道,可以不知道的是这个输入信号到下个状态的编码,这个交给计算机来完成

4.1 编码

  • 有限状态机的编码是一个非常关键的问题,编码的好坏和方式根据电路有很大的不同,下面举三种编码方式
  • 第一种:二进制编码
    (1)其状态寄存器是由触发器组成的。N 个触发器可以构成2n个状态。进制编码的优点是使用的触发器个数较少,节省资源,用最少的bit描述多位;缺点是状态跳转时可能有多个 bit(位)司时变化,引起毛刺,造成逻辑错误。
    (2)换种说法,对于二进制编码,在0111-1000和1111到0000,这两个过程所有寄存器全部进行了翻转,这时功耗就会增加,而且电路种竞争-冒险就会多,有效电路速度就会降下来
  • 第二种:格雷编码
    (1)格雷编码和二进制编码类似。格雷编码状态跳转时只有一个 bit(位)发生变化,减少了产生毛刺和一些暂态的可能
    (2)格雷码的使用也有一些限制,当状态转换特别复杂,多个状态指向一个,从这个状态不一定就是跳转到格雷码的下一个状态,这时就没有完全解决上面的问题
    (3)!!但是格雷码肯定是对二进制编码有一定的提升,因为它能解决大部分临近编码跳转的问题
  • 第三种:一位独热(One hot)编码
    (1)这是对于n个状态采用个 bit(位)来编码,每个状态编码中只有一个 bit(位)为1,如0001、0010、0100、1000。
    (2)!!使用One hot编码在任何情况下都只有两个bit发生变化,这就解决了电路的速度,竞争等带来的不确定性
    (3)One hot 编码增加了使用触发器的个数,而且状态多了,触发器太多,速度也会降下来
  • !!所以,不同的编码方式产生的结果是完全不一样的

4.2 有限状态机的写法

  • 有限状态机的写法有很多,常见的是两段式和三段式两种
  • 如何解释这两种方式呢?我们有三个方式,输出方式,驱动方程和状态转移方程,有一个是一定要分开的(状态转移方程),两段式就是输出方程和驱动方程放在一起写,三段式就都分开写
    (1)两段式写法:
    在这里插入图片描述
    (2)三段式写法:
    在这里插入图片描述在这里插入图片描述
  • !!!!在有限状态机中,所有的状态和输出信号在每一个分支条件下必须对它进行赋值,如果赋值是不变的,就要把信号写给它,就是不变的,否则就会产生latch

4.3 举例

4.3.1 用Verilog HDL 设计顺序脉冲发生器

  • 顺序脉冲发生器又称脉冲分配器,它将高电平脉冲依次分配到不同的输出上,保证在每个时钟周期内只有一路输出高电平,不同时钟上的高电平脉冲依次出现在所有输出端
  • 以 4 位顺序脉冲发生器为例,它有 4路输出W1,W2,W3,W4,每路输出上高电平脉冲依次出现,输出在 1000、0100、0010,0001 之间循环。4 位顺序脉冲发生器的状态转移图如图 4.4-3 所示,它由4 个状态构成,每个状态中“1”的个数都是1个,表示每个时钟周期内只有一路输出端为高电平,而且是轮流出现,因此生成了顺序脉图4.4-3 4位顺序脉冲发生器电路的状态转移图冲信号
    在这里插入图片描述
  • 代码如下:
    在这里插入图片描述在这里插入图片描述

4.3.2 设计-个自动售报机报纸价钱为八角,纸币有 1角、2 角5 角、一元。该自动售报机不考虑投币为大额面值等特殊情况

  • 经常会考,目的就是画状态转移图

  • 图中,So~S,为状态机的8 个状态角标代表已投币的总和,如 S代表没有投币,S,代表已投入 1 角,依此类推。M 代表输入,M1 表示投入1角硬币,M2 代表投入2角硬币,M5 代表投入5 角硬币,M10代表投入一元。
    在这里插入图片描述

  • data out=1 表示给出报纸,data out retuml=1 表示找1角硬币,data out return2=l表示找回2角硬币

  • 代码如下
    (1)P1和P2
    在这里插入图片描述
    (2)P3和P4
    在这里插入图片描述
    (3)P5和P6
    在这里插入图片描述

  • !!!!所以在HDL中,强调有限状态图的写法,而不是注意语法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

普通的晓学生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值