FPGA. Первые шаги. Как начать работать с программируемыми логическими интегральными схемами (плис)

FPGA. Первые шаги. Как начать работать с программируемыми логическими интегральными схемами (плис)

Наше повествование о разновидностях ЦАПов было бы неполным без упоминания FPGA-модулей. Не всякий ЦАП может быть FPGA, но всякий FPGA может побыть ЦАПом. Уже запутались? Ничего, надеюсь, дальше будет проще.

До сих пор цифро-аналоговым преобразованием (т.е. переводом двоичного кода в ток либо напряжение) занимались вполне определенные устройства, работающие по R-2R либо дельта-сигма алгоритму. Если вам захочется включить в процесс новое логическое звено (например, мастер-клок), традиционному чипу ЦАПа понадобится внешний дискретный элемент. А вот для FPGA-архитектуры этого всего не надо, логическое звено «припаивается» виртуально.

Поле логических вентилей

FPGA расшифровывается как Field-Programmable Gate Array и называется по-разному - и программируемая вентильная матрица, и программируемая логическая интегральная схема (ПЛИС), но суть ее одна. Строго говоря, ПЛИС не является процессором, которому нужно прописывать набор определенных инструкций. Это чистое поле так называемых «логических вентилей», где вы строите свою электронную схему собственно «процессора». Вот здесь можно от души кувыркаться с самой смелой разрядностью хоть 128 бит, идеальными пост-фильтрами и другой обработкой звука. И все это на очень приличной скорости вычисления и без дополнительных высокочастотных помех, присущих дискретным цепям.


Первые коммерческие образцы FPGA появились в середине 80-х благодаря компании Xilinx, она же до сих пор сохраняет лидерство на рынке. В аудиопромышленности более всех прочих с конверторами на базе ПЛИС ассоциируются источники Chord Electronics. Как там говорят - «никого не оставляет равнодушным»? Не хочется повторяться, но деваться некуда.

Компоненты Chord действительно своеобразны. Они одними из первых в усилителях перестали стесняться импульсных блоков питания и класса D, да и дизайн у них такой, чтобы вывести любителя классического винтажа из равновесия. Словом, все кто верует в правильность поступи технического прогресса, следует сверять часы по Chord Electronics. Сверим их и мы по топовому фирменному ЦАПу DAVE, который вот-вот должны презентовать официально.

Знакомьтесь: DAVE

Внешне для поклонников (да и ненавистников) марки, в принципе, ничего нового: крепенький алюминиевый корпус в индустриальной отделке, болты, мехобработка, вот это вот все. Раньше в подобных устройствах Chord Electronics в круглом «окне» можно было рассмотреть на тот момент диковинку - собственно FPGA плату. Сейчас в DAVE (акроним Digital to Analog Veritas Extremus) используется Xilinx Spartan 6 версии LX75. Это не самая мощная в мире ПЛИС - существуют модели и больше, и даже дороже самого Chord DAVE, стоимость которого в Англии составляет невялые восемь тысяч фунтов. Но в мире аудио Spartan 6, определенно, самая продвинутая на текущий момент платформа.

Но, как уже упоминалось, это только поле. Что на нем засеяно? Алгоритм Chord DAVE использует 166 DSP-ядер и КИХ-фильтр на 164 тысячи отсчетов с коэффициентом 256 fs - скорость обработки звука доселе неслыханная на компонентах, использующих самые топовые ЦАПы. Так что теперь на месте окна у DAVE расположен цветной дисплей, потому что область интересов у современного конвертера определенно расширилась.


ЦАП Chord DAVE

Во-первых, помимо основного предназначения устройство можно напрямую подключить к оконечнику, так что знать уровень сигнала будет не лишним. Управлять им можно со штатного пульта ДУ для всей линейки Chord, правда, не очень-то презентабельного вида для устройств данной ценовой категории. Что касается коэффициента усиления, вообще следует иметь в виду, что и раньше на линейных выходах источники Chord Electronics имеют повышенные относительно стандартного уровни выходного напряжения 3 и 6 Вольт, на RCA и балансных выходах соответственно.

Это особенно важно при сравнении DAVE с другими конвертерами на соседних входах усилителя. Без выравнивания уровня более громкий источник всегда субъективно покажется более уверенно звучащим. Также следует упомянуть опцию усиления для наушников с практически полным охватом импеданса от 8 до 800 Ом, чего раньше не было в топовых источниках Chord Electronics. И, кстати, об импедансе. Не все производители считают за труд упомянуть этот важный параметр согласования между источником и усилителем, но у DAVE это значение на выходе (0,0055 Ом) практически стремится к нулю.

