Jump to content
    

Kronac

Свой
  • Posts

    73
  • Joined

  • Last visited

Reputation

0 Обычный

About Kronac

  • Rank
    Участник
    Участник

Recent Profile Visitors

498 profile views
  1. Я в своей работе не моделирую ядра PLL, PCIe, JESD, DDR и прочие.. Ибо этот процесс моделирования будет занимать очень очень много времени.. Я проверяю свою логику, которую пишу лично я, эмулируя подачу сигналов и поведение ядер в идеальных условиях так сказать написанием простенькой симуляционной модели на базе спецификаций ядер. Но на практике часто выясняется, что какой либо сигнал становится на два такта раньше или на 10 тактов позже, чем я ожидал на модели. Я ввожу корректировки, перекомпиливаю и всё работает. В этом SIGNAL TAP очень сильно помогает и ускоряет в разы стадию отладки. Можно конечно заморочиться и отмоделировать поведение каждого ядра, каждого сигнала во всём проекте, но этот процесс заберёт очень много времени и не известно сколько ресурсов компьютера... Я понимаю, что сам SIGNAL TAP (и ILA) не залог достоверности захваченных данных. Ни раз сталкивался с тем, что сигнал просто не захватывался, инвертировался или вовсе вёл себя непредсказуемо. Это я понимаю. Я не понимаю как "эффект наблюдателя" ломает сам процесс работы. Пытаясь заглянуть во внутренние процессы через ILA, я нарушаю тем самым эти процессы и много что начинает отрабатываться неверно или вовсе зависает внутри ПЛИС...
  2. Всем привет. Много работал ранее с проектами в среде QUARTUS, очень часто приходилось отлаживать проекты в железе при помощи встроенного логического анализатора Signal Tap II. Очень удобный инструмент, ни один раз помогал мне найти и выявить ошибки, пропущенные на стадии моделирования и некоторые моменты, которые моделирование в принципе не способно обнаружить. В данный момент создаю проект в Xilinx Vivado, где на ПЛИС принимаю по JESD отчёты из АЦП, провожу некоторую обработку данных и кладу в память. Столкнулся с ситуацией, что на модели всё идеально, никаких проблем нет, но в железе не работает должным образом моя внутренняя логика (при этом приём сигнала с АЦП по JESD в норме). Стал разбираться, с помощью ядер ILA выводить интересующие меня сигналы JESD, флаги и статусы для анализа. Первая проблема, с которой я столкнулся, не могу завести ядра на частоте, которой изначально нет в ПЛИС (в момент подачи питания). Частота появляется с программируемого генератора позже и САПР Vivado говорит мне, что не может запустить ядро ILA и показать результаты... Пришлось перебрасывать все нужные мне сигналы через три регистра на стабильный клок (от DDR у меня есть 300МГц, которые всегда поступают в ПЛИС). ILA запускается, но тут начинается танец с бубном. У меня либо совсем умрёт JESD, что перестают корректно приниматься данные, либо работает но данные бьются. Причём бьются не те данные, которые я вывел на ILA, а реальные отчёты АЦП, поступающие в память. Лечится эта штука путём полного сброса проекта (команда "reset_project" TCL) и 1-2 перекомпиляции, не меняя исходников или настроек. В итоге этот процесс очень сильно стопорит процесс отладки. После каждых изменений в проекте, приходится танцевать с бубном и надеяться, что после 2-3 перекомпиляций проект получится рабочий, JESD запустится и ILA ему мешать не будет. Прошу помощи у более опытных пользователей. Как вы работаете с ILA? Как тестируете работоспособность проекта в железе на xilinx?
  3. Спасибо большое. Прочитал мануал подробнее. Сначала получилось подать клок через каскадирование ПЛЛ-ек. Входной пин завёл на стандартную IOpll, её выход уже подал на fPLL. Подход интересный, но боюсь представить что станет с клоком, когда он пройдёт весь этот тракт.. Долго бился над тем, чтобы подать пин напрямую на вход fractional PLL. В мануале такая возможность действительно имеется, но Квартус отчаянно сопротивлялся =)... Потом уже в другом мануале (хэндбук на Аррию 10) нашёл, что мне нужно использовать между входным пином и fPLL "ALTCLKCTRL" и только после этого квартус съел это всё и компильнулся. Не знаю на сколько это работоспособно, но то, что это компилится уже радует. Теперь у меня есть запасной план, на случай если не будет трансиверного клока.
  4. Посмотрел в Chip Planner Arria V и мою Arria 10. Действительно в старой арии не было высокоскоростных ATX PLL / fPLL. Были только обычные PLL которые были прям у трансиверов, что позволяло такой подход и можно было завести на клоки ПЛЛек и всё было хорошо. К сожалению у новых Arria 10 всё совсем иначе и работать с трансиверами или ATX PLL/fPLL можно исключительно используя высокоскоростные трансиверные клоки...
  5. Интересно.. Ну я до этого пытался напрямую клок подать без ПЛЛ сразу в ядро с пина (пропустив через Clock_Source) . Сейчас попробовал этот вариант, пропустить клок через ПЛЛ и ничего не меняя с той же частотой подать на ядро JESD, но результат тот же, что и раньше.. (ядро JESD одно у меня) Возможно в Арии 10 что то поменялось в этом плане... =) А какой тип ПЛЛ при этом у Вас был? может я не ту ПЛЛ поставил или не так настроил её? Я ставил стандартную IOPLL.
  6. Можно спросить, как у Вас это вышло? Для интереса убрал из проекта ПЛЛ, клок с пина напрямую подаю в ядро JESD, попробовал все клоки, какие есть на моей ARRIA 10, если клок не является трансиверным выделенным клоком (на рисунке синим выделены), то какой бы клок или стандарт я не использовал, Quartus не разрешает такую разводку...
  7. Ну при попытке в лоб подменить пин pll_ref_clk для JESD на старом проекте, квартус выдал сразу ошибку... Буду сейчас разбираться что не так.. В моём проекте входной пин "device_clk" с высокоскоростного входа шёл в ip ядро JESD и на PLLку где я формировал с него link_clk и sysref. С высокоскоростным пином такая штука работала, с обычным по ходу квартус так не может.. =)
  8. Спасибо, попробую конечно, но раньше когда пробовал подобный трюк, компилятор (что Quartus, что vivado) меня сразу посылал. Передвинуть, перепаять, допаять конечно всегда можно, но это уже второй шаг, когда других вариантов уже не будет =) Пока хочется отделаться малой кровью.
  9. Прозвонить, к сожалению, пока не могу, так как кит ещё не куплен. Сейчас на стадии закупки и вот неожиданно возник вопрос, подойдёт ли данный кит? Или с ним не выйдет работать так, как задумывалось изначально... Обнаружил странный момент на схеме, по этому собственно и создал данную тему. По поводу использования SYSREF_TO_FPGA, он подключён на клоковый вход "CLK0_M2C" на FMC, но всё же это не высокоскоростной вход для трансиверных клоков. Компилятор такое не съест, на сколько я знаю... Уточню ещё. Сложность в том, что в системе, в которой собираюсь использовать AD9208 EVAL, на плате носителе с ПЛИС нет возможности подать хоть какие то сигналы из вне (штатными способами, без конструктивной переделки), имеются только FMC коннекторы, по этому сигналы SYSREF и PHY_CLK для JESD намеревался получать от мезонина через FMC...
  10. Всем привет. Успешно использовал для приёма в ПЛИС сигналов от мезонина AD9695 EVAL. Были свои минусы модели (не было возможности пропустить через FMC в ПЛИС сигнал sysref). Назрела необходимость использовать другой замечательный КИТ от Analog DEVICES - AD9208 3000EBZ EVAL. Посмотрел все необходимые характеристики, всё устраивает, даже появилась возможность сигнал sysref прогнать через мезонин и пустить в ПЛИС. Начал копаться более глубоко, нашёл схематик и там столкнулся с очень странным моментом. На моём старом ките, для работы трансиверов JESD можно было подать на входной коннектор SMA на мезонине сигнал "EXT_REFCLK_TO_FPGA" и пропустить его через FMC на ножку "GBTCLK0_M2C_P", после чего благополучно в ядре назначить его как PHY CLK для трансиверов (Рис.1). Рис.1 На новый КИТ AD9208 EVAl на сайте Analog DEVICES я скачал архив файлов, там был схематик для AD9689 EVAL, как я понял это совместимый пин в пин с моим АЦП и плата носитель у них одна. Так вот в скаченном схематике немного изменилась схема. Входной клок для ПЛИС с коннектора на мезонине теперь называется "GLBLCLK_TO_FPGA" (Рис.2) Рис.2 Подключается же данный сигнал на ножку "LA00_P_CC" на разъёме FMC (Рис.3), который не является высокоскоростным входом для тактирования трансиверов JESD ... Подключить его к JESD, я думаю, мне компилятор не позволит.. Интересно то, что старый сигнал "EXT_REFCLK_TO_FPGA" остался на старом "правильном" месте, но при этом он обрублен и больше никуда по схеме не идёт... Рис.3 Так вот мой вопрос. Это какая то опечатка, ошибка на схеме? Или реально так перелопатили КИТ, что теперь брать клок через мезонин невозможно? Приложу обе схемы: старого кита AD9695 и нового AD9208 (AD9689 так как это одно и тоже). SCH_9695ce01a.pdf SCH_9689ce02c.pdf
  11. Привет. делаю на альтере АЦП ads42lb69 8 каналов :) .

    Нет стабильного результата приема с АЦП от трассировки к трассировке. Что посоветуете ?

  12. Я не думаю, что это моя проблема. По умолчанию DEBAG HUB у меня подключался к частоте ДДР на 300МГц, а частота Jtag а меня стоит 9 МГц. Так что проблема была в другом. P.S. Я же правильно понял, частота JTAG тут выставляется? Совершенно верно. Единственно до сих пор не понимаю собственно зачем вообще нужен DEBUG HUB и в чём его роль, если он не семплирует данные? Обеспечивает работоспособность ядра и внутренней логики?
  13. Ну в общем удалось мне побороть проблему. Но не одним способом а используя сразу несколько. 1. Поставил BUFGMUX запитав как один из источников клока частоту, которая есть на ПЛИС в момент старта. 2. После этого сильно посыпались тайминги, забить на межклоковые переходы в xdc не удалось, потому что у меня стали биться сами данные JESD только на том канале, на котором я смотрел через ИЛА.. Долго с этим разбирался. 3. Использовал настройки Debug Hab, как было описано выше. Только используя все эти советы и некоторые танцы с бубном, я смог привести к тому виду, когда оба ILA корректно работают, не пропадают и при этом не ломают данные на которые я хочу смотреть =) Всем спасибо за советы!
  14. Это понятно. Но в таком случае, проблема должна быть решена перезапуском vivado или рефрешем соединения? Либо ядро просто уходит в блок и больше не опрашивается?
×
×
  • Create New...