Verilog三段式状态机描述(转载)

时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为而必需考虑的所有历史信息。

状态机采用VerilogHDL语言编码,建议分为三个always段完成。

三段式建模描述FSM的状态机输出时,只需指定case敏感表为次态寄存器, 然后直接在每个次态的case分支中描述该状态的输出即可,不用考虑状态转移条件。

三段式描述方法虽然代码结构复杂了一些,但是换来的优势是:使FSM做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说在FPGA/CPLD等可编程逻辑器件上的综合与布局布线效果更佳。

示列如下:

//第一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器

always @ (posedge clk or negedge rst_n)    //异步复位

if(!rst_n)

current_state <= IDLE;

else

current_state <= next_state;   //注意,使用的是非阻塞赋值

//第二个进程,组合逻辑always模块,描述状态转移条件判断

always @ (current_state)        //电平触发

begin

next_state = IDLE;  //要初始化,使得系统复位后能进入正确的状态

case(current_state)

S1: if(...)

next_state = S2;           //阻塞赋值

...

endcase

end

//第三个进程,同步时序always模块,格式化描述次态寄存器输出

always @ (posedge clk or negedge rst_n)

...//初始化

case(next_state)

S1:

out1 <= 1'b1;                //注意是非阻塞逻辑

S2:

out2 <= 1'b1;

default:...      //default的作用是免除综合工具综合出锁存器

endcase

end

不知道那里转载来的,反正大家相互复制粘贴

Verilog三段式状态机描述相关推荐

  1. DSP嵌入式C语言状态机,三段式状态机描述及模版

    三段式状态机描述及模版 [复制链接] 本帖最后由 Aguilera 于 2018-11-10 20:23 编辑 时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为 ...

  2. system verilog 三段式状态机和interface

    1.结构体和C语言类似,system verilog定义的package,也是一个sv文件,需要被工程当作文件一样添加.如果是inclue的文件,要在工程中设置搜索路径,否则在引用时要用相对工程启动文 ...

  3. SJA1000 CAN总线verilog写的SJA1000 CAN总线控制器。 程序使用三段式状态机,对于语句均有箱子的中文注释

    SJA1000 CAN总线verilog写的SJA1000 CAN总线控制器. 程序使用三段式状态机,对于语句均有箱子的中文注释,同时还有相关的文档说明. 可直接拿来使用,同时适合新手学习规范写作代码 ...

  4. 基于verilog的三段式状态机

    三段式状态机的优势:三段式描述方法与一段式和两段式状态机描述相比,虽然代码结构复杂了一些,但是换来的优势是使FSM(Finite State Machine)做到了同步寄存器输出,消除了组合逻辑输出的 ...

  5. 三段式状态机_FPGA笔试题——序列检测(FSM状态机)

    FSM有限状态机,是FPGA和数字IC相关岗位必须要掌握的知识点,在笔试和面试中都非常常见. (1)了解状态机:什么是摩尔型状态机,什么是米利型状态机,两者的区别是什么?一段式.二段式.三段式状态机的 ...

  6. fpga时序逻辑(三段式状态机模板、rom实现、边沿检测)

    目录 VL21 根据状态转移表实现时序电路 VL22 根据状态转移图实现时序电路 VL23 ROM的简单实现 VL24 边沿检测 VL21 根据状态转移表实现时序电路 题目分析: 1.使用三段式状态机 ...

  7. 一段式、两段式以及三段式状态机(FSM)设计实例

    一段式.二段式以及三段式状态机(FSM)设计实例 状态机(FSM)分类 状态转移的三种编码方式 一段式.两段式状态机(FSM)区别 vivado与modelsim联调显示状态机 设计实例 状态转移图 ...

  8. 三段式状态机-FSM

    三段式代码多,但是有时钟同步,延时少,组合逻辑跟时序逻辑分开并行出错少. (1)同步状态转移 (2)当前状态判断接下来的状态 (3)动作输出 如果程序复杂可以不止三个always   .always ...

  9. 三段式状态机_Verilog实战篇(5)——FIFO amp; 状态机

    今天的暑期培训课依旧是由邸志雄老师主讲:FIFO基本原理及状态机的编写和应用. 下面先说一下FIFO:     一.FIFO 常见参数主要有:   1. FIFO的宽度:即 FIFO 一次读写操作的数 ...

  10. 小梅哥三段式状态机按键消抖改写

    小梅哥三段式状态机按键消抖改写 小梅哥资料中按键消抖部分是用一段式.二段式状态机写的.我用三段式状态机改写了一下,仿真和板载测试通过. 代码记录如下: module key_filter1(input ...

最新文章

  1. 团队-象棋游戏-开发文档
  2. Spring bean 的生命周期
  3. ADO.NET复习——自己编写SqlHelper类
  4. Makefile 学习 2 - 基于若干 Blog 的汇总
  5. golang平滑重启
  6. Web Service入门简介(一个简单的WebService示例)
  7. java写左侧导航栏界面,jQuery----左侧导航栏面板切换实现
  8. 【es】es API源码分析
  9. getQueryString方法使用
  10. express-art-template模板引擎(详细)
  11. 乘法计算机公式,Excel表格乘法函数公式
  12. 中超赛程分析(5)--德比战
  13. windows中git输错密码后不能重新输入的问题
  14. 树莓派pxe网络启动官方文档(译文)
  15. Java用JFrame、JPanel、Graphics绘图案例讲解
  16. 几何画板自定义工具_可能是全网最详细:12 款 iPad 绘画工具横评,总有一款适合你...
  17. 如何在数位板上练习线条跟线稿?
  18. JQuery 模糊匹配(JQuery 选择器模糊匹配、选择指定属性是以给定字符串开始的元素 )
  19. 研究生如何发表论文必读
  20. c语言字符幂函数怎么编写,c语言幂函数_C ++中的幂函数

热门文章

  1. 在windows server 2008 R2上安装SVN的时候,提示安装kb2999226
  2. Java注释 及 标识符
  3. zend studio php 接口,通过PHP环境ZendStudio轻松实现webservice接口
  4. kb931125—rootsupd_kb931125-rootsupd补丁下载
  5. STM32F103基于固件库创建工程模板
  6. StdAfx.h显示错误,无法打开
  7. 来了!Python 官方发布了整套的中文PDF 文档(共27本)
  8. spreadJs拖放单元格值的解决方法
  9. VSCode下载安装和修改插件下载位置(配置右键菜单)
  10. 电脑装机不求人装机员系统集合