Пользовательские типы VHDL в объявлении порта - PullRequest
0 голосов
/ 22 марта 2020

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

В my_package.vhd:

package my_package is
    type custom_type is (a1,a2,a3,a4);
end package;

Затем в моя программа VHDL:

use work.my_package.all;

entity test is 
    port(testInt : out custom_type);
end entity test;

architecture test_a of test is
    type custom_type is (a1,a2,a3,a4);
    signal s:  custom_type;
begin
    testInt <= s;
end architecture;

Но теперь у меня есть ошибка:

тип идентификатора "s" не согласен с его использованием в качестве типа "custom_type"

1 Ответ

1 голос
/ 22 марта 2020

Вы уже объявили custom_type в my_package. Поскольку вы объявили это снова в архитектуре объекта test, вы фактически создали новый тип. Поскольку VHDL строго типизирован, тип объекта отличается (и не совместим с) от типа, объявленного в пакете. Компилятор будет использовать локальный объявленный тип по сравнению с типом из пакета.

Просто удалите тот из архитектуры и используйте тот, который приходит из пакета, который уже виден через предложение use work.my_package.all;.

...