《EDA有限状态机设计技术.pptx》由会员分享,可在线阅读,更多相关《EDA有限状态机设计技术.pptx(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、有限状态机分类有限状态机分类Moore型型有限状态机和有限状态机和Mealy型型有限状态机。有限状态机。Moore型有限状态机型有限状态机次态次态 逻辑逻辑状态状态 寄存器寄存器输出输出 逻辑逻辑输入输入次态次态现态现态输出输出时钟时钟复位复位Moore型:输出信号型:输出信号仅与当前状态有关仅与当前状态有关。有限状态机的简介有限状态机的简介第1页/共25页Mealy型有限状态机型有限状态机Mealy型:输出信号型:输出信号不仅与当前状态有关,还与所有不仅与当前状态有关,还与所有 输入信号有关输入信号有关。次态次态 逻辑逻辑状态状态 寄存器寄存器输出输出 逻辑逻辑输入输入次态次态现态现态输出输
2、出时钟时钟复位复位有限状态机的简介有限状态机的简介第2页/共25页8.1.2 状态机的一般结构 有限状态机(FSM,Finite State Machine)是时序电路设计中经常采用的一种方式,尤其适于设计数字系统的控制模块。用Verilog的case、if-else等语句能很好地描述基于状态机的设计。1.说明部分状态转换变量的定义和所有可能状态的说明 2005版参数说明关键字parameter第3页/共25页2.主控时序过程:状态机的运转和状态转换的过程8.1.2 状态机的一般结构3.主控组合过程:根据当前状态和外部的信号发出控制信号,同时确定下一状态的走向 4.辅助过程:配合状态机工作的组
3、合过程和时序过程。第4页/共25页8.1.2 状态机的一般结构说明部分主控时序过程第5页/共25页8.1.2 状态机的一般结构主控组合过程第6页/共25页8.1.3 初始控制与表述 打开“状态机萃取”开关 参数的定义 状态变量定义第7页/共25页 用状态机设计一个二进制序列检测器,其功能是检测一个4位二进制序列“1111”,即输入序列中如果有4个或4个以上连续的“1”出现,输出为1,其它情况下,输出为0。有限状态机(FSM)设计举例输出z:000 000 000 000 000 100 001 110 000其输入输出如下所示:输入x:000 101 010 110 111 101 111 1
4、10 101第8页/共25页有限状态机(FSM)设计“1111”序列检测器状态转换图 第9页/共25页“1111”序列检测器的Verilog描述module fsm_seq(x,z,clk,reset,state);input x,clk,reset;output z;output2:0 state;reg z;parameter s0=0,s1=1,s2=2,s3=3,s4=4;reg 2:0 current_state,next_state;assign state=current_state;always(posedge clk or posedge reset)begin if(res
5、et)current_state=s0;else current_state=next_state;endalways(current_state or x)begin casex(current_state)第10页/共25页“1111”序列检测器的Verilog描述 s0:beginif(x=0)begin next_state=s0;z=0;endelse begin next_state=s1;z=0;end end s1:beginif(x=0)begin next_state=s0;z=0;end else begin next_state=s2;z=0;end ends2:beg
6、inif(x=0)begin next_state=s0;z=0;end else begin next_state=s3;z=0;end ends3:begin if(x=0)begin next_state=s0;z=0;endelse begin next_state=s4;z=1;end ends4:beginif(x=0)begin next_state=s0;z=0;endelse begin next_state=s4;z=1;end end default:begin next_state=s0;end endcase endendmodule第11页/共25页8.2 Moor
7、e型状态机及其设计 Moore型有限状态机型有限状态机次态次态 逻辑逻辑状态状态 寄存器寄存器输出输出 逻辑逻辑输入输入次态次态现态现态输出输出时钟时钟复位复位Moore型:输出信号型:输出信号仅与当前状态有关仅与当前状态有关。属于同步。属于同步输出状态机,当输入发生变化时还必须等待一输出状态机,当输入发生变化时还必须等待一个时钟的到来,输出才变化。个时钟的到来,输出才变化。第12页/共25页8.2 Moore型状态机及其设计 ADC0809采样控制器设计:工作时序第13页/共25页8.2 Moore型状态机及其设计 状态转换图:第14页/共25页8.2 Moore型状态机及其设计 8.2.1
8、 多过程结构型状态机 第15页/共25页8.2 Moore型状态机及其设计 8.2.1 多过程结构型状态机 接下页第16页/共25页8.2 Moore型状态机及其设计 8.2.1 多过程结构型状态机 接上页第17页/共25页8.2 Moore型状态机及其设计 描述方式描述方式过程描述功能过程描述功能过程数过程数3段式描述方式段式描述方式过程过程1:描述次态逻辑:描述次态逻辑过程过程2:输出逻辑:输出逻辑过程过程3:描述状态寄存器:描述状态寄存器 32段式描述方式段式描述方式过程过程1:主控组合过程:主控组合过程 次态、输出逻辑次态、输出逻辑 过程过程2:主控时序过程:主控时序过程 状态寄存器状
9、态寄存器21段式描述方式段式描述方式过程过程1:次态、状态、输出次态、状态、输出1描述方式第18页/共25页输出次态逻辑 输出逻辑 第19页/共25页8.3 Mealy型状态机设计 Mealy型有限状态机型有限状态机Mealy型:输出信号型:输出信号不仅与当前状态有关,还与所有不仅与当前状态有关,还与所有 输入信号有关输入信号有关。次态次态 逻辑逻辑状态状态 寄存器寄存器输出输出 逻辑逻辑输入输入次态次态现态现态输出输出时钟时钟复位复位第20页/共25页设计举例:检测序列11010011第21页/共25页基于状态机的设计要点1起始状态的选择起始状态是指电路复位后所处的状态,选择一个合理的起始状
10、态将使整个系统简洁高效。有的EDA软件会自动为基于状态机的设计选择一个最佳的起始状态。2状态编码状态编码主要有二进制编码、顺序编码和一位独热编码等方式。二进制编码(Binary State Machine)顺序编码(Sequential State Machine)一位热码编码(One-Hot State Machine Encoding)一位热码编码即采用n位(或n个触发器)来编码具有n个状态的状态机。比如对于state0、state1、state2、state3 四个状态可用码字1000、0100、0010、0001来代表。第22页/共25页基于状态机的设计要点3状态编码的定义在Veril
11、og语言中,有两种方式可用于定义状态编码,分别用parameter和define语句实现,比如要为state0、state1、state2、state3四个状态定义码字为:00、01、11、10,可采用下面两种方式。方式1:用parameter参数定义 parameter state1=2b00,state2=2b01,state3=2b11,state4=2b10;case(state)state1:;/调用 state2:;第23页/共25页基于状态机的设计要点4状态转换的描述一般使用case语句来描述状态之间的转换,用case语句表述比用if-else语句更清晰明了。状态编码的定义方式2:用define语句定义define state1 2b00 /不要加分号“;”define state2 2b01define state3 2b11define state4 2b10case(state)state1:;/调用,不要漏掉符号“”state2:;第24页/共25页感谢您的欣赏!第25页/共25页
限制150内