architecture specification of traffic_light_controller is signal Present_State : State := Highway_Light_Green; signal Timed_Out_Long : Boolean := FALSE ; signal Start_Timer : Boolean := FALSE ; begin -- specification --process statement which implements the state machine Controller_Process: process begin case Present_State is when Highway_Light_Green => if Car_On_Farmroad and Timed_Out_Long then Start_Timer <= not Start_Timer; Present_State <= Highway_Light_Yellow; end if ; when Highway_Light_Yellow => if Timed_Out_Short then Start_Timer <= not Start_Timer; Present_State <= Farmroad_Light_Green; end if ; when Farmroad_Light_Green => if not Car_On_Farmroad or Timed_Out_Long then Start_Timer <= not Start_Timer; Present_State <= Farmroad_Light_Yellow; end if ; when Farmroad_Light_Yellow => if Timed_Out_Short then Start_Timer <= not Start_Timer; Present_State <= Highway_Light_Green; end if ; end case; wait on Car_On_Farmroad, Timed_Out_Long, Timed_Out_Short; end process; -- Conditional signal assignment to set highway light Highway_Light_Set: with Present_State select Highway_Light <= Green when Highway_Light_Green, Yellow when Highway_Light_Yellow, Red when Farmroad_Light_Green | Farmroad_Light_Yellow; -- Conditional signal assignment to set farm road light Farmroad_Light_Set: with Present_State select Farmroad_Light <= Green when Farmroad_Light_Green, Yellow when Farmroad_Light_Yellow, Red when Highway_Light_Green | Highway_Light_Yellow; -- process statement to implement timing mechanism Timer_Process: process begin Timed_Out_Long <= FALSE, TRUE after Long_Time; Timed_Out_Short <= FALSE, TRUE after Short_Time; wait on Start_Timer; end process; end specification;