Цифровая камера как мультимедийный компьютер
Глоссарий
ASIC (Application Specific Integrated Circuit) — это интегральная схема, специально спроектированная под конкретное приложение, то есть так называемая заказная интегральная микросхема. Архитектура ASIC или ASSP (Application Specific Standard Products — то есть интегральная схема, которая используется уже не одной, а несколькими компаниями как серийный продукт) широко применяется в цифровой электронике, поскольку это, по сути, один из немногих подходов, который позволяет проектировщикам интерактивно и в кратчайшие сроки конфигурировать, а по мере эксплуатации и расширять возможности своих устройств и предоставляет им ряд других преимуществ над стандартными подходами.
Сегодняшние проекты интегральных схем имеют миллионы вентилей. Инженеры уже не могут разрабатывать их при помощи карандаша и бумаги. Поэтому создаются специальные программно-аппаратные инструментальные средства, которые полностью автоматизируют создание интегральных схем (этот процесс называется синтезом). В результате проект первоначально моделируется в соответствующей системе автоматизированного проектирования (САПР), где можно предсказать его эффективность при промышленном производстве, причем учесть при этом и все узкие места. Это моделирование и тестирование продукции позволяет затем с большой долей уверенности гарантировать ее высокое качество. ASIC-схемы могут затем производиться по разным технологиям, включая FPGA, вентильные матрицы, линейные (или смешанные) массивы, стандартные ячейки или же традиционные БМК. Они могут содержать цифровую, аналоговую или смешанную цифро-аналоговую схемы.
Особенно популярны ASIC-технологии в таких динамично развивающихся отраслях электроники, как телеметрия и телекоммуникации, GPS (глобальные навигационные системы), алгоритмы сжатия изображений и другие мультимедийные системы, сигнальные процессоры (DSP), а также управляющие компьютеры в автомобильной и бытовой электронике.
VHDL — язык синтеза дискретных систем. Разработан в соответствии со спецификацией IEEE 1076 и используется для формального описания проектов в области электроники (существуют и альтернативные языки, такие, например, как Verilog).
Традиционный подход к проектированию дискретных вычислительных систем состоит в последовательном решении задач анализа и оптимизации некоторого начального варианта проекта. Поэтому давней мечтой разработчиков было создание единых средств описания такой системы, которые позволяли бы решать задачи верификации и синтеза схем с различной степенью детализации и их формального описания и, таким образом, объединять все этапы проектирования в единый нисходящий процесс проектирования (разработка «сверху вниз»). Появление языка VHDL в определенной степени позволяет автоматизировать задачи проектирования от описания алгоритма функционирования системы до реализации в кремнии кристаллов микросхем. При этом понятие «синтез» следует определить как формализованный процесс построения схемы из некоторого заданного набора компонентов.
Одно из главных свойств — это способность описывать аппаратуру и ее работу во времени. Поэтому основными в VHDL являются такие близкие разработчику понятия, как объект проекта, интерфейс, порт, архитектура, сигнал, атрибуты сигнала, операторы параллельного присвоения, процесс и др.
Сигнал в VHDL трактуется весьма широко и может быть скалярным (целым, вещественным, битовым и т.д.) или векторным (шинным), булевым или многозначным. Многозначная логика дает возможность выявлять с помощью моделирования такие явления в схемах, как гонки или неопределенности на выходах схем, а также решать задачи мультиплексирования шины.
Свойства VHDL являются следствием (или результатом) особенностей реализации тех принципов, которые заложены в язык моделирования интегральных систем.
Полное описание VHDL-модели объекта проекта состоит из двух частей:
- описание интерфейса объекта проекта, включающее списки входных и выходных сигналов и список задержек переключения и других констант;
- архитектура объекта проекта, включающая объявление переменных и дополнительных (внутренних) сигналов объекта проекта и операторную часть, описывающую объект проекта на структурном или поведенческом уровне.
VHDL-описание объекта проекта на структурном уровне должно включать и третью часть — описание конфигурации, задающей подключение библиотеки моделей типов элементов и выборку их в качестве компонентов структуры объекта проекта.
Количество уровней вложенности структурной модели произвольное, что позволяет фактически описать любую систему от уровня ее устройств до уровня логических, принципиальных электрических схем и элементов и до кремниевого уровня.
Для успешного решения задач высокоуровневого синтеза с последующим переходом на более низкие уровни с использованием VHDL-описаний (VHDL-синтеза) должны выполняться следующие допущения:
1) генерируются схемы, функционирование которых адекватно VHDL-описаниям;
2) многообразие наборов VHDL-описаний в библиотеке компонентов для каждой аппаратной реализации соответствующей функции обеспечивает выбор оптимального варианта по заданному критерию синтеза схемы;
3) поведенческое VHDL-описание системы, служащее входом для VHDL-синтеза, обычно не зависит от технологии изготовления системы, но для эффективных аппаратных решений следует учитывать технологическую информацию как можно раньше.
Как показывает опыт зарубежных и отечественных разработок, в настоящее время наиболее успешным оказывается применение поведенческих VHDL-моделей для синтеза устройств, последовательность обработки данных в которых может быть строго структурирована и представлена в виде схемы алгоритма или соответствующего потока сигналов. Тогда каждый блок алгоритма обработки, описываемый в виде процесса (VHDL-описания), однозначно реализуется соответствующими аппаратными средствами. Примером могут быть спецпроцессоры, ориентированные на решение конкретного класса задач по определенному алгоритму, в частности устройство цифровой обработки сигналов.
FPGA-матрица (Field Programmable Gate Array) — это особым образом сделанный массив полупроводниковых элементов (емкостью от 1 до 100 тыс. логических вентилей), позволяющий разработчикам достаточно быстро (за 2-3 недели) спроектировать и изготовить работоспособный образец (макет) ASIC в лабораторных условиях. По оценкам экспертов, технология FPGA идеально подходит как для изготовления опытных образцов (с дальнейшим переходом на заказные БИС), так и для использования при выпуске мелких и средних партий готовых изделий.
Все, что необходимо для проведения проекта, — это компьютер, специальное программное обеспечение и программатор. Процесс разработки блока на базе FPGA существенно выигрывает у технологии БМК (базовых матричных кристаллов). Последняя предполагает использование мощностей специализированных микроэлектронных предприятий, в результате чего цикл проектирование-изготовление затягивается на многие месяцы, причем каждая итерация требует повторения этого цикла и дополнительных ассигнований. Совершенно очевидно, что в нынешних условиях это абсолютно неприемлемый путь. Необходимо также отметить, что в отличие от однократно «программируемых» БМК каждая микросхема FPGA может программироваться неограниченное число раз (конфигурация загружается из внешней памяти (ППЗУ) при включении питания, поэтому для смены конфигурации достаточно поменять эту дешевую микросхему ППЗУ).
В расчете на вентиль стоимость FPGA-системы обычно выше, чем стоимость ASIC серийного производства, однако разовые инженерные расходы, связанные с ее разработкой и изготовлением, оказываются значительно более низкими. Поэтому разработку и изготовление малой серии ASIC выгоднее проводить именно на FPGA. В дальнейшем, в случае необходимости, возможен перевод проекта на стандартные элементы для серийного производства ASIC.
CMOS-технология (Complementary Metal Oxide Semiconductor) — это «рабочая лошадь» ASIC-промышленности, потому что она позволяет формировать очень маленькие и быстрые транзисторы. Время записи цифровой информации измеряется в пикосекундах, внутренние частоты переключателей могут превышать 2 ГГц, а необходимое напряжение может варьироваться от 1 до 600 В. Впрочем большинство CMOS ASIC-микросхем функционирует под напряжением в 3,3 или 5 В.
Поэтому CMOS ASIC-системы хорошо подходят для проектирования цифровых и смешанных (цифро-аналоговых) систем.
LSI (Large-Scale Integration) — это крупномасштабная технология изготовления полупроводниковых интегральных схем с плотностью интеграции от 100 до 1000 устройств на кристалле.
DSP (Digital Signal Processor) — это цифровой сигнальный процессор, который широко используется в звуковых платах, факсимильных машинах, модемах, сотовых телефонах, в контроллерах жестких дисков большой емкости, а также в цифровой фотографии, видео и телевидении. Создание первого DSP-чипа, используемого в коммерческих целях, приписывают компании Texas Instruments (это был сигнальный процессор, который применялся в очень популярной в 70-е годы электронной игре Speak&Spell).
Сегодня DSP-процессоры широко используются в звуковых платах для записи и воспроизведения, а также для речевого синтеза. Другие популярные применения — это цифровые усилители, которые моделируют концертные залы, объемный звук и другие эффекты, применяемые при записи музыки и в так называемом домашнем театре.
IC (Integrated Circuit) — это сокращенное обозначение для интегральной схемы (называемой также полупроводником, или чипом). Впрочем, интегральной схемой называются многоэлементные полупроводники (semiconductors). IC — это, как правило, стандартные блоки больших электронных систем типа сотовых телефонов, пейджеров или персональных компьютеров.
IP (Intellectual Property) — интеллектуальное свойство. Обозначение для отдельных частей («строительных блоков») большой системы, которые изготавливаются отдельно, могут быть раздельно закуплены или запатентованы у специализирующейся на них сторонней компании. Эти IP-«блоки», или ядра, могут быть затем проданы заказчикам как части общей системы.
SoC (System-on-a-Chip) — это «система на одном чипе», или полнофункциональный микрокомпьютер с различными функциями, выполненный на одной микросхеме.
RISC (Reduced Instruction Set Computer) — концепция, основными признаками которой являются:
- l одинаковая длина команд;
- одинаковый формат команд: код команды, регистр-приемник и два регистра-источника;
- операндами команд могут быть только регистры;
- команды выполняют только простые действия;
- большое количество регистров общего назначения (могут быть использованы любой командой);
- один или несколько конвейеров;
- выполнение команды не дольше, чем за один такт;
- простая адресация.
К RISC-процессорам сегодня причисляют: MIPS, SPARC, PowerPC, DEC Alpha, HP PA-RISC, Intel 960, AMD 29000 и некоторые другие.
RISC-концепция предоставляет компилятору большие возможности по оптимизации кода. В настоящее время именно RISC-процессоры наиболее распространены. Область их применения очень широка: от микроконтроллеров до суперкомпьютеров. RISC-процессоры лидируют по производительности среди процессоров общего назначения. Существуют стандарты на RISC-процессоры, например SPARC (Scalable Processor ARChitecture, текущая версия — UltraSPARC 9), MIPS (текущая версия — IV, R10000), PowerPC и т.д. (часто их называют открытыми архитектурами).
VLIW (Very Long Instruction Word) — это набор команд, реализующий горизонтальный микрокод. Несколько (4-8) простых команд упаковывается компилятором в длинное слово. Такое слово соответствует набору функциональных устройств.
VLIW-архитектуру можно рассматривать как статическую суперскалярную архитектуру. Имеется в виду, что распараллеливание кода производится на этапе компиляции, а не динамически во время исполнения. То есть в машинном коде VLIW присутствует явный параллелизм.
Достоинства данного подхода:
- упрощается архитектура процессора (на процессоре можно разместить больше регистров и функциональных устройств);
- процессор не тратит время на анализ потока команд;
- возможности процессора по анализу программы во время выполнения ограничены сравнительно небольшим участком программы, тогда как компилятор способен произвести анализ по всей программе;
- если некоторая программа должна запускаться многократно, выгоднее распараллелить ее однократно (при компиляции), а не каждый раз, когда она исполняется на процессоре.
Недостатки:
- компилятор производит статический анализ программы, раз и навсегда планируя вычисления. Однако даже при небольшом изменении начальных данных путь выполнения программы сколь угодно сильно изменяется;
- очень увеличивается сложность компиляторов. Значит, увеличивается число ошибок в них и время компиляции;
- еще более увеличивается сложность отладки, так как отлаживать приходится оптимизированный параллельный код.
VAX MIPS — это оценка производительности, имеющая то же значение, что и популярные тесты SPEC. Единицы измерения характеризуют пpоизводительность компьютеpа относительно системы VAX 11/780 (так, напpимеp, значение 1,5 VAX MIPS означает, что тестиpуемая система pаботает в полтоpа pаза быстpее, чем VAX 11/780).