三段式状态机的写法总结
此前在写状态机时总是在构思好转移图后直接一气呵成,写成了if else 的形式,很乱也不好维护,在此次用到了三段式状态机的方式,感觉就是简洁明快,而且好调试。
以下是三段式状态机的格式,不会有很大出入:
三段式状态机顾名思义,分为三部分,一阻塞赋值,二非阻塞赋值
reg [ n-1:0]current_state;// n的值根据自己的需要确定
reg [ n-1:0]next_state;
parameter S0=n’d0;///编码方式如格雷编码,独热编码,二进制编码等,选择自己合适的方法
parameter S1=n’d1;
parameter S2=n’d2; ……………..
///第一个always块儿定义当前状态的选择 为非阻塞赋值
always@(posedge clk or negedge rst)///
begin
if(!rst)
current_state<=Sxx;//复位后默认的状态
else
current_state<=next_state;
end
///第二个always块儿定义次态 为阻塞赋值
always@(current_state or A) ///敏感信号是current_state 和控制状态跳转的信号A
begin
//有的版本认为此处一定需要复位信号初始化,其实并不能一概而论
case(current_state)
S0:
if(A)
next_state=S1;
else
next_state=S0;
S1:
if(A)
next_state=S2;
else
next_state=S1;
///
……..
/
default:next_state=Sx;//保证状态机的逻辑完整,Sx视自己状态机而定
endcase
end
///第三个always块儿定义各个状态的输出 为* 非阻塞赋值*
always@(posedge clk)
begin
if!(!rst)
Sx<=m;
else
begin
case(next_state)
S0:out<=b;
S1:out<=b;
………
default:Sx<=m;
endcase
end
end
关于每个状态是否需要复位信号视自己程序而定,不需要全都进行复位操作。
三段式状态机的写法总结相关推荐
- 三段式状态机_Verilog实战篇(5)——FIFO amp; 状态机
今天的暑期培训课依旧是由邸志雄老师主讲:FIFO基本原理及状态机的编写和应用. 下面先说一下FIFO: 一.FIFO 常见参数主要有: 1. FIFO的宽度:即 FIFO 一次读写操作的数 ...
- 三段式状态机_FPGA笔试题——序列检测(FSM状态机)
FSM有限状态机,是FPGA和数字IC相关岗位必须要掌握的知识点,在笔试和面试中都非常常见. (1)了解状态机:什么是摩尔型状态机,什么是米利型状态机,两者的区别是什么?一段式.二段式.三段式状态机的 ...
- 小梅哥三段式状态机按键消抖改写
小梅哥三段式状态机按键消抖改写 小梅哥资料中按键消抖部分是用一段式.二段式状态机写的.我用三段式状态机改写了一下,仿真和板载测试通过. 代码记录如下: module key_filter1(input ...
- 重迭式三段式状态机序列检测器-检测10110110
重迭式三段式状态机序列检测器-检测10110110 要求:序列检测器 clk input clock input rst_n input asynchronous reset, low active ...
- fpga时序逻辑(三段式状态机模板、rom实现、边沿检测)
目录 VL21 根据状态转移表实现时序电路 VL22 根据状态转移图实现时序电路 VL23 ROM的简单实现 VL24 边沿检测 VL21 根据状态转移表实现时序电路 题目分析: 1.使用三段式状态机 ...
- SJA1000 CAN总线verilog写的SJA1000 CAN总线控制器。 程序使用三段式状态机,对于语句均有箱子的中文注释
SJA1000 CAN总线verilog写的SJA1000 CAN总线控制器. 程序使用三段式状态机,对于语句均有箱子的中文注释,同时还有相关的文档说明. 可直接拿来使用,同时适合新手学习规范写作代码 ...
- system verilog 三段式状态机和interface
1.结构体和C语言类似,system verilog定义的package,也是一个sv文件,需要被工程当作文件一样添加.如果是inclue的文件,要在工程中设置搜索路径,否则在引用时要用相对工程启动文 ...
- DSP嵌入式C语言状态机,三段式状态机描述及模版
三段式状态机描述及模版 [复制链接] 本帖最后由 Aguilera 于 2018-11-10 20:23 编辑 时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为 ...
- 三段式状态机-FSM
三段式代码多,但是有时钟同步,延时少,组合逻辑跟时序逻辑分开并行出错少. (1)同步状态转移 (2)当前状态判断接下来的状态 (3)动作输出 如果程序复杂可以不止三个always .always ...
- 一段式、两段式以及三段式状态机(FSM)设计实例
一段式.二段式以及三段式状态机(FSM)设计实例 状态机(FSM)分类 状态转移的三种编码方式 一段式.两段式状态机(FSM)区别 vivado与modelsim联调显示状态机 设计实例 状态转移图 ...
最新文章
- 未来的黑科技计算机作文简写,写一篇英文作文。“未来计算机的发展”
- jquery serialize()无效读取不到数据
- 云南省2021高考成绩查询时间,2021云南高考成绩什么时候几点可以查
- python 打包自己得到的结果
- windows副本不是正版怎么办_盗版系统总是崩溃?别着急,让我来告诉你正版系统怎么下载...
- Linux简单命令集——less
- WordPress模板-ripro主题系列对接易支付通用模块插件
- Java多线程基础篇(02)-多线程的实现
- 华为、大众组建合资公司?相关回应来了
- 【给你几个使用Xamarin的理由】
- 【03】AngularJS 简介
- android 控件颜色随焦点变化实例
- PDF目录的自动生成
- Flash桌球游戏开发
- Python中match语句的用法
- 比较神秘的网址!也许有用!收藏一下!
- mac删除的文件还能找回吗
- 虚幻引擎 4 渲染流程分析
- 关于错误 Unhandled exception in .exe (Kernel32.dll): 0xE06D7363
- matlab 稀疏随机矩阵,Matlab 稀疏矩阵函数