Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите с SDI
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
billidean
Доброго времени суток всем.

Пытаюсь разобраться с приемником/передатчиком 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;

и
Код
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;

Режим их использования - 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.
Cordroy
Цитата(billidean @ Nov 22 2012, 10:20) *
Совершенно не понятно, что делать с входами "gxb4_cal_clk, sdi_reconfig_clk, sdi_reconfig_togxb". В доке "ug_sdi" о них ничего подробного не написано.
Для приемника на уровне интуиции понятно, что на вход "rx_protocol_locked" и на "rx_xcvr_trs_lock" подать '1'.
Как и зачем мне использовать выход "sdi_reconfig_fromgxb" мне вообще не понятно.

Пожалуйста, подскажите, где мне об этом почитать, или что мне с этими выводами делать.

Лучше, конечно, ответы от тех, кто использовал ядро-SDI.



Проще всего будет взять пример Альтеры и содрать оттуда код, там есть и реконфиг. Когда разберетесь/запустите, будете по-тихоньку выкидывать ненужное.

Тут PDF с описанием SDI Reference design

Тут можно скачать сам дизайн и код примера для Arria II


billidean
Квартус 11.1 SP2.
Выходные ноги проекта:
Код
        ext_sdi_tx                : out std_logic_vector (0 downto 0);
        ext_sdi_rx                : in std_logic_vector (0 downto 0);

подключаю к выводам:
Код
        sdi_tx                    : out std_logic_vector (0 downto 0);
        sdi_rx                    : in std_logic_vector (0 downto 0);
        
        sdi_tx                    => ext_sdi_tx,
        sdi_rx                    => ext_sdi_rx,

В .tcl-файле прописал:
Код
        set_location_assignment PIN_K4 -to ext_sdi_tx[0]
        set_instance_assignment -name IO_STANDARD "1.4-V PCML" -to ext_sdi_tx[0]
        set_location_assignment PIN_L2 -to ext_sdi_rx[0]
        set_instance_assignment -name IO_STANDARD "1.4-V PCML" -to ext_sdi_rx[0]

При компиляции получаю:
Нажмите для просмотра прикрепленного файла

В чем может быть проблема??
billidean
Цитата(billidean @ Nov 28 2012, 11:11) *
Квартус 11.1 SP2.
Выходные ноги проекта:
Код
        ext_sdi_tx                : out std_logic_vector (0 downto 0);
        ext_sdi_rx                : in std_logic_vector (0 downto 0);

подключаю к выводам:
Код
        sdi_tx                    : out std_logic_vector (0 downto 0);
        sdi_rx                    : in std_logic_vector (0 downto 0);
        
        sdi_tx                    => ext_sdi_tx,
        sdi_rx                    => ext_sdi_rx,

В .tcl-файле прописал:
Код
        set_location_assignment PIN_K4 -to ext_sdi_tx[0]
        set_instance_assignment -name IO_STANDARD "1.4-V PCML" -to ext_sdi_tx[0]
        set_location_assignment PIN_L2 -to ext_sdi_rx[0]
        set_instance_assignment -name IO_STANDARD "1.4-V PCML" -to ext_sdi_rx[0]

При компиляции получаю:
Нажмите для просмотра прикрепленного файла

В чем может быть проблема??


С этим разобрался.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.