基于算法的状态机.docVIP

  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文档。上传文档
查看更多
基于算法的状态机

11.1.4? 基于算法状态机(ASM)图的设计 1. 算法状态机图 算法状态机图是时序状态机功能的一种抽象,是模拟其行为的关键工具,类似于软件流程图。但是显示的是计算动作的时间顺序,以及在状态机输入影响下发生的时序步骤。ASM图描述的是状态机的行为动作,而不是存储组件所存储的内容。 在描述时序状态机的行为方面,以及设计状态机来控制数据信道方面,ASM图是非常有用的。ASM图由如图11-9所示的基本元素组成:状态框、条件输出或寄存器操作框及判决框。 INCLUDEPICTURE \d /files/uploadimg145108679.jpg \* MERGEFORMATINET ?? ASM图的基本单元是ASM块,如图11-10所示。它包含一个状态框、一个可选的判决框和在分支信道上放置的条件框。ASM块图等同于状态机的时序。对一个给定的ASM图,用状态转移图也可以表示同样的信息。 INCLUDEPICTURE \d /files/uploadimg145145121.jpg \* MERGEFORMATINET ?? 两种类型的状态机(米利型和摩尔型)都可以用ASM图表示。摩尔型状态机的输出常常在状态框中列出。条件输出放置在条件框中,条件框中还可以表示状态转移时的寄存器操作。在数据信道中的判决框隐含了优先权解碼。 2. 算法状态机和数据信道图 状态机的一个重要应用就是控制时序状态机数据信道上的寄存器操作,而该时序状态机已被划分为控制器和数据信道。控制器可以用ASM图来描述,然后将ASM图连接到所控制的数据信道上。当控制器的状态沿着通道发生转移时,通过标注每个通道来指出那些在相关数据信道单元中所发生的寄存器操作。以这种方式连接到数据信道的ASM图,就称为算法状态机和数据信道(Algorithm State Machine and Datapath,ASMD)图。 通过把时序状态机数据信道的设计从控制器的设计中分离出来,并在两个单元之间保持清晰的联系,使得ASMD图能够阐明时序状态机的设计方法。与状态转移并行发生的寄存器操作是在图的通道上标注的,而不是在通道上的条件框中标注的。 下面通过一个具体的实例,来展示基于ASMD图的时序状态机的设计。该实例是一个并行输入和输出的二级流水线2:1抽取器。该简单功能的抽取器用于数字信号处理,可以实现把数据从高速时钟率降到低速时钟率。2:1抽取器的实现框图如图11-11所示,整个数据字能以流水线内容填充到内存的速率或者以某些处理器速率的2倍速率传送到流水线。 INCLUDEPICTURE \d /files/uploadimg145232307.jpg \* MERGEFORMATINET ??? 图11-12给出了二级流水线2:1抽取器的ASMD图。状态机具有同步复位到空闲状态S_IDLE功能,一旦En信号有效则状态机从S_IDLE状态转到S_1状态,同时将数据加载到移位寄存器{P1,P0}中。在下一个时钟周期,状态机进入S_FULL状态。然后等待Load信号,一旦有效则将输入数据加载到移位寄存器中,同时状态机转到S_1状态。 INCLUDEPICTURE \d /files/uploadimg145317346.jpg \* MERGEFORMATINET ??? 基于ASMD图的二级流水线2:1抽取器程序代码如下所示,仿真波形见如图11-13所示。 module?decimator(clk,?rst,?En,?Load,?Data,?Dout); ? parameter???S_IDLE?=?2b00, ? S_1?=?2b01, ? S_FULL?=?2b10, ? S_WAIT?=?2b11; ? ? input??clk,?rst,?En,?Load; ? input?[7:0]?Data; ? output[7:0]?Dout; ? ? reg?[7:0]??P0,?P1,?Dout; ? reg?[1:0]??state; ? always?@(posedge?clk)begin ? if(rst)begin ? state?=?S_IDLE; ? P1?=?8h00; ? P0?=?8h00; ? end ? else?case(state) ? S_IDLE:if(En)?begin? ? state?=?S_1; ? P1?=?Data; ? P0?=?P1; ? end ? S_1:?begin? ? state?=?S_FULL; ? P1?=?Data; ? P0?=?P1; ? end ? S_FULL:if(Load)?begin? ? ???

文档评论(0)

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

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

1亿VIP精品文档

相关文档