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

    

bogaev_roman

Свой
  • Публикаций

    1 094
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о bogaev_roman

  • Звание
    Профессионал
  • День рождения 14.03.1984

Информация

  • Город
    Химки

Посетители профиля

4 553 просмотра профиля
  1. Error (169303): I/O standard LVDS on the clkO_1_2_l0 I/O pin cannot have Slew Rate logic option setting 2 Это если в .qsf принудительно прописать, в pin planner вообще неактивна установка эта - пишет бред - настройка возможна только для выходов и двунаправленных портов.
  2. Добрый день, Уважаемые форумчане. Возник вопрос - какими настройками в квартусе можно поднять крутизну изменения выходного сигнала стандарта lvds (slew rate/current strength/termination)? Не нравится нестабильность выходного сигнала, хочется уменьшить, беглый осмотр документации результатов не дал. Для входа lvds помогло INPUT_TERMINATION DIFFERENTIAL.
  3. Разобрался - требуется создать один reconfiguration controller на все линки, при этом указав в настройках соответсвующую группировку (в моем случае 4 1-lane трансивера, в каждом по два канала для реконфигурации, соответственно группировка 2,2,2,2). Ну и после разводки все как описано в документации - 4 трансивера на местах, одно место под TX_PLL , одно свободно (все в одном банке).
  4. Что-то не могу понять, каким образом можно расшарить reconfiguration controller на несколько независимых custom phy? Создал 2 независимых custom phy (number of line - 1, PMA bonding mode - x1, enable lane bonding - off), при этом требуется два интерфейса реконфигурации - один на трансивер, второй на PLL. Далее создаю два идентиных регонфигуратора (number of reconfiguration interface -2, optional interface grouping - пусто). Все соединяю и на выходе получаю ошибку - каналы с разными реконфигураторами не могут находиться в одном триплете, но по идее сам квартус (согласно xcvr_user_guide, 17-59) должен был расшарить и реализовать только один реконфигуратор. Что не так делаю? Может кто-нибудь скинет ссылку на пример подобной реализации? Спасибо.
  5. Добрый день, уважаемые форумчане. Поставли задачу - получить максимальную пропускную способность для трансивера. Условия - чип 5agxfb5k4, в банке 6 трансиверов, реально подключены 4 (остальные - 1 и 5 - не подклюены), логические каналы должны быть независимы (т.е. объединять их нельзя). На данный момент не могу определиться с конфигурацией (в режиме 2.5G ethernet phy все работает, 5G для данного кристалла подключить не получается, сейчас смотрю в сторону native phy - но там, по памяти, какие-то проблемы были с клоковыми деревьями). Если кто решал что-нибудь подобное - пните в нужную сторону. Спасибо!
  6. Что за ПЛИС? Если пользуетесь квартусом, то можно с помощью timequest.
  7. Можно попробовать сделать 4 параллельные семы приема на вс длину пакета. Каждая сема тактируется частотами 400МГ, сдвинутыx на 90 градусов. Потребуется 3 вещи: 1. Сxема решения - с какой именно забирать данные (подобные реализаии видел, потребутся служебные символы вначале/коне пакета). 2. орошего выравнивания по времени для водныx триггеров сем и частот (вручну точно придется прибивать). 3. Плавание частоты передащей части от приемной за интервал передачи пакета не более чем на четверть периода символа. Каким образом все ляжет на конкретно Ваш чип - ответить не могу - не работал с ним. ЗЫ.. Извинясь за написание - проблема с ПО - часть символов не печатается.
  8. Альтера гарантирует работоспособность кристаллов, если в таймквесте все временные ограничения прописаны грамотно и выполняются. Что даст Вам дополнительно временное моделирование (функционал можно проверить на модели, полные задержки после трассировки можно посмотреть в таймквесте)?
  9. Плохо разводилось (приходилось гвоздями прибивать клокконтрол), в документации советуют 90 градусов ставить. В трех проектах используется один и тот же контроллер, везде без сдвига. Работает стабильно, кстати, в режиме точка-точка при грамотном размере программного буфера UDP работает без пропусков, хотя все программисты утверждают о невозможности этого :biggrin:
  10. В моем варианте по документации очень хитро все расписано относительно периода. У Вас проще. Я сейчас тупить могу, но как я понял: для выходных задержек все прописывается относительно фронта/среза GTX_CLK - максимальное время установки 2.2. нс, минимальное время удержания 1.65. Соответственно получается (тут еще потребуется добавить нестабильность разводки по плате): set_output_delay -clock { clk125_txclk } -rise -max 2.2 [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}] -add_delay set_output_delay -clock { clk125_txclk } -fall -max 2.2 -add_delay [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}] set_output_delay -clock { clk125_txclk } -rise -min -1.65 [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}] -add_delay set_output_delay -clock { clk125_txclk } -fall -min -1.65 -add_delay [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}] Ну и при таких ограничениях производитель гарантирует работоспособность. Я не знаю как у Вас pll настроена - при разных настройках временной анализ нулевой точки может отличаться. Для входных/выходных ограничений это нормально - нас же интересует анализ в том числе и относительно клока.
  11. Можно ссылку на документацию, согласно которой ограничения задавались? У меня просто на марвелл ограничения другие стоят #************************************************************** # Set Output Delay #************************************************************** #88e1111-DS Register 20.1 = 1 Tsetup=-0.9ns/Thold=2.7ns GTX_CLK+0deg (page 218) set_output_delay -clock { clk125_txclk } -rise -max -0.9 [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}] -add_delay set_output_delay -clock { clk125_txclk } -fall -max -0.9 -add_delay [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}] set_output_delay -clock { clk125_txclk } -rise -min 2.7 [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}] -add_delay set_output_delay -clock { clk125_txclk } -fall -min 2.7 -add_delay [get_ports {TX_CONTROL RGMII_OUT[0] RGMII_OUT[1] RGMII_OUT[2] RGMII_OUT[3]}] Просто 4 нс на нестабильность - многовато получается. PS. Можно еще сдвиг по фазе убрать, плюс на самих DDIO задержка огромная - т. е. там походу холд не вытягивается еще или запас очень маленький (он задержку подкрутил ненулевую).
  12. Документация и поддержка со стороны Миландра по сравнению ВЗПП - высший уровень :biggrin: Касаемо FPGA - работал активно с 5576XC4T (аналог EPF10K200S), работает стабильно, согласно заданному алгоритму во всем диапазоне длительное время. Ложка дегтя при разработке осталась - технология отличается от альтеровской, временной анализ делается для альтера, при попытке связаться с разработчиками и выяснить данный момент - пишите официальные письма через голову и ждите ответа непонятно сколько (неофициально сказали, что работать будет, так как технология лучше, но риски Ваши и никто Вам этого официально не скажет). Если бы сейчас была возможность поменять - взял бы их последние поделки (для EPF10K200S из-за особенностей архитектуры невозможно для отладки использовать сигналтап, кроме этого - отсутствует возможность использовать timequest и нормальный chipplanner, что сильно задерживает процесс отладки и самой разработки). Что касается возможностей - попробуйте собрать для начала проект для циклона2 и посмотрите как все ляжет по ресурсам и временному анализу, потом возьмите аналог и найдите отличия в архитектуре, тогда все будет более-менее понятно.
  13. При работе с трансиверами я именно так и делаю. Но Вы же хотели избавиться от фифо?
  14. С точки зрения архитектуры этот новый клок должен пройти через клокконтрол (или как там его), и задержка у него будет приличная. Возможно придется после этого добавить в ограничениях мультицикл (условно для задержки на один такт сделать анализ по setup=2, а hold=1). Но вот вопрос - если у Вас несколько трансиверов будет, для каждого создавать новый клок? Я vhdl не знаю, но насколько понимаю, описание некорректно. gl_clk0 <= rx_clk0; Если это комбинаторика, то квартус по умолчанию новый клок выкинет за ненадобностью и ограничения поставить не получится, потребуется корку ставить (altclkctrl, раньше так называлась, могу ошибаться). Ну и по процессам написал выше - ограничения по умолчанию из-за большой задержки не будут выполняться.
  15. Для Вас это неожиданностью стало? Посмотрите теперь каким клоком тактируется логика, которая плохо разводится. Если эта тактовая - периферийная, то можно попробовать ее сделать глобальной через assignment editor, но не переусердствуйте - глобальные дорожки ценный ресурс. Лучше добавить одну новую общую частоту, сделать ее глобальной и перетактировать логику (не зная архитектуру проекта сложно что-либо посоветовать точнее, самый главный вопрос - каким образом Вы параллельные данные используете на выходе приемника - на какой частоте).