Moor Mealy FMS及三段式狀態機寫法

2021-10-22 17:35:17 字數 2951 閱讀 7380

示例有限狀態機(finite state machine,fsm)包含幾個要素: 輸入、狀態、狀態轉移條件、輸出。這裡討論的兩種狀態機區別在於輸出的產生:

二段式:

有兩個always block:狀態切換用時序邏輯描述、次態判斷和輸出用組合邏輯描述。

這種寫法條理清晰,但輸出由組合邏輯描述因此可能存在競爭和冒險,產生毛刺。若要解決毛刺,一般要對狀態機的輸出用暫存器打一拍,但很多情況不允許插入暫存器節拍,此時應使用三段式描述。

三段式:

有三個always block:狀態切換和輸出用時序邏輯描述、次態判斷用組合邏輯描述。

輸出邏輯也用時序邏輯塊描述,可以解決毛刺問題。由於時序邏輯輸出實質也是對輸出打一拍,為了解決比組合邏輯慢一拍的問題,三段式寫法應用次態作為輸出判斷條件

求法:負數的補碼等於他的原碼自低位向高位,的第乙個『1』及其右邊的『0』保持不變,左邊的各位按位取反,符號位不變。

次態判斷和狀態切換

parameter s0=

0,s1=

1,s2=

2,s3=3;

//位反轉前輸出0,1狀態,反轉後輸出0,1態

reg[1:

0] state,next;

always@(posedge clk or posedge areset)begin//時序邏輯、非同步復位

if(areset)

state<=s0;

else

state<=next;

endalways@(

*)begin//組合邏輯

case

(state)

s0:next=x?s1:s0;

s1:next=x?s2:s3;

s2:next=x?s2:s3;

s3:next=x?s2:s3;

endcase

end

輸出邏輯(二段式)

//這是二段式moor狀態機寫法,輸出只與狀態有關,用現態判斷

//輸出是組合邏輯輸出,可能毛刺

//組合邏輯用阻塞賦值,若未列出所有可能要有default

always@(

*)begin

case

(state)

s0:z=0;

s1:z=1;

s2:z=0;

s3:z=1;

default

:z=0

; endcase

end

輸出邏輯(三段式)

//三段式moor寫法(時序塊產生輸出)

//用next判斷可以解決時序邏輯比組合邏輯慢一拍的問題

//時序邏輯用非阻塞賦值

always@(posedge clk or posedge areset)begin

if(areset)

z<=0;

else

case

(next)

s0:z<=0;

s1:z<=1;

s2:z<=0;

s3:z<=1;

default:;

endcase

end

次態判斷和狀態切換

parameter a=

2'b01,b=2'b10,c=

2'b11;

reg[1:

0] state,next;

always@(

*)begin

case

(state)

a: next=

(x&~areset)

?b:a;

b: next=c;

c: next=c;

default

:next=next;

endcase

endalways@(posedge clk or posedge areset)begin

if(areset)

state<=a;

else

state<=next;

end

//這是二段式mealy狀態機寫法,用現態判斷

//題目本身就是輸出相對輸入慢一拍的(輸出取決於上一拍的輸入)

//對於組合邏輯輸出(輸出取決於現在的輸入),需要打一拍

//對於moor機與輸入無關就沒有這個問題

always@(posedge clk or posedge areset)

if(areset)

x_t<=0;

else

x_t<=x;

always@(

*)begin

if(areset)

z=x_t;

else

case

(state)

a: z=x_t;

b: z=x_t;

c: z=

~x_t;

default

:z=x_t;

endcase

end

輸出邏輯(三段式)

//三段式moor寫法(時序塊產生輸出)

//時序邏輯用非阻塞賦值

//題目本身就是輸出相對輸入慢一拍的(輸出取決於上一拍的輸入)正好對應一次打拍

always@(posedge clk or posedge areset)begin

if(areset)

z<=0;

else

case

(next)

a: z<=x;

b: z<=x;

c: z<=

~x;default

:z<=x;

endcase

end

三段論邏輯

一。承前啟後 前面說過,邏輯學是研究 推論 的學科。推論的有效性取決於它的形式而不取決於它的內容。推論是由命題組成的,而命題又是由詞項組成的。前面一段討論的是命題邏輯,命題邏輯只研究簡單命題和復合命題之間的關係,這種復合邏輯的真值僅僅取決於其支命題的真值,不涉及到命題內部的詞項之間的邏輯關係。命題邏...

二段提交協議 三段提交協議

1 二段提交協議 2pc提交事務階段 投票階段 協調者發起事務請求到所有的參與者,參與者接收到事務請求後判斷自身情況,如果不能執行事務,則反饋不能提交事務,返回no,如果可以就執行事務,並將undo和redo資訊記錄事務日誌中,反饋yes 執行事務階段 協調者收到所有參與者反饋yes就發布commi...

調音台 三段EQ調音

調音台最主要的作用之一就是對音色進行修飾,而現在的調音台 高檔除外 音調部分幾乎無一例外都是三段式均衡器 高頻 低頻再加乙個中頻參量均衡器,即高音頻率lokhz或是2khz,低音80hz或是100hz,有些則標個英文的hi和lo讓你去猜,但你猜以上引數也會 不離十。中頻則是引數可調式的,對於中頻參量...