Является ли FPGA жизнеспособным для такого проекта?

В настоящее время я работаю над Super OSD - проектом на экране. http://code.google.com/p/super-osd содержит все подробности.

В настоящий момент я использую MCU dsPIC для выполнения задания. Это очень мощный DSP (40 MIPS @ 80 МГц, трех регистровые однотактные операции и блок MAC), и, что важно, он поставляется в пакете DIP (потому что я использую макет для его прототипа). I ' m действительно получает каждый последний бит производительности из него, работая с OSD - на выходе процессора приходится около 200 нс или 10 циклов на пиксель, поэтому код должен быть очень оптимизирован в этой части (по этой причине он всегда будет записан в сборка.)

Теперь я рассматривал возможность использования FPGA для этого, потому что из-за параллельной архитектуры такого чипа можно иметь простую логическую программу, управляющую OSD. Такие вещи, как чертежные линии и алгоритмический код, будут обрабатываться MCU, но фактический вывод будет выполнен с помощью FPGA. И некоторые простые вещи, такие как установка пикселей или рисование горизонтальных и вертикальных линий, которые я хотел бы интегрировать в FPGA, чтобы улучшить скорость.

У меня есть несколько вопросов:

  1. Будет ли это стоить значительно больше? Самые дешевые FPGA, которые я нашел, были ~ 5 фунтов стерлингов каждый, а dsPIC - 3 фунта стерлингов каждый. Так что это будет стоить дороже, но насколько?
  2. dsPIC подходит для пакета SO28. Я бы не хотел больше, чем SO28 или TQFP44. Большинство FPGA, которые я видел, входят в пакеты BGA или TQFP> 100, которые на данный момент не являются опцией из-за размера сдвига и трудности их пайки.
  3. Сколько тока используется ПЛИС? Решение dsPIC в настоящее время потребляет около 55 мА +/- 10 мА, что сейчас хорошо. Будет ли ПЛИС потреблять больше или меньше? Является ли она переменной или она довольно статична, как dsPIC?
  4. Мне нужно как минимум 12 Кбайт графической памяти для хранения графических элементов OSD. У FPGA есть такая память на чипе или это доступно только с внешними чипами?
12 голосов | спросил Thomas O 6 +04002010-10-06T17:26:03+04:00312010bEurope/MoscowWed, 06 Oct 2010 17:26:03 +0400 2010, 17:26:03

5 ответов


6

В принципе это хороший кандидат на дизайн на основе ПЛИС. Что касается ваших требований:

ad 1. FPGA скорее всего будет дороже, насколько это зависит от выбранного вами устройства. На первый взгляд, самый маленький спартанский 3 из Xilinx (XC3S50AN) будет более чем достаточно для этой задачи (~ 10 £ от Farnell). Я думаю, вы можете предположить, что это верхняя граница для стоимости (она имеет внутреннюю память 56 КБ, поэтому вам больше нужно). Вы можете найти более дешевое устройство либо от предложения Xilinx, либо от их конкурентов Altera и Lattice.

ad 2. Пакет - непростая проблема, я не видел FPGA с меньшим размером. Однако, возможно, вы можете использовать устройство CPLD (для аргумента CPLD - небольшие FPGA), которые могут быть в меньшем пакете (PLCC или QFN). С положительной стороны они будут дешевле (даже одиночные $) на отрицательной стороне, скорее всего, не будут иметь RAM внутри. Вероятно, с CPLD вам понадобится внешний чип SRAM.

ad 3. FPGA и потребление тока CPLD сильно зависят от запрограммированного дизайна. Однако есть хорошая вероятность, что FPGA и особенно дизайн CPLD будут потреблять меньше, чем ваше текущее решение.

ad 4. У FPGA есть такая память внутри, CPLD, безусловно, нет. Это может быть решено внешним чипом sram (или двумя). Например:

| SRAM 1 | & Lt; - > | CPLD | & Lt; - > | УНЦ |
| SRAM 2 | & Lt; - >

В такой компоновке, когда uC записывает в SRAM 1, CPLD будет отображать данные из SRAM 2. CPLD должен иметь возможность обрабатывать обе задачи одновременно.

Конечно, вы можете решить это и другими способами:
1) используйте более быстрый uController (например, ARM)
2) используйте устройство с некоторой программируемой тканью и uC внутри (например, FPSLIC от Atmel, однако я никогда не использовал такие устройства, и я об этом мало знаю)

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

ответил mazurnification 6 +04002010-10-06T19:01:27+04:00312010bEurope/MoscowWed, 06 Oct 2010 19:01:27 +0400 2010, 19:01:27
4

