FPGA学习笔记五:Moore状态机与Mealy状态机的区别(基于Verilog)

这篇博客介绍了状态机的基本结构,并通过HDLBits题目详细解析了Moore和Mealy状态机的区别。Moore状态机的输出仅依赖于当前状态,而Mealy状态机的输出既依赖于当前状态也取决于输入。在补码器设计中,Mealy状态机使用更少的状态,输出逻辑更直接。
摘要由CSDN通过智能技术生成


前言

本篇博客主要基于一些状态机书写的规范以及其构成结构進行相应的简单分析,同时依据HDLBits中两道典型的题目(HDLBits第139题:简单Moore状态机的实现HDLBits第140题:简单Mealy状态机的实现)分析两種状态机的异同和电路描述特点。


一、状态机及其描述

在这里插入图片描述

  1. 输入组合逻辑电路(State transition logic of the input):这一段电路位与D触发器的输入端,它根据外部输入信号和当前D触发器的输出状态机(current_state)来计算出下一个状态next_state: next_state=f(in,current_state) 。其中f就是它的输入计算逻辑,根据电路功能要求需要设计者自行设计。
  2. 输出组合逻辑电路 (transition logic of the output):根据电路当前状态(和 当前输入 )计算电路的输出状态。
  3. D触发器(D flip - flop):这一部分用来保存输入组合逻辑电路计算出的状态:
  • 【1】它的输出d_out表示电路的当前状态current_state ;
  • 【2】它的输入d_in 表示电路的下一个状态next_state =f(in,current_state) ;
  • 【3】在时钟沿到來之後,D触发器输出就是下一个状态: current_state <= <= next_state ;
    因此状态机flip-flop部分的书写格式较为固定,考虑到复位信号的影响,通常参照以下模板即可:
always @(posedge clk or posedge areset) begin//异步复位
        if(areset)
            current_state <= state_0;        //复位时恢复到状态0,恢复到的状态依具体电路而定
        else
            current_state <= next_state;
    end

4. 时序逻辑电路的设计步骤

  • No1:确定输入和输出;
  • No2:确定状态个数以及状态转移关系;
  • No3:根据电路需要选择合适的状态机模型(Moore或者Mealy)
  • No4:画出电路结构图;
  • No5:進行代码的书写,描述电路

二、Moore状态机和Mealy状态机

设计对象描述及其原理

  • 题目希望分别使用Moore状态机和Mealy状态机设计一个八位的补码器,由于正数的补码就是其本身,因此设计对象主要是针对负数的补码,且根据题目要求可以推测操作对象是除去符号位的低八位。
  • 负数补码的原理为:符号位不变,余下位数取反再加1 我们观察几个例子:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值