Jump to content

    

quato_a

Свой
  • Content Count

    286
  • Joined

  • Last visited

Community Reputation

0 Обычный

About quato_a

  • Rank
    Местный
  • Birthday 11/22/1988

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

4576 profile views
  1. Доброго времени суток! К ПЛИС Kintex-7 подключена Marvel PHY 88E1111 с GMII интерфейсом. Почти пустой проект работает, пакеты принимаются и передаются. При заполнении ресурсов под 90% наблюдается нестабильный прием. Решал копать в сторону ограничений на входные и выходные порты. Посмотрел туториалы от Xilinx и задал set_input_delay в соответствии с времянками из даташиты на 88E1111. PHY формирует данные в режиме center-aligned с Tsu = 2ns и Thd = 0 ns (см. вложение). Эти параметры и ввел в расчет set_input_delay. Выходит, что max delay 6 ns, а min 0 ns. # Input Delay Constraint # Center-Aligned Rising Edge Source Synchronous Inputs # input ____ __________ # clock |_________| |_____ # | # dv_bre | dv_are # <------>|<------> # __ ________|________ __ # data __XXXX____Rise_Data____XXXX__ # 88E1111 4.9.2 GMII Transmit Timing set clk_eth_ns 8.0; create_clock -name clk_eth_in -period $clk_eth_ns [get_ports gmii_rx_clk_i]; # 125 MHz set input_clock_period $clk_eth_ns; # Period of input clock set dv_bre 2.000; # Data valid before the rising clock edge set dv_are 0.000; # Data valid after the rising clock edge set gmii_input_ports [list gmii_rx_dv_i gmii_rx_er_i gmii_rx_data_i[*]]; # List of input ports set_input_delay -clock clk_eth_in -max [expr $input_clock_period - $dv_bre] [get_ports $gmii_input_ports]; set_input_delay -clock clk_eth_in -min $dv_are [get_ports $gmii_input_ports]; Снова собрал почти пустой проект и получил следующий репорт имплементации по одному из зафейленых путей: Timing Report Slack (VIOLATED) : -0.092ns (required time - arrival time) Source: gmii_rx_data_i[3] (input port clocked by clk_eth_in {rise@0.000ns fall@4.000ns period=8.000ns}) Destination: i_eth/i_eth_gmii/i_gmii/mac_rx_data_reg[3]/D (rising edge-triggered cell FDRE clocked by clk_eth_in {rise@0.000ns fall@4.000ns period=8.000ns}) Path Group: clk_eth_in Path Type: Setup (Max at Slow Process Corner) Requirement: 8.000ns (clk_eth_in rise@8.000ns - clk_eth_in rise@0.000ns) Data Path Delay: 6.432ns (logic 1.252ns (19.460%) route 5.180ns (80.540%)) Logic Levels: 1 (IBUF=1) Input Delay: 6.000ns Clock Path Skew: 4.407ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 4.407ns = ( 12.407 - 8.000 ) Source Clock Delay (SCD): 0.000ns Clock Pessimism Removal (CPR): 0.000ns Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE Total System Jitter (TSJ): 0.071ns Total Input Jitter (TIJ): 0.000ns Discrete Jitter (DJ): 0.000ns Phase Error (PE): 0.000ns Location Delay type Incr(ns) Path(ns) Netlist Resource(s) ------------------------------------------------------------------- ------------------- (clock clk_eth_in rise edge) 0.000 0.000 r input delay 6.000 6.000 M22 0.000 6.000 r gmii_rx_data_i[3] (IN) net (fo=0) 0.000 6.000 gmii_rx_data_i[3] M22 IBUF (Prop_ibuf_I_O) 1.252 7.252 r gmii_rx_data_i_IBUF[3]_inst/O net (fo=1, routed) 5.180 12.432 i_eth/i_eth_gmii/i_gmii/mac_rx_data_reg[7]_0[3] SLICE_X3Y80 FDRE r i_eth/i_eth_gmii/i_gmii/mac_rx_data_reg[3]/D ------------------------------------------------------------------- ------------------- (clock clk_eth_in rise edge) 8.000 8.000 r R22 0.000 8.000 r gmii_rx_clk_i (IN) net (fo=0) 0.000 8.000 gmii_rx_clk_i R22 IBUF (Prop_ibuf_I_O) 1.122 9.122 r gmii_rx_clk_i_IBUF_inst/O net (fo=1, routed) 1.834 10.956 i_eth/i_eth_gmii/i_gmii/gmii_rx_clk_i_IBUF BUFGCTRL_X0Y0 BUFG (Prop_bufg_I_O) 0.083 11.039 r i_eth/i_eth_gmii/i_gmii/i_bufg/O net (fo=818, routed) 1.368 12.407 i_eth/i_eth_gmii/i_gmii/gmii_rx_clk_i SLICE_X3Y80 FDRE r i_eth/i_eth_gmii/i_gmii/mac_rx_data_reg[3]/C clock pessimism 0.000 12.407 clock uncertainty -0.035 12.371 SLICE_X3Y80 FDRE (Setup_fdre_C_D) -0.031 12.340 i_eth/i_eth_gmii/i_gmii/mac_rx_data_reg[3] ------------------------------------------------------------------- required time 12.340 arrival time -12.432 ------------------------------------------------------------------- slack -0.092 Не верится, что ПЛИС не поспевает защелкнуть данные даже при почти пустом проекте. Читал разные предыдущие посты по set_input_delay, но не нашел решения. Что я делаю не так? Что забыл добавить? Прошу помощи
  2. кстати, да. к примеру для artix-7 (на котором собрано простейшая zynq) смотрите table 15 в ds181 - DDR LVDS TX/RX до 1250 Мбит/с.
  3. Ну а мне зачем передискретизация? У меня приходит клок сопровождающий данные, из него нужно делать сериал клок для iserdes.
  4. думал использовать xapp585 нашел https://support.xilinx.com/s/article/71112?language=en_US там описаны все регистры, получить значения можно через tcl скрипт На форуме xilinx нашел ответы, что входной клок может быть динамическим, главное при этом обеспечить Fvco в допустимом диапазоне при реконфигурации. Однако, у примитива есть атрибут CLKIN_PERIOD который не меняется (наверное его нужно устанавливать максимальным возможным в дизайне) и явным образом в документации не нашел инфу по вариабельности входного клока. https://support.xilinx.com/s/question/0D52E00006hpZwpSAE/mmcm-vco-actual-work-range?language=en_US https://support.xilinx.com/s/question/0D52E00006hpTRsSAM/mmcm-configuration-with-a-varying-input-clock?language=en_US
  5. Доброго времени суток! ПЛИС XIlinx 7-series. Нужно принимать lvds видео поток и возможно разное разрешение от 640х480 до 1920х1080, а следовательно, разный входной клок от 25 до 148,5 МГц. Если настрою MMCM на максимальный клок 148,5 МГц, то при входном маленьком клоке корректно не настроится Fvco в нужном диапазоне, например, от 600 до 1440 МГц. Смотрю порт и регистры DRP и не вижу, что есть возможность динамической реконфигурации умножителя CLKFBOUT_MULT_F и делителя CLKOUT_DIVIDE_F. Максимум умножитель CLKOUT0 можно подтюнинговать от 0 до 1 с шагом 0,125. xapp888 стр.6 table 2 Правильно ли я понимаю, что нельзя перенастроить умножитель/делитель?
  6. Когда-то тоже считал мат. ожидание от разности фаз (фазы) и столкнулся с неоднозначность. решил по своему
  7. Ну не могу сказать за всех, но как мне кажется на ПЛИС проще и понятнее реализовывать первичную обработку сигналов, а дальше вторичную можно делать уже и на проце и в линуксе. Под первичной я подразумеваю получение квадратурного сигнала, фильтрацию, синхронизацию, ФАПЧ, выравнивание канала, фазировку и т.д.
  8. вставлю и свои 5 копеек (с) Если говорить про ЦОС, то по моим наблюдениям - есть не хватка алгоритмистов, а тот, кто реализует алгоритм в железе - найдется. Бывает так, что есть ТЗ (ТЖ), опыт в разработке и освоении элементной базы (ПЛИС, например) у коллектива есть, а вот в знании и понимании алгоритмов нехватка спецов. Хотя предположу, что может быть в других местах иначе, например, в каких-нибудь НИИ ЧАВО наоборот много ученых мужей, а инженера нету.
  9. спасибо за историю) За свой не такой большой стаж работы, в сравнении с Вашим, не встречал еще специалистов по надежности, все заказчики всегда кивали и все. Максимум было, что нашли опечатку с расчетах.
  10. если с питанием основной системы проблемы, то ВСК, питающееся от резервного, сможет об этом сообщить да это понятное дело, но дублировать сложные подсистемы аля DRAM + FPGA + mCPU и прочее не хочется, слишком подорожает и разбухнет в габаритах изделие, просто нужно закрыть пункт Нашел руководящий документ "Методические указания 108-84" Методы оценки достоверности контроля изделий авиационной техники - Методика определения полноты контроля и глубины поиска отказов Там есть про полноту, а вот про вероятность нету. Думаю вероятность считать, как отношение интенсивностей отказов P = (Лоб - Лвск) / Лоб, где Лоб - интенсивность всей системы, Лвск - только составных частей ВСК.
  11. есть вроде два основных принципа приема сигнала: через супергетеродинный приемник (перенос сигнала на промежуточную частоту, low-if) или методом прямого переноса (перенос сигнала на нулевую частоту, zero-if). Аналогично делается на стороне передатчика. Если low-if использует смесители для переноса, то в zero-if используются модулятор/демодулятор (не путайте с формирователем из битов квадратурного сигнала PSK/QAM). В любой книге по радиосвязи можно найти принципы построения радиоприемопередатчиков. На вскидку: Цифровая связь - Б.Скляр, Д.Прокис RF Architectures and Digital Signal Processing Aspects of Digital Wireless Transceivers - Nezami Software Defined Radio using MATLAB Simulink and the RTL-SDR Трансивер ad936x использует прямой перенос.