a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 牛人業話 > 零基礎學FPGA(七)淺談狀態機

零基礎學FPGA(七)淺談狀態機

—— 零基礎學FPGA(八)淺談狀態機
作者: 時間:2015-01-10 來源:網絡 收藏

  今天我們來寫

本文引用地址:http://www.j9360.com/article/267960.htm

  關于呢,想必大家應該都接觸過,通俗的講就是數電里我們學的狀態轉換圖。分為兩中類型,一種叫型,一種叫型。前者就是說時序邏輯的輸出不僅取決于當前的狀態,還取決于輸入,而后者就是時序邏輯的輸出僅僅取決于當前的狀態。下面兩個圖分別表示兩種不同的狀態機。

  

360桌面截圖20140601211319.jpg

 

  

360桌面截圖20140601211344.jpg

 

  下面我們就通過代碼來寫一下狀態機,以下面的狀態轉換圖為例

  

360桌面截圖20140601205828.jpg

 

  首先,是一種典型的狀態機寫法,這種寫法我們稱為一段時狀態機,用于一些簡單的設計是可以的,但如果是復雜的狀態機,不建議大家用這種寫法。

  //***********************************************************

  //可綜合的狀態機設計的典型方法

  //實現典型的狀態機設計

  //**********************************************

  module fsm (clk,rst_n,A,k1,k2,State);

  input clk;

  input rst_n;

  input A;

  output k1,k2;

  output [1:0] State;

  reg k1;

  reg k2;

  reg [1:0] State; //當前狀態寄存器

  parameter Idle = 2'b00,

  Start = 2'b01,

  Stop = 2'b10,

  Clear = 2'b11; //編碼 ,注意,只有在最后一句用分號,其他地方用逗號

  always @(posedge clk or negedge rst_n)

  if(!rst_n)

  begin

  State <= Idle;

  k1 <=1'b0;

  k2 <=1'b0;

  end

  else case (State) //狀態判斷與組合邏輯賦值

  Idle :if(A) begin

  State <= Start;

  k1 <= 0;

  end

  else begin

  State <= Idle;

  k1 <= 0;

  k2 <= 0;

  end

  Start :if(!A) State <= Stop;

  else State <= Start;

  Stop :if(A) begin

  State <=Clear;

  k2 <= 1;

  end

  else State <= Stop;

  Clear :if(!A) begin

  State <= Clear;

  k2 <= 0;

  k1 <= 1;

  end

  else State <= Clear;

  default : State <= 2'bxx; //告訴綜合器 case語句已經指定了所有狀態,這樣綜合器就會刪除不需要的譯碼電路,使生成的電路簡單

  endcase

  endmodule

fpga相關文章:fpga是什么



上一頁 1 2 下一頁

關鍵詞: FPGA 狀態機 Mealy Moore

評論


相關推薦

技術專區

關閉