|
Н. Семенов, И. Каршенбoйм
Микропроцессорные автоматы на базе специализированных ИС
При разработке и создании всё более сложных и объёмных цифровых схем появляется проблема повышения эффективности труда разработчиков и гибкости проекта, а основным требуемым критерием эффективности разработки является время, затраченное на разработку, или, иначе
говоря, "time to market" - время от начала реализации проекта до выхода готового продукта на рынок.
Другая (и не менее важная) проблема разработчиков - это выбор наиболее подходящей архитектуры проекта, которая обеспечивала бы наивысшую надёжность работы микросхемы, приемлемую стоимость и лёгкость модификации проекта в будущем.
Мы рассмотрим возможность построения электронных цифровых схем в виде микропрограммных автоматов (МА), оптимизацию их структуры и адаптацию системы команд для заданных условий. Использование МА
позволяет решить большинство вышеописанных проблем, создавая высокопроизводительные процессоры с ограниченной функциональностью внутри микросхемы.
Так как МА имеют стандартную
архитектуру, применяя которую с небольшими изменениями для различных проектов, можно существенно облегчить проектирование специализированных ИС и в несколько раз уменьшить время от начала разработки до выхода конечного продукта. Весь
процесс разработки в таком случае включает в себя следующие этапы:
- описание (на уровне блоков) алгоритма;
- создание необходимой системы команд;
- подключение к микропрограммному автомату необходимых библиотек;
- написание микропрограммы;
- отладка микропрограммы.
Объединение в одном устройстве
сразу нескольких МА позволяет реализовать конвейерную обработку большого объёма данных, распределённые вычисления, нейронную сеть и, что самое важное, поместить всё это внутри одной микросхемы, создавая так называемые однокристальные
(system-on-chi p) устройства.
Современные средства автоматизации проектирования цифровых схем и проблемы их использования
Стремясь к достижению высоких
технических характеристик и потребительских качеств своей продукции, разработчики электронных устройств используют специализированные ИС (СПИС). Их применение даёт следующие преимущества:
- сокращение габаритов устройства;
- повышение технических характеристик (повышение быстродействия и сокращение потребляемой мощности);
- повышение надёжности (так как вероятность поломки прямо пропорциональна количеству ИС, использование СПИС значительно её сокращает);
- обеспечение защиты разработки (скопировать устройство, содержащее СПИС практически невозможно, что позволяет обеспечить авторские права разработчика);
- повышение гибкости модификации (модификация СПИС не требует переработки остальных узлов, переразводки печатных плат и так далее).
Построение блок-схемы микропрограммного автомата
Для построения устройств ввода и
обработки данных обычно используется архитектура, показанная на рис. 1.
Рис. 1. Типовая архитектура МА
Центральный процессор через общую шину оперирует устройством ввода/вывода, обрабатывает полученные данные и отправляет их дальше. Для управления реальными устройствами ввода/вывода необходимо производить большое число операций, не требующих сложных вычислений, но жёстко ограниченных по времени. Таким образом, центральный процессор вместо того, чтобы заниматься реальной обработкой полученных данных, должен обеспечивать своевременное обслуживание устройства ввода/вывода. Нагрузка на общую шину тоже оказывается значительной из-за большого количества мелких операций между центральным процессором и устройством ввода/вывода. Упростить эту структуру можно, разбив процесс обработки на несколько частей, как это показано на рис. 2.
Рис. 2. Архитектура МА с распределённой обработкой
В этом случае "Контроллер УВВ"
обеспечивает нормальное функционирование устройства ввода/вывода, обрабатывая критичные ко времени обработки запросы, "контроллер связи" готовит данные к передаче и проверяет их целостность на приёме, "контроллер обработки" занимается
предварительной обработкой данных, чтобы разгрузить центральный процессор и общую шину от потока ненужной информации.
Реализовать такую структуру можно разными способами: добавить в устройство один или несколько микропроцессоров, но это может быть неудобно по конструктивным, ценовым параметрам или из соображений быстродействия; или создать все эти контроллеры в виде нескольких МА внутри специализированной ИС. Последний вариант является предпочтительным, так как в центре большинства современных устройств лежит большая специализированная ИС, в
функции которой входит коммутация сигналов на плате и распределение управляющих сигналов. Внутри этой ИС обычно можно расположить все необходимые МА.
Но это не единственный пример использования МА. Их можно объединять последовательно, параллельно, организовывать из них целые сети, как это показано на рис. 3, всё зависит только от требований проекта.
Рис. 3. Организация сети МА
Описание этапов построения МА
Выбор системы команд
Минимальный набор, позволяющий
писать микропрограммы с ветвлениями, состоит из следующих команд:
- NOP - нет операции;
- MOV Reg, Reg - запись содержимого одного регистра в другой;
- MOV Reg, [Mem] - запись содержимого регистра в память;
- MOV [Mem], Reg - запись из памяти в регистр;
- INC Reg - увеличение значения регистра на 1;
- DEC Reg - уменьшение значения регистра на 1;
- JMP Addr - переход по абсолютному адресу;
- IF [Reg] JMP Addr - переход по абсолютному адресу по условию [Reg<>0];
- IF Flag JMP Addr - переход по абсолютному адресу по состоянию флага;
- CALL Addr - вызов подпрограммы (с записью указателя в стек);
- RET - возврат из подпрограммы (по содержимому стека).
Его можно дополнять и расширять.
Арифметические операции сознательно убраны из списка, так как в большинстве МА они не нужны.
Построение ядра МА
Хотя для каждой конкретной реализации МА конструкция будет отличаться, структура останется неизменной, такой, как показано на рис. 4.
Рис. 4. Структура ядра МА
Блоки "Host" и "Status" обеспечивают интерфейс с верхним уровнем обработки. Блок "IRQ[xx]" предоставляет возможность организации работы по прерываниям, что совершенно необходимо для работы в реальном времени.
Блок "RAM+ROM" служит идеализированной моделью памяти. При практической реализации память команд, память данных и стек удобно разнести. Это оказывается возможно при небольшом размере памяти программ и стека, так как память программ хранится в виде констант, а размер стека определяется алгоритмом работы, и он может быть распо-
ложен в блоке регистров.
"Addr_cnt" - это указатель на следующую команду, которую нужно исполнить, или адрес данных, которые нужно считать или записать.
"Stack_cnt" - механизм работы со
стеком.
"ALU" - ключевой механизм МА,
состоящий из дешифратора команд, набора регистров и производящий определённые операции над этими регистрами. В простейшем случае ALU не требует контроллера прерываний и умеет только пересылать данные с места на место и сравнивать их с заданным условием. Но можно построить и такой ALU, который умеет производить сложные операции, такие как сложение, вычитание, умножение, деление, нахождение синуса и так далее, причём в качестве математического сопроцессора может
выступать другой МА. Поэтому для каждой конкретной задачи надо определить, какие функции ALU являются необходимыми, и подключить к проекту только содержащие их библиотеки.
Написание микропрограммы
Для удобства написания программ для МА можно создать собственный ассемблер, ставящий в соответствие удобную для восприятия мнемонику с реальными командами МА. Сейчас каждый программист при обучении в институте проходит курс создания компиляторов, и написание ассемблера для любого процессора не является трудной задачей.
Так как МА выполняет ограниченный набор функций, размер микропрограмм обычно не превышает нескольких десятков-сотен команд. Пример части такой программы описан в
таблице.
Таблица
Адрес |
Код |
Мнемоника |
Комментарий |
0000 |
000000 |
MOV [0], X2 |
В X2 записали адрес из ячейки памяти |
0001 |
110240 |
MOV 240, X1 |
В X1 записали 240 - длину пакета |
0002 |
220003 |
MOV [X2], X3 |
Считали ячейку памяти |
0003 |
430327 |
MOV X3, DMA |
Записали в регистр DMA |
0004 |
090002 |
INC X2 |
Увеличили адрес читаемой памяти |
0005 |
080001 |
DEC X1 |
Уменьшили счётчик циклов |
0006 |
710002 |
IF [X1] JMP 0002 |
Проверка условия выхода из цикла |
0007 |
050000 |
RET |
Возврат из прерывания |
Отладка микропрограммы
Для отладки микропрограммы есть много различных путей. И при использовании комбинации из них можно достичь быстрого положительного результата.
Во-первых, используемые для отладки ПЛИС (FPGA) обычно репрограммируемы, то есть в случае обнаружения ошибки всегда есть возможность исправить её без переделки всего устройства.
Во-вторых, отладка микропрограммы происходит по частям, что позволяет легко локализовать ошибку и исправить её.
В третьих, использование САПР, такого как Max+Plus, позволяет создавать тестовые входы и выходы МА, имитировать реальную работу всего устройства в симуляторе.
В процессе отладки можно использовать FPGA с большим количеством ячеек, чем нужно для функционирования проекта. Это позволит выделять отладочные ресурсы. К таким ресурсам можно отнести дополнительные счётчики, тестовые сообщения и эмуляторы. Эти ресурсы можно перераспределять для отладки отдельных частей микропрограммы.
Также можно воспользоваться
сигнатурным анализом, то есть индикацией на светодиоде или в доступном регистре результата работы сложного алгоритма. Это позволяет сделать качественную оценку работоспособности всего алгоритма или его части.
Как результат, отладка микропрограмм в МА оказывается значительно проще переписывания всего конечного автомата в случае обнаружения в нём ошибки или смены алгоритма работы.
Сравнительная характеристика
Чтобы оценить преимущества использования МА перед другими способами, рассмотрим конкретный пример. В проекте создания шлюза IP-телефонии было необходимо c помощью центрального процессора i80486DX4-100 обрабатывать поток данных с сетевого интерфейса
10 Мбит/с. Оказалось, что даже после оптимизации алгоритма процессор не справляется с обработкой 10-Мбит потока данных. Пришлось использовать другой процессор - Intel Pentium-233. Это резко увеличило стоимость конечного продукта. Использование же конвейерной обработки позволяет настолько разгрузить центральный процессор, что даже у I486DX остаются ресурсы для работы операционной системы, обработки информации и так далее.
Для сравнения МА с конечным автоматом, который является его альтернативой, можно отметить следующее:
- чтобы в новом проекте реализовать заданную последовательность действий, можно либо каждый раз заново создавать конечный автомат, либо взять уже готовый МА, адаптировать его к заданным условиям, и, написав небольшую программу, запустить. Причём написание программы для МА намного проще составления описания конечного автомата на языках AHDL, VHDL и так далее;
- для исправления ошибки в конечном автомате необходимо переделывать весь проект, а в МА можно только перезаписать программу;
- для изменения алгоритма работы конечного автомата, необходимо его полностью переделывать, что требует много времени и сил, в МА достаточно изменить микропрограмму;
- конечный автомат должен иметь ограниченное количество состояний, в то время как МА в этом не ограничен.
Процесс создания и эксплуатации
микропрограммных автоматов на FPGA идёт в мире уже более 5 лет. Обычно это коммерческие проекты, судить о которых можно только по рекламе.
Например, фирма HAMMER CORES выпустила мегафункцию для FPGA фирмы ALTERA, которая включает CISC-процессор, работающий на 20 МГц, имеющий до 26 регистров с разрядностью 8, 16 и 24 бит и занимающий 367 ячеек при 7 регистрах, 3 прерываниях и разрядности 8 бит.
Более сложный процессор на FPGA фирмы ALTERA представила фирма CAST - это полный аналог 8-бит микроконтроллера C8051, работающего на 8 МГц и занимающего 2398 ячеек.
На FPGA фирмы XILINX тоже ведутся работы по созданию МА, направленные в основном на построение универсального инструмента для аэрокосмических нужд и объединённые в глобальный проект "Adaptive Instrument Module".
Есть и другие фирмы-производители функций микропрограммных автоматов, максимальная частота работы некоторых из них достигает 48 МГц. Это и копии популярных микроконтроллеров и микропроцессоров, главное удобство которых - в доступности средств разработки программного обеспечения, и совершенно новые МА, позволяющие в виде параметров для компиляции менять свою структуру под требования заказчика. Фирмы-производители снабжают своих клиентов большим набором отладочных средств и средств разработки ПО,
поэтому проблем с использованием таких МА обычно не бывает.
Литература
- 1. Баранов В.П. Синтез микропрограммных автоматов. - М.: Нолидж. - 1997. - 376 с.
- Долинский М.С., Харрасов А.А. Средства разработки цифровых устройств методом синтеза микропрограммных автоматов // Электроника. - 1998. - № 11-12. - С. 19-23.
- Гультяев А.К. Имитационное моделирование в среде Windows. - СПб.: КОРОНА принт. - 1999. - 288 с.
- Баранов С.И. Синтез микропрограммных автоматов. - Л.: Энергия. - 1979. - 239 с.
- Altera, Processor & Peri pheral Megafunction, AMPP, http://www.altera.com/.
- Xilinx, AIM, http://www.xilinx.com/.
E-mail: nick@rts.loniis.ru
|