- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Abstract
FSM 在數位電路中非常重要,藉由 FSM ,可以讓數位電路也能循序地執行起演算法。本文將詳 細討論各種 FSM coding style 的優缺點,並歸納出推薦的 coding style 。
Introduction
使用環境: Debussy 5.4 v9 + ModelSim SE 6.3e + Quartus II 8.1
本文將討論以下主題:
Moore FSM 的架構
Moore FSM 各種 coding style 比較
Mealy FSM 架構
Mealy FSM 各種 coding style 比較
實務上推薦的 coding style
Conclusion
若要讓數位電路也能循序地執行演算法,最簡單的方式可以使用 D-FF 產生 counter ,根據 counter 的值去決定要執行不同的程式碼,如此也能達到使數位電路循序執行演算法的目的, 不過這種方式僅適用於很簡單的演算法,在一般規模的演算法若使用 counter 方式,程式碼將 不容易維護,所以實務上會使用 FSM 方式來實現演算法。
其實 FSM 方式也是利用 counter 來實現, 所謂的 counter ,並不是只有 counter = counter +
1 才算是 counter , FSM 的 state register 就是廣義的 counter ,只是這種 counter 不是一直 加1 而已,而是有自己的遞增規則。 FSM 只是提供了一種較為高階與較容易維護的方式來實現 演算法。
Moore FSM 架構
inputc lock
input
c lock
一般在寫FSM時,會以 Moore FSM 為主,所以先討論 Moore。由上圖可知, Moore FSM 內
部由 3 個 block 所構成:Next state logic , State register 與 Output logic 。
Next state logic :純粹的組合邏輯,以整個 module 的in put與目前的state為輸入,目
的在產生下一個 state 值存入state register 。
State register :由 D-FF 所構成,將 Next state logic 所產生的 state 存入 register 。
Output logic :純粹的組合邏輯,根據目前的 state 產生整個module 的output。
所以可以發現,整個 Moore FSM 事實上是由2塊的組合邏輯與 1塊D-FF所構成,我們常聽
到所謂的一段式、二段式與三段式 FSM,事實上就是由這 3個block排列組合而成。
為了要實際比較各種 codi ng style ,在此舉一個簡單的例子,若 in put w_i 為連續2個clk為
high,貝U output 會在下1個clk產生周期為 1 T的high pulse , timing diagram 如上圖所
示。
因此設計了 Moore FSM , state diagram 如上圖所示,接下來要做的就是用各種 coding style
來實現這個Moore FSM 。
1.使用
1.使用3個always ( 三段式)
input
clock
simple_fsm_moore_3_always_best.v / Verilog
1 /*
(C) OOMusou 2011
3
File name : simple_fsm_moore_3_always_best.v
Synthesizer : Quartus II 8.1
Description : 3 always block for moore fsm (BEST)
7
Release
:Ju n.05,2011 1.0
8
*/
9
10
module
simple_fsm (
11
elk.
12
rst_n.
13
w_i,
14
z_o
15
);
16
17
in put
clk;
18
in put
rst_n;
19
in put
w_i;
20
output
z_o;
21
22
parameter IDLE =
2b00;
23
parameter SO =
2b01;
24
parameter S1 =
2b10;
25
26
reg [ 1
:0] curr_state;
27
reg [ 1
:0] next_state;
28
reg z_o;
29
30
// state reg
31
always
@(posedge clk or negedge rst_n)
32
if (~rst_n) curr_state = IDLE;
33
else
curr_state = n e
文档评论(0)