|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
讲了状态机的状态编码是用格雷码还是独热码的问题,以及两者之间的优劣。状态机的描述方式采用的是一段式描述方式,也就是将整个状态机全部写到一个always模块中去。
7 D& O( {0 ~+ S$ G& J; J# X4 r4 |- S. O c' b$ k( G
0 t6 i& m+ ]/ _
这篇博文仍用上篇博文的案例,说说状态机的描述方法。一段式的描述方法、二段式以及三段式,并比较三者之间的功能仿真情况,最后真心吐露这个案例的状态转移图的疑问?不能把有问题的地方回避,我想我不要做这样的人。
+ q. x) N2 G# D# X- T2 q
0 e) U) A, a3 s
0 d) P) I0 N' d. }7 h首先看看状态机的描述方法,和编码方式,这两段描述借鉴:基于Verilog HDL的有限状态机,人家说的不错,我也懒着码字了。1 P7 ~& @7 n( Y
% o: f- O) I A4 K! V
( `2 g1 F* a, @: t" p2 f2 Q状态机的描述方法& V* h1 h- x, p2 I9 x1 Z( T
* Z3 q, q& V: ~. V% ~2 k) U! z
G, [0 I6 v! j/ c
状态机的描述方法多种多样,将整个状态机写到1个always 模块里,在该模块中既描述状态转移,又描述状态的输入和输出,这种写法一般被称为一段式FSM 描述方法;
1 E1 M* Y* P0 Y; C0 b5 M
+ U- I4 e1 `: D* V
, {; u4 ~8 H6 P& Y6 J* h2 X" E还有一种写法是使用两个always模块,其中一个always 模块采用同步时序的方式描述状态转移,而另一个模块采用组合逻辑的方式判断状态转移条件,描述状态转移规律,这种写法被称为两段式FSM 描述方法;
! w8 D# H+ \% |0 i! R( ]. r/ m( e5 {$ {0 d e! p# H$ N
4 K$ Q# g2 @8 l; c* u0 p还有一种写法是在两段式描述方法的基础上发展而来的,这种写法使用3 个always模块,一个always 模块采用同步时序的方式描述状态转移,一个采用组合逻辑的方式判断状态转移条件,描述状态转移规律,第三个always 模块使用同步时序电路描述每个状态的输出,这种写法称为三段式写法。- m0 Q/ q4 w7 v" Q
9 S& V2 d. P$ A' T2 E# N9 q9 ~
: w7 U8 B% V6 N; x4 N" O
q$ G6 u. W" u0 _/ x/ d
9 ?. n- t, {6 @( m: B |
|