微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 老话题,关于独热码状态机

老话题,关于独热码状态机

时间:10-02 整理:3721RD 点击:
都说独热码状态机速度快 不知道是否有前提条件呢?
最近做一个项目,发现状态机(不大,十多个状态)用独热码编码
得出的时序分析报告反倒不如使用普通编码
各位对这个有什么看法 大家讨论一下?

和具体电路有关

除了扇出之类的原因 跟状态的跳转的关系是怎样的呢
一般来说 很少有总是顺序跳转的状态机吧 一般都是有交叉跳转的
那么如何判断一个状态机该使用什么样的编码最好?

视情况而定吧,无绝对

看你是不是真的理解了one hot,
和是否好好用了one hot code的output。
假设两个状态,一个是read_mem,一个是write_mem,
用one hot编码出来是01,10,
则bit0,1直接就是read、write信号,这样一定会快。
但是如果只是简单的在宣告state的时候用one_hot,不一定有效果。

学习中

学习了

是的
7# amormio124

看状态数以及应用场合而综合考虑

学习中

coding中是one-hot,实现时不一定是,还得看综合结果。另外,如果状态数量少,用二进制的很可能会更快,而且还省FF资源。

明白点了
不过对于较复杂的状态机 如何选择合适的编码还是不很清楚
不过现在很多综合工具会自动的优化状态机 自己的编码会被改动
而貌似综合工具改的编码方式也不一定是最好的

是啊,状态机编码有好几种方式,如二进制,one-hot,Gray,等等。以前有个一般的认识,状态数少(如小于8个)的用二进制,多一点的用one-hot或者Gray,现在一般都交给综合工具去优化了。

这个和用的FPGA的内部结构及所用的综合器有关的,在状态少的时候差别不大。

看下综合结果吧,很多综合工具都会自动将二进制码综合one_hot,或者倒过来,还得看你用的FPGA类型.还有你的具体要求以及设置了,如果是做ASIC的,one_hot一般都比二进制的快

学习了

学习了

学习中

个人总结:  状态小于5个,时钟小于100M,使用C8器件,一般使用独热
            超过5个,时钟大于100M,使用C8器件,一般用格雷

独热码  译码方面,但是不见得 状态变化 逻辑, 有计数器简单
只是单纯的移位寄存器的状态    出现情况还是特别小的
另外三段式中的,
case(next_state)   **** 译码后 其他信号寄存器输出
会照成各条路径的差异比较大,  
而且也会比
case(state) *****   译码后,其他信号的寄存器输出       路径长,
因为多了一个 当前state 到 next_state 的路径



    如果后续的编码电路非常简单,one-hot的优势就显示不出来了。

内容学习中



    不一定时序快  省功耗倒是肯定的

确实不一定

独热码可以省掉组合译码逻辑的面积,但需要更多的寄存器,不过对于fpga实现的设计,独热码还是有优势的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top