советы по проектированию печатной платы FPGA

9

Я планирую разработать собственную печатную плату FPGA. PCB будет содержать датчики. Мне нужно прочитать выходные данные датчиков и обработать их в процессоре. Я выполнил множество проектов с использованием ПЛИС, но это будет мой первый нестандартный проект, в котором я должен также учитывать конфигурацию оборудования. В последнее время я проводил исследования, но мне все еще трудно начинать с какой-то точки. Поэтому я прошу вас помочь мне и другим людям, которые хотят разработать свою собственную ПЛИС, какие моменты они должны учитывать на каждом этапе. Существуют ли книги / онлайн-ресурсы, которые могут помочь нам в этом процессе? Я также сделаю документ после того, как закончу свой проект, чтобы люди могли его использовать.

Омид
источник
Возможно, вам следует упомянуть физический размер ПЛИС, который вы планируете использовать, количество контактов, требуемое напряжение питания, ...
Дзарда
Они еще не указаны. Может быть, мой вопрос был неясным, но я ищу руководство.
пропущено
Хорошо, достаточно справедливо.
Дзарда
Этот вопрос не по теме
Roh
4
Большой вопрос заключается в том, хотите ли вы использовать пакет BGA или собираетесь ограничиться подмножеством предложений (и сниженных электрических характеристик), доступных в удобных для ручной обработки пакетах TQFP. Далее, вы надеетесь направить все свои материалы и сигналы на два уровня (сложно, но возможно для ограниченных целей) или вы хотите использовать 4 или более? Как быстро ваши сигналы датчика? С какой скоростью вы надеялись проверить внутреннюю логику? У вас есть какой-нибудь чувствительный к шуму аналог? Рассматривали ли вы создание дочерней платы для использования с существующей платой FPGA?
Крис Страттон

Ответы:

11

В моей компании мы ранее проектировали несколько пользовательских плат FPGA и недавно начали использовать коммерческие готовые ("COTS") платы FPGA с настраиваемыми дочерними платами FMC.

Стадия прототипа

Если вы все еще находитесь на ранней стадии определения проекта, запланируйте покупку хотя бы одной платы COTS FPGA для создания прототипа. Вы можете подключить один из ваших датчиков к разъемам ввода / вывода и быстро проверить концепцию. Это дает вам представление о том, как может работать проект при масштабировании на множество датчиков, и оцените, сколько вы можете поддерживать с данной ПЛИС.

Если FPGA слишком маленькая или слишком медленная или инструменты не подходят для этой работы, на этом этапе легко заменить другую FPGA COTS. (Ну не легко, но, по крайней мере, управляемо ...)

Если прошивка не работает на этом этапе, это, очевидно, из-за проблемы прошивки, а не из-за ошибки пользовательского проектирования печатной платы. При использовании специальной прошивки и настраиваемой печатной платы иногда трудно определить, какая сторона виновата в проблеме.

Настраиваемая плата FPGA по сравнению с коммерческой платой FPGA

Проектирование собственной платы FPGA имеет смысл, если проект будет иметь короткий жизненный цикл, большую громкость или требует меньшего форм-фактора, чем вы можете достичь с помощью платы COTS FPGA и плат расширения PMOD или FMC.

Если жизненный цикл проекта превышает срок службы чипа памяти DDR (пару лет), то лучшим вариантом может стать разработка настраиваемой дочерней платы FMC.

Стоимость является фактором в этом решении. Большинство плат COTS FPGA несколько общего назначения, разработанные для максимальной гибкости. Если вы производите крупногабаритный, чувствительный к стоимости продукт, то, вероятно, стоит сделать нестандартный дизайн; но для малой громкости вам, вероятно, лучше сконцентрироваться на создании дочерней карты.

Независимо от того, какой подход вы выберете, существуют определенные интерфейсы, которые требуют четкой, основной документации: на интерфейсе между ПЛИС, предназначенным для верхнего уровня выводов ввода-вывода и остальной платы, и на интерфейсе разъема между платами. Это места, где расположение контактов, имена внутренних сетей и имена внешних сетей иногда не совпадают и меняются местами. В таблице достаточно документации; не забудьте сохранить эту интерфейсную таблицу версионной и под контролем исходного кода. Перед отправкой файлов PCB в производство, распечатайте копию этой интерфейсной таблицы, копию схемы и копию отчета о контактах / площадках ПЛИС. Перетащите маркер через бумаги, чтобы отметить каждый сигнал, соединяет, где это должно.

Что касается соединителей, я выучил сложный способ создания механического «системного чертежа», который показывает и платы, и соединительные разъемы вместе на одном, размерном чертеже. Сначала я был сожжен системой разъемов VME, где контакт «A1» на одном разъеме не соответствовал контакту «A1» на другом разъеме. Я также видел, как дизайнеры забыли, что пара прямоугольных разъемов приводит к зеркальному соединению (90 градусов + 90 градусов = 180 градусов). Это было проблемой, когда я отвечал за материнскую плату, а несколько других руководителей проектов отвечали за различные дочерние платы.

