2014-03-29 119 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;