2013-02-04 43 views
-2

我必須爲1 mealy fsm寫一個verilog程序。有很多技術來編寫它。我會告訴你1,我想知道,如果它太(沒有必要提及其他技術,只是說如果工作或不爲什麼!)這就是:帶1個模塊的Verilog Mealy FSM

module MealyFsm(out,in,clk,rst); 
    output out; 
    input in,clk,rst; 

    reg [1:0] q; 

    always @(posedge clk or negedge rst) begin 
    if (~rst) 
     q<=2'b00; 
    else 
     begin 
     q[0]<=~q[0] & q[1] & x | ~q[0] & x | q[1] & x; 
     q[1]<= q[1] & ~q[0] & ~x | ~q[1] & q[0] | q[0] & ~x; 
     end 
    end 

    assign y = ~x & q[0] & ~q[1]; 

endmodule 

PS。林感興趣的只是這種技術,如果其錯誤的。請告訴我,什麼是錯,以解決它

+0

請使用模擬器來調試您的程序。 – Tim

+0

以及即時通訊在fsm的理論視角中使用verilog ..我不需要回答作弊行爲或類似的東西..我可以用其他技術很容易地重寫它。我只是好奇這一個,我無法找到有關Verilog教程,數字設計書或互聯網例子的相關內容。如果你可以asnwer我的問題.. PS即時通訊工作網咖,我不能下載編譯器和模擬器.. – user2040678

回答

0

Wikipedia

在計算理論中,一個米利型機是一個有限狀態 機,其輸出值由當前狀態 和當前輸入確定。

假設輸入in,在代碼中被打錯爲x,那麼模塊是否符合定義?

你有一些狀態q。和一些輸出y。您的輸入in or x直接影響輸出。所以這符合Mealy機器的定義。

注意:邏輯很難遵循,狀態的功能和流程很難看,有很多更好的編寫FSM的方法,其中大部分是在單個模塊中完成的。

+0

好吧,你是正確的關於'在'(它在這個例子中的x,我只是寫了它,沒有注意到我已經命名它在:p)。關於這個問題,我只是好奇,如果這種技術是正確的,因爲當你有每個D-flip-flip下一個狀態的方程式時,它的寫作過於簡單。否則,我必須爲d觸發器定義編寫+1模塊或者定義一些參數變量(用於狀態),並在always塊中使用它們來根據輸入等等技術在各個狀態之間進行切換。 – user2040678

+0

無論如何,因爲我明白那是正確的,但不是最好的方法來做它,因爲它很難理解(找到統計之間的聯繫),並且使得創建狀態轉換圖更加困難。 Ty回答 – user2040678