Помимо цены и пульта дистанционного управления в Chord DAVE очень может раздражать отсутствие маркировки на входных разъемах, тем более, что часть из них выполнена на BNC, что может сбить с толку пользователя, который не любит читать мануалы.

Итак, вместо привычной разводки на «тюльпане», мы имеем четыре коаксиала BNC, плюс столько же на выходе. «Тюльпаны» здесь используются только для небалансных выходов. И в самом деле, если бы эти цифровые разъемы были выполнены на RCA, и все это без разметки задней панели, хаос с коммутацией только бы крепчал. Но если серьезно, то выбор BNC в данном случае не просто прихоть, а необходимость реализации так называемого Dual Mode - это когда цифровой поток передается по двум веткам с уменьшенной вдвое частотой дискретизации. Также присутствуют пара оптики TosLink и AES/EBU входы. Самое же интересное сейчас, что умеет делать конвертер через USB-вход.


Тыловая панель Chord DAVE

Вот здесь становится понятно, для чего был нужен электронный дисплей. Если по коаксиальным входам верхний предел частоты дискретизации был «всего» 384 кГц, то здесь уже вдвое больше 768 кГц плюс поддержка DSD вплоть до DSD512. Чтобы понимать, что такое DSD512, напомним, что на SACD уложен так называемый DSD64 с частотой 2,8 МГц, что в восемь раз меньше. Конечно, подобные фонограммы пока представлены единицами, и вряд ли эта затея вообще выберется дальше загородки для аудиогурманов, но суть в том, что концептуально архитектура FPGA подразумевает перенастройку преобразования хоть под DSD1024, которого еще не существует в природе. Производитель указывает, что коаксиальные выходы способны поддерживать дискретизацию до 768 кГц в связке с некими неназванными продуктами Chord в будущем. Собственно, за это и просятся деньги - не столько за вычурный дизайн (хотя и за это тоже), сколько за аутентичный софт, который позволяет гибко управлять инструментами обработки сигнала.

У DAVE данные инструменты представлены отключаемым ультразвуковым фильтром на 60 кГц, а также режимами PCM+ и DSD+. Производитель отмечает, что в любом из них возможно воспроизведение обоих форматов, но все-таки оптимизация выполнена под что-то одно. Не забыты и старинные опции вроде смены фазы или фильтра для компакт-дисков с пре-эмфазисом. Это же программный алгоритм, здесь все можно предусмотреть.

Мягкость на гиперскорости

По отзывам первых слушателей, в непосредственной работе DAVE производит благоприятное впечатление. В свое время, надо признаться, ЦАПы Chord могли смутить слишком напористым «квадратным» саундом, но сейчас многие слушатели DAVE отмечают его весьма деликатную, атмосферную подачу и, что немаловажно, - толерантность к огрехам музыкального материала.

Данное впечатление, вероятно, основано на двух технических моментах.

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


ЦАП Chord DAVE

Хотите - верьте, хотите - нет, но не секрет, что львиная доля так называемой плавности звучания старой аудиотехники обусловлена в том числе и низким быстродействием сигнальных цепей. В противовес им более современные цифровые решения звучат вроде бы прозрачнее и чище, но нередки жалобы на потери текучести саунда, он становится пустоват.

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

И если аудиобудущее окажется именно таким, каким его сегодня представляет Chord DAVE - на очень быстрых FPGA с продвинутыми алгоритмами фильтрации, то братцу-слухачу определенно бояться нечего. Разве что придется привыкать к алюминиевым «крабам» на полке.

Другие материалы цикла .

В силу своей профессиональной деятельности мне приходится очень тесно работать с программированием микроконтроллеров и FPGA. Но если освоение МК более-менее подвластно даже домохозяйке, то с FPGA могут возникнуть некоторые сложности. Именно о подводных камнях и взгляде на них сверху и хотелось бы рассказать.

Для воплощения в жизнь первых двух шагов подойдет связка ISE (он же Project Navigator) + ISim (симуляция) + Impact (прошивка FPGA).

Шаг 3. Старый добрый микроконтроллер

