有限狀態機HDL模板

2021-09-25 12:07:57 字數 2280 閱讀 8604

邏輯設計, 顧名思義, 只要理清了 邏輯 和 時序, 剩下的設計只是做填空題而已。

下面給出了有限狀態機的標準設計,分別為 vhdl 和 verilog **

;--! 1) 埠定義

entity

isport

( din : in;

rst :

instd_logic

; clk :

instd_logic

;

dout :

out);

end;

--! 2) 狀態定義

architecture

ofis

type state is

(idle, st1, st2, ...);

signal

c_state, n_state : state;

begin

--! 3

) 時序邏輯

pfsmsyn:

process

(rst, clk)

begin

if (rst = '

1') then

c_state

<=idle;

elsif (clk

'event and clk='1

') then

c_state <=n_state;

endif;

endprocess

;--! 4

) 組合邏輯

pfsmlogic:

process

(din, c_state)

begin

case c_state is

when idle =>

if (din = ...) then

dout

<= ; --

輸出 c_state

<= state1; -- 狀態

else

...

endif

;

when st1 =>... ...

... ...

... ...

when

others =>... ...

endcase

;end

process

;end

;

//

1) 埠宣告

module

fsm(clk, rst, ctrl, dout);

input

clk, rst, ctrl;

output [n-1:0] dout; //

n 取決於輸出值的位數

reg [n-1:0

] dout;

//2) 狀態定義

parameter idle = 0, st1 = 1, st2 = 2, st3 = 3

, ....;

reg [m-1:0] c_state, n_state; //

m 取決於『「狀態」數量的位數

//3) 時序邏輯

always @ (posedge clk or

posedge

rst)

begin

: seq

if(rst)

c_state =idle;

else

c_state =n_state;

end//

4) 組合邏輯

module @ (ctrl or

c_state)

begin

: comb

case

(c_state)

idle:

begin

dout = ;

n_state =st1;

endst1:

begin

dout = ;

n_state =st2;

endst2:

. . . . . .

. . . . . .

. . . . . .

endcase

endendmodule

有限狀態機

有限狀態機 finite state machine,fsm 又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。狀態儲存關於過去的資訊,就是說 它反映從系統開始到現在時刻的輸入變化。轉移指示狀態變更,並且用必須滿足來確使轉移發生的條件來描述它。動作是在給...

有限狀態機

以前,只碰到過 陣列中所有數字只出現2次,只有乙個出現1次,找這個數的問題 每次迴圈異或陣列中元素,最後的結果就是single one。這次換作出現3次就懵逼了,主要原因,沒有使用過有限狀態機,應該說是連概念都沒有,所以這次一定要好好記錄一下 關於這道題的解釋discussion中woshidais...

有限狀態機

需要掌握的名詞 數字系統有兩大類有限狀態機 finite state machine,fsm moore狀態機和mealy狀態機。狀態機名 次態輸出 moore摩爾 f 現狀,輸入 g 現狀 mealy公尺粒 f 現狀,輸入 g 現狀,輸入 mealy型狀態機 下一狀態不但與當前狀態有關,還與當前輸...