<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF110%3A%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...</id>
		<title>LXF110:Что за штука... - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF110%3A%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0..."/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF110:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...&amp;action=history"/>
		<updated>2026-05-13T06:35:15Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF110:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...&amp;diff=9062&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление,</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF110:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...&amp;diff=9062&amp;oldid=prev"/>
				<updated>2009-11-18T12:02:54Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление,&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Что за штука… FPGA?==&lt;br /&gt;
&lt;br /&gt;
: Трюки с приложениями, операционными системами и даже ассемблером уже неактуальны: '''Марко Фиоретти''' открывает новый рубеж для хакеров.&lt;br /&gt;
&lt;br /&gt;
* '''Имеет ли это отношение к Французской национальной ассоциации профессиональных гольфистов?'''&lt;br /&gt;
&lt;br /&gt;
Non! Аббревиатура раскрывается так: Field Programmable Gate Arrays [Перепрограммируемые логические матрицы] – очень интересный класс настраиваемых интегральных схем.&lt;br /&gt;
&lt;br /&gt;
* '''Но я еще не дочитал вторую главу учебника по программированию… Не напомните, что такое логическая матрица?'''&lt;br /&gt;
&lt;br /&gt;
В рамках нашего разговора, условимся, что логическая матрица – это кремниевый брусок, содержащий множество однородных логических элементов – вентилей,&lt;br /&gt;
выстроенных в строки [rows] и столбцы [columns]. Простейшая форма вентиля – элементарная булева функция (OR, AND, инверсия…), полученная комбинацией нескольких транзисторов.&lt;br /&gt;
&lt;br /&gt;
* '''А почему «перепрограммируемые»?'''&lt;br /&gt;
&lt;br /&gt;
Потому что программируются в процессе эксплуатации, а не на заводе. Одиночные вентили все одинаковы, независимо от типа интегральной схемы. Наш CPU становится центральным процессором, а графический чип – графическим чипом благодаря особому соединению логических вентилей между собой. Вентили и микропровода, их соединяющие (так называемые «сети», nets), наносятся на специальную матрицу, а затем впечатываются прямо в кремний. Каждая маска соответствует одной-единственной интегральной схеме, которую впоследствии невозможно изменить – если это не FPGA.&lt;br /&gt;
&lt;br /&gt;
* '''Выходит, конфигурацию схемы можно менять самому…'''&lt;br /&gt;
&lt;br /&gt;
Точно так. В кремний впечатываются только базовые блоки и неподключенные микропровода. Соединения выполняются потом, хоть на кухонном столе, после&lt;br /&gt;
того, как вы купите «чистую» FPGA и установите на печатную плату!&lt;br /&gt;
&lt;br /&gt;
FPGA-полуфабрикаты можно штамповать в огромных количествах при относительно низкой себестоимости (матрица одна и та же!), а продавать в розницу или мелкими партиями. Последствия могут затронуть самые широкие круги общества – от китов микроэлектронной индустрии и образовательных учреждений до обычных пользователей-энтузиастов.&lt;br /&gt;
&lt;br /&gt;
* '''Но ведь чипы и так программируются – что же здесь необычного?'''&lt;br /&gt;
&lt;br /&gt;
Вы правы: один и тот же микропроцессор (х86, например) может запускать кучу разнообразных программ: Windows, сотни Linux-дистрибутивов, ''OpenOffice.org'',&lt;br /&gt;
''Apache, Photoshop'' и много чего еще. При этом сам он остается неизменным: интегральная схема, выполняющая ограниченный, твердо очерченный набор базовых&lt;br /&gt;
инструкций на машинном языке. И он всегда имеет шину данных с фиксированной шириной, и фиксированное число вспомогательных выводов.&lt;br /&gt;
&lt;br /&gt;
FPGA предоставляет уникальную возможность построить собственную схему (почти) любой конфигурации.&lt;br /&gt;
Больше того, эта схема может быть новой всякий раз, когда включается питание платы!&lt;br /&gt;
&lt;br /&gt;
* '''Как это?'''&lt;br /&gt;
&lt;br /&gt;
Программирование, или, на сленге FPGA, «прошивка», происходит при чтении особого файла сразу после подачи питания на FPGA. Файл содержит указания, как настроить базовые блоки (ББ) и как их соединить. При обесточивании платы эта информация полностью стирается. А раз процедура «прошивки» происходит при каждом новом включении, незачем цепляться за один-единственный «прошивочный» файл.&lt;br /&gt;
&lt;br /&gt;
* '''И как устроены базовые блоки?'''&lt;br /&gt;
&lt;br /&gt;
В общем случае, ББ FPGA состоят из комбинаторных и регистровых элементов. Все блоки размещены на прямоугольной сетке. Выход комбинаторных&lt;br /&gt;
элементов меняется практически в момент изменения входа, а регистровые (последовательные) цепи пересчитывают выходные данные только по тактовому или&lt;br /&gt;
управляющему сигналу, а между ними хранят последнее вычисленное значение. Элементарные сумматоры и декодеры – комбинаторные элементы; переключатели и элементы памяти относятся к регистровым.&lt;br /&gt;
&lt;br /&gt;
* '''А что находится за пределами блоков?'''&lt;br /&gt;
&lt;br /&gt;
Группы ББ соединяются металлическими проводами. Провода подключаются к вводам и выводам соседних ББ через микропереключатели. «Прошивочный» файл хранит также и сведения о состоянии переключателей, при котором достигается желаемая конфигурация микросхемы. Вот вам и «перепрограммирование» FPGA!&lt;br /&gt;
&lt;br /&gt;
* '''Чуть раньше вы упоминали о «почти» любой конфигурации FPGA. Подозрительно как-то звучит…'''&lt;br /&gt;
&lt;br /&gt;
Основные ограничения – пространство и скорость. Количество ББ внутри процессора неизменно, оно физически ограничивается размерами кремниевой пластинки. Если FPGA в компьютере содержит на один ББ меньше необходимого, вам не повезло: ищите FPGA побольше, или начинайте проект с нуля.&lt;br /&gt;
&lt;br /&gt;
Еще одно ограничение, связанное с пространством – предельное количество комбинаций, в которых можно соединить ББ внутри микросхемы. Может случиться (да и случается), что блоков в схеме достаточно, а способов их соединения для осуществления задуманного не хватает. Часто бывает и так, что путь между необходимыми блоками наладить можно, но он оказывается настолько длинным, что сигнал проходит по нему недопустимо медленно. Тогда критична скорость прохождения сигнала: следует поискать другой путь. Каждый ББ обладает некоторой задержкой срабатывания, и использовать такты короче этой задержки нельзя.&lt;br /&gt;
&lt;br /&gt;
* '''Применяются ли FPGA в промышленности?'''&lt;br /&gt;
&lt;br /&gt;
В основном в двух областях. Во-первых, для создания прототипов. ASIC (специализированные микросхемы) непомерно дороги в производстве, поэтому часто поступают так: берут несколько FPGA, монтируют на плату, тестируют задуманный проект и воплощают в ASIC, только убедившись в успехе. Второй случай – успех проекта сомнений не вызывает, но потребность в чипах столь мала, что невыгодно изготавливать специальную ASIC-маску.&lt;br /&gt;
&lt;br /&gt;
* '''Но если FPGA такие гибкие, что ж они до сих пор не вытеснили специализированные микросхемы?'''&lt;br /&gt;
&lt;br /&gt;
Все дело в цене вопроса. Тщательно разработанная ASIC оптимизируется под конкретную задачу, в этом ее преимущество перед FPGA. Оптимизация означает,&lt;br /&gt;
что для выполнения данной задачи ASIC укладывается в меньшие размеры, работает быстрее и потребляет меньше энергии, чем универсальная FPGA. А при&lt;br /&gt;
серийном производстве еще и обходится гораздо дешевле. Поэтому в обозримом будущем мы вряд ли увидим FPGA, скажем, в мобильнике или iPod.&lt;br /&gt;
&lt;br /&gt;
* '''А как разрабатываются FPGA?'''&lt;br /&gt;
&lt;br /&gt;
В четыре стадии: проектирование, имитация, логический синтез, компоновка и «прошивка»; эта последняя означает запись конфигурации на модуль флэш-памяти, подключенный к FPGA. Проектирование и имитация, как и в случае с ASIC, делаются на машинном языке HDL.&lt;br /&gt;
&lt;br /&gt;
* '''Вроде в LXF52 говорилось про HDL… Пока я ищу журнал на полке, может, вы мне напомните о логическом синтезе?'''&lt;br /&gt;
&lt;br /&gt;
Это трансляция (специальным компилятором) финальной поведенческой модели микросхемы на языке HDL в единую карту Карно – длинный перечень булевых операторов и соединительных цепей; иначе это называется «карта сети» (netlist).&lt;br /&gt;
&lt;br /&gt;
* '''Затем идет компоновка, вы сказали…'''&lt;br /&gt;
&lt;br /&gt;
Верно. Компоновка – это просмотр карты сети и поиск наилучшего сочетания настройки каждого ББ и микровыключателей, чтобы добиться искомой конфигурации схемы при соблюдении требуемой скорости.&lt;br /&gt;
&lt;br /&gt;
* '''Вернемся к проекту на секунду: может ли FPGA иметь открытый исходный код, подобно ПО?'''&lt;br /&gt;
&lt;br /&gt;
HDL и есть исходный код и, как таковой, может лицензироваться на условиях GPL или любой другой лицензии. Сочетание на одном кусочке кремния «свободных» и «проприетарных» цепей пока белое пятно: поинтересуйтесь у юриста.&lt;br /&gt;
&lt;br /&gt;
* '''Вы тут намекали, что FPGA могут повлиять на образовательные учреждения и энтузиастов-любителей. А как?'''&lt;br /&gt;
&lt;br /&gt;
Создалась ситуация, когда макетная плата FPGA, оснащенная разъемами всевозможных видов (USB, VGA, FireWire, последовательный порт и т.д.), ОЗУ и прочими красотами, не говоря уж о специальном ПО, может стоить несколько сот евро! А теперь каждый любитель или обычная школа может позволить себе разработку собственной микропроцессорной техники, или открыть Лабораторию цифровых технологий – и все это за сущие копейки! Небывалые перспективы!&lt;br /&gt;
&lt;br /&gt;
* '''Чудесно! А где можно приобрести макетную плату? Не порекомендуете модель?'''&lt;br /&gt;
&lt;br /&gt;
И технологии, и цены стремительно меняются; многое зависит от имеющегося у вас периферийного оборудования, поэтому называть конкретную модель нет смысла. Наберите в строке поиска «макетная плата FPGA» – думаю, не разочаруетесь.&lt;br /&gt;
&lt;br /&gt;
* '''А есть ли онлайн-сообщество или портал, с которого можно начать изучение FPGA?'''&lt;br /&gt;
&lt;br /&gt;
Конечно, есть. Например, неплохо начать с http://www.fpgacentral.com или http://www.opencores.org. Во втором случае вы узнаете о сотнях прочих проектов свободного ПО.&lt;br /&gt;
&lt;br /&gt;
* '''ОК, значит, проектирование FPGA вполне доступно и может укладываться в рамки свободного ПО, как и Linux. Есть ли другие точки соприкосновения?'''&lt;br /&gt;
&lt;br /&gt;
Есть, и весьма интересные: скажем, последние поколения FPGA настолько велики, что допускают размещение внутри себя не только микропроцессоров типа&lt;br /&gt;
ARM, но и кое-чего сверх этого. Следовательно, внутри FPGA можно запустить Linux! Но как этого добиться и какие могут быть последствия – это уже тема другой&lt;br /&gt;
статьи! '''LXF'''&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>