第12讲_VHDL状态机.pptVIP

  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文档。上传文档
查看更多
第12讲_VHDL状态机

第12讲 VHDL状态机 什么是状态机? 时序电路分析:驱动方程,状态方程,输出方程,状态转换表,状态转换图。 时序电路设计?(思考) 状态机就是在有效状态内,在时钟的驱动下,通过给定初始状态,能够自动完成状态间的循环和相应状态的输出的时序逻辑电路。 举个最简单的例子:人有三个状态健康,感冒,康复中。触发的条件有淋雨(t1),吃药(t2),打针(t3),休息(t4)。所以状态机就是健康-(t3)-〉健康;健康-(t1)-〉感冒;感冒-(t3)-健康;感冒-(t2)-〉康复中;康复中-(t4)-〉健康。等等。就是这样状态在不同的条件下跳转到自己或不同状态的图。 什么是状态机? 状态机分为状态译码部分:根据输入以及系统当前的状态,由状态方程来决定下一状态的状态码。状态输出部分:根据当前的状态码决定电路的当前输出。状态转换部分:将下一状态转变为当前状态。 状态机的VHDL结构 状态译码,状态输出,状态转换 双进程结构,时序进程REG完成状态转换,即把下一状态转换为当前状态,组合进程COM完成当前状态下的状态译码和状态输出。 与状态机相关的语法语句 类型定义语句 已定义数据类型:BIT,STD_LOGIC,BOOLEAN…… 用户自己定义新的数据类型:枚举,数组,记录,时间,实数等 如何自定义数据类型? TYPE 数据类型名 IS 数据类型定义; TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型; 状态机有哪几种? Moore状态机 输出只取决于系统当前的状态,而与系统的输入无关 Mealy状态机 输出不仅取决于当前的状态,还取决于系统当前的输入。 状态机实例 用VHDL语言描述状态机的一般模式(结构): 1.说明部分:定义状态机使用的枚举数据类型 2.主控时序进程:在时钟的驱动下进行状态转换。 3.主控组合进程:根据当前状态完成状态译码和状态输出,并将状态译码反馈给主控时序进程,将状态输出给系统输出。 4.辅助进程:完成一些辅助算法。 5.2 Moore状态机 Moore状态机概念 输出只取决于系统当前的状态,而与系统的输入无关 Moore状态机特点总结 1、多进程Moore状态机程序结构清晰,状态输出时序与状态转换同步,但由于输出无时序控制,容易产生毛刺。 在对时序要求较高,而对输出的毛刺不敏感的电路描述中可用多进程 2、单进程Moore状态机同步完成状态译码,状态输出和状态转换,避免出现毛刺,但是输出较多进程状态机晚了一个时钟周期 在对毛刺敏感的电路描述中用单进程,比如将电路的输出作为下一级电路的参考时钟时 Company Logo 4 什么是状态机? 1 2 3 5 状态机如何工作? 状态机的VHDL结构 与状态机相关的语法语句 状态机的种类 例1 BCD计数器 功能描述:状态转移图 zero (0000) one (0001) two (0010) three (0011) four (0100) five (0101) nine (1001) eight (1000) seven (0111) six (0110) rst library ieee; use ieee.std_logic_1164.all; entity counter is port ( rst, clk: in std_logic; count: out std_logic_vector(3 downto 0)); end counter; architecture state_machine of counter is type state is (zero, one, two, three, four, five, six, seven, eight, nine); signal pr_state, nx_state: state; begin process (clk, rst) begin if (rst = 1‘) then pr_state = zero; elsif (clk’event and clock=‘1’) then pr_state = nx_state; end if; end process; process ( pr_state) begin case pr_state is when zero= count = “0000”; nx_state=one; w

文档评论(0)

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

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

1亿VIP精品文档

相关文档