Импортирует пользовательский IP VHDL, но не может использовать или просматривать IP - PullRequest
0 голосов
/ 23 января 2020

Я новичок в VHDL, и в настоящее время я работаю над применением нескольких фильтров для передачи hdmi через пример кода, который я нашел. Мне удалось заставить все работать ( HDMI Pass Through с RGB Switch Filter ), поэтому я пытаюсь перенести код на кусок 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 (Поведенческий) (TestIP_0.vhd)

Проблема в том, что я не могу найти это в своем каталоге IP и даже несмотря на то, что я могу успешно создать поток битов на моей схеме c, я ожидал найти свой 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;

1 Ответ

0 голосов
/ 27 января 2020

Правильный способ инициировать компонент был путем определения нового набора переменных, он, должно быть, был перепутан, поскольку было несколько экземпляров 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
    );
...