FSM的分析与设计幻灯片.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
调制2篇文献介绍 * * * * * * 调制2篇文献介绍 * * * * * * 三段式描述方法虽然代码结构复杂了一些,但是换来的优势是:使FSM做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说在FPGA/CPLD等可编程逻辑器件上的综合与布局布线效果更佳 三段式并不是一定要写为3个always块,如果状态机更复杂,就不止3段了 * 调制2篇文献介绍 * * * * 航空电源航空科技重点实验室 */12 南京航空航天大学 NANJING UNIVERSITY OF AERONAUTICS AND ASTRONAUTICS 江苏省新能源发电与电能变换重点实验室 */27 FSM的分析与设计 * 报告内容 FSM的基本概念 FSM的设计 总结 FSM的分析 * FSM的基本概念 FSM即有限状态机(Finite State Machine),表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。在数字电路系统中,有限状态机是一种十分重要的时序逻辑电路模块 。 例如需要设计一个序列检测器,当检测到连续输入的信号为110时,输出Z=1,其他情况输出Z=0,这就涉及到几个状态的转换,如0,1,11等,这时就需要设计状态机来表述各状态的转换关系。 * 根据输出与状态以及输入的关系,FSM分为Moore机和 Mealy机,其中Moore机的输出只与当前的状态有关,而与输入无关;Mealy机的输出既与当前状态有关,也和输入有关。 (Mealy State Machine Only) FSM的基本概念 * FSM的基本概念 FSM的设计 总结 FSM的分析 * FSM的分析 对于实际系统,主要通过以下三个步骤得出其状态机: 一、分析系统的特性,根据输入输出顺序以及结构的不同,列写出系统可能的状态; 二、将第一步中所列写的各状态,通过加入输入得出其次态与输出的方法,可以发现步骤一中遗漏的状态,这时可以将其加入进去; 三、列写状态表和状态梯形图,可以将一些等价的状态用一个状态代替(所谓等价状态,指的是当每一次的输入相同时,状态的次态以及输出都相同的两个状态)。 * FSM的分析 前例中序列检测器共涉及到四个状态,S0(0)、S1(1)、S2(11)、S3(110),其Moore机与Mealy机状态转移图如下: S3/1 S0/0 S2/0 S1/0 0 1 0 0 1 0 1 1 S0 S1 S3 S2 0/0 1/0 0/0 1/0 1/0 0/1 0/0 1/0 Moore机状态转移图 Mealy机状态转移图 * 状态梯形图 FSM的分析 * FSM的基本概念 FSM的设计 总结 FSM的分析 * FSM的设计实现主要分为两步: 一、状态分配,又称状态编码,就是为每一个状态分配唯一的二进制代码,主要有三种编码方式:one-hot码, Binary码和 Grey码。one-hot码只使用其中一位来描述该状态,其他位都与该位不同,如(其中一位为1,其余位均为0);Binary码这里指自然二进制码,与我们平时所用的一样;Grey码是一种循环码,相邻两个状态之间只有一位不同。 FSM的设计 * 二、代码编写,就是用硬件描述语言实现状态机功能,硬件描述语言主要有VHDL和Verilog HDL,还有一些公司专门为自己的产品开发的语言,如Altera公司的AHDL语言 。 FSM的设计 * FSM的设计 状态分配 一般来说,状态数不是很多的话,主要使用one-hot码和Binary码,one-hot码由于只使用一位有效位,有几个状态就需要使用几个位,所以使用的寄存器较多,同时速度也较快;而Binary码编码方式简单,使用的状态位少(n=[log2S]),所以使用的寄存器较少,速度较慢,同时也可能产生毛刺以及误状态。 对于前例中的序列检测器,这里我们选用one-hot码来进行状态分配,令S0=0001,S1=0010,S2=0100,S3=1000。 * FSM的设计 代码编写(以Verilog为例) 状态机的代码编写主要有三种写法:一段式,两段式和三段式。这里以前述的序列检测器的例子来加以说明。 1.一段式 使用一个always语句,将所有逻辑(包括输入、输出、状态)全部包含进去 always@(posedge clk or negedge rst_n) if(!rst_n) begin N_state=S0; Z=1b0; end else case(N_state) S0: begin if(in_put) N_state=

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档