Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2005 №7

Системы на кристалле на базе ПЛИС FPGA Xilinx со встроенными процессорами PowerPC. Часть 1

Тарасов Илья


Первая часть статьи (всего их будет три) содержит вводную информацию, в том числе описание архитектуры программируемых «систем-на-кристалле» и продукции различных производителей, а также основные характеристики семейств Virtex-II Pro и Virtex-4 FX фирмы Xilinx, представляющих собой ПЛИС с процессорными ядрами семейства PowerPC. В двух последующих публикациях будет рассказано об архитектуре семейства процессоров PowerPC и ядра PowerPC-405, реализованного аппаратно в упомянутых ПЛИС, и рассмотрено начало работы с «системами-на-кристалле», в том числе описан интересный режим Ultra Controller, который существенно облегчает разработку простых систем на базе PowerPC.

Все статьи цикла:

Понятие «системы-на-кристалле»

Направление «систем-на-кристалле» (System-On-Chip — SoC) весьма обширно, поэтому настоящая публикация дает лишь начальные сведения о ПЛИС фирмы Xilinx, выполненных по подобной технологии.

Что же представляют собой устройства с аппаратно реализованными процессорами и чем они отличаются от таких систем, как, например, MicroBlaze и PicoBlaze фирмы Xilinx или Nios фирмы Altera? В данном вопросе может возникнуть некоторая путаница, поскольку для ПЛИС существует большое количество процессорных модулей, реализуемых с помощью программируемых логических ячеек. Среди них можно встретить и только что перечисленные устройства, которые, по сути дела, представляют собой особые способы конфигурирования ПЛИС и не означают наличия в них каких-либо специальных ресурсов. Такие процессоры, создаваемые путем задания конфигурации программируемых ресурсов ПЛИС, называют конфигурируемыми, а иногда — софт-процессорами. Напротив, аппаратно реализованные процессорные ядра представляют собой участки кристалла ПЛИС, на которых вместо логических ячеек реализованы уже существующие процессорные устройства.

Сам подход, заключающийся в добавлении процессоров на кристаллы ПЛИС, является интересной и достаточно важной вехой на пути развития этой технологии. Универсальность и специализация технических изделий представляют собой две противоположные тенденции, и даже легкая смена курса в технической политике производителей весьма интересна. В данном случае речь идет о том, что ПЛИС, которые ранее выступали именно в качестве универсальных цифровых устройств, все больше приобретают черты устройств специализированных (разумеется, такая специализация весьма относительна, поскольку ПЛИС по-прежнему предоставляют разработчику матрицу программируемых логических ячеек). На определенном этапе развития технических характеристик ПЛИС они стали использоваться не только в качестве вспомогательного цифрового устройства («замена рассыпной логики»), но и в качестве аппаратной платформы для реализации алгоритмов цифровой обработки сигналов, а затем — в качестве устройств, объединяющих процессор, небольшое количество памяти и периферию. Такое устройство получило название «система-на-кристалле». Строго говоря, понятие «система-на-кристалле» может подразумевать, что на той же пластине реализована и аналоговая часть, но, говоря о ПЛИС, обычно имеют в виду только цифровую часть разрабатываемой системы. Иногда используется уточнение — цифровая «система-на-кристалле», или Digital Systemon-Chip. С учетом того, что первые программируемые устройства с аналоговыми блоками на кристалле уже выпущены (например, продукция фирмы Anadigm), в дальнейшем данное уточнение может стать актуальным. Наконец, чтобы выделить системы, в которых применяется программируемая аппаратная платформа, используется термин System-On-Programmable-Chip (SoPC).

