关于状态机编写风格的一些疑问
时间:10-02
整理:3721RD
点击:
不论是Moore Machine还是Mealy Machine,都是有两个寄存器的,一个是当前状态(state),另一个是下一状态(nextstate)。
那么写Verilog代码的时候,可不可以直接用一个state呢?比如如下代码,这么写仿真能跑通,但是有什么问题吗?(这么写挺方便的啊)
那么写Verilog代码的时候,可不可以直接用一个state呢?比如如下代码,这么写仿真能跑通,但是有什么问题吗?(这么写挺方便的啊)
- always @(posedge Clk)
- begin
- if(Rst)
- begin
- state <= 0;
- end
- else
- case(state)
- 3'b000: // To initialize Vmem, Calcium, EP, EN, IP, IN and counters
- begin
- do something
- state <= 3'b001;
- end
- 3'b001: // Inherent leakages of Vmem, EP, EN, IP, IN, C of this particular neuron
- begin
- state <= 3'b010;
- do something
- end
- 3'b010: // iterate 135 times to accumulate EP, EN and IP and IN
- begin
- if(cnt==135)
- begin
- cnt <= 1;
- state <= 3'b011;
- end
- else
- cnt <= cnt + 1;
- cnt_lsm <= 1;
- do something
- end
- 3'b011: // Finalize the membrane potential Vmem
- begin
- state <= 3'b100;
- do something
- end
- ......
- endcase
- end
Mark下,关注大神回答
这么写也是可以的,功能一样的。你可以综合成电路看看,综合出来的应该是一样的。我们公司有的代码就是这么写的。
都说三段式状态机好,我个人还是喜欢二段式状态机的风格,不区分state 和 next_state
这里仅仅是编码风格的问题,没有什么问题。,一段式的你也放心使用吧!
状态机的next state在状态转移图中的概念,不不意味着在一个状态机中存在两个状太寄存
学习~
学习中
我也觉得用一个状态,两段式好一些;状态转移和输出分开,一目了然
学习下~
其实正式提出来的只有两段式和一段式
这是哪个设备的状态机
一段式状态机个人觉得有点乱,实习的时候上手第一个项目就是一段式写的,由于状态太多,现在看起来- -乱起八糟;现在一般用两段式和三段式,相对来说比较好管理。
表示支持2段。一段专门状态跳变。一段输入输出。
其实你说的跟三段式是一个意思,三段式只是形式多了一个:next_state<=current_state;
其实我觉得三段更加利于维护,然后好像之前看过说两段式会有毛刺。
其实123段式状态机综合出来没有本质区别,不同之处在于,书写习惯以及对于调试维护的方便程度而已。遇到一些复杂的状态机以及复杂的输出情况,三段式的优势就很明显,所以,别嫌麻烦,能三段式最好三段式吧
个人习惯问题,其实都一样
