第4讲 同步有限状态机设计_第1页
第4讲 同步有限状态机设计_第2页
第4讲 同步有限状态机设计_第3页
第4讲 同步有限状态机设计_第4页
第4讲 同步有限状态机设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、f=ab 安徽师范大学安徽师范大学20152015第5章 Verilog HDL同步有限状态机设计状态机的基本概念状态机的编码方式复杂状态机的编写方法采用状态机来实现程序算法状态机状态机适合描述那些发生时有先后顺序或者有逻辑规律的事情。其本质是对具有逻辑顺序或时序规律事件的一种描述方法。时序逻辑电路设计过程由给定的逻辑功能建立原始状态图和状态表状态化简状态编码选择触发器类型确定激励方程组和输出方程组画出逻辑图并检查自启动有限状态机(有限状态机(FSM)它是一个有向的状态转移图形,由一组状态和一组它是一个有向的状态转移图形,由一组状态和一组相应的状态转移函数组成。相应的状态转移函数组成。状态机包

2、含的要素可归纳为4个:现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。现态:是指当前所处的状态。条件:又称为“事件”。当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。有限状态机(有限状态机(FSM)感冒感冒健康健康康复中康复中休息休息 淋雨淋雨吃药吃药有限状态机(有限状态机(FSM)设计集成电路时设

3、计集成电路时,通常可将整个系统划分为数据单元和通常可将整个系统划分为数据单元和控制单元。其中控制单元的主体通常是一个有限状态控制单元。其中控制单元的主体通常是一个有限状态机机,它接收外部信号和数据单元产生的状态信息它接收外部信号和数据单元产生的状态信息, 产生控产生控制信号序列。制信号序列。有了以上电路,就不难设计出复杂的控制序列来操纵数有了以上电路,就不难设计出复杂的控制序列来操纵数字系统的控制开关阵列。字系统的控制开关阵列。有限状态机(有限状态机(FSM)有限状态机能够克服纯硬件数字系统顺序方式控制不有限状态机能够克服纯硬件数字系统顺序方式控制不灵活的缺点。灵活的缺点。状态机的结构模式相对

4、简单。状态机的结构模式相对简单。状态机容易构成性能良好的同步时序逻辑模块。状态机容易构成性能良好的同步时序逻辑模块。状态机的状态机的Verilog表述丰富多样。表述丰富多样。在高速运算和控制方面,状态机更有其巨大的优势。在高速运算和控制方面,状态机更有其巨大的优势。就可靠性而言,状态机的优势也是十分明显的。就可靠性而言,状态机的优势也是十分明显的。有限状态机(有限状态机(FSM)状态机一般包括组合逻辑和寄存器逻辑两部分。寄存器用于存储状态机一般包括组合逻辑和寄存器逻辑两部分。寄存器用于存储状态,组合电路用于状态译码和产生输出信号。状态,组合电路用于状态译码和产生输出信号。状态机的下一个状态及输

5、出不仅与输入信号有关,还与寄存器当状态机的下一个状态及输出不仅与输入信号有关,还与寄存器当前状态有关。前状态有关。根据输出信号产生方法的不同,状态机可分为根据输出信号产生方法的不同,状态机可分为米里米里(Mealy) 机机和和摩尔摩尔(Moore) 机机。米里米里(Mealy) 机的机的输出输出是当前状态和输入信号的函数。是当前状态和输入信号的函数。摩尔摩尔(Moore) 机的机的输出输出仅是当前状态的函数。仅是当前状态的函数。在硬件设计时在硬件设计时,需自行决定采用哪种状态机。需自行决定采用哪种状态机。Mealy 状态机状态机下一状态下一状态的逻辑的逻辑 F F输出逻辑输出逻辑 G G状态状

6、态寄存器寄存器 clk 输入输入下一个状态 = F(当前状态,输入信号); 输出信号 = G(当前状态,输入信号);Moor 状态机状态机下一个状态 = F(当前状态,输入信号) 输出信号 = G(当前状态);下一状下一状态的逻态的逻辑辑 F F输出逻辑输出逻辑 G G状态状态寄存器寄存器有限状态机(有限状态机(FSM)Idle Start Stop Clear !A !Reset /K2=0 K1=0 !Reset / K2=0 K1=0A=1/K2=1 (!Reset |!A )/ K2=0 K1=1!Reset /K2=0 K1=0 A/K1=0状态机的设计包含两个主要过程: 一是状态机

7、的编码,二是状态机的建模。 同步时钟:clk输入信号:reset、A输出信号:K1、K2状态转移发生在时钟上升沿触有限状态机(有限状态机(FSM)-编码编码状态编码又称状态分配。状态编码又称状态分配。通常有多种编码方法,编码方案选择得当,设计的电路可通常有多种编码方法,编码方案选择得当,设计的电路可以简单;反之,电路会占用过多的逻辑或速度降低。设计以简单;反之,电路会占用过多的逻辑或速度降低。设计时,须综合考虑电路复杂度和电路性能这两个因素。时,须综合考虑电路复杂度和电路性能这两个因素。二进制编码二进制编码、格雷编码、格雷编码、完整一位热编码完整一位热编码( verbose one-hot)

8、、简化一位热编码、简化一位热编码( simplified one-hot )二进制编码: Idle = 2b00 Start = 2b01 Stop = 2b10 Clear = 2b11 One-Hot编码: Idle = 4b1000 Start = 4b0100 Stop = 4b0010 Clear = 4b0001有限状态机(有限状态机(FSM)-编码编码二进制编码:使用较少的触发器和较多的组合逻辑; 适用于CPLD和小型状态机设计; One-Hot编码:使用较多的触发器和较少的组合逻辑; 适用于FPGA和大型状态机设计;有限状态机(有限状态机(FSM)-建模建模有限状态机(有限状态

9、机(FSM)-建模建模用用Verilog 语言描述有限状态机可使用多种风格语言描述有限状态机可使用多种风格,不同的风格会极不同的风格会极大地影响电路性能。大地影响电路性能。通常有通常有2种描述方式种描述方式:单单always 块、多块、多always 块。块。单always 块:将状态转移和状态的操作、判断等写到一个块中多always 块:将状态转移写成一个单独的块,将状态的操作、判断写到其它块中状态转移是用寄存器实现的,是同步时序部分。状态的判断是组合逻辑。多always 块方式将同步时序和组合逻辑分别放到不同的块中实现。状态机较复杂时,多always 块是比较好的设计方式。结构清晰,便于阅

10、读、理解、维护,更重要的是利于综合器优化代码,利于用户添加合适的时序约束条件,利于布局布线器实现设计。有限状态机(有限状态机(FSM)Idle Start Stop Clear !A !Reset /K2=0 K1=0 !Reset / K2=0 K1=0A=1/K2=1 (!Reset |!A )/ K2=0 K1=1!Reset /K2=0 K1=0 A/K1=0同步时钟:clk输入信号:reset、A输出信号:K1、K2状态转移发生在时钟上升沿触module fsm (Clock, Reset, A, K2, K1);module fsm (Clock, Reset, A, K2, K1

11、);input Clock, Reset, A; /input Clock, Reset, A; /定义时钟、复位和输入信号定义时钟、复位和输入信号output K2, K1; /output K2, K1; /定义输出控制信号的端口定义输出控制信号的端口reg K2, K1; /reg K2, K1; /定义输出控制信号的寄存器定义输出控制信号的寄存器reg 1:0 state ;reg 1:0 state ; / /定义状态寄存器定义状态寄存器parameter Idle = 2parameter Idle = 2b00, Start = 2b00, Start = 2b01, /b01,

12、 /定义状态变量参数值定义状态变量参数值 Stop = 2Stop = 2b10, Clear = 2b10, Clear = 2b11b11;always (posedge Clock)always (posedge Clock) if (!Reset) if (!Reset) begin / begin /定义复位后的初始状态和输出值定义复位后的初始状态和输出值 state = Idle; K2=0; K1=0; state = Idle; K2=0; K1=0; end endelseelse case (state) case (state) Idle: begin Idle: beg

13、in if (A) begin if (A) begin state = Start; state = Start; K1=0; K1=0; end end else state = Idle; else state = Idle; end end建模方法之一(二进制编码)Start: begin Start: begin if (!A) state = Stop; if (!A) state = Stop; else state = Start; else state = Start; end endStop: begin Stop: begin if (A) begin if (A) be

14、gin state = Clear; state = Clear; K2= 1; K2= 1; end end else state = Stop; else state = Stop; end endClear: begin Clear: begin if (!A) begin if (!A) begin state = Idle; state = Idle; K2=0; K1=1; K2=0; K1=1; end end else state = Clear; else state = Clear; end end endcase endcaseendmodule endmodule 建模

15、方法之一(二进制编码)module fsm (Clock, Reset, A, K2, K1);module fsm (Clock, Reset, A, K2, K1);input Clock, Reset, A;input Clock, Reset, A;output K2, K1;output K2, K1;reg K2, K1;reg K2, K1;reg 3:0 state ;reg 3:0 state ; parameter Idle = 4parameter Idle = 4b1000, b1000, Start = 4 Start = 4b0100, b0100, Stop =

16、4 Stop = 4b0010, b0010, Clear = 4 Clear = 4b0001;b0001; always (posedge clock) always (posedge clock) if (!Reset) if (!Reset) begin begin state = Idle; K2=0; K1=0; state = Idle; K2=0; K1=0; end end else else case (state) case (state) Idle: if (A) begin Idle: if (A) begin state = Start; state = Start

17、; K1=0; K1=0; end end else state = Idle; else state = Idle;建模方法之二(一位热编码) 建模方法之二(一位热编码)建模方法之三(2个always)endendmodule建模方法之三(2个always)建模方法之四(多个always)建模方法之四(多个always)建模方法之四(多个always)有限状态机(有限状态机(FSM) 多数多数FPGA内触发器加多,且一位热编码的译码逻辑较内触发器加多,且一位热编码的译码逻辑较为简单,建议利用为简单,建议利用FPGA实现的有限状态机采用一位热实现的有限状态机采用一位热编码方式编码方式在比较复杂

18、的状态机设计过程中,往往把状态的变化与在比较复杂的状态机设计过程中,往往把状态的变化与输出的控制分成两部分来考虑。为了调试方便,还常常输出的控制分成两部分来考虑。为了调试方便,还常常把每一个输出写成一个个独立的把每一个输出写成一个个独立的always组合块。在调试组合块。在调试多输出状态机时,这样做比较容易发现问题和改正模块多输出状态机时,这样做比较容易发现问题和改正模块编写中出现的问题。编写中出现的问题。FSM的Test Benchtimescale 1ns/100psmodule test(); reg Clock,Reset,A; wire K2,K1; ; always #10 Clock=Clock; initial beginClock=0;Reset=0;A=0; #20;Reset=1;A=0; #20;Reset=1;A=1;endendmodule 有限状态机(有限状态机(FSM)-总结总结 有限状态机(有限状态机(FSM)-扩展扩展 有限状态机有限状态机-扩展扩展隐式状态机隐式状态机FSM 不需要声明状态寄存器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论