При реализации на программируемом кристалле всего спектра цифровых устройств наглядно проявляются недостатки ПЛИС — более высокая удельная цена физических ресурсов кристалла и меньшие рабочие частоты в сравнении с аналогичной микросхемой «жесткой» логики. Если в качестве «цифрового клея» ПЛИС вполне оправдывают свое применение, то при реализации системы из процессора, памяти и периферийных цифровых устройств оказывается, что рынок ASIC может предложить аналогичные решения по меньшей цене и с большей производительностью. Поэтому следующим шагом со стороны производителей ПЛИС стало размещение на кристалле аппаратно реализованных фрагментов наиболее часто используемых цифровых узлов — быстрой синхронной памяти, блоков умножения и умножения с накоплением и т. п. Подробнее о развитии архитектур ПЛИС на примере продукции Xilinx рассказывается в предыдущих номерах «КиТ» за этот год (№№ 1, 3, 5–6). Такие фрагменты полностью аналогичны имеющимся в ASIC и позволяют использовать программируемые ресурсы ПЛИС именно для реализации гибких, специализированных, нестандартных узлов, для которых широко распространенного устройства может и не найтись. Итак, для построения «системы-на-кристалле» следует сочетать низкую стоимость и высокие тактовые частоты стандартных интегральных решений с гибкостью программируемых ресурсов, используемых в качестве «клея». Остается, наконец, рассмотреть подходы к реализации основного элемента современных цифровых систем — микропроцессора.

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

Разновидности программируемых «систем-на-кристалле»

В настоящее время практически все производители ПЛИС предлагают продукцию с аппаратно реализованными процессорными ядрами. Краткие характеристики некоторых устройств подобного типа приведены в таблице 1.

Таблица 1

Сопоставление характеристик, приведенных в таблице, позволяет выделить два класса микросхем, комбинирующих на кристалле аппаратное процессорное ядро и программируемые ячейки. В одном случае построение такой системы идет «от процессора» — такова, например, продукция Atmel и Cypress. Архитектура устройств этих фирм действительно больше напоминает процессор с очень развитыми средствами программирования периферийных устройств, а для микросхем Cypress трудно указать число логических ячеек в силу существенно иной организации программируемых ресурсов. Не имеет смысла указывать и размер блочной памяти, поскольку находящаяся на кристалле память предназначена для хранения программ и данных для процессора. В то же время процессорное ядро по своим характеристикам можно отнести к устройствам начального уровня.

Другой подход, предлагаемый такими производителями ПЛИС, как Xilinx, Altera и Triscend, подразумевает размещение на кристалле весьма мощного процессорного ядра с разрядностью в 32 бита и тактовой частотой 200 и более мегагерц. При этом у Xilinx и Altera, которые в данный момент обеспечивают подавляющее большинство поставок ПЛИС, достаточно явно прослеживается паритетный, если даже не подчиненный характер процессора по отношению к матрице логических ячеек. На рис. 1 показаны схемы процессорных блоков для ПЛИС QL902M фирмы Triscend и Virtex-4FX фирмы Xilinx.

Схемы подключения процессорных блоков к матрице программируемых ячеек в семействах QuickMIPS и Virtex-4FX
Рис. 1. Схемы подключения процессорных блоков к матрице программируемых ячеек в семействах QuickMIPS и Virtex-4FX