Иногда ну просто очень хочется чего-нибудь приятного… Пожалуйста, вспомним о SoC (System-on-Chip) - системе на кристалле. В нашем случае, это процессор, шина, память и куча всякой периферии. Можно попытаться сделать самому подобную систем (см. шаг 2), можно прикрутить найденные IP Cores на просторах интернета. Но зачем же изобретать велосипед? Умными ребятами из конторы Xilinx уже придуманы софт-процессоры PicoBlaze и MicroBlaze. Первый - это восьмиразрядный процессор, который морально устарел, уже давно не внедряется в SoC и имеет открытый исходный код. Второй же, MicroBlaze, имеет неплохие перспективы: 32 разряда, RISC-архитектура и т.д, и т.п.
В качестве памяти может быть использована как внешняя память, подключаемая к FPGA, так и внутренняя, реализованная непосредственно внутри FPGA. Как правило, вторая часто применяется для кеширования инструкций и данных, находящихся в первой. Помимо того, довольно широко используются системы, содержащие более одного процессора и использующие для межпроцессорного взаимодействия специальные модули коммуникации.
Существует гигантская куча всевозможной периферии, которую можно задействовать в огромных количествах - все ограничено лишь ресурсами FPGA. Кроме того, на шину обмена с периферией PLB можно добавить и «самопальные» модули, но только при условии их корректной работы.
На данном этапе важнейшим инструментом является Xilinx Project Stuido (XPS) из состава Emedded Development Kit (EDK), по большому счету именно она на выходе позволяет получить готовый файл аппаратной конфигурации FPGA с размещенной на ней SoC.

Шаг 4. А теперь покодим
Теперь, что же касается написания программы для того же MicroBlaze. В комплекте ПО Xilinx существует Software Development Kit (SDK), позволяющий писать программы на С/С++. Да-да, вы не ослышались, С++ действительно редкость для железок, но не в нашем случае. К слову сказать, SDK у нас Eclipse-based, поэтому тут есть и content assist, и человеческий рефакторинг, и еще вагон вкусных плюшек. Не стоит забывать и про ассемблер: порой иногда вставки на асме бывают очень кстати.
В качестве компилятора используется GCC, заточенный под нужды нашего софт-процессора, возможно использование RTOS под выразительным названием XilKernel, которая, кстати, является POSIX-совместимой. Это значит, что если человек не по наслышке знаком с мьютексами, тредами и семафорами в UNIX-based системах, то разобраться в XilKernel для него не составит и труда.
Шаг 5. Вместо резюме
FPGA - это мощный и гибкий инструмент, который может позволить решить огромное количество задач. Однако, не стоит пытаться забивать гвозди микроскопом - многие задачи прекрасно решаются на тех же микроконтроллерах более дешевыми и доступными способами (Cortex M3, привет!).
Verilog, VHDL, Behavioral, Implementation - эти и многие другие слова могут свести с ума и надолго отпугнуть от разработки с использованием FPGA, однако иногда можно заменить кучу устаревшей рассыпухи с дюжиной древних МК на одну изящную микросхему и при этом получить огромное моральное удолетворение!

ВВЕДЕНИЕ

Обычно, когда кто-то видит функционирующую плату, всегда задают одни и те же вопросы: - Это Ардуино? - А как это работает без Ардуино?

Это не микроконтроллер, это даже не процессор, это ПЛИС. ПЛИС - это программируемая логическая интегральная схема , такая микросхема состоит из множества одинаковых блоков или макроячеек, каждый производитель по своему их называет, так у Xilinx это Slices (ломтики) у Altera - LogicElements (логические элементы). Эти блоки относительно простые, они могут выполнять роль нескольких логических элементов, быть маленькой таблицей поиска (LUT), содержать готовый сумматор, умножитель, блок цифровой обработки сигналов (DSP), в общем все что задумает производитель. Пользователь может по своему желанию расположить и настроить эти блоки как ему захочется, реализовав таким образом достаточно сложные цифровые схемы. На ПЛИС можно реализовать хоть микроконтроллер, реализовав например ту же Ардуино или процессор вашей собственной архитектуры, например не регистровый а стековый процессор, даже свою собственную ПЛИС можно реализовать на ПЛИС!

Из доступных бюджетных ПЛИС можно выделить двух основных производителей Altera и Xilinx, с их продукции можно начать свой путь освоения данных технологий. На мой взгляд лучше выбрать чипы компании Altera, так как их среда проектирования стабильно обновляется, а выбрав один популярный чип Xilinx XC3S500E вам придется довольствоваться устаревшей средой ISE 14.7 (хотя и там есть свои плюсы).