Пользовательские советы по платам FPGA

Начните с «эталонного дизайна» от производителя ПЛИС, а затем пропустите те части, которые не требуются для вашего приложения. Не удаляйте обходные конденсаторы из ПЛИС и не пытайтесь избежать использования меньшего количества слоев печатных плат. Обратите внимание на стопку слоев (часто встречается рядом с чертежом сверла); Компоненты с мелким шагом обычно используют 0,5 унции меди вместо стандартной толщины 1 унции медной фольги.

Пакет BGA - это боль, с которой работать. Доходность никогда не бывает такой же хорошей, как с пакетами TQFP или TQFN, и переделка BGA практически невозможна. Даже проверка на наличие проблем со сборкой требует рентгеновского сканера. Обязательно используйте поставщика услуг по контрактному производству, которому вы доверяете.

Источники питания всегда сложны при работе с платами FPGA. Фактические требования к питанию FPGA очень сильно зависят от потока битов конфигурации. Xilinx предоставляет инструмент «оценки мощности», но оценка действительна только после завершения прошивки. При последней смене прошивки существует риск, что требования к питанию превышают ожидаемые. Планируйте оставить некоторую поставку текущей маржи. Если первоначальная оценка мощности говорит о том, что вам нужно 560 мА, используйте регулятор 1000 мА. Дополнительный доступный выходной ток не причиняет вреда, но недостаточный выходной ток приведет к нарушению работы системы.

Если есть какие-либо незафиксированные выводы ПЛИС, выведите как можно больше заголовков. Когда есть проблема, эти незафиксированные контакты становятся ценным диагностическим ресурсом для исследования сигналов внутри FPGA.

Марку
источник
11

Я разработал более десятка плат на основе ПЛИС, в которых использовался широкий спектр различных типов ПЛИС: от маломощных Lattice Mach X02 до высокопроизводительных Virtex 6 с 24 каналами SERDES. Обычные шаги, которые я выполняю:

Найдите плату COT (похожую на MarkU) и получите общее представление о внутренних ресурсах FPGA, которые вам понадобятся, в частности, я обращаю внимание на:

  • LUT (посмотрите таблицу)(подходит ли дизайн к LUT на эталонной плате?) Если у вас нет ресурсов или исчерпывающего метода для определения точной оценки использования LUT (точность <1K LUT), потому что, возможно, проект не закончен. Используйте это правило. Если проект почти завершен, возьмите его размер (количество LUT) и найдите FPGA как минимум на 30% больше LUT. если дизайн не близок к завершению, увеличьте LUT на 50% или 100%. Поэтому, если конструкция соответствует 9K LUT, обязательно используйте FPGA с 12K LUT или более. Я склонен к перегибам и, вероятно, достигну 25 тыс. LUT. Это избавит вас от мучительных головных болей позже. Кто бы ни вводил в эксплуатацию этот дизайн платы, он должен понимать, что в этом дизайне должно быть не одно вращение, поэтому вполне понятно, что размер первой версии ПЛИС слишком велик.
  • BRAM (количество блоков RAM):Определите, требует ли ваш дизайн больше ресурсов памяти, чем у вашей FPGA. Сначала это легко упустить из виду, но в проекте вы склонны использовать блочную оперативную память по разным причинам (ПЗУ, FIFO и т. Д.). Я исчерпал блочную память в проекте и попытался использовать распределенную ОЗУ (используя LUT в качестве ОЗУ ) и он съел все мои LUT очень быстро. Важно определить, потребуется ли вам внешняя память. Это создает большой риск для дизайна, потому что, если дизайн требует какого-либо уровня производительности, вы можете '
  • Перечислите все стандарты сигнализации и возможные уровни напряжения, которые вы будете использовать: Это важно, потому что некоторые стандарты сигнализации, которые вы хотите использовать (LVDS, LVSPEC, LVCMOS), могут иметь ограничения по напряжению. Просмотрите руководства пользователя и убедитесь, что все эти стандарты поддерживаются.
  • Требования к источнику питания:Я сочувствую всем предыдущим жалобам на источники питания меньшего размера, получая заданное напряжение ядра туфом, в последнее время я использовал много модулей TI Nano для больших, но низкоуровневых ПЛИС (Spartan LX45 (T) - LX75 (T) и решетка ECP3). К счастью, вы можете уменьшить некоторые риски при выборе блоков питания, используемых для ввода / вывода. В частности, если этот банк не управляет неизвестным источником (разъем расширения), процесс выглядит следующим образом: найдите все компоненты, к которым будет подключен этот банк, определите входную емкость для всех этих компонентов, определите максимальную тактовую частоту, которую вы используете. будет управлять этими сигналами, тогда вы сможете рассчитать как потребляемую мощность, так и приблизительно оценить потребность в байпасе,

Используя уравнение [P = (1/2) CV ^ 2 * (f)], где C = входная емкость, f = частота. входной сигнал, который должна выполнять ваша ПЛИС (для каждого сигнала!). Вы можете узнать худшую оценку того, сколько энергии требуется для управления всеми выходными сигналами.

