三段式fsm

1.状态转移的always中CS,同步ouput的always中NS。

2.3段fsm vs 2段fsm:output逻辑是组合逻辑和同步时序逻辑(消除里不稳的和毛刺)。

3.3段fsm vs 1段fsm: output都是同步时序逻辑,直接根据NS描述output和另外还要考虑状态转移条件描述output。

4.段式划分不是数always个数,而是每种段式对应有固定的描述内容和格式化的结构。强调的是建模思路。

5.3段fsm,解决了2段fsm中不改变时序要求的前提下用寄存器做状态输出的问题。

 1 //3-paragraph method to describe FSM
 2 //Describe sequential state transition in the 1st sequential always block
 3 //State transition conditions in the 2nd combinational always block
 4 //Describe the FSM out in the 3rd sequential always block
 5 //Westor Wang, Dec. 2006
 6 //Verilog Training -- How to write FSM better
 7
 8 module state3 (
 9                 input nrst,
10                 input clk,
11                 input i1,
12                 input i2,
13                 output reg o1,
14                 output reg o2,
15                 output reg err
16                );
17
18 reg    [2:0]   NS,CS;
19
20 parameter [2:0]      //one hot with zero idle
21       IDLE   = 3‘b000,
22       S1     = 3‘b001,
23       S2     = 3‘b010,
24       ERROR  = 3‘b100;
25
26 //1st always block, sequential state transition
27 always @ (posedge clk or negedge nrst)
28       if (!nrst)
29          CS <= IDLE;
30       else
31          CS <=NS;
32
33 //2nd always block, combinational condition judgment
34 always @ (nrst or CS or i1 or i2)
35           begin
36                NS = 3‘bx;
37                case (CS)
38                     IDLE:     begin
39                                    if (~i1)           NS = IDLE;
40                                    if (i1 && i2)      NS = S1;
41                                    if (i1 && ~i2)     NS = ERROR;
42                               end
43                     S1:       begin
44                                    if (~i2)           NS = S1;
45                                    if (i2 && i1)      NS = S2;
46                                    if (i2 && (~i1))   NS = ERROR;
47                               end
48                     S2:       begin
49                                    if (i2)            NS = S2;
50                        if (~i2 && i1)     NS = IDLE;
51                                    if (~i2 && (~i1))  NS = ERROR;
52                               end
53                     ERROR:    begin
54                                    if (i1)            NS = ERROR;
55                                    if (~i1)           NS = IDLE;
56                               end
57                endcase
58          end
59
60
61 //3rd always block, the sequential FSM output
62 always @ (posedge clk or negedge nrst)
63  if (!nrst)
64       {o1,o2,err} <= 3‘b000;
65  else
66     begin
67        {o1,o2,err} <=  3‘b000;
68        case (NS)
69            IDLE:  {o1,o2,err}<=3‘b000;
70
71            S1:    {o1,o2,err}<=3‘b100;
72            S2:    {o1,o2,err}<=3‘b010;
73            ERROR: {o1,o2,err}<=3‘b111;
74        endcase
75     end
76
77 endmodule
时间: 2024-10-15 09:08:38

三段式fsm的相关文章

Verilog三段式状态机描述

时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为而必需考虑的所有历史信息. 状态机采用VerilogHDL语言编码,建议分为三个always段完成. 三段式建模描述FSM的状态机输出时,只需指定case敏感表为次态寄存器, 然后直接在每个次态的case分支中描述该状态的输出即可,不用考虑状态转移条件. 三段式描述方法虽然代码结构复杂了一些,但是换来的优势是使FSM做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说

三段式状态机设计

1.三段式状态机与两段式状态机的区别 两段式直接采用组合逻辑输出,而三段式则通过在组合逻辑后再增加一级寄存器来实现时序逻辑输出.这样做的好处是可以有效地滤去租个逻辑输出的毛刺,同时可以有效地进行时序计算与约束,另外对于总线形式的输出信号来说,容易使总线数据对其,从而减小总线数据间的偏移,减小接收端数据采样出错的频率. 2.三段式状态机的基本格式 第一个always语句实现同步状态跳转: 第二个always语句实现组合逻辑: 第三个always语句实现同步输出. 3.实例程序讲解 1 //本例主要

二段式提交和三段式提交

CAP定理 2000年7月加州大学伯克利分校 Eric Brewer教授提出CAP猜想,两年后被证明. CAP理论告诉我们,一个分布式系统不可能同时满足一致性(C,Consistency),可用性(A,Availability)和分区容错性(P,Partition tolerance)三个基本要求,最多只能同时满足其中两个. 一致性:分布式系统中,能够做到针对一个数据的更新成功后,其他所有的用户都可以读取到[最新的值],那么这样子的系统就是强一致性的. 可用性:[有限时间内][返回结果] 分区容

FPGA三段式状态机的思维陷阱

用三段式描述状态机的好处,国内外各位大牛都已经说的很多了,大致可归为以下三点: 1.将组合逻辑和时序逻辑分开,利于综合器分析优化和程序维护; 2.更符合设计的思维习惯; 3.代码少,比一段式状态机更简洁. 对于第一点,我非常认可,后两点在Clifford E. Cummings著的(Synthesizable Finite State Machine Design Techniques Using theNew SystemVerilog 3.0 Enhancements和The Fundame

新型三段式止水螺杆-施工特点

新型三段式止水螺杆在使用中的优势愈加明显中,在不断的施工总结中发现,首先从成本的核算来说,完全降低了施工成本,节约不少人工:从施工的角度来看操作起来比较简单,安装拆卸较很方便,提高了工作效率:光是这两点就足以证明新型三段式止水螺杆操作是很简单高效的. 新型三段式止水螺杆的相关施工特点 此款节能螺杆通过锥体螺母将内外杆连接起来,形成一段式结构,非常稳固好用,模板施工时不会向内拱,可不需要使用水泥支撑,目前有工地还在使用水泥支撑,另外成型后的剪力墙体均匀且平整,在施工前的好处.施工后等到剪力墙风干后

同步状态机——三段式状态机

三段式状态机 下图分别为时钟同步的Moore状态机(左)和时钟同步的Mearly状态机(右),二者都由产生下一状态的组合逻辑.当前状态寄存器和产生输出的组合逻辑三个部分组成. 三段式状态机正如其名字一样,每个部分采用一个always过程块进行描述,可以清晰地显示出状态机的结构. 在调试多输出状态机时,还可以根据输出的数量把产生输出的组合逻辑按输出写成彼此独立的always组合块,以方便调试,在设计复杂的多输出状态机时推荐采用这种风格. 别人的总结: 使用三段式状态机需要声明内部信号,一般需要定义

移动端 三段式布局 (flex方式)

分享一种平时用的三段式布局(flex) 主要思路是  上中下    header&footer 给高度  main 占其余部分 html 部分 <div class='wrap'> <div class='header'></div> <div class='main'></div> <div class='footer'></div> </div> css 部分 .wrap{ display: fle

paper:synthesizable finite state machine design techniques using the new systemverilog 3.0 enhancements 之 standard verilog FSM conding styles(三段式)

Three always block style with registered outputs(Good style)

三段式有限状态机Verilog代码

状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作.完成特定操作的控制中心.有限状态机简写为FSM(Finite State Machine),主要分为2大类: 第一类,若输出只和状态有关而与输入无关,则称为Moore状态机. 第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态. module FSM( input clk, input clr, input x, output reg z, output reg [1:0] c