update caption of josh-verilog-6 & 7
This commit is contained in:
@@ -44,13 +44,13 @@ categories:
|
||||
|
||||
<a id="fig.6-1"></a>
|
||||
|
||||
{width=600}
|
||||
{width=600}
|
||||
|
||||
如果你认为这张图描述的学生生活过于单调而怀疑状态机描述方法的能力,就再看另一位生活丰富多彩的同学的在校生活,他/她的在校生活方式可以用[图 6-2](#fig.6-2) 表示。
|
||||
|
||||
<a id="fig.6-2"></a>
|
||||
|
||||
{width=600}
|
||||
{width=600}
|
||||
|
||||
{% note info %}
|
||||
同样如果将图中的“地点”认为是“状态”,将“功能”认为是状态的“输出”,将“条件”认为是状态转移的“输入条件”,[图 6-2](#fig.6-2) 也是一张标准的状态转移图,通过状态机的方式再次清晰地描述了另一个学生的在校生活方式。
|
||||
@@ -276,7 +276,7 @@ ERROR 状态的输出为: {o1, o2, err} = 3'b111。
|
||||
|
||||
<a id="fig.6-3"></a>
|
||||
|
||||
{width=600}
|
||||
{width=600}
|
||||
|
||||
### 2.3.1. 一段式状态机描述方法(应该避免的写法)
|
||||
|
||||
@@ -351,7 +351,7 @@ endmodule
|
||||
|
||||
<a id="fig.6-4"></a>
|
||||
|
||||
{width=900}
|
||||
{width=900}
|
||||
|
||||
一段式描述方法将状态转移判断的组合逻辑和状态寄存器转移的时序逻辑混写在同一个 always 模块中,**不符合将时序和组合逻辑分开描述的 Coding Style(代码风格)**,而且在描述当前状态时要考虑下个状态的输出,整个代码不清晰,不利于维护修改,并且不利于附加约束,不利于综合器和布局布线器对设计的优化。
|
||||
|
||||
@@ -457,7 +457,7 @@ endmodule
|
||||
|
||||
<a id="fig.6-5"></a>
|
||||
|
||||
{width=900px}
|
||||
{width=900px}
|
||||
|
||||
本例中,同步时序描述状态转移的 `always` 模块代码如下:
|
||||
|
||||
@@ -635,7 +635,7 @@ endmodule
|
||||
|
||||
<a id="fig.6-6"></a>
|
||||
|
||||
{width=1000px}
|
||||
{width=1000px}
|
||||
|
||||
对比上节两段式 FSM 的描述,可以清晰发现三段式与两段式 FSM 描述的最大区别在于**两段式采用了组合逻辑输出**,而**三段式巧妙地根据下一状态的判断,用同步时序逻辑寄存 FSM 的输出**。本例中就是下面一段代码,
|
||||
|
||||
@@ -694,7 +694,7 @@ case(NS)
|
||||
|
||||
<a id="fig.6-7"></a>
|
||||
|
||||
{width=1000px}
|
||||
{width=1000px}
|
||||
|
||||
#### 2.3.4.4. 两段式建模和三段式建模的关系
|
||||
|
||||
|
||||
Reference in New Issue
Block a user