verilog实现多种有限状态机fsm.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

170****6769 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档