一级、二级、三级状态机的区别
本文介绍了一级、二级、三级状态机的区别
1. 状态机
再给出状态机的示意图:
1.1. Moore型,输出只与状态寄存器
的输出状态有关1.2.米粒类型。输出不仅与状态寄存器的输出状态有关,还与组合逻辑的输入有关
2.一级、二级、三级的区别
根据状态机的结构,状态机描述方法可分为:一级、二级、三级
1.1.一级配方
整个状态机被写入always模块中。在此模块中,描述了状态转换以及状态输入和输出。
1.2.两级式
使用两个always模块来描述状态机。
1.2.1.其中always模块使用同步时序来描述状态转换;
1.2.2.另一个always模块使用组合逻辑来确定状态转换条件,描述状态转换规则及其输出。请注意,组合逻辑输出必须使用阻塞分配。
1.3.三段式
基于两种always模块描述方法,使用了三个always模块。
1.3.1.一个always模块使用同步时序来描述状态转换;
1.3.2. An总是使用组合逻辑来确定状态转移条件并描述状态转移规则。注意组合逻辑输出必须使用阻塞赋值;
1.3.3.另一个always模块描述状态输出(可以通过组合电路或时序电路输出)。请注意,组合逻辑输出必须使用阻塞分配。
1.4.全面
可见,两级有限状态机与一级有限状态机的区别在于将顺序部分(状态转移)和组合部分(判断状态转移条件并产生输出)分开,写为两个always语句,即两个段落。有限状态机。如果将组合部分的判断状态转移条件和产生的输出分开写,那就是一个三级有限状态机。
3. 自动售货机,一级式
模块自动销售( 输入时钟, 输入rst_n, 输入coin_one, 输入coin_half, 输出调节水, 输出 reg coin_back ); 参数内存零 = 3'b000; 参数HALF = 3'b001; 参数 ONE = 3'b010; 参数 ONE_HALF = 3'b011; 参数二 = 3'b100; //单级状态机 reg[2:0]状态; 总是@(posege clk,negedge rst_n)开始 如果(!rst_n) 开始 状态<=零; 水 <= 0; coin_back <= 0; 结尾 别的 案例(状态) 零 : 开始 水 <= 0;coin_back <= 0; 如果(硬币_一半) 状态 <= 一半; 否则如果(coin_one) 状态 <= 1; 别的 状态 <= 状态; 结尾 一半 : 开始 水 <= 0; coin_back <= 0; 如果(硬币_一半) 状态 <= 1; 否则如果(coin_one) 状态 <= ONE_HALF; 别的 状态 <= 状态; 结尾 一 : 开始 水 <= 0; coin_back <= 0;如果(硬币_一半) 状态 <= ONE_HALF; 否则如果(coin_one) 状态 <= 2; 别的 状态 <= 状态; 结尾 一半 : 开始 如果(硬币_一半) 开始 状态 <= 2; 水 <= 1'b0; coin_back <= 1'b0; 结尾 否则如果(coin_one) 开始 状态<=零; 水 <= 1'b1; coin_back <= 1'b0;结尾 别的 开始 状态 <= 状态; 水 <= 1'b0; coin_back <= 1'b0; 结尾 结尾 二 : 开始 如果(硬币_一半) 开始 状态<=零; 水 <= 1'b1; coin_back <= 1'b0; 结尾 否则如果(coin_one) 开始 状态<=零;水 <= 1'b1; coin_back <= 1'b1; 结尾 别的 开始 状态 <= 状态; 水 <= 1'b0; coin_back <= 1'b0; 结尾 结尾 默认: 开始 状态<=零; 水 <= 1'b0; coin_back <= 1'b0; 结尾 端壳 结尾 终端模块
4. 自动售货机,两段式
1.1.两阶段公式,写为
模块自动销售( 输入时钟,输入rst_n, 输入coin_one, 输入coin_half, 输出调节水, 输出reg coin_back ); 参数零=3'b000; 参数HALF = 3'b001; 参数 ONE = 3'b010; 参数 ONE_HALF = 3'b011; 参数二 = 3'b100; //--------------------两阶段公式1 ok------------------------ - --- //两级状态机 reg [2:0] c_status; reg [2:0] n_status; //状态转移 总是@(posege clk,negedge rst_n)开始 如果(!rst_n) c_status <= 0; 别的 c_status <= n_status; 结尾 //描述状态转换规则和输出 总是@(posege clk,negedge rst_n)开始 如果(!rst_n) 开始 n_status <= 0; 水 <= 1'b0; coin_back <= 1'b0; 结尾 别的 案例(c_status) 零 : 开始水 <= 1'b0; coin_back <= 1'b0; 如果(硬币_一半) n_status <= 一半; 否则如果(coin_one) n_status <= 1; 别的 n_status <= 0; 结尾 一半 : 开始 水 <= 1'b0; coin_back <= 1'b0; 如果(硬币_一半) n_status <= 1; 否则如果(coin_one) n_status <= ONE_HALF; 别的 n_status <= 一半; 结尾 一 : 开始水 <= 1'b0; coin_back <= 1'b0; 如果(硬币_一半) n_status <= ONE_HALF; 否则如果(coin_one) n_status <= 2; 别的 n_status <= 1; 结尾 一半 : 开始 水 <= 1'b0; coin_back <= 1'b0; 如果(硬币_一半) n_status <= 2; 否则如果(coin_one) 开始 n_status <= 0; 水 <= 1'b1;coin_back <= 1'b0; 结尾 别的 n_status <= ONE_HALF; 结尾 二 : 开始 水 <= 1'b0; coin_back <= 1'b0; 如果(硬币_一半) 开始 n_status <= 0; 水 <= 1'b1; coin_back <= 1'b0; 结尾 否则如果(coin_one) 开始 n_status <= 0; 水 <= 1'b1;coin_back <= 1'b1; 结尾 别的 n_status <= 2; 结尾 默认: n_status <= 0; 最终情况 结尾 终端模块
1.2、两步式、Shaho 2
模块自动销售( 输入时钟, 输入rst_n, 输入coin_one, 输入coin_half, 输出调节水, 输出reg coin_back ); 参数零=3'b000; 参数HALF = 3'b001; 参数 ONE = 3'b010; 参数 ONE_HALF = 3'b011; 参数二 = 3'b100; //---------------------两阶段 2 ok--------------------- ----------------- //两层机器 reg[2:0]状态;//状态转移 总是@(posege clk,negedge rst_n)开始 如果(!rst_n) 状态<=零; 别的 开始 案例(状态) 零 : 开始 如果(硬币_一半) 状态 <= 一半; 否则如果(coin_one) 状态 <= 1; 别的 状态<=零; 结尾 一半 : 开始 如果(硬币_一半) 状态 <= 1; 否则如果(coin_one) 状态 <= ONE_HALF; 别的 状态 <= 一半;结尾 一 : 开始 如果(硬币_一半) 状态 <= ONE_HALF; 否则如果(coin_one) 状态 <= 2; 别的 状态 <= 1; 结尾 一半 : 开始 如果(硬币_一半) 状态 <= 2; 否则如果(coin_one) 开始 状态<=零; 结尾 别的状态 <= ONE_HALF; 结尾 二 : 开始 如果(硬币_一半) 开始 状态<=零; 结尾 否则如果(coin_one) 开始 状态<=零; 结尾 别的 状态 <= 2; 结尾 默认: 状态<=零; 端壳 结尾 结尾//输出逻辑 总是@(posege clk,negedge rst_n)开始 如果(!rst_n) 开始 水 <= 1'b1; coin_back <= 1'b0; 结尾 别的 案例(状态) 一半: 开始 如果(硬币_一) 开始 水 <= 1'b1; coin_back <= 1'b0; 结尾 别的 开始 水 <= 1'b0; coin_back <= 1'b0; 结尾 结尾 二: 开始 如果(硬币_一半) 开始水 <= 1'b1; coin_back <= 1'b0; 结尾 否则如果(coin_one) 开始 水 <= 1'b1; coin_back <= 1'b1; 结尾 别的 开始 水 <= 1'b0; coin_back <= 1'b0; 结尾 结尾 默认: 开始 水 <= 1'b0; coin_back <= 1'b0; 结尾端壳 结尾 终端模块
5. 自动售货机,三段式
模块自动销售( 输入时钟, 输入rst_n, 输入coin_one, 输入coin_half, 输出调节水, 输出reg coin_back ); 参数零=3'b000; 参数HALF = 3'b001; 参数 ONE = 3'b010; 参数 ONE_HALF = 3'b011; 参数二 = 3'b100; //三级状态机 reg [2:0] c_status; reg [2:0] n_status; //状态转移 总是@(posege clk,negedge rst_n)开始 如果(!rst_n) c_status <= 0; 别的 c_status <= n_status; 结尾 //状态转换规则和状态输出,组合逻辑输出只与输入相关 //如果n_status = n_status,电路就会出错; 总是@(*)开始 案例(c_status) 零 : 开始 如果(硬币_一半) n_status = 一半;否则如果(coin_one) n_状态=一; 别的 n_状态=零; 结尾 一半 : 开始 如果(硬币_一半) n_状态=一; 否则如果(coin_one) n_status = ONE_HALF; 别的 n_status = 一半; 结尾 一 : 开始 如果(硬币_一半) n_status = ONE_HALF; 否则如果(coin_one) n_状态=二; 别的 n_状态=一; 结尾 一半 : 开始 如果(硬币_一半)n_状态=二; 否则如果(coin_one) n_状态=零; 别的 n_status = ONE_HALF; 结尾 二 : 开始 如果(硬币_一半) n_状态=零; 否则如果(coin_one) n_状态=零; 别的 n_状态=二; 结尾 默认: n_状态=零; 端壳 结尾 总是@(posege clk,negedge rst_n)开始 如果(!rst_n) 开始 水=1'b1; coin_back = 1'b0; 结尾 别的 案例(c_status)一半: 开始 如果(硬币_一) 开始 水=1'b1; coin_back = 1'b0; 结尾 别的 开始 水=1'b0; coin_back = 1'b0; 结尾 结尾 二: 开始 如果(硬币_一半) 开始 水=1'b1; coin_back = 1'b0; 结尾 否则如果(coin_one)开始 水=1'b1; coin_back = 1'b1; 结尾 别的 开始 水=1'b0; coin_back = 1'b0; 结尾 结尾 默认: 开始 水=1'b0; coin_back = 1'b0; 结尾 端壳 结尾 终端模块
六、仿真脚本
`timescale 1ns/1ps 模块auto_sell_tb; 寄存器时钟; reg rst_n; reg coin_one;reg coin_half; 电线水; 电线 coin_back; 初始开始 时钟=0; rst_n = 0; 硬币_一 = 0; 硬币_半 = 0; #20; rst_n = 1; //延迟200us #10000 //投2.5元 coin_half = 1; #20; 硬币_半 = 0; #20; 硬币_一 = 1; #20; 硬币_一 = 0; #20; coin_half = 1; #20; 硬币_半 = 0; #20; coin_half = 1; #20; 硬币_半 = 0; #20; //延迟200us #10000 //投3元 coin_half = 1; #20; 硬币_半 = 0; #20; 硬币_一 = 1; #20; 硬币_一 = 0; #20; coin_half = 1; #20; 硬币_半 = 0; #20;硬币_一 = 1; #20; 硬币_一 = 0; #20; //延时200us #10000 $停止; 结尾 自动销售 自动销售安装( .clk(时钟), .rst_n (rst_n), .coin_one (coin_one), .coin_half (coin_half), .水(水), .coin_back (coin_back) ); 总是 #10 clk = ~clk; 终端模块
7. 模拟结果
相关文章
- 11-28 强的新纪元:深度融合与改变我们的世界
- 11-28 智能家居行业趋势如何,趋势:引领行业标准化
- 11-28 笔记本市场前景展望:竞争格局、发展趋势与营销策略
- 11-27 5G手机性价比排行榜最新出炉!这些机型值得购买!
- 11-27 流媒体服务的优缺点,让你畅享视听盛宴
- 11-27 数码摄影摄像入门全攻略:从设备到后期,一篇文章教你
- 11-26 5G手机评测排名前十:让你拥有最快的网速!
- 11-26 最新5g手机评测排行榜前十名,手机评测排行榜前十名
- 11-26 电子书阅读器大比拼:谁是最亮的星?
- 11-25 无人机摄影:飞越天际,捕捉绝美瞬间
- 11-25 智能家居趋势如何描述,生活的潮流与变革
- 11-25 主流电子书阅读器评测,让你选出最适合自己的阅读利器
- 11-24 虚拟现实和增强现实:技术差异与未来融合
- 11-24 智能家居以后的趋势,未来已来,智能家居引领潮流
- 11-24 虚拟现实技术国家重点实验室,重点实验室:开启未来科
- 11-23 5G手机大对比:优缺点一览,让你选购无忧
- 11-23 掌握数码相机与摄影技巧,拍出绝美照片
- 11-23 笔记本电脑市场分析表格
- 11-22 数码相机技术美:捕捉精彩画面的奥秘
- 11-22 掌握数码相机与摄影技巧,拍出惊艳作品!
- 最近发表