Перейти к содержанию
    

Подключение Video PHY Controller к GTH на Zynq Ultrascale+

Задача следующая. Надо подключить IP-Core Display Port Tx. Это IP подключается через Video PHY Controller к GTH (гигабитному приемопередатчику). Первым этапом я подключаю выходы FPGA (xczu4cg-fbvb900-1-e) к Video PHY Controller. Вот Block Disign:

image.thumb.png.f2e4339d8eb3c37ea59037780cbc42a1.png

Затем выходы этого Block Design я просто передаю на выходы TX GTH. Вот код:

 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity top is
    Port (  DP_Dx_SEL:      out     std_logic;
            DP_AUX_SEL:     out     std_logic;
            DP_ENABLE:      out     std_logic;
            
            --DP TX OUT
            DP_MGT_TX_P:    out     std_logic_vector(3 downto 0);
            DP_MGT_TX_N:    out     std_logic_vector(3 downto 0));

end top;

-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
architecture Behavioral of top is

signal      clk100MHz:              std_logic;

signal      phy_txp_out:            std_logic_vector(3 downto 0);
signal      phy_txn_out:            std_logic_vector(3 downto 0);

signal      ibuf_ds_p_0:            std_logic;
signal      ibuf_ds_n_0:            std_logic;
signal      ibuf_ds_p_1:            std_logic;
signal      ibuf_ds_n_1:            std_logic;

-----------------------------------------------------------------------------
begin
-----------------------------------------------------------------------------
--DP control initialisation
DP_Dx_SEL<=     '0';
DP_AUX_SEL<=    '0';
DP_ENABLE<=     '1';

DP_MGT_TX_P<=   phy_txp_out;
DP_MGT_TX_n<=   phy_txn_out;

--ZYNQ Block Design
ZYNQ_VIDEO_BD:entity work.bd
    port map(  clk100MHz=>                clk100MHz,
    
               phy_txp_out=>           phy_txp_out,
               phy_txn_out=>           phy_txn_out,

               
               ibuf_ds_p_0=>           ibuf_ds_p_0,
               ibuf_ds_n_0=>           ibuf_ds_n_0,
               ibuf_ds_p_1=>           ibuf_ds_p_1,
               ibuf_ds_n_1=>           ibuf_ds_n_1
               );

end Behavioral;

 

Но после сборки проекта, на этапе Generate Bitstream, выскакиет ошибка:

[DRC NSTD-1] Unspecified I/O Standard: 8 out of 11 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1].  NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: DP_MGT_TX_N[3:0], and DP_MGT_TX_P[3:0].

[DRC UCIO-1] Unconstrained Logical Port: 8 out of 11 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined.  To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1].  NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run.  Problem ports: DP_MGT_TX_N[3:0], and DP_MGT_TX_P[3:0].
 

Может кто подключал эту штуку и подскажет куда копать!? Что я упускаю?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все, разобрался. Проблема была в подключении генераторов ко входам PHY. В моем случае надо использовать mgtrefclk0/1. Тогда ошибки уходят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос не по теме. 

Зачем Вы применяете эти библиотеки ?

use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 16.05.2022 в 07:42, Flip-fl0p сказал:

Вопрос не по теме. 

Зачем Вы применяете эти библиотеки ?

use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

 

Ко мне на почту не пришел ваш вопрос, извиняюсь, что так поздно отвечаю. Последняя точно для работы с integer. Например резервирую переменную: signal x std_logic_vector(7 downto 0). Далее я хочу ее использовать в качестве счетчика, то есть x<=x+1; так вот без этой библиотеки я не смогу использовать вектор как целое число. А про первую, надо почитать, подзабыл, но я ее везде использую. Привык:)

Изменено пользователем WladimirK

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.06.2022 в 22:20, WladimirK сказал:

Ко мне на почту не пришел ваш вопрос, извиняюсь, что так поздно отвечаю. Последняя точно для работы с integer. Например резервирую переменную: signal x std_logic_vector(7 downto 0). Далее я хочу ее использовать в качестве счетчика, то есть x<=x+1; так вот без этой библиотеки я не смогу использовать вектор как целое число. А про первую, надо почитать, подзабыл, но я ее везде использую. Привык:)

 

VHDL - язык со строгой типизацией. 

Если Вам необходимо инкрементить тип STD_LOGIC_VECTOR то вы можете подключить стандартную библиотеку IEEE.numeric_std

затем вы тип STD_LOGIC_VECTOR преобразуете в тип UNSIGNED. Инкрементируете. И преобразуете обратно в тип STD_LOGIC_VECTOR.

Или же сразу счетчики объявляете типом UNSIGNED.

    signal x std_logic_vector(7 downto 0) := (others => '0');
    signal y unsigned(7 downto 0)        := (others => '0');
begin
    counter_x_proc : process
    begin
        if (rising_edge(clk)) then 
            x <= std_logic_vector(unsigned(x) + "1");
        end if;
    end process
    
    counter_y_proc : process
    begin
        if (rising_edge(clk)) then 
            y <= y + "1";
        end if;
    end process
end process;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...