目录:
- 前言
- 一、有限状态机
- 二、分类
-
-
- 1、摩尔型(Moore)
- 2、米里型(Mealy)
-
- 三、描述方式
-
-
- 1、三过程(建议用此,结构清晰)
- 2、双过程(CS+NS,OL)
- 3、双过程(CS,NS+OL)
- 4、单过程
-
- 四、以状态机实现模5计数器
- 五、序列检测器
-
-
- 1、思路
- 2、序列检测'101'
-
-
- (1)、序列转移图
- (2)、编码
-
- 3、状态转移图的练习
-
-
- 1、序列检测'111'
- 2、序列检测'1001'
-
-
- ??????忙碌的敲代码也不要忘了浪漫鸭!
前言
?你好啊,我是“ 怪& ”,是一名在校大学生哦。一、有限状态机
主页链接:怪&的个人博客主页
??博文主更方向为:课程学习知识、作业题解、期末备考。随着专业的深入会越来越广哦…一起期待。
??一个“不想让我曾没有做好的也成为你的遗憾”的博主。
很高兴与你相遇,一起加油!
- 其是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
- 其是时序电路设计中经常采用的一种方式,尤其适用于设计数字系统的控制模块。用Verilog的case、if-else等语句能很好地描述基于状态机的设计。
- 有限状态自动机(FSM “finite state machine” 或者FSA “finite state automaton” )是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型。
- 有限状态自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。有限状态自动机可以表示为一个有向图。有限状态自动机是自动机理论的研究对象。
- 只与当前状态有关
文章图片
- 与当前状态有关
- 与输入也有关
文章图片
三个always语句分别描述
- 现态(CS)
- 次态(NS)
- 输出逻辑(OL)
两个always语句分别描述
- 现态(CS)+ 次态(NS)
- 输出逻辑(OL)
两个always语句分别描述
- 现态(CS)
- 次态(NS)+输出逻辑(OL)
一个always描述
- 现态(CS)、次态(NS)、输出逻辑(OL)
module count5(clk,clr,out,count);
input clk,clr;
output count;
out reg[2:0] out;
parameters0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100;
//定义变量 always @(posege clk)
begin
if(clr) out=so;
//异步复位
else
case(out)//跳转
s0:out=s1;
//cs:ns现态:次态
s1:out=s2;
s2:out=s3;
s3:out=s4;
s4:out=s0;
default: out=s0;
//防止意外
endcase
endalways @(out) //产生输出逻辑
begin
if(out=3'b100) cout=1;
else cout=0;
end
endmodule
五、序列检测器 1、思路
(1)、首先画出状态转移图
(2)、根据状态转移图
- clk -> CS:NS
- 根据输入判断NS
- 判断输出
2、序列检测’101’
(1)、序列转移图
- 绿色的 S0,S1,S2,S3为命名的变量
- 箭头上的 0/0, /上边的 0表示的输入值,/下边的 0表示输出值。
- 箭头表示跳转由于CS(现态)-> NS(次态)
文章图片
module tese_101(clk,clr,x,z);
input x,clk,clr;
output reg z;
parameter S0=2'b00, S1=2'b01,S2=2'b11,S3=2'b10;
//<4的状态数量建议以格雷码编码
reg[1:0] CS,NS;
always@(posedge clk or posedge clr) //定义现态(CS)
begin
if(clr) CS=S0;
//异步复位
else CS=NS;
endalways@(CS)//定义次态 (NS)
begin
case(CS)
S0:if(x) NS=S1;
else NS=S0;
S1:if(x) NS=S1;
else NS=S2;
S2:if(x) NS=S3;
else NS=S0;
S3:if(x) NS=S1;
else NS=S2;
default: NS=S0;
//防止意外
endcase
endalways@(CS)//产生输出逻辑
begin
if(CS=S3) z=1;
else z=0;
end
endmodule
3、状态转移图的练习
将状态转移图画准确,Code部分将迎刃而解
接下来,咱们来练习一下状态转移图的画法把:
1、序列检测’111’
文章图片
2、序列检测’1001’
文章图片
??????忙碌的敲代码也不要忘了浪漫鸭!
今日份运动与家长视频 Date:2022.4.26 ExerciseAndVideo_Time:22:20 Code_Time: 23:58【程序员的必修之课|【数字逻辑与EDA】有限状态机的设计与序列检测器的设计】
文章图片
推荐阅读
- Ubuntu18.04下基于darknet的YOLOv4环境配置及测试
- 笔记|设计模式之一——单例模式
- Java|(JUC 下典型的类)Java 并发包中线程同步器
- 笔记|并发编程中常见的锁策略<包含详细介绍CAS机制和ABA问题>
- 安卓笔记-相关术语
- 安卓笔记-adb指令打包安装
- iPad Pro 10.5+Apple Pencil之专注文献阅读与笔记效率的App综述
- 笔记|电话面试-----海康威视
- 笔记|疫情防控交流社区平台——5.1 Kafka构建TB级异步消息系统(发送系统通知)