状态机性能考察.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[技术笔记]状态机性能考察(1) 最近对状态机产生了兴趣。看了老外的文章才知道这个领域真是旷阔无边,他们做学问的 态度实在是扎实。所以先做个读书笔记。 状态机的性能指标太多,我能力有限,目前在考察范围内的只有所需的逻辑资源和简单的 时序特性两项指标。 影响一个状态机的性能有多个因素,包括状态集合的编码、状态机的HDL编写方式、所采 用的器件结构,以及其他应用相关的因素。 • 状态编码 常见的状态编码包括顺序二进制编码、one-hot及改进的one-hot编码、Gray码等。 顺序二进制编码,即将状态依次编码为顺序的二进制数。顺序二进制编码是最紧密的编码, 优点在于它使用状态向量的位数最少。例如对于6个状态,只需要3位二进制数来进行编 码,因此只需要3个触发器来实现,节约了逻辑资源。(在实际应用中,往往需要较多组 合逻辑对状态向量进行解码以产生输出,因此实际节约资源的效果并不明显。) 在上面的例子中,3位二进制数总共有8种可能的编码模式,其中6种用来表示有效状态, 剩下的2种是无效编码。 有人认为顺序二进制编码还有一个好处。当芯片受到粒子辐射或者由于异步输入等问题可 能会造成状态跳转失常。如果失常中状态机跳转到无效的编码状态则可能会出现死机,除 非复位否则永远无法回到Idle状态。因为顺序二进制编码最紧密,所以无效编码最少。 失常时有更大的概率跳转到的有效状态,并最终回到Idle状态。 这种预想的好处并不会发生在实际中。首先,失常的跳转到有效状态并不意味着能够最终 回到Idle状态。例如在某个有效状态,状态机循环等待某输入信号,并作出应答。如果 状态机失常的跳转到该状态,同样会陷入死等,因为输入信号并不会到来。其次,失常的 跳转到有效状态,意味着可能在不正确的时机产生输出,这样会将故障传播到其他模块。 在很多应用中人们宁愿死机不输出任何信号也不愿意输出错误的信号。 可见使用顺序二进制编码并不能使得状态机具有所想象的容错能力。 [技术笔记]状态机性能考察(2 ) 在上面提高的失常跳转情况下,one-hot编码往往工作得更好。有趣的是,它恰恰是最不 紧密的编码。 在one-hot编码中,对于任何给定状态,状态向量只有1位置1,所有其它的状态位都为 0。one-hot编码最长,因为n个状态就需要n位的状态向量。 one-hot编码的状态机最大的优势是它的速度。one-hot状态机的速度与状态的数量无关, 仅仅取决于到某特定状态的跳转的数量。而相对的,状态增加时使用顺序二进制编码的状 态机速度会急剧下降。 one-hot编码其他的优点还有易于综合、易于寻找关键路径、易于进行静态时序分析等。 具体来说,要判断当前是否在某一状态,只需要判断状态向量的对应位是1还是0即可。 考虑一个典型的输出,它在某些状态输出1,剩下的状态输出0。只需要将状态向量中的 对应位OR起来即可产生该输出。也就说输出很容易产生,并且从状态稳定到输出稳定的 延时很确定(一个OR门的延时),因此易于综合以及进行静态时序分析。 应当注意的是one-hot编码有很多无效状态,因此在编写状态机时应该确保一旦进入无效 状态可以立即跳转到确定的已知状态 (通常是Idle)。(简单的说就是生成下一状态的 case语句要加default;或者在case之前先赋上默认值,到case里再覆盖。) 当发生失常跳转时one-hot编码有很大的概率跳转到无效状态,而它的无效状态现象很明 显(比如将状态向量都接到灯上,一旦同时亮多个灯就表明工作失常),即使不加处理也 很容易被外部逻辑检测到,从而可以说是易于调试的。 one-hot状态机有很多变体。比如将Idle状态编码为0,其他状态按照正常的one-hot编 码。即对于除Idle外的每个给定状态,对应的状态向量中有1位置1,其他位为0。这种 变体的好处是在复位时可简单的将状态向量的各个触发器清0。 另一种常见的变体称为almost one-hot编码。假设状态机有功能几乎相同的两组状态(例 如,处理对某设备的读访问和写访问),可以使用1个状态位来指示状态机当前正处在两 组状态中的哪一组,而剩下的状态位采用普通的one-hot编码。(例如一组状态为4b0001, 4b0010, 4b0100,另一组为4b1001, 4b1010, 4b1100。)因此要对给定状态进行完 整的解码需要考察两个状态位。这种机制具有使用纯one-hot编码的大多数好

文档评论(0)

勤劳的小厮 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档