当前位置: 首页 > article >正文

Fsm1

为了处理有时间上先后的事件,在FPGA中采用状态机的形式完成事件处理。

Mealy 状态机:输出不仅取决于当前状态,还取决于输入状态。

Moore 状态机:组合逻辑的输出只取决于当前状态,而与输入状态无关。

 

         二段式状态机:用两个 always 模块来描述状态机,其中一个 always模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出。不同于一段式状态机的是,它需要定义两个状态,现态和次态,然后通过现态和次态的转换来实现时序逻辑。
         三段式状态机:在两个 always 模块描述方法的基础上,使用三个always 模块,一个always 模块采用同步时序描述状态转移,一个 always 采用组合逻辑判断状态转移条件,描述状态转移规律,另一个 always 模块描述状态输出

module top_module(
    input clk,
    input areset,    // Asynchronous reset to state B
    input in,
    output out);//  

    parameter A=0, B=1; 
    reg state, next_state;
   //组合逻辑判断状态转移条件,描述状态转移规律
    always @(*) begin    // This is a combinational always block
        // State transition logic 
        case(state)
            A: next_state = in?  A:B;
            B: next_state = in?  B:A;
        endcase
    end
    //同步时序描述状态转移
    always @(posedge clk, posedge areset) begin    // This is a sequential always block
        // State flip-flops with asynchronous reset
        if(areset)
            state <= B;  //复位初始状态
        else
            state <=next_state;  //次态转移到现态
    end
    //时序逻辑描述输出
    // Output logic
    // assign out = (state == ...);
    // assign out = (state == A)? 0:1;
 always @(posedge clk, posedge areset) begin    // This is a sequential always block
         out <= (state == B);

    end

endmodule


http://www.kler.cn/a/371412.html

相关文章:

  • iQOO手机怎样将屏幕投射到MacBook?可以同步音频吗?
  • 一道巧妙的卡特兰数建模
  • 《贪婪算法实战:寻找最短无序连续子数组的深度解析与实现》
  • 量子容错计算
  • SpringCloud笔记
  • 如何用示波器测实时时钟信号和主时钟信号
  • 枫清科技仲光庆:AI+行业新范式,双轮驱动助力数智化升级
  • 沪深A股上市公司数据报告分析
  • [蓝桥杯 2018 省 B] 乘积最大-题解
  • 配置mysql 主主模式 GTID
  • SpringBoot篇(运维实用篇 - 日志)
  • CentOS 系统刷新 DNS,解析
  • Visual Studio 字符集设置与文件编码的区别
  • 学习力体系
  • 【Python】爬虫程序打包成exe
  • Markdown 链接
  • view design之table自定义单元格模版
  • 开源一款基于 JAVA 的仓库管理系统,支持三方物流和厂内物流,包含 PDA 和 WEB 端的源码
  • linux 查看磁盘和内存的使用情况
  • springboot+iotdb的应用
  • Redis设计与实现 学习笔记 第十二章 事件
  • MySQL安装配置教程
  • 【数据仓库】
  • uniapp圆形波浪进度效果
  • 2024护理类科技核心期刊汇总(最新版)
  • 基于uniapp微信小程序的宠物救助宠物领养系统