В иностранной литературе можно встретить сокращения для ПЛИС: FPGA и CPLD. CPLD (Complex Programmable Logic Device) - чипы с небольшим числом макроячеек, специализированных блоков и малым энергопотреблением. Большой проект не получится синтезировать для такого типа чипов, но и для них находят применение на практике, так у редкого микроконтроллера найдется, скажем 300 ножек. Такие чипы часто применяют в качестве интерфейсных систем, предобработчиков, расширителей ввода-вывода. FPGA (Field-Programmable Gate Array) - программируемая пользователем вентильная матрица (ППВМ), значительно более мощные чипы по сравнению с CPLD, но потребляющие больше энергии и стоящие значительно дороже. Для уменьшения затрат площади кристалла FPGA чипы могут содержать уже готовые функции, такие как блоки цифровой обработки сигналов (DSP блоки), встроенные процессоры, встроенная память. FPGA широко применяются для проверки и верификации проектов, в так называемой докремниевой проверке пригодности, тем самым уменьшая затраты и время перед выходом продукта. FPGA чипы могут быть переконфигурированы практически в любой момент времени, сейчас ведутся разработки, например в Intel, по совмещению архитектур обычного процессора и чипа FPGA. У Xilinx уже есть такие решения - Zynq, но о них мы пока не будет вести речь.

Разговор пойдет о более простых вещах, тем более ко мне в руки попал набор разработчика: Cyclone IV 4 FPGA Core Board и Altera USB Blaster Downloader PLD Development kit за 35$, приобретенный на AliExpress .

1 Демоплата Cyclone IV 4 FPGA Core Board, краткая характеристика

Рис. 1 - Демоплата Cyclone IV 4 FPGA Core Board

На плате (Рис. 1) установлен чип EP4CE6E22C8N, его характеристики:

Вид ресурса Краткое описание Количество
Logic elements (Les) Число логических блоков - ячеек, основная характеристика, по которым мы можем сравнивать «мощность» чипов, любая синтезированная логика будет затрачивать данные блоки 6,272
Embedded memory (Kbits) Встроенной памяти, пока для нас не важная характеристика 270
Embedded 18x18 multipliers Встроенных аппаратных умножителей, очень важный параметр в цифровой обработке сигналов, вся мощь ПЛИС раскрывается, когда несколько умножителей работают параллельно 15
General-purpose PLLs Узлов фазовой автоподстройки частоты, пока не важная характеристика, упрощает синхронизацию устройств, работающих на разных частотах 2
Global Clock Networks Количество частотных доменов, пока не важная характеристика 10
User I/O Banks Число раздельных пользовательских банков ввода-вывода, пока не важная характеристика 8
Maximum user I/O Число пользовательских пинов ввода-вывода, мы можем подключить любые устройства, как например к Ардуино 91

На плате установлено:

  1. Флэш память – при подаче питания ПЛИС будет сконфигурирована в реализацию во флеш памяти. Вы можете синтезировать свой проект и записать в эту флэш
  2. Кварц 25 Мгц – генератор опорной тактовой частоты, именно на этой частоте будут работать все наши проекты, наша ПЛИС может поддерживать до 10 таких каналов.
  3. Светодиоды – 10, кнопки – 2.
  4. Пины ввода-вывода 61 + 2 земля, 1 не соединен. Можно подключить разнообразные устройства. ЦАП-АЦП, акселерометры и гироскопы, символьный и графические дисплеи, как и у Ардуино.
  5. Питание через USB, или внешнее 5В.

В комплекте также идет программатор JTAG, Altera USB Blaster.

2. Среда Quartus II и наш первый проект

Для работы с данной ПЛИС нам нужно скачать официальную среду разработки - Quartus II Web Edition , она бесплатная. Заходим на официальный сайт http://dl.altera.com/15.0/?edition=web , на момент написания версия 15.0 самая новая, если вышла новее, скачиваем ее.

Выбираем:


Рис. 2 - выбираем необходимые продукты Altera

И жмем кнопку скачать (Download Selected Files). После чего нам предложат зарегистрироваться, регистрируемся, скачиваем и устанавливаем.

Создадим свой первый проект.

Запускаем Quartus, выбираем главное меню File -> New Project Wizard, появляется окно введения, жмем next. Далее нужно указать каталог для проекта и его имя, третье поля – имя верхнего модуля, попозже увидите, что это. Выбираем папку, куда хотим сохранить проект и придумываем имя, у меня test1.


Рис. 3 - окно мастра нового проекта

Жмем next, у нас спрашивают, пустой проект (empty project) или шаблон (Project template). Оставляем пустой, next. Дальше нас просят добавить существующие файлы, у нас ничего нет, поскольку мы только начинаем свой путь, жмем next.

Далее нам необходимо выбрать наш чип, это можно сделать в любое время. Выбираем как на рисунке, Family – Cyclone IV E, specific device selected in “Available devices” и выбираем наш чип EP4CE6E22C8N, он в самом начале. Если у вас другой, найдите свой, это важно . Жмем next.


Рис. 4 -