Сравнение микросхемы Triscend и классической ПЛИС Xilinx показывает, что в первом случае речь идет все еще о процессорном устройстве, подключенном к набору периферийного оборудования. В числе таких устройств имеются контроллеры PCI, SDRAM, Ethernet, что соответствующим образом ориентирует разработчика. Напротив, в ПЛИС семейства Virtex-4 процессорное ядро является одним из устройств, доступных для подключения к матрице логических ячеек. Необходимые периферийные устройства (включая контроллеры памяти, шин и интерфейсов) должны реализовываться с помощью программируемых ресурсов. Более того, для семейства Virtex-II Pro нормальным является использование только логических ячеек, поскольку по сравнению с предыдущим семейством Virtex-II эти микросхемы обладают лучшими техническими характеристиками. Для Virtex-4FX не следует оставлять процессорное ядро незадействованным скорее по экономическим причинам — для проектов без процессора существуют разновидности LX и SX, выполненные по той же технологии (подробнее см. КиТ № 1'2005). При этом важным является тот факт, что количество программируемых ресурсов на кристалле ПЛИС Virtex гораздо больше, чем в QuickMIPS. Это дает возможность реализовать на базе логических ячеек сопроцессор, выполняющий специфические команды, отсутствующие в базовом ядре, но являющиеся ключевыми для решаемой задачи. Для наиболее эффективной связи таких сопроцессоров с базовым ядром предусмотрен контроллер APU (Auxiliary Processor Unit — вспомогательное процессорное устройство). Таким образом, архитектура ПЛИС Virtex заранее ориентирована на наиболее тесное взаимодействие процессора и высокопроизводительных вычислительных устройств, реализуемых на базе программируемых ресурсов.

Показанная на рис. 1 схема подключения процессорного ядра к программируемым ресурсам предполагает, что в матрице логических ячеек будут реализованы вспомогательные вычислительные устройства, поставляющие данные для обработки, а блочная память окажется задействованной для хранения программ и данных PowerPC. Подключение блочной памяти к процессору осуществляется с помощью контроллеров OCM (On Chip Memory — память на кристалле). Гарвардская архитектура PowerPC предусматривает разделение адресных пространств программ и данных, что обеспечивается двумя контроллерами.

Следует отметить, что оба семейства ПЛИС Xilinx, имеющие на кристалле процессорные ядра, содержат большое количество выделенных умножителей (12-444 в Virtex-II Pro и 32-192 в Virtex-4FX). Это дает возможность использовать такие ПЛИС в качестве мощных устройств цифровой обработки сигналов, контролируемых процессорами, которые могут программироваться стандартным для микропроцессорных систем способом. Действительно, внесение изменений в проект путем коррекции программ на языках высокого уровня существенно проще, чем коррекция описания аппаратной части на VHDL или Verilog. При этом мощное процессорное ядро дает возможность использовать широко распространенные программные средства, и для программиста ПЛИС может выглядеть как обычная ЭВМ. С учетом того, что в качестве процессора использовано ядро PowerPC 405 с тактовой частотой до 450 МГц, возможности ПЛИС по выполнению программ, написанных на языках высокого уровня, довольно велики и приближаются к возможностям обычных настольных ЭВМ. Остается упомянуть, что в САПР EDK, предлагаемой Xilinx для разработки «систем-на-кристалле», использована среда Eclipse и компилятор gcc.

Чем еще привлекательно направление «систем-на-кристалле» для разработчика? Ответ на этот вопрос не исчерпывается перечислением технических характеристик микросхем. В качестве альтернативы можно представить процесс разработки вычислительной системы сопоставимой сложности на базе отдельных компонентов: процессора, памяти и вспомогательной логики. Оставляя в стороне вопрос цены на комплектующие, можно сразу заметить, что площадь печатной платы для такой системы и ее стоимость совершенно несопоставимы со сложностью изготовления платы для одной микросхемы в корпусе BGA. Остается добавить, что программируемые соединения на кристалле легко обеспечивают рабочие частоты в 150 и более мегагерц даже при отсутствии каких-либо специальных мер по заданию относительного размещения компонентов и наложения временных ограничений. Пиковые же значения рабочих частот составляют для семейства Virtex-4FX 500 МГц. При этом обеспечение корректной трассировки внутренних соединений и достижение требуемых частот берет на себя САПР ПЛИС, а не сложный и дорогостоящий пакет САПР печатных плат. В конце концов, трассировка печатной платы для цифровой системы, работающей на частоте более 100 МГц, — весьма трудоемкое и ответственное занятие. В итоге можно сделать вывод, что реализация всех компонентов цифровой системы на одном кристалле в числе прочего существенно снижает затраты на достижение требуемых характеристик проекта, работающего на высокой тактовой частоте. Снижение затрат происходит как благодаря тому, что все коррекции схемы происходят за счет перепрограммирования кристалла, так и благодаря более короткому циклу внесения изменений в ПЛИС по сравнению с повторным изготовлением печатной платы. В условиях экспериментальных производств и при выпуске небольших партий изделий данное качество весьма и весьма ценно.

Характеристики процессорных ядер, применяемых в семействах Virtex-II Pro и Virtex-4FX

Поскольку ядро PowerPC применяется в двух семействах ПЛИС класса High-End фирмы Xilinx, имеет смысл рассмотреть конкретные технические характеристики этих семейств. В обоих случаях использовано одно и то же ядро PowerPC 405, но в семействе Virtex-II Pro оно может работать на частоте 300–400 МГц, а в Virtex-4FX — 450 МГц. Более интересно то, что в старших кристаллах обоих семейств имеются два процессорных ядра. Количество процессоров в различных ПЛИС приведено в таблице 2.

Таблица 2. Количество процессов в различных ПЛИС

Как следует из таблицы, в самом младшем кристалле Virtex-II Pro процессорное ядро отсутствует. На это необходимо обращать особое внимание при выборе программных инструментов для начала работы с PSoC фирмы Xilinx, поскольку ряд бесплатных версий САПР поддерживают только ПЛИС XC2VP2, и ориентация на такую САПР в сочетании с семейством Virtex-II Pro приведет к тому, что в распоряжении разработчика просто не окажется процессора. Кстати говоря, наличие микросхемы без процессора является еще одним подтверждением того, что семейство Virtex-II Pro относится все же к ПЛИС, а не к особой разновидности процессорных систем. Напротив, старшие модели с двумя ядрами позволят отработать алгоритмы и аппаратные интерфейсы взаимодействия нескольких процессоров.

Вопрос целесообразности применения семейства Virtex-II Pro в проектах, не использующих процессорные ядра, довольно неоднозначен. На первый взгляд, стоимость таких устройств должна включать в себя и стоимость процессора, следовательно, неиспользуемый процессор — лишняя трата денег. Однако сравнение с семейством Virtex-II показывает, что более совершенный техпроцесс (0,13 мкм против 0,15 у Virtex-II) позволил снизить цену таким образом, что удельная стоимость программируемых ресурсов в Virtex-II Pro оказалась в ряде случаев ниже. Та же разница в техпроцессе обеспечивает 10–15-процентное увеличение тактовой частоты проектов (КиТ № 1'2005). Если же говорить о площади, занимаемой процессором, то это наглядно иллюстрируется на рис. 2, где показан вид на кристалл, предоставляемый приложением FloorPlanner, входящим в пакет САПР ISE фирмы Xilinx. Показаны соответственно самый младший кристалл, содержащий процессорное ядро (это XC2VP4), и самый старший (XC2VP100). Выделение красным цветом отсутствует в исходном изображении и сделано при подготовке статьи.

Вид кристалла ПЛИС XC2VP4 и XC2VP100
Рис. 2. Вид кристалла ПЛИС XC2VP4 и XC2VP100

Сказанное выше относится в основном к выбору между Virtex-II и Virtex-II Pro в проектах, не использующих встроенный процессор. В семействе Virtex-4 произведено разделение на подсемейства, каждое из которых имеет собственное соотношение между основными ресурсами (включая процессор). В частности, для построения «систем-на-кристалле» предназначено подсемейство FX (Full featured), представители которого содержат процессор, блоки АЦП и контроллеры Ethernet. Для проектов, ориентированных на цифровую обработку сигналов, следует использовать подсемейство SX, содержащее большее количество выделенных умножителей, а наибольшее количество логических ячеек содержат устройства LX. Все три подсемейства выполнены по одной и той же 90-нм технологии, их логические ячейки и прочие программируемые элементы обладают совершенно идентичными характеристиками, поэтому выбор между подсемействами может целиком диктоваться потребностями разработчиков в тех или иных аппаратных ресурсах. В целом можно отметить, что в последнее время появление нового семейства ПЛИС практически всегда означает, что его следует освоить в кратчайшие сроки — по крайней мере, для новых разработок. Постоянное уменьшение технологических норм, которое пока имеет место, не может не сказаться на уменьшении размеров кристалла, а следовательно, и цены. Поэтому упомянутые тенденции, касающиеся лучшей производительности и более привлекательных цен, являются объективными и связаны не с какими-либо тонкостями ценовой политики производителей, а с общей тенденцией в мире интегральных полупроводниковых технологий.

Видимо, уместно будет сделать небольшое отступление, касающееся выбора конкретных семейств ПЛИС. Очевидно, что смена элементной базы — неоднозначный процесс, имеющий как плюсы, так и минусы. Зачастую давно освоенные и хорошо известные разработчикам компоненты, используемые для уже выпускающейся продукции, являются прекрасными кандидатами для реализации на их базе и вновь проектируемых изделий. Тот же подход часто используется и в отношении ПЛИС. Однако в подавляющем большинстве случаев переход на новое семейство не связан с какими-либо изменениями технологии разработки. Более того, ориентация современных САПР ПЛИС на использование языков описания аппаратуры часто делает возможным перенос проекта на новое семейство путем простой смены названия микросхемы в настройках проекта. Для этого необходимо, чтобы в проекте не использовались ресурсы, специфичные для конкретного семейства, или же в процессе перехода к новому семейству они были заменены на аналогичные. Как правило, такую замену можно выполнить в кратчайшие сроки, или же решить проблему кардинально, использовав при разработке проектов переносимые решения. Важно отметить, что сами по себе языки описания аппаратуры достаточно хорошо приспособлены к подобному переносимому между отдельными семействами стилю разработки. Поэтому освоение нового семейства ПЛИС должно из разряда ответственных и тщательно продуманных шагов постепенно переходить в разряд мероприятий, выполняемых в рабочем порядке, и происходить автоматически по мере появления этих семейств на рынке (что справедливо, по меньшей мере, для новых разработок). Результатом же станет очередное снижение цены выпускаемых изделий наряду с достижением более высоких технических характеристик.

Очевидно, что сказанное в первую очередь относится к выбору аппаратной платформы для реализации «систем-на-кристалле». Идентичность процессорных ядер, использованных в обоих рассматриваемых семействах ПЛИС, позволяет легко переносить проекты на новые микросхемы Virtex-4, выполняя такой перенос с минимальными организационными затратами и получая по меньшей мере увеличение тактовой частоты процессора и всего проекта плюс уменьшение цены за кристалл аналогичного объема.

На рис. 2 видно, что соотношение между ядром и программируемыми ресурсами, вообще говоря, невелико. Даже в XC2VP4, содержащем наименьшее количество программируемых ресурсов, процессор занимает не более 10% кристалла — даже с учетом того, что в выделенной цветом площади располагается и кэш-память. Таким образом, при построении «системы-на-кристалле» довольно небольшой части логических ячеек может быть достаточно для непосредственного сопряжения процессора с прочими ресурсами кристалла. Следовательно, функциональные возможности такой системы могут быть достаточно богатыми. Например, в сочетании с выделенными умножителями реализуются проекты аппаратного декодирования файлов мультимедиа (как аудио, так и видео). При этом несколько десятков (и даже сотен) умножителей в состоянии распараллелить обработку входного потока таким образом, что на долю процессорного ядра остаются только операции сбора данных и общего управления процессом.

Сферы применения

Преимущественные области применения «систем-на-кристалле» на базе ПЛИС с аппаратными процессорными ядрами определяются исходя из архитектуры этих ПЛИС. Следует сказать, что микросхемы программируемой логики, как и всякая относительно новая технология, периодически попадают в зону повышенного внимания, провоцируют взлеты позитивных ожиданий и разочарование разработчиков. Особенно это касается «систем на кристалле», поскольку процессорные системы (как на основе аппаратных, так и конфигурируемых процессоров) являются прекрасным способом оценки новой технологии. Результаты сопоставления характеристик аналогичных изделий на базе ПЛИС и ASIC вполне представительны и наглядны, поэтому большинство разработчиков цифровых систем легко формируют собственные оценки для той или иной продукции. Ввиду недостаточной распространенности «систем-на-кристалле» по сравнению с классическими микропроцессорными решениями любая информация из этой области, включая примеры удачных и неудачных реализаций, пока имеет большое влияние на общую оценку потребителями такой технологии. Внедрение «систем-на-кристалле» фирмы Xilinx несколько затруднено также тем, что ПЛИС, содержащие процессорные ядра, сами по себе относятся к разряду устройств класса High-End и к тому же используют весьма мощное 32-разрядное ядро PowerPC. Правильное и эффективное использование такой ПЛИС невозможно организовать без надлежащей подготовки и предварительного ознакомления с принципами разработки и организации «систем-на-кристалле» на базе ПЛИС.

Следует повторить основные положения, касающиеся сравнения ПЛИС и ASIC. Эти же положения могут быть перенесены на сравнение PSoС и классических систем на базе ASIC-микроконтроллеров и микропроцессоров. Итак, главными недостатками ПЛИС (а значит, и PSoC) по сравнению с ASIC являются:

  • программируемые внутренние соединения обладают бульшими задержками, чем реализованные аппаратно;
  • невозможно обеспечить 100-процентное использование ресурсов ПЛИС.

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

  • ПЛИС (особенно семейства Virtex) содержат большое количество выделенных ресурсов (блоки синхронной памяти и умножители), что позволяет организовывать параллельные вычисления, распределенные по кристаллу ПЛИС. При этом могут быть достигнуты лучшие показатели производительности и цены, чем для сигнальных процессоров, в сочетании с более простой организацией накристальных магистралей передачи данных из блочной памяти в вычислительные устройства (по сравнению, например, с печатными проводниками от DSP к внешней памяти). Данное свойство хорошо проявляется в системах обработки аудио- и видеопотоков, нейросетевых алгоритмах, выполнении SIMD-инструкций (Single Instruction — Multiple Data);
  • накристальные программируемые соединения хотя и обладают большими задержками по сравнению с металлическими соединениями ASIC, более устойчивы к помехам и существенно проще в обращении для разработчика, чем печатные проводники. Поэтому использование ПЛИС для построения одночипового решения позволяет относительно легко добиться устойчивой работы системы на высоких тактовых частотах. Сюда же можно отнести возможность простой организации шин с большой разрядностью, в которых целостность сигналов автоматически обеспечивается САПР при трассировке проекта.

Исходя из перечисленных свойств ПЛИС, можно сделать вывод, что их применение целесообразнее всего рассматривать в задачах, уникальных настолько, что для них не существует ASIC-решение, и вместе с тем ориентированных на однообразную интенсивную обработку потока данных, преимущественно параллельную или многоканальную. Из общих соображений появляются два вопроса: как обеспечить управление этими вычислениями и как связать ПЛИС с «внешним миром». Ответом на первый вопрос как раз и является введение на кристалл стандартного 32-разрядного процессорного ядра, которое сразу переводит работу с ПЛИС на новый уровень. Громадное количество высокопроизводительных вычислителей, которые у разработчика на HDL вызвали бы массу проблем, становятся при этом просто разновидностью периферии процессора, и таким образом можно обеспечить эффективное манипулирование потоками данных, циркулирующими в матрице логических ячеек. Входным языком реализации высокоуровневых алгоритмов управления становится при этом Си, а не VHDL или Verilog, работа с которыми требует гораздо более высокой квалификации.

ПЛИС Virtex-4 с процессорными ядрами содержат также и модули контроллеров Ethernet. Кроме того, Xilinx предлагает свободно распространяемый программный продукт под названием Memory Generator, позволяющий в кратчайшие сроки создать на базе логических ячеек контроллер внешней памяти практически любого типа (включая SDRAM, DDR, DDR-II и многие другие). Функциональность генератора постоянно наращивается, и для новых семейств ПЛИС достаточно регулярно появляются интерфейсы новых типов памяти. Сочетание такого процессора, как PowerPC, сетевого контроллера и контроллера внешней памяти позволяет сконструировать готовую процессорную систему в достаточно короткие сроки и быстро перейти к этапу разработки прикладного программного обеспечения для нее.

Материалы, посвященные различным аспектам разработки «систем-на-кристалле», публикуются в журнале, выпускаемом фирмой Xilinx — XCell journal, ознакомиться с которым можно на сайте www.xilinx.com.

В следующей части статьи будут подробно рассмотрены технические характеристики и особенности процессорного ядра PowerPC 405, примененного в ПЛИС класса High-End фирмы Xilinx.

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке