2014-03-29 35 views
-1

我試圖在VHDL中實現電梯,但是在我做出狀態圖後卡住了。 這是一個13層(包括地下)的電梯。它有一個重量senzor,門senzor。它必須像現代電梯一樣行事。 我不知道該如何開始。 我認爲我的狀態圖不好,因爲我無法編碼狀態。 我試圖創建下一個狀態卡諾圖,但我沒有成功。 你能幫我嗎?電梯設計難點與狀態圖

+0

明確了作業類型的問題。請分享你的得分。 你的問題不在於VHDL。你首先需要弄清楚確切的規格。你可以使用_any_形式表示:泡泡圖表,卡諾或其他。 我會強烈建議將地板編碼爲一個單獨的變量,而不是將狀態數乘以十三。 當你有正式的規範後,你可以想到VHDL代碼。 – Philippe

+0

是的,我同意。我的問題與vhdl沒有關係,因爲我還沒有到達那裏。直到現在我製作了狀態圖,但是當我嘗試編碼我的狀態時,我不能。 – user3426060

+0

對於你來說,編碼狀態不是必要的,至少在設計之初不是這樣。如果您使用枚舉類型來列出從您的圖派生的狀態,VHDL將爲您創建編碼。在你把基本的東西整理出來之後,你可以考慮一下狀態編碼,如果這對你來說真的很重要(也許這是一個作業要求)。但請注意,在現實世界中,您可以設計和實現控制器,而無需考慮位級狀態編碼。 – rick

回答

0

VHDL中的典型狀態機可能如下所示。使用卡諾圖不是必需的,因爲這些工具會爲你做到這一點。

例如,如果這是你的狀態機:

state machine

然後,你可能會開始寫的VHDL此爲:

architecture rtl of state_machine is 
    type state_t is (state_0, state_1, state_2); 
begin 

    process (clk) 
    begin 
     if rising_edge(clk) then 
      case state is 
       when state_0 => 
        -- calculate the next state. 
        -- do something else. 

       when state_1 => 
        -- calculate the next state. 
        -- do something else. 

       when state_2 => 
        -- calculate the next state. 
        -- do something else. 

       when others => 
        -- bad state. reset or something like that. 
      end case; 
     end if; 
    end process; 
end architecture;