Вы можете использовать CPLD, а не FPGA, например, одну из частей Altera MAX II. Они доступны в пакетах QFP44, в отличие от FPGA. Они на самом деле небольшие FPGA, но Altera играет в этом аспекте. CPLD имеют преимущество перед большинством FPGA в том, что они имеют встроенную конфигурационную память, для FPGA обычно требуется внешний флеш-чип. Конечно, есть другие CPLD, но мне нравится MAX II.

Невозможно сказать, каково будет текущее потребление, поскольку оно зависит от тактовой частоты и объема используемой логики.

FPGA обычно имеют ограниченное количество встроенной памяти, которую вы можете использовать, но вам потребуется внешняя память с CPLD.

Другим вариантом будет XMOS , но самый маленький (XS1-L1) находится в QFP64. Он имеет множество встроенных RAM - 64k.

ответил Leon Heller 6 +04002010-10-06T18:24:53+04:00312010bEurope/MoscowWed, 06 Oct 2010 18:24:53 +0400 2010, 18:24:53
2

1) Да, FPGA будет дороже. Не только сам чип стоит дороже, но вам также потребуется флэш-память для сохранения программирования. FPGA + Flash, вероятно, в 3 раза дешевле только для dsPIC ... около $ 10 для небольшой FPGA и $ 3 для небольшой Flash.

2) Они могут существовать, но я не знаю ни одного FPGA, который не является поверхностным монтированием. Большинство из них, вероятно, QFP или BGA.

3) FPGA, вероятно, потянет примерно на 3 раза ток, который делает dsPIC, но может идти вверх или вниз в зависимости от того, какие функции вы используете. ПЛИС имеют много функций, которые могут увеличить мощность. Но ожидайте не менее 150 мА.

4) У FPGA обычно есть блок RAM внутри них. Все, кроме наименьших FPGA, должны иметь столько памяти.

Другие упоминают CPLD. Если вы тщательно разделите свой дизайн, вы, вероятно, можете перенести некоторые небольшие, но дорогие операции в CPLD. Это будет похоже на мини-сопроцессор.

ответил ajs410 6 +04002010-10-06T22:58:38+04:00312010bEurope/MoscowWed, 06 Oct 2010 22:58:38 +0400 2010, 22:58:38
2

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

Программирование FPGA /CPLD в VHDL /Verilog - довольно крутая кривая обучения, исходящая от C для многих людей. Они также не являются слишком дешевыми деталями.

Используя прилично способный ARM, возможно, LPC1769? (cortex-M3), вы также, вероятно, сможете заменить PIC18 в своем дизайне.

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

ответил Mark 6 +04002010-10-06T23:15:03+04:00312010bEurope/MoscowWed, 06 Oct 2010 23:15:03 +0400 2010, 23:15:03
1

Моя склонность заключалась в том, чтобы использовать что-то, чтобы задержать синхронизацию между процессором и дисплеем. Наличие оборудования, которое может отображать весь кадр видео без вмешательства процессора, может быть приятным, но, возможно, излишним. Я бы предположил, что лучший компромисс между сложностью аппаратного и программного обеспечения, вероятно, состоял бы в том, чтобы сделать что-то с двумя или тремя независимыми 1024-битными регистрами сдвига (два бита на пиксель, чтобы обеспечить черный, белый, серый или прозрачный) и средство переключения между ними. Попросите PIC загрузить сдвиговый регистр, а затем переключите аппаратное обеспечение на одно, пока он устанавливает флаг, чтобы ПОС мог загрузить следующий. С двумя регистрами сдвига ПИК будет иметь 64us между временем, когда говорят, что имеется сдвиговый регистр, и время, когда все данные должны быть сдвинуты. С тремя регистрами сдвига ПИК должен был бы усреднять одну линию каждые 64us, но он мог переносить задержку до 64us.

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

Альтернативным подходом было бы подключение CPLD к SRAM и создание с ним простой видеоподсистемы. Эстетично, мне нравится генерация видео на лету, и если кто-то сделал хорошие дешевые 1024-битные чипы с регистрами сдвига, это подход, который я бы одобрил, но использование внешней SRAM может быть дешевле, чем использование FPGA с достаточными ресурсами для сделать несколько 1024-битных регистров сдвига. Для вашего разрешения вывода необходимо будет синхронизировать данные со скоростью 12M пикселей /с или 3MBytes /sec. Должно быть возможно организовать вещи, позволяющие синхронизировать данные со скоростью до 10 Мбит /с без особых трудностей путем чередования циклов памяти; самый большой трюк будет предотвращать повреждение данных, если синхроимпульс не достигнет ожидаемого момента.

ответил supercat 25 FebruaryEurope/MoscowbFri, 25 Feb 2011 21:15:34 +0300000000pmFri, 25 Feb 2011 21:15:34 +030011 2011, 21:15:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132