verilog中一文搞懂有限状态机(FSM)Mealy和Moore状态机(及一段式,二段式,三段式) |
您所在的位置:网站首页 › 状态机的作用是什么verilog › verilog中一文搞懂有限状态机(FSM)Mealy和Moore状态机(及一段式,二段式,三段式) |
三段式
1.什么是有限状态机2.Mealy 状态机2.Moore FSM3.Mealy 和 Moore的区别4.Encoding 风格设计原则
5. 一段式状态机6. 二段式状态机控制current state 写法控制 state写法控制current state 和output7.三段式状态机
总结Extra
1.什么是有限状态机
如果一个系统在有限数字的内部状态下转换,就可以用有限状态机来描述这个系统。网上比较经典的例子就是校验固定序列 100010这种。 状态机一般有两种书写方式分别是Mealy状态机和Moore状态机。 2.Mealy 状态机
因为需要在数字电路中使用FSM,所以状态机的风格有4种写法 Binary : 状态由binary格式表示(000,001,010…)Gray :状态由格雷码风格表示(000,001,011…)One Hot : 只有1个bit是high,reset是low(0001,0010,0100…)One Cold : 只有1个bit是low,reset是high(1110,1101,1011…) 设计原则binary和gray-code适用于触发器资源较少,组合电路资源丰富的情况(CPLD),对于FPGA,适用one-hot code。这样不但充分利用FPGA丰富的触发器资源,还因为只需比较一个bit,速度快,组合电路简单 相较于一段式,一段式将组合逻辑和时序逻辑写在一起,容易造成混淆,不利于代码维护。二段式在组合逻辑特别复杂时适用,但要注意需在后面加一个触发器以消除组合逻辑对输出产生的毛刺。三段式没有这个问题,由于第三个always会生成触发器,但是这条路径的时序会比较紧张。 文中提到的delta delay 的问题可能就是VHDL与Verilog最本质的区别。 其实三段式和二段式的主要区别就是,在组合逻辑的时候要不要在使用register输出output,像我二段式中时序同时控制current state 和输出这种形式其实本质和三段式没有区别。所以还是要理解电路的时序问题再看采用怎样的代码。 Extra在Xilin官网上有讨论提出,可能很多人喜欢用一段式,这样是最简单的。至于原因大家可以自己去瞅瞅,因为看过一遍之后,没能记下来所以不想在这个小细节上纠结。 https://forums.xilinx.com/t5/Synthesis/FSM-coding-1-vs-2-vs-3-process-style-which-one-is-preferred/td-p/746476 大家感兴趣可以参考 Verilog flaw这篇文章 https://insights.sigasi.com/opinion/jan/verilogs-major-flaw/ 还有这一篇对VHDL如何写三种模式的状态机的方法,我使用的图是这个网站的,我相当于把VHDL翻译成Verilog,仿真之后也是符合我说的现象的。 https://vhdlwhiz.com/n-process-state-machine/ http://blog.sina.com.cn/s/blog_6f0eeb330101djzu.html |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |