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

DmitryR

Свой
  • Постов

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

  • Посещение

Весь контент DmitryR


  1. Времянка естественно проверена. А если бы даже и нет (допустим, у меня неполностью описаны констрейны) я не вижу как введение сигнала sclr у сгенерированной мегафункции может чудесным образом исправить времянку.
  2. Я привык считать, что вне зависимости от настроек компилятора (то есть даже в случае, когда установлена опция "PowerUp do not care") все триггеры ПЛИС после инициализации всегда находятся в детерминированном состоянии. То есть эта опция даёт свободу компилятору присваивать триггерам начальное значение 0 или 1 для оптимизации, однако триггер будет в любом случае инициализирован. Однако сейчас я в проекте наблюдаю следующее. У меня есть FIFO, сгенерированное визардом. Сигнал SCLR не сгенерирован, "PowerUp do not care" включено. Ставлю SignalTap на внутренние счётчики FIFO, включаю power-up trigger в SignalTap. Нормально эти счётчики на момент инициализации имеют нулевое значение, но один раз на несколько сотен загрузок счётчик чтения инициализируется единицей. Соответственно счётчик чтения обгоняет счётчик записи, и FIFO становится неработоспособным. Я конечно напишу об этом в Спортлото (то есть Альтере), но думаю, что они мне скажут генерировать sclr, и на этом вопрос закроется. Мне же интересно: получается что в принципе ПЛИС стартует в недетерминированном состоянии, вопреки документации. И у меня пол-года назад был похожий случай в другом проекте, когда я не инициализировал триггер явно, но заложился на его нулевое значение при инициализации, и в результате проект один раз из ста не работал. Кто что скажет?
  3. Я не могу так сделать. У меня есть элементы с разными открытиями масок, и я не хочу весть проект делать с Clearance, ограниченным элементами с самым большим открытием.
  4. Мне видится, что эти параметры задают только минимумы. А у меня например Clearance стоит 6mil, у компонента открытие маски 8mil. Проводник спокойно выходит в открытие, а никакие правила не срабатывают.
  5. Скажите пожалуйста, как настроить правило DRC. Чтобы выдавалась ошибка, если проводник, не подключенный к контакту, попадает в его (контакта) открытие маски (что грозит КЗ при пайке)?
  6. Нет, я ими не занимался с тех пор. Процесс разработки у них на сайте описан довольно подробно, и можно свободно взять инструменты на месяц попробовать и посмотреть, что там к чему. NRE я не помню, да и тогда у меня информация была только по 90nm, а сейчас уже 45nm есть.
  7. Мне http://www.easic.com кажется более интересным. И работают они давно, и минимальные партии поменьше, и по процессу они впереди на шаг.
  8. Я бы ещё посмотрел PRAM - она уже бывает подходящих вам размеров, и выдерживает миллион перезаписей.
  9. Ресурс NAND очень различается в зависимости от типа. SLC, которые хранят по одному биту в ячейке, выдерживают тоже сто тысяч записей. Сектор там 528 байт. Кажется туда помещается 512 байт, завёрнутые в код Рида-Соломона, исправляющий две ошибки. Как мы конфигурили Рида-Соломона под чётное число символов - не помню, кажется извращались с длиной символа. Поэтому если вам не надо делать SSD (то есть иметь неограниченный лимит записи) то вероятно вы без перемещения секторов сможете обойтись.
  10. DDR - это просто мегафункция, ddio_out. Реализует вывод по двум фронтам. Чтобы триггеры загнать в лапы - в Assignmebt Editor используйте Fast output trigger on. Ну и в документации почитайте, что это такое.
  11. Это тоже неправильно. Данные у вас выходят с регистра, клок - с выхода PLL, пути разные. Данные, которые захлопнуты фронтом клока выйдут на лапы совершенно необязательно одновременно с фронтом этого клока. Надо делать так: данные выпускать как у вас (только констрейнами загнать эти триггеры в лапы), а клок выдавать через DDR триггер, на который подан сам клок, на верхний триггер подана всегда 1, а на нижний - 0 (или наоборот, в зависимости от необходимой фазы). Таким образом времянка прохождения данных и клока становится строго одинаковой (и то, и то идёт с триггеров в лапах).
  12. Посмотреть, что этих гармоник нет на выходе генератора. Посмотреть соотношение фаз частот ADA_DCO и sys_clk. Пропустить ADA_DCO через 1:1 PLL в source-synchronous режиме, ибо АЦП выдаёт клок одновременно с данными, а в FPGA у них пути совершенно разные, поэтому компенсация как минимум не повредит. Я последнее: я у вас нигде что-то не вижу, где формируется тактовая частота DAC.
  13. У Zynq значительно шире выбор корпусов, больше памяти на кристалле (256кБ против 64кБ), больше кэш (512кБ против 256 кБ), выше тактовая частота процессора. У Altera SoC гибче взаимодействие процессора и FPGA (FPGA и CPU полностью независимы, с раздельным питанием) и ниже цена.
  14. Мы расположены в Германии. Посему брали мы у Arrow EU напримик чуть ли не первые поступившие образцы, и они же провели у нас на фирме выездной семинар.
  15. Мы уже купили и даже посетили тренинг-семинар. Мне нравится, по соотношению цена/качество действительно хороша. Но если у вас нет жёсткой привязанности к Альтере - я бы Xilinx тоже посмотрел обязательно, так как у их Zynq есть как недостатки, так и преимущества.
  16. Ещё надо будет разобраться с: - тактированием и сбросом CPU и шины (у меня помню чуть не неделя на это ушла) - подключением памяти программ и данных. А почему такой древненький камень выбрали? Ныне есть FPGА с Cortex-А9 ядром (или двумя) и с большим количеством аппаратной периферии заодно.
  17. Есть работающий дизайн, использующий двунаправленные выводы. Анализировал его на предмет применить в другом проекте и обнаружил, что у меня неправильно сделано управление OE, то есть буферы всегда стоят в разрешении выдачи. Протёр глаза, поставил Signaltap на Postfit - убедился: да, всегда стоят на выдачу. Однако дизайн работает. У коллеги была версия, что просто выходное сопротивление подключенной снаружи микросхемы намного ниже выходного сопротивления FPGA (у которой ограничение тока 8mА). Но я померял напряжения на линии в момент статического состояния шины - они совпадают с питающими до четвёртого знака. Вопрос: как такое может быть?
  18. А вы ищите не в описаниях плат, а в даташитах на FPGA.
  19. Надо из PLL вывести прямой и инверсный сигналы и мультиплексировать их специальным мультиплексором. В Альтере примитив называется clkmux, например.
  20. Отнюдь. Или вы предлагаете DIMM, например, тоже оторвать и бросить? Там по 8 чипов на одном контроллере.
  21. Полностью лишённая смысла работа: вы смоделировали одно, а сделали по-другому. Звон бы увидели в линии, сталии бы искать причины и поняли бы.
  22. Не надо нигде брать, терминация делается на существующих линиях. Чаще всего проходные резисторы помогают, особенно на таких низких частотах. Как так она не работает? Она работает, просто в Cyclone её нет. Поэтому надо делать две модели: передача от ПЛИС к памяти, с включённой ODT (это отдельная модель в IBIS памяти), передача от памяти к ПЛИС (с выключенной ODT, это другая модель).
  23. Можно конечно. Надо только не забыть в трансивере 8b/10b отключить.
  24. Это легко, резисторными сборками :) Ну и конечно надо моделировать плату, такие вещи сразу бы вылезли.
  25. Вы посмотрите сначала, какие ПЛИС имеют внутри PCIe root и сколько они стоят. IMHO не очень хорошая идея: root нужен реже, чем endpoint, и можно существенно сэкономить, сделав endpoint на дешевых чипах, благо endpoint есть даже в Циклонах. А так у вас вся партия будет на дорогих ПЛИС, поддерживающих root.
×
×
  • Создать...