二、有限状态机(FSM)
1、状态机的作用?是什么?
状态机,顾名思义就是用来描述状态的。完善一点就是在同一的时钟下。更准确说是一种verilogHDL编程思想。
例如我们每一个系统都可以分为好几种状态,如:开始,初始化,运行,状态1,状态2,状态3,状态4,结束。
2、状态机结构
1)输出 <= 输入有关+当前状态

2)输出 <= 当前状态

3)流水线寄存器 <= 输出 <= 输出+当前状态

3、状态机verilog程序
一个系统或者一个物体的行为或者一个器件的状态,我们都可以分成好几种状态,那么就可以画出如下图的状态图,当然不可能所有的状态都是这样,但是大穹小异。这里的输出是用k1,k2来表示的,也就是代表当这种状态的时候,我们系统会实行什么行为。
1)一般形式的状态机程序(使用Gray编码)
module fsm(clk,rst,a,k1,k2,state);
input clk,rst,a;
output k1,k2;
output[1:0] state;
reg k1,k2;
reg[1:0] state;
parameter idle=2'b00,//空闲的
start=2'b01,
stop=2'b10,
clear=2'b11;
always@(posedge clk)
if(!rst)
begin
state<=idle;
k2<=0;
k1<=0;
end
case(state)
idle:
if(a) begin state<=start;k1<=0;end
else begin state<=idle;k2=0;k1=0;end
start:
if(!a) state<=stop;
else state<=stop;
stop:
if(a) begin state<=clear; k2<=1;end
else begin stste<=stop;k2<=0;k1<=0;end
clear:
if(!a) begin state<=idle;k2<=0;k1<=1;end
else begin state<=clear;k2<=0;k1<=1;end
default:
state<=2'bxx;
endcase
endmodule
2)用独热码表示的状态机
parameter idle=4'b0000,
start=4'b0100,
stop=4'b0010,
clear=4'b0001;
这叫独热码,你懂的。
3)输出<= 状态值 (把状态值直接作为输出) 适用于高速状态机,因为节省时间,节省器件,延迟时间小
state<=start; ……………… state<=stoptoclear; …………………… state=idle;
4)适用于大型复杂设计的多输入状态机,使用always
//每一个时钟产生一个状态的改变
always@(posedge clk)
if(!rst)
state<=idle;
else
state<=nextstate;
//产生下一状态的组合逻辑
always@(state or a)
case(state)
idle:
if(a) nextstate=start;
else nextstate=idle;
start:
if(!a) nextstate=stop;
else nextstate=start;
stop:
if(a) nextstate=clear;
else nextstate=stop;
clear:
if(!a) nextstate=idle;
else nextstate=clear;
default:
nextstate=2'bxx;
endcase
//产生输出k1的组合逻辑
always@(state or rest or a)
if(!rst)
k1=0;
else
if(state==clear&&!a)
k1=1;
else
k1=0;
//产生k2的组合逻辑
always@(state or rst or a)
if(!srt)
k2=0;
else
if(state==stop&&a)
k2=1;
else
k2=0;
4、总结
不同类型的状态机有不同的优势。
二、有限状态机(FSM)的更多相关文章
- cocos2d-x 游戏开发之有限状态机(FSM) (二)
cocos2d-x 游戏开发之有限状态机(FSM) (二) 1 状态模式
- 有限状态机FSM(自动售报机Verilog实现)
有限状态机FSM(自动售报机Verilog实现) FSM 状态机就是一种能够描述具有逻辑顺序和时序顺序事件的方法. 状态机有两大类:Mealy型和Moore型. Moore型状态机的输出只与当前状态有 ...
- Atitit. 有限状态机 fsm 状态模式
Atitit. 有限状态机 fsm 状态模式 1. 有限状态机 1 2. "状态表"和"状态轮换表" 1 3. 有限状态机概念(状态(State)事件(Even ...
- cocos2d-x 游戏开发之有限状态机(FSM) (四)
cocos2d-x 游戏开发之有限状态机(FSM) (四) 虽然我们了解了FSM,并且可以写自己的FSM,但是有更好的工具帮我们完成这个繁琐的工作.SMC(http://smc.sourceforge ...
- cocos2d-x 游戏开发之有限状态机(FSM) (三)
cocos2d-x 游戏开发之有限状态机(FSM) (三) 有限状态机简称FSM,现在我们创建一个专门的FSM类,负责管理对象(Monkey)的状态.然后Monkey类就实现了行为与状态分离.Monk ...
- cocos2d-x 游戏开发之有限状态机(FSM) (一)
cocos2d-x 游戏开发之有限状态机(FSM) (一) 参考:http://blog.csdn.net/mgphuang/article/details/5845252<Cocos2d-x游 ...
- 有限状态机FSM
有限状态机(Finite-state machine)又称有限状态自动机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型.常用与:正则表达式引擎,编译器的词法和语法分析,游戏设计,网络 ...
- [原创][FPGA]有限状态机FSM学习笔记(一)
1. 概述--何为有限状态机FSM? 有限状态机-Finite State Machine,简写为FSM,是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用.通常 ...
- [转载][FPGA]有限状态机FSM学习笔记(二)
1. Mealy和Moore状态机的互换 对于给定的时序逻辑功能,可以用Mealy机实现,也可以用Moore机实现.根据Moore机比Mealy机输出落后一个周期的特性,可以实现两种状态机之间的转换. ...
- Linux编程之有限状态机FSM的理解与实现
有限状态机(finite state machine)简称FSM,表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用.FSM是一种逻辑单元内部的一种高效编程方法,在 ...
随机推荐
- Pascal 语言中二维数组:矩阵问题
[题目]方阵填数:在一个 N*N的方阵中,填入 1,2..... N*N个数,并要求构成如下格式: 图例:10 11 12 1 9 16 13 2 8 ...
- http header详解
HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了请求/响应模 型,浏览器或其他客户端发出请求,服务器给与响应.就整个网络资源 ...
- Application Loader上传app时报错:the bundle identifier cannot be changed from the current value
报错如图: 解决:用info.plist中的bundle identifier生成发布证书(Distribution),如图:
- OpenShare新功能@2014年10月
新功能@ Oct,2014 增强“应用中心”(就是“企业应用门户”功能):在Dock上增加“应用中心”图标,使得用户无论在任何页面,任何位置,永远都是点击一下即可进入任一企业应用,而无需回退到门户主页 ...
- The Art of Computer Programming
<计算机程序设计艺术>即<The Art of Computer Programming>是计算机领域里颠峰级的里程碑,加上国外人士对它的推崇,所以提起它的大名简直就象法律书籍 ...
- c#的DateTime.Now函数详解
//2008年4月24日System.DateTime.Now.ToString("D");//2008-4-24System.DateTime.Now.ToString(&quo ...
- Java根据一个网址链接获取源代码
package test; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpU ...
- 读书笔记-UIView与控件
1.UIView 在Objective-C中,NSObject是所有类的“根”类.同样,在UIKit框架中,也存在一个如此神奇的类UIView.从继承关系上看,UIView是所有视图的根. 1.1.U ...
- OC11_真正的代理
// // ReceiveReportDelegate.h // OC11_真正的代理 // // Created by zhangxueming on 15/6/24. // Copyright ( ...
- Qt 5 在Windows下 出现QApplication: No such file or directory 问题的解决办法
解决方法是:在*.pro工程项目文件中添加一行QT += widgets,然后再编译运行就OK了.
