Пытаюсь разобраться с приемником/передатчиком SDI-ядра.
Задача простая: передать и принять любые случайные данные по каналу SDI в режиме 3G.
Ядро SDI может содержать в себе модуль протокола, для передачи/приема видео, но мне он не нужен, поэтому буду использовать только модули приемника/передатчика ядра.
В МегаВизарде сгенерил передатчик и приемник SDI:
Код
COMPONENT tx IS
GENERIC (
...
);
PORT (
rst_tx : IN STD_LOGIC;
tx_pclk : IN STD_LOGIC;
tx_serial_refclk : IN STD_LOGIC;
txdata : IN STD_LOGIC_VECTOR (19 DOWNTO 0);
gxb4_cal_clk : IN STD_LOGIC;
sdi_reconfig_clk : IN STD_LOGIC;
sdi_reconfig_togxb : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
sdi_gxb_powerdown : IN STD_LOGIC;
sdi_tx : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_status : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
gxb_tx_clkout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
sdi_reconfig_fromgxb : OUT STD_LOGIC_VECTOR (16 DOWNTO 0)
);
END tx;
GENERIC (
...
);
PORT (
rst_tx : IN STD_LOGIC;
tx_pclk : IN STD_LOGIC;
tx_serial_refclk : IN STD_LOGIC;
txdata : IN STD_LOGIC_VECTOR (19 DOWNTO 0);
gxb4_cal_clk : IN STD_LOGIC;
sdi_reconfig_clk : IN STD_LOGIC;
sdi_reconfig_togxb : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
sdi_gxb_powerdown : IN STD_LOGIC;
sdi_tx : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
tx_status : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
gxb_tx_clkout : OUT STD_LOGIC_VECTOR (0 DOWNTO 0);
sdi_reconfig_fromgxb : OUT STD_LOGIC_VECTOR (16 DOWNTO 0)
);
END tx;
и
Код
COMPONENT rx IS
GENERIC (
...
);
PORT (
rst_rx : IN STD_LOGIC;
rx_serial_refclk : IN STD_LOGIC;
sdi_rx : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
refclk_rate : IN STD_LOGIC;
rx_protocol_locked : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_xcvr_trs_lock : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
gxb4_cal_clk : IN STD_LOGIC;
sdi_reconfig_clk : IN STD_LOGIC;
sdi_reconfig_togxb : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
sdi_gxb_powerdown : IN STD_LOGIC;
rxdata : OUT STD_LOGIC_VECTOR (19 DOWNTO 0);
rx_data_valid_out : OUT STD_LOGIC_VECTOR (1 DOWNTO 0);
rx_clk : OUT STD_LOGIC;
rx_status : OUT STD_LOGIC_VECTOR (10 DOWNTO 0);
detected_rate : OUT STD_LOGIC;
sdi_reconfig_fromgxb : OUT STD_LOGIC_VECTOR (16 DOWNTO 0);
rx_std : OUT STD_LOGIC_VECTOR (1 DOWNTO 0)
);
END rx;
GENERIC (
...
);
PORT (
rst_rx : IN STD_LOGIC;
rx_serial_refclk : IN STD_LOGIC;
sdi_rx : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
refclk_rate : IN STD_LOGIC;
rx_protocol_locked : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
rx_xcvr_trs_lock : IN STD_LOGIC_VECTOR (0 DOWNTO 0);
gxb4_cal_clk : IN STD_LOGIC;
sdi_reconfig_clk : IN STD_LOGIC;
sdi_reconfig_togxb : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
sdi_gxb_powerdown : IN STD_LOGIC;
rxdata : OUT STD_LOGIC_VECTOR (19 DOWNTO 0);
rx_data_valid_out : OUT STD_LOGIC_VECTOR (1 DOWNTO 0);
rx_clk : OUT STD_LOGIC;
rx_status : OUT STD_LOGIC_VECTOR (10 DOWNTO 0);
detected_rate : OUT STD_LOGIC;
sdi_reconfig_fromgxb : OUT STD_LOGIC_VECTOR (16 DOWNTO 0);
rx_std : OUT STD_LOGIC_VECTOR (1 DOWNTO 0)
);
END rx;
Режим их использования - 3G.
При управлении передатчиком на вход "rst_tx" подаем '0', на входы "tx_pclk, tx_serial_refclk" подаем 148.5МГц, на вход "txdata" будем засылать наши данные, вход "sdi_tx" подключаем наружу на микросхему драйвера.
Совершенно не понятно, что делать с входами "gxb4_cal_clk, sdi_reconfig_clk, sdi_reconfig_togxb". В доке "ug_sdi" о них ничего подробного не написано.
Для приемника на уровне интуиции понятно, что на вход "rx_protocol_locked" и на "rx_xcvr_trs_lock" подать '1'.
Как и зачем мне использовать выход "sdi_reconfig_fromgxb" мне вообще не понятно.
Пожалуйста, подскажите, где мне об этом почитать, или что мне с этими выводами делать.
Лучше, конечно, ответы от тех, кто использовал ядро-SDI.