Вам также необходимо учитывать потери мощности, связанные с внутренними согласующими резисторами (на основе используемых вами стандартов ввода / вывода).

Я также с большим успехом использую инструмент TI Webbench в последнее время:

TI Webbench (я не работаю на TI)

Schematics:

  • Создайте свою схему с учетом идиота. Вы и все дизайнеры HDL будете часто возвращаться к этой схеме, поэтому каждый сможет быстро найти то, что ему нужно, не требуя от вас или вас в будущем исследовать всю схему, чтобы выяснить это. если контакт 20 является входом часов. Это включает в себя множество заметок на схеме (если возможно), описывают цель схемы, ожидаемый результат и даже проблемы. Поскольку ПЛИС можно разбить на банки, рассмотрите возможность разделения компонента ПЛИС на несколько частей и, возможно, даже выделите целую страницу схемы для отдельного банка.

  • ОСТАВЬТЕ ОГРОМНЫЕ НОСИТЕЛИ В ВАШЕМ СХЕМАТИКЕ, КАСАЮЩИЕСЯ ПОДКЛЮЧЕНИЯ К ПРАВИЛЬНЫМ ПИН-КОДАМ: Я ударился головой о многие стены, когда строил свое первое изображение для дизайна, и получал страшный «сигнал часов, перенаправленный на не-включенный штырь» , Жить в страхе от различных типов контактов на FPGA. Убедитесь, что вы понимаете, что некоторые тактовые выводы предназначены для использования в квадранте FPGA, иначе вы столкнетесь с тем, что все говорят: «Привет, вы знали, что есть определенные тактовые контакты, которые предназначены для использования в квадранте FPGA». Требуется только 15 человек, говорящих вам это, чтобы убедиться, что вы никогда не сделаете это снова.

  • ТРАТИТЕ МНОГО ВРЕМЕНИ НА ДИЗАЙН КОНФИГУРАЦИИ ПЛИС: Убедитесь, что вы вытащили контакты JTAG, даже если вы не планируете их использовать. Это разница между допустимой ошибкой и роковым недостатком.

  • Если есть сомнения, выведите дополнительные кнопки сигналов и светодиоды и DIP-переключатели: я много рассказывал о дополнительной работе, связанной с маршрутизацией дополнительных сигналов на светодиоды заголовков, DIP-переключатели и кнопки, но это всегда помогало.

Макет :

  • Своевременное общение с Fab house: особенно, если вам может понадобиться маршрутизация с контролируемым импедансом, попросите накопить слой для нужного количества слоев. Гораздо проще направить высокоскоростные сигналы, когда сначала определены ширины трасс, а также выяснить, что вы могли бы использовать 6 мил трасс вместо 8 мил трасс для достижения своего сопротивления 50 Ом.

  • Начните с обходных заглушек: разработайте систему питания заранее. Первое, что я делаю, начинаю с того, что помещаю все маленькие колпачки под ПЛИС или рядом с выводами. Более крупные за пределами ПЛИС проложить всю цепь питания и расположить ее примерно там, где я ожидаю. Таким образом, вы не будете бороться с головоломкой и идти на компромиссы.

  • Высокоскоростные сигналы секунды: это те, которые вы не хотите прыгать слишком много слоев.


Я всегда учусь чему-то большему и буду рад любым советам, с которыми сталкиваются другие дизайнеры, поэтому, пожалуйста, добавьте их.

Дейв
источник
6

Я думаю, что хорошей отправной точкой для настраиваемой печатной платы, оснащенной ПЛИС, будут эталонные платы от производителя ПЛИС. Вы можете проверить эти конструкции, например, на предмет источника питания, но имейте в виду, что эталонные платы дизайна иногда бывают меньше. У нас было много проблем с платами Xilinx ML605, потерявшими конфигурацию из-за недостаточного питания.

Ответ на комментарий omid:

Один из моих коллег реализовал алгоритм систолического вычисления на Virtex-6 LXT240. Ввод данных был предоставлен Gigabit Ethernet. Из-за систолического подхода FPGA почти ничего не делала, если во входных данных не было никаких данных, или в основном все триггеры FPGA переключались с частотой 200 МГц, если поступал новый кадр Ethernet. Этот дисбаланс в вычислениях заставил цепи электропитания TI отключить плату ML605, которая могла быть восстановлена ​​только из этого состояния путем переключения главного выключателя питания.

Мы передали эту конструкцию на кафедру электротехники в нашем университете, и они выяснили, что невозможно отрегулировать коэффициенты регулятора на основе установленных конденсаторов.

Да, можно сказать: плохой дизайн или использовать большие пятерки или ...

Решение моих коллег было снижение использования FPGA на 80%.

Тем не менее, макетная плата и эталонный дизайн должны быть способны справляться с экстремальными рабочими нагрузками, особенно если на этой плате установлена ​​FPGA, которая не имеет столь же регулярного энергопотребления, как ЦП.

Paebbels
источник
Можете ли вы объяснить, что вы подразумеваете под "низкорослым", о котором я должен знать?
опущено