Появится окно - выбора средств проектирования, отладки, пока это пропускаем, нажимаем next и затем finish.


Рис. 5 - Окно « Assinments-Deice »

В окне выбираем пункт «Unused pins». Эта настройка определяет, что будет с неподключенными пинами. Это может быть важно, в своем проекте вы вряд ли используете все пины, а не подключенные могут быть на деле соединены с землей или питанием (ну мало ли, кто разводил плату). Если вы подадите единичку на заземленный пин, то он сгорит, поэтому нужно внимательно следить за этим.

По умолчанию неиспользуемые пины «As input tri-stated with weak pull-up» (пины для ввода, находятся в третьем состоянии с высоким импедансом, со слабой подтяжкой по питанию), можно оставить или выбрать «As input tri-stated». Про подтягивающий резистор можете прочитать на википедии https://ru.wikipedia.org/wiki/Подтягивающий_резистор . В цифровой технике может быть три состояния, логическая единица – это напряжение питания или высокий уровень, логический ноль – это когда вывод подключен к земле или низкий уровень и высокоимпедансное состояние. Высокоимпедансное состояние - это когда пин имеет очень высокое сопротивление и практически не влияет на провод, к которому подключен, такое состояние нужно, например, при организации шин, когда множество устройств подключены к одному проводу и не активные устройства не мешают работе.


Рис. 6 - Окно « Device and Pin Options » , Unused Pins

Подключаем это все в «Assignment Editor»


Рис. 7 - Вызов « Assignment Editor » из меню или панели

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


Рис. 8 - Assinement Editor

В колонке «To» вписываем имя входа или выхода. В колонке «Assignment Name» выбираем «Location». В колонке «Value» номер контакта микросхемы, согласно схемы платы (у меня номера пинов написаны прямо на плате).

Также нужно указать, что делать с кнопками, которые одной ногой подключены к земле, а другой ко входу чипа. При нажатии на ноге будет низкий уровень, а вот без нажатия, непонятно, нога чипа будет просто висеть в воздухе, что очень плохо. Нужно подтянуть к питанию вход чипа либо резистором на плате, либо боле элегантным способом в «Assignments Editor». В колонке «Assignment Name» выбираем «Weak Pull Up resistor» для группы key* (группа обозначается через звездочку).


Рис. 9 - Assignment Editor

Далее нужно создать описание модуля верхнего уровня, который будет работать непосредственно с ножками чипа, все остальные модули будут работать только с ним. В главном меню жмем New, и выбираем "Design Files-> Block Diagram/Schematic File".


Рис. 10 - Диалог новых файлов

В открывшемся окне выбираем инструмент «Pin Tool» и располагаем вход и выход (пины ввода и вывода) на диаграмме. Переименовываем вход как key, выход как led и соединяем их проводником. Сохраняем и нажимаем "Start Compilation".


Рис. 11 - Окно графического описания, выделены Pin Tool и Start Compilation

После компиляции у нас возникли предупреждения, пока игнорируем их, они касаются неподключенных пинов, отсутствия тактового сигнала и описания для «Timing Analyzer».

Подключаем демоплату и программатор, выбираем инструмент «Programmer». В окне должно значиться «USB-Blaster », если нет то нажимаем «Hardware Setup» и пытаемся разобраться почему нет, скорее всего не установлены драйвера, смотрим в устройства Windows, ищем неопределенные устройства, может с кабелем проблема. Если все хорошо нажимаем «Auto Detect» и выбираем наш чип.


Рис. 12 - Окно Programmer

Нажимаем двойным щелчком мыши в поле «File» и выбираем файл для записи на ПЛИС (находиться в папке output_files нашего проекта), ставим галочку в поле «Program / Configure», и нажимаем кнопку «Start».


Рис. 13 - Окно Programmer, наш чип уже сконфигурирован

Поздравляю с первой конфигурацией ПЛИС! Диод D1 должен светиться, при нажатии key1 должен гаснуть (так как кнопка замыкает ножку с землей), далее мы с этим что-нибудь сделаем)

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

Некоторые устройства, например E20-10 , требуют явной загрузки FPGA от компьютера (загрузка реализована в библиотечных функциях для этого изделия, которые используют программисты, и для пользователя ПО этот процесс незаметен). А в некоторых устройствах (LTR25 , LTR35) реализован автоматический процесс загрузки FPGA из 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 (в той или иной среде программирования), не входят в рассматриваемую обобщённую пользовательскую систему , а является технологическим средством проектирования (со своими программными и аппаратными уровнями).

Для специалистов перечислим ниже альтернативные



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows