Jump to content

    

vlso

Участник
  • Content Count

    57
  • Joined

  • Last visited

Community Reputation

0 Обычный

About vlso

  • Rank
    Участник
  • Birthday 04/12/1976

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

503 profile views
  1. Переписка с инженером из Intel была неожиданно продолжена: ----------------------------------------------------------------------------- I reviewed again the doc, and found out that the document is correct. If we refer to https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/max-10/m10_datasheet.pdf The spec saying that: VCCIO for all I/O banks must be powered up during user mode because VCCIO I/O banks are used for the ADC and I/O functionalities then we can refer to: https://www.intel.com/content/www/us/en/programmable/documentation/myt1393986555723.html The spec saying that: 1. The POR circuitry also ensures VCCIO level of I/O banks 1B and 82 that contain configuration pins reach an acceptable level before configuration is triggered. 2. All VCCIO banks must reach the recommended operating level before configuration completes. It is correct because only Vccio of I/O banks 1B and 8 need to be up before configuration is triggered but all VCCIO banks must be up before the configuration is completed. ------------------------------------------------------------------------------- Потом я ещё раз собрал и привёл ему все доказательства. Ссылался на старые доки, схемотехнику kit от Cyclone10GX и практику из форума :) После чего он ответил уже более существенно: ------------------------------------------------------------------------------- In general, POR monitored supplies is a MUST for configuration to trigger/complete. Other banks VCCIO which are not POR monitored, theoretically does not affect the configuration and functionality, but this is not characterized and validated as this is not a common use case. Engineering from Device team has validated the common use cases where all VCCIO are up before configuration completes and we always recommend users to do the same. Board team shall always validated and evaluated on every release of the devkit for any specific implementation on their end. ------------------------------------------------------------------------------- Так что если нельзя, но очень хочется, то можно!
  2. Как обещал, публикую ответ Intel. Несмотря на уточнения вопроса с моей стороны финальный ответ довольно сухой: ------------------ In general, VCCIO level of I/O banks 1 and 8 that contain configuration pins need to reach an acceptable level before configuration is triggered. These 2 Vccio bank are monitored by Power-on Reset (POR) circuitry to ensure VCCIO level of I/O banks 1B and 8 reach an acceptable level before configuration is triggered. POR circuitry uses an individual POR-detecting circuitry to monitor each of the configuration-related power supplies independently. The outputs of all the individual POR detectors gate the main POR circuitry. In other words, those Power Supplies that are not monitored by this POR circuit will not gate the device out from reset. ------------------ По сути копипаста из мануала. Про свой кривой комментарий ни слова. В общем исходя из практики и этого ответа, считаю, что включать VCCIO банков 2-7 можно после старта микрокода и обращать внимание на противоречивый комментарий нет смысла.
  3. Понял. Ещё раз спасибо. Также сделаю. Спасибо, тоже интересная информация на будущее.
  4. Bloody-wolf, огромное спасибо за очень подробную практическую информацию! Дистрибьютеры запросили у Altera/Intel информацию. Обязательно отпишусь, что ответят. Я правильно понял, что для старта конфигурации и старта user mode, не требуется наличия VCCIO в банках НЕ участвующих в конфиге? Другими словами, правильно ли то, что схема POR и схема запуска user mode совсем не проверяет напряжения в этих банках?
  5. Думаю, что если имеются две PLD и PLD1 bankX связан c PLD2 bankY c общим VCCIO на обоих PLD, то повода подпалить вроде как нет. А вот если VCCIO от разных источников, то скорее всего может произойти что-нибудь нехорошее. Похоже Altera поленилась это объяснить.
  6. Посмотрел. Вопрос действительно почти как у меня, только вот ответа ясного нет. Указанная ссылка ведёт на тот же документ "MAX 10 Power Management User Guide". В ссылке обсуждается "I/O Buffer Power Down", что не совсем то, что меня интересует. Это всё таки отключение питания буфера на I/O выводе, а не на выводе VCCIO. Причём исходя из "During power-up and configuration modes, the soft power management controller is not yet configured..." ясно, что во время процесса конфигурации "I/O Buffer Power Down" недоступен. Понял. Да, вопрос пока открытый. Они написали возможно, чтобы снять с себя ответственность. Подозреваю, что если выводы отключенного банка не активны то можно так делать. В смысле на другом конце этих линий тоже отключенный банк без VCCIO. В общем ещё жду ответа от дистрибьютеров. Ну может и тут кто разбирался и ответит.
  7. Ну в примечании "before configuration completes" написано. То есть надо, чтобы VCCIO появились именно до момента окончания конфигурации. А как тогда kit работает ? Ведь по идее считается, что в kit закладывают образцовые решения. Не очень понял вопрос. Этот банк системной MAX10, питание которого включается позже старта прошивки, соединяется с пинами конфигурации и JTAG Cyclone10GX с этим же питанием (оно же и на VCCPGM идёт). То есть на момент окончания загрузки MAX10 на IO этого банка по идее активности нет никакой. Ок, посмотрю.
  8. Здравствуйте! Прошу совета. Разбираю как работает PCIE kit для Cyclone10GX. В этом kit имеется две PLD MAX10. Одна для системных нужд, вторая для загрузки основной FPGA Cyclone10. При включении питания сначала появляется напряжение +3.3V, которое питает только узел загрузки основной FPGA: оба MAX10 и FLASH, где хранится прошивка для Cyclone10GX. Далее системная MAX10 (при помощи своих выходных сигналов) управляет включением остальных питаний для Cyclone10GX. Одно из этих питаний (+1.8V) заходит на VCCIO системной MAX10. То есть получается, что это VCCIO на системной MAX10 однозначно не появится, пока не стартует прошивка в этой же системной MAX10. Из чего можно сделать простой вывод, что для старта прошивки MAX10 не требуется наличие VCCIO (кроме банков с выводами JTAG и конфигурации). Всё это согласуется с handbook на MAX10, о чём там прямым текстом написано: MAX 10 Power Management Features and Architecture -> Power-On Reset Circuitry The MAX 10 device POR circuit monitors the following power rails during power up regardless of the power supply device options: • VCC or regulated VCC_ONE • VCCIO of banks 1B and 8 (2) • VCCA The POR circuitry also ensures VCCIO level of I/O banks 1B and 8(2) that contain configuration pins reach an acceptable level before configuration is triggered. То есть вроде как практика совпадает с теорией. Но самое интересное, что на следующей странице написано противоречие с практикой: Figure 2-3: Monitored Power Supplies Ramp Up Note: All VCCIO banks must reach the recommended operating level before configuration completes. Примечание: Напряжения питания во всех VCCIO банках должны достигнуть рабочего уровня до завершения конфигурации! К чему это противоречащее реальности примечание совершенно непонятно. Может кто-нибудь объяснит? Пытался найти ответ в интернете и наткнулся на такой-же непонятный ответ сотрудника Intel/Altera: https://community.intel.com/t5/FPGA-SoC-And-CPLD-Boards-And/For-MAX10-Is-it-possible-to-turn-off-the-VCCIO-power-supply-for/m-p/734086/highlight/true?profile.language=ru Там ссылаются на документ "MAX 10 Power Management User Guide" от 2018 года. Там всё аналогично handbook вместе с этим примечанием. Затем посмотрел у себя в архивах старую версию этого документа от 2014 года. Там этого примечания не было! То ли это такая недокументированная возможность, то ли что...
  9. Проверил на железе. Всё работает на 320 MHz. Два аппаратных DDR3 контроллера на 32 бита (два 16-разрядных чипа с каждой из сторон). Уже несколько часов тест стоит. FPGA без радиатора, весьма горячая, палец не терпит.
  10. Дополнение. Поставил одновременно две версии Quartus 16.1.0.196 и 16.1.0.203. Сам не знал, что так возможно, но при установке 16.1.0.196 Quartus понимает, что второй раз ставиться и предлагает имя с добавкой "Copy2". Вот эту самую copy2 и заапгрейдил до 16.1.0.203. Обе версии стали отдельно компилировать нормально! Потом попробовал на 15.0.2.153, 17.0.2.602. Тоже откомпилировало! Во всех случаях удалял базы. Ничего не понял, да и ладно. Надо было проект из архива каждый раз распаковывать для чистоты эксперимента. Но разбираться с этим далее уже некогда. Компилируют и ладно.
  11. Интересное продолжение. Оказывается успех или неуспех компиляции ещё зависит от версии Quartus! Ещё интереснее то, что успешная компиляция была на Quartus Prime Lite Edition 16.1.0.196 - обычно я ставлю на неё upgrade до 16.1.0.203, а тут оказывается забыл (вот ведь повезло!). После апгрейда до 16.1.0.203 компилирует этот же проект до бесконечности (последнее сообщение fitter: "The fitter is using Advanced Physical Optimization"). Впрочем кнопка stop вполне себе работает (культурное зависание). Каталоги с базами удалял для чистоты эксперимента. Также не компилируется на 15.0.2.153, 17.0.2.602 Снёс 16.1.0.203. Поставил назад 16.1.0.196. Всё опять компилируется... Зависающая фаза (это fitter placement) проходит за 24 секунды. Весь проект компилируется за 6 минут 45 секунд. Ничего необычного не увидел. Видимо придётся пока работать с 16.1.0.196 :)
  12. Ну вот, можете поздравить! Получилось откомпилировать аппаратный DDR3 с референсой частотой из блока трансиверов. Пока вожусь с одним 32-разрядным модулем DDR3. Вылезло шесть одинаковых предупреждений про не dedicated clock и про возможно нехороший jitter. Один раз fitter выдал и 5 раз временной анализатор. Пока сам не понял, почему вчера "висло". Просто сегодня всё немного поаккуратнее причесал, исходя из полученных знаний. Похоже вчера я как-то одновременно брал parallel clock tx_out (с CMU PLL) для основной общей логики прошивки (не для DDR3) и референсную частоту уже для DDR (через промежуточную PLL) . Как второй (нижний) модуль DDR3 подключу, отпишусь. Но это уже что-то. Главное ошибку преодолел.
  13. Опорная частота из области трансиверов попадает только на две центральные fPLL (X0_Y29, X0_Y13) в левой стороне чипа (из области strip). Про каскадное включение двух fPLL: Оказалось каскадных fPLL всего две на кристалле (в области strip). Это всё те же любимые центральные fPLL (X0_Y29, X0_Y13) в левой стороне чипа. Каскадироваться они могут только в одном направлении от X0_Y13 к X0_Y29. Всё проверено мной на практике. Также подтверждено и в теории altera_pll.pdf - Altera Phase-Locked Loop (Altera PLL) IP Core User Guide. В таблице 7: adjpllin Cascading for Supported Devices Итог исследования: Опорная частота из области трансиверов может попасть в угловые fPLL либо через выделенные пины (классический вариант), либо через блоки ClkCtrl (через GCLK сеть). Других вариантов похоже нет. Вся информация для микросхемы 5CGXFC5C7F27C8. Может кому полезно будет, кто наткнётся на тему. Настройки местоположения каскадных fPLL из qsf-файла: set_location_assignment FFPLL_X0_Y13_N0 -to "CopyPLL:CopyPLLM|CopyPLL_0002:copypll_inst|altera_pll:altera_pll_i|altera_cyclonev_pll:cyclonev_pll|altera_cyclonev_pll_base:fpll_0|fpll" set_location_assignment FFPLL_X0_Y29_N0 -to "CorePLL:CorePLLM|CorePLL_0002:corepll_inst|altera_pll:altera_pll_i|altera_cyclonev_pll:cyclonev_pll|altera_cyclonev_pll_base:fpll_0|fpll" Описание каскадных fPLL: FUNCTION CopyPLL (refclk, rst) RETURNS (outclk_0, locked, cascade_out); FUNCTION CorePLL (refclk, rst, adjpllin) RETURNS (outclk_0, locked); Фрагмент включения каскадных fPLL (AHDL): CopyPLLM.refclk=p_c5_refclkp; CopyPLLM.rst=gnd; CorePLLM.adjpllin=CopyPLLM.cascade_out; CorePLLM.rst=gnd; -->CorePLLM.outclk_0 - выход последней PLL Печально. Сейчас буду пробовать, чтобы хоть через GCLK-сеть с предупреждениями откомпилировалось.
  14. Поковырялся немного. В левой стороне 4 fPLL в порядке сверху вниз: X0_Y53, X0_Y29, X0_Y13, X0_Y0. refclk сигнал с пина заходит в блок HSSI_REFCLK_DIVIDER и выходит с именем p_c5_refclkp~input~FITTER_INSERTED прямо в блок PLL_REFCLK_SELECT (на порт I_PLLIQCLKIN) любой из двух центральных fPLL (X0_Y29, X0_Y13). Причём может заходить только в одну, а может и на обе одновременно. И никаких GCLK-сетей по пути нет. То есть jitter должен быть хороший. Ковыряю дальше... В принципе видна задумка тех, кто железо делал. Скорее всего все пути есть, но увы - Quartus писали программисты, хоть и продвинутые. :)