电子设计自动化技术(EDA)Ch2-3-2013下精品.pptVIP

电子设计自动化技术(EDA)Ch2-3-2013下精品.ppt

  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文档。上传文档
查看更多
电子设计自动化技术(EDA)Ch2-3-2013下精品.ppt

状态机的设计风格 1、Moore状态机:输出仅与当前状态有关 2、Mealy状态机:输出与当前状态和输入信号均有关 状态分配 状态的分配对于状态机的设计至关重要,分配的不合理会导致运行速度慢,或者消耗过多的资源。 Highly Encoded State Assignment 利用最少的寄存器,当状态增加时,系统速度会显著降低。 以输出信号作为编码选择依据 One-hot Encoding 一个寄存器分配给一个状态使用 Almost One-hot Encoding 例如有两组功能相近的状态机,用1bit区分状态机,其余的bit可表示不同的状态。 以输出信号作为编码选择依据 state O1 O2 Idle 0 0 decision 0 0 read1 0 0 read2 0 1 Read3 1 1 Read4 1 1 write 0 0 state O1 O2 st1 St2 Q0 Q1 Q2 Q3 Idle 0 0 0 0 Decision 0 0 0 1 Read1 0 0 1 0 Read2 0 1 0 0 Read3 1 1 0 0 Read4 1 1 0 1 write 0 0 1 1 最简化状态 经过转换后的状态机图 One-hot Encoding的特点 速度快 准最佳的状态分配(其他的状态分配即使达到最佳,但如果增加状态或者改变一点功能后,就不一定是最佳)。 设计方便 修改方便 消耗的资源较多 便于调试 状态分配 错误恢复和非法状态 采用Highly Encoded State Assignment 出现状态跳转错误时,所处状态仍为合法状态。 出现错误时能够自动回到合法状态。(在数电里所谓的自启动功能) 处于合法状态并不表示电路能工作正常。 采用One-hot Encoding 合法状态少,非法状态多,因此在跳到非法状态时,可以采用有效检测并采取相应的保护手段。 Highly Encode Type state_type is (A,B,C); process(clk) begin if(clkevent and clk=1) then CASE state IS WHEN A = if(inx=1) then state= B; elsif(inx=1) then state= A; end if; WHEN B = if(inx=1) then state= C; elsif(inx=0) then state= A; end if; WHEN OTHERS = if(inx=1) then state= C; elsif(inx=0) then state= A; end if; END CASE; end if; end process; One-hot Encoding(1) architecture one of statemachine2 is constant A :std_logic_vector(2 downto 0) := 001; constant B :std_logic_vector(2 downto 0) := 010; constant C :std_logic_vector(2 downto 0) := 100; signal state : std_logic_vector( 2 downto 0); begin process(clk) begin if(reset = 0) then state = A; elsif(clkevent and clk=1) then CASE state IS WHEN A = if(inx=1) then state= B; elsif(inx=‘0) then state= A; end if; WHEN B = if(inx=‘1) then state= C; elsif(inx=0) then state= A; end if; WHEN OTHERS = if(inx=1) then state= C;

文档评论(0)

w447750 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档