有限状态机设计精要.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文档。上传文档
查看更多
* Moore与Mealy区别总结 Moore状态机:在时钟脉冲的有限个门延时之后,输出达到稳定。输出会在一个完整的时钟周期内保持稳定值,即使在该时钟内输入信号变化了,输出信号也不会变化。输入对输出的影响要到下一个时钟周期才能反映出来。把输入和输出分开,是Moore状态机的重要特征。 Mealy状态机:由于输出直接受输入影响,而输入可以在时钟周期的任一时刻变化,这就使得输出状态比Moore状态机的输出状态提前一个周期到达。输入信号的噪声可能会出现在输出信号上。 对同一电路,使用Moore状态机设计可能会比使用Mealy状态机多出一些状态。 Moore与Mealy区别总结 根据他们的特征和要设计的电路的具体情况,就可以确定使用那种状态机来实现功能。 一旦确定状态机,接下来就要构造状态转换图。现在还没有一个成熟的系统化状态图构造算法,所以,对于实现同一功能,可以构造出不同的状态转换图。但一定要遵循结构化设计。 在构造电路的状态转换图时,使用互补原则可以帮助我们检查设计过程中是否出现了错误。互补原则是指离开状态图节点的所有支路的条件必须是互补的。同一节点的任何2个或多个支路的条件不能同时为真。同时为真是我们设计不允许的。 AD574逻辑控制真值表(X表示任意) CE CS RC K12/8 A0 工 作 状 态 0 X X X X 禁止 X 1 X X X 禁止 1 0 0 X 0 启动12位转换 1 0 0 X 1 启动8位转换 1 0 1 1 X 12位并行输出有效 1 0 1 0 0 高8位并行输出有效 1 0 1 0 1 低4位加上尾随4个0有效 7.2.1 多进程有限状态机 AD574工作时序 STATUS:AD574芯片的一个输出引脚,标志芯片的忙或闲的状态,在转换进行时,它为高电平,转换结束时变低电平。 采样状态机结构框图 PROCESS REG 时序进程 PROCESS COM 组合进程 PROCESS LATCH 锁存器 current_state next_state LOCK 状态机FSM FPGA/CPLD CLK CS A0 RC K12/8 STATUS D[11..0] AD574 Q[11..0] 模拟信号输入 采样数据输出 图7-4 AD574工作时序 【例7-2】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD574 IS PORT (D :IN STD_LOGIC_VECTOR(11 DOWNTO 0); CLK,STATUS : IN STD_LOGIC;--状态机时钟CLK,AD574状态信号STATUS LOCK0 : OUT STD_LOGIC; --内部锁存信号LOCK的测试信号 CS,A0,RC,K12X8 : OUT STD_LOGIC; --AD574控制信号 Q : OUT STD_LOGIC_VECTOR(11 DOWNTO 0)); --锁存数据输出 END AD574; ARCHITECTURE behav OF AD574 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; BEGIN K12X8 = 1; LOCK0 = LOCK ; COM: PROCESS(current_state,STATUS) BEGIN CASE current_state IS WHEN st0= next_state = st1; CS=1; A0=1;RC=1;LOCK=0; --初始化 WHEN st1= next_state = st2; CS=0; A0=0;RC=0;LOCK=0; --启动12位转换 WHEN st2 = IF (STATUS=1) THEN next_state = st2; ELSE next_state = st3; END IF ; CS=0; A0=0;RC=0;LOCK=0; --等待转换

文档评论(0)

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

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

1亿VIP精品文档

相关文档