状态机设定与编码选择
2015-12-25 13:20
495 查看
状态机分为有限状态机和无限状态机,其中FSM(有限状态机)其设定可以分为mealy状态机和moore状态机。其中mealy状态机其输出和当前状态和输入有关,moore状态机其输出和当前状态有关。其状态机的代码编写又分为一段式,二段式和三段式,状态机的四个要素输入、输出、当前状态和下一个状态。其分类主要是将下一个状态、当前状态和输出是否综合在一个always块中。
数据编码主要有8421码、独热码、格雷码。8421码是按照自然数递增计数,在实际电路中,四位的变化不可能同时发生,则计数中可能出现短暂的其他代码,在特定的情况下可能导致电路的状态错误或者输入错误。独热码是在代码中只有一位代码为1,其与均为0,在标示不同数据时,将1移位即可。格雷码是在一组数的编码中,任意两个相邻的代码只有一位二进制不同,其中最大数与最小数之间也仅有一位数不同,即‘首尾相连’。
对于使用FPGA实现的有限状态机建议采用独热码,因为采用独热码设计时虽然增加了触发器,但所用组合电路可省一些,因而使电路的速度和可靠性有显著提高,而总的单元数并无显著增加。采用独热码后有了多余的状态,就有一些不可到达的状态。为此在case语句的最后需要增加dafault分支项。这可以用默认项标示该项。
但是对于状态繁多的状态机,当采用独热码编码位数过多时,可以采用格雷码,一般建议不采用8421码,使用格雷码可以减少电路变化中寄存器跳变位数,从而减少可能存在的误码。
数据编码主要有8421码、独热码、格雷码。8421码是按照自然数递增计数,在实际电路中,四位的变化不可能同时发生,则计数中可能出现短暂的其他代码,在特定的情况下可能导致电路的状态错误或者输入错误。独热码是在代码中只有一位代码为1,其与均为0,在标示不同数据时,将1移位即可。格雷码是在一组数的编码中,任意两个相邻的代码只有一位二进制不同,其中最大数与最小数之间也仅有一位数不同,即‘首尾相连’。
对于使用FPGA实现的有限状态机建议采用独热码,因为采用独热码设计时虽然增加了触发器,但所用组合电路可省一些,因而使电路的速度和可靠性有显著提高,而总的单元数并无显著增加。采用独热码后有了多余的状态,就有一些不可到达的状态。为此在case语句的最后需要增加dafault分支项。这可以用默认项标示该项。
但是对于状态繁多的状态机,当采用独热码编码位数过多时,可以采用格雷码,一般建议不采用8421码,使用格雷码可以减少电路变化中寄存器跳变位数,从而减少可能存在的误码。
相关文章推荐
- Linux软件的卸载
- 转:老板,别和我谈未来
- 修改Eclipse 45秒超时
- 一、git基本常用操作
- android 界面中的各种布局
- 新打开acitivyt时,EditText焦点自动带出软键盘问题解决方法总结 ... ...
- another app is currently holding the yum lock;waiting for it to exit解决
- IOS UITextField常用的代理方法总结
- FLV科普7 FLV时间戳计算
- 用ImDisk在Windows 10中创建内存虚拟盘
- 文章标题
- 时间与果实
- JAVA-中介者设计模式
- C库函数 - fseek()
- Linux管线命令
- Monkey源代码分析之执行流程
- Linux管线命令
- linq/EF/lambda 比较字符串日期时间大小
- 运动会分数统计系统开发(第一版)
- 在iOS6机子上运行 React-Native Demo, 自己编译 JavaScriptCore 源码,支持 iOS5.1 ,iOS 6