FPGA

FPGA  (Field-Programmable Gate Array) — программируемая логическая интегральная схема (ПЛИС), конфигурация которой может быть загружена после включения питания. Большинство FPGA не имеют встроенной энергонезависимой памяти, поэтому повторное включение устройства требует повторной загрузки конфигурации FPGA (информация объёмом от сотен Кбайт и более).

Некоторые устройства, например E20-10 (ревизий A и B), требуют явной загрузки FPGA от компьютера (загрузка реализована в библиотечных функциях для этого изделия, которые используют программисты, и для пользователя ПО этот процесс незаметен). А в некоторых устройствах (E20-10 ревизии C, LTR25, LTR35) реализован автоматический процесс загрузки FPGA из flash-памяти этого устройства, при этом, прошивка во flash-памяти этих устройств может быть обновлена с помощью специальной утилиты (в рамках выпуска "ООО Л Кард" штатных обновлений прошивок). 

Наличие в изделии FPGA означает феноменальную гибкость логики этого изделия (в большинстве случаев это заводская возможность коррекции логики работы устройства без проведения каких-либо электромонтажных операций, позволяющая учесть потребности потребителей). Ресурсы современных FPGA (даже младших в выбранном семействе) уже позволяют реализовывать сложнейшие алгоритмы, в том числе, алгоритмы ЦОС.

Возможность создавать на основе FPGA многоканальные системы параллельной обработки данных с гарантированной логической независимостью процессов обработки данных (в сочетании с высокой надёжностью самих FPGA) создаёт серьёзную альтернативу сигнальным процессорам (DSP) и ARM в высоконадёжных задачах управления и контроля. Вместе с тем, в мире явно ощущается и обратная тенденция – реализация средствами FPGA процессоров и контроллеров с масштабируемой архитектурой.

Для описания и верификации проектов на основе FPGA используют языки высокого уровня, такие как VHDL и  Verilog. Возможна интеграция проектов на языках С, C++, System C (на других путях программирования FPGA остановимся ниже).  Описание проектов на языке высокого уровня обеспечивает хорошую переносимость проекта между разными FPGA и между разными средами проектирования.

Отдельно остановимся на термине "версия прошивки" FPGA (или CPLD), который встречается в пользовательской документации на электронные приборы. Этот термин имеет исторические корни, поскольку первые  программируемые логические устройства (PLD) начинались с технологии пережигаемых перемычек, и сами эти устройства обладали крайне низкими  логически возможностями, по сравнению с современными программируемыми матрицами. И когда современные FPGA для специализированных задач уже перекрывают процессоры по быстродействию и функциональным возможностям, то возникает соблазн применить термин "версия ПО" к версии логической конфигурации, загружаемой в FPGA. Однако, по-прежнему, эту логическую конфигурацию следует называть "прошивкой", поскольку речь идёт о параллельной топологии логических взаимосвязей ячеек FPGA, которая скорее ближе к электрической схеме, чем к выполняемым инструкциям процессора, когда говорят о ПО. Уже вполне реальна реализация процессора в FPGA, и в этой ситуации оба термина  "версия прошивки" FPGA и "версия ПО процессора в FPGA" вполне оправданы и применимы к разным частям FPGA в рамках одного изделия, поскольку обе эти версии могут обновляться независимо друг от друга.

Важно отметить, что в понятие "версия прошивки" FPGA входит не только вариант реализованной "логики", но и температурный диапазон FPGA, для которого была скомпилирована данная прошивка.  Типично, прошивки "индустриальных" FPGA c температурным диапазоном -40...+85 °С и "коммерческих"  (0...+85 °С) будут разными для одной и той же функциональной логики.

К программному или аппаратному обеспечению следует относить саму прошивку FPGA (или CPLD) и проект этой прошивки в какой-либо среде программирования?

Подобный вопрос может возникнуть, например, при согласовании технического задания. Рассматривая уровни программных и аппаратных средств обобщённой пользовательской системы, мы видим, что прошивки FPGA (или CPLD) фактически находятся между сущностями HARD и SOFT. Это означает (исходя из сказанного выше), что тот уровень прошивки, в котором реализована "жёсткая логика" с параллельной топологией взаимосвязей ячеек FPGA и учётом физических задержек распространения сигнала (наподобие электрической схемы), очевидно является аппаратным уровнем (HARD). А тот уровень прошивки, в котором рассматривается программа процессора, реализованного в FPGA, очевидно является программным уровнем системы. Подразумевается, что логика работы  рассматриваемого процессора должна быть основана на последовательно исполняемом программном коде, который может быть изменён (перепрограммирован) без модификации физического уровня проекта.

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

Для специалистов перечислим ниже альтернативные1) пути подготовки проектов FPGA:

1) Под "альтернативными" подразумеваются среды проектирования, альтернативные традиционным. К традиционным можно отнести среды проектирования от производителей FPGA, CPLD или от фирм, специализирующихся на задачах верификации проектов.


По данной теме также читайте:

 

Перейти к другим терминам       Cтатья создана:09.07.2014
О разделе "Терминология"      Последняя редакция:12.02.2020

Пример использования термина

Термин используется при описании принципа действия различных модулей сбора данных, например, модулей производства OOO “Л Кард”.

Модуль АЦП осциллографический
2 канала, 14 бит, 10 МГц

LTR210

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25
Факс: +7 (495) 785-95-14

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск