введите объявление порта VHDL без использования пакета - PullRequest
0 голосов
/ 25 октября 2018

Мне нужно написать иерархический конечный автомат, но мне нужно добавить состояния в порты.Это не позволит мне, так как value_type, который я использую, еще не объявлен, но я не знаю, как я могу это сделать.

Вот мой код:

entity statereg is
  port (
    Rst           : in  STD_LOGIC;
    Clk           : in  STD_LOGIC;
    TimeBase      : in  STD_LOGIC;
    StateDuration : in  integer range 0 to 15;
    next_state    : in  state_values;
    pres_state    : out state_values
  );
end statereg;

architecture Behavioral of statereg is
  type   state_values is (RED,REDAMBER,GREEN,AMBER);
  signal pres_state, next_state : state_values;
begin

end Behavioral;

1 Ответ

0 голосов
/ 26 октября 2018

Вам необходимо объявить тип перечисления state_values в пакете.Используя пакет, вы можете ссылаться на типы, объявленные в нем в объявлении порта вашей сущности.

Здесь необходимый пакет:

package FSM_types is
  type state_values is (RED, REDAMBER, GREEN, AMBER);
end package;

Здесь измененная сущность:

library IEEE;
use     IEEE.std_logic_1164.all;

use     work.FSM_types.all;

entity statereg is
  port (
    Clock      : in  std_logic;
    -- ...
    next_state : in  state_values;
    pres_state : out state_values
  );
end entity;
...