Импорт пользовательского IP-адреса VHDL, но невозможно использовать или просматривать IP-адрес

Я новичок в VHDL и в настоящее время работаю над применением нескольких фильтров к проходу hdmi через пример кода, который я нашел. Мне удалось заставить все работать (HDMI Pass Through с фильтром переключателя RGB), поэтому я пытаюсь перенести код на часть IP, используя Vivado.

Я объявил компонент и экземпляр так:

component TestIP
        port (
            vid_pData         : in std_logic_vector(23 downto 0);
            vid_pData_new     : out std_logic_vector(23 downto 0);
            aRst              : in std_logic;
            PixelClk    : in std_logic;

            sw0               : in std_logic;
            sw1               : in std_logic;
            sw2               : in std_logic;
            sw3               : in std_logic   
            );

TestIP_inst : TestIP
port map(
    vid_pData => vid_pData_new,
    aRst      => async_reset_i,
    PixelClk      => pixelclk,

    sw0       => sw0,
    sw1       => sw1,
    sw2       => sw2,
    sw3       => sw3
    );

Остальной код остался прежним. Я упаковал IP с помощью мастера IP и экспортировал его в репозиторий IP по умолчанию. Он создал файл с именем TestIP_0 с двумя файлами, TestIP_0 и Top_IP, оба являются файлами .vhd.

В исходной иерархии в vivado я вижу в IP свой экземпляр, TestIP_inst: TestIP(Behavioral)(TestIP_0.vhd)

Проблема в том, что я не могу найти это в своем каталоге IP-адресов, и хотя я могу успешно создать битовый поток на своей схеме, я ожидал найти свой IP-адрес между блоками DVI2RGB и RGB2DVI, но вместо этого мой IP-адрес не появляется, а поток данных не отображается. Не подключаю вход к выходу, поэтому, когда я программирую плату, экран просто черный.

Заранее извиняюсь за наверное глупый вопрос, но есть идеи как это исправить?

Спасибо

РЕДАКТИРОВАТЬ Вот моя декларация объекта TestIP

entity TestIP is
Port ( vid_pData : in STD_LOGIC_Vector(23 downto 0);
       vid_pData_new : out STD_LOGIC_Vector(23 downto 0);
       aRst              : in std_logic;
       PixelClk    : in std_logic;

       sw0 : in STD_LOGIC;
       sw1 : in STD_LOGIC;
       sw2 : in STD_LOGIC;
       sw3 : in STD_LOGIC);
end TestIP;

person Jkind9    schedule 23.01.2020    source источник
comment
мой каталог IP Какой каталог IP? VHDL не имеет каталога IP. И какая доска? Пожалуйста, сделайте свой вопрос отдельным, чтобы нам не приходилось работать с иерархией вопросов.   -  person Oldfart    schedule 23.01.2020
comment
Извините, я отредактирую, чтобы объяснить, но с помощью vivado: Project Manager -> IP Catalog. Работаю на zybo z7-10   -  person Jkind9    schedule 23.01.2020
comment
Вы конвертировали свой модуль в IP? Затем вы добавили IP-адрес в репозиторий IP-адресов? Имейте в виду, что существуют ограничения на версию модуля верхнего уровня VHDL. Я думаю, что вы не можете использовать 2008 для топового модуля.   -  person Oldfart    schedule 23.01.2020
comment
Да, я использовал мастер IP. Я тоже поместил его в правильный репозиторий. Я использую версию 2019 года   -  person Jkind9    schedule 24.01.2020
comment
Кажется, что объявление вашего компонента и экземпляр сущности TestIP не совпадают. В экземпляре вы ничего не подключаете к порту vid_pData_new TestIP. Это должно было вызвать ошибку в разработке.   -  person Plebala    schedule 24.01.2020
comment
@Plebala Я добавил в экземпляр своего объекта, я думал, что все объявил правильно, но вы вполне можете быть правы.   -  person Jkind9    schedule 27.01.2020
comment
Во втором блоке кода вы показываете экземпляр TestIP как TestIP_inst. Ваши объявления компонентов и сущностей для TestIP_inst выглядят нормально, но создание экземпляра неверно.   -  person Plebala    schedule 27.01.2020
comment
У меня сложилось впечатление, что TestIP_inst был меткой для инициации... Если я изменю имя на просто TestIP, я получу ошибку: TestIP уже объявлен в этом регионе.   -  person Jkind9    schedule 27.01.2020


Ответы (1)


Правильный способ инициировать компонент заключался в определении нового набора переменных, он, должно быть, перепутался, поскольку было несколько экземпляров vid_pData и vid_pData new, поэтому не было «порядка» в потоке данных.

TestIP_inst : TestIP
port map(
    vid_pData1  => vid_pData,
    vid_pData2 => vid_pData_new,
    aRst      => async_reset_i,
    PixelClk      => pixelclk,

    sw0       => sw0,
    sw1       => sw1,
    sw2       => sw2,
    sw3       => sw3
    );
person Jkind9    schedule 27.01.2020