Автоматизированное проектирование микропрограммных автоматов Мили с преобразованием объектов в базисе FPGA


Автореферат магистрской работы


Руководитель: д.т.н. профессор Баркалов А.А.


Автор: Силуанов А.Ф.



ВВЕДЕНИЕ


Данная работа ставит себе целью автоматизированную разработку устройств микропрограммного управления, а именно автоматов Мили, с дальнейшей их реализацией в базисе FPGA. Под словами автоматизированная следует понимать, что процесс разработки будет неким образом облегчен. В данной работе для достижения поставленной цели предполагается использование псевдоязыка, с помощью которого осуществлялось бы кодирование микропрограммы автомата. В качестве среды отладки и переноса на FPGA предполагается использование известной CAD среды — VHDL. Другими словами полученный программный продукт будет представлять собой компилятор язык описания микропрограмм — VHDL код.

У читателя могут возникнуть вопросы типа: а зачем вообще нужен данный программный продукт, если с помощью VHDL можно выполнить то же самое (на самом деле подобные вопросы должен задавать сбе любой программист перед началом нового проекта). Чтобы аргументировать необходимость данной программы приведу несколько доводов.

  • Хотя VHLD и появился достаточно давно не все его знают. И исходя из простых математических подсчетов можно сделать следующий вывод: гораздо проще выучить язык содержащий несколько синтаксических конструкций (язык описания микропрограмм очень прост), чем тот который содержит их несколько сотен (нормальный язык высокого уровня). Кстати, если кому-то по религиозным или иным соображениям не нравится VHDL несложно получить код и для других программных продуктов.
  • Как уже было сказано VHDL является универсальным языком и поэтому при разработке на нем возникают сложности связанные с переводом конструкций языка в аппаратные решения. Результат же работы данного программного продукта будет представлять собой код содержащий только логические операнды, а следовательно может быть интерпретирован только одним единственным образом.
  • Из вышеизложенного вытекает и еще одно преимущество — полученный код может быть легко оптимизирован, а главное можно быть уверенным, что он соответствующим образом будет закодирован в FPGA.

Ну и наконец может возникнуть последнее (на мой взгляд) замечание — цифровые автоматы не представляют никакого интереса с момента появления микроконтроллеров. Я позволю себе не согласиться с этим утверждением. С момента возникновения микросхем программируемой логики — ПЛИС и FPGA, достаточно много аппаратных решений выпускается и отлаживается с их использованием. И хотя объем кристалла в современных СБИС достигает миллионов вентилей, объем занимаемый решением на кристалле по прежнему играет очень важную роль. И я уверен, что никто не будет спорить с тем утверждением, что по части занимаемого места и быстродействия никакой микроконтроллер не сможет соперничать с микропрограммным автоматом (существует возможность зашивать микроконтроллер в кристалл FPGA).


ОСНОВЫ МИКРОПРОГРАММНОГО УПРАВЛЕНИЯ


Принцип микропрограммного управления предложен в 1951г. М. Уилксом и предполагает наличие в любой цифровой системе устройства управления (УУ), координирующего работу всех блоков системы. Исполнительная часть системы, осуществляющая обработку данных, называется операционным автоматом (ОА), а цифровая система в целом называется операционным устройством. Алгоритм работы системы задается одним из формальных методов, в практике инженерного проектирования наиболее широко применяется язык граф-схем алгоритмов ГСА.

В операторных вершинах ГСА записываются наборы микроопераций Yt Y, где Y={y1,...,yN} — множество микроопераций, инициирующих определённый вид обработки данных в ОА. В условных вершинах ГСА записываются логические условия xl X, где X ={x1,...,xL} — множество выходных сигналов ОА, идентифицирующих состояние процесса обработки информации. Структура операционного устройства приведена на рис.1.

Рисунок 1. Структурная схема операционного устройства.

Рисунок 1. Структурная схема операционного устройства.

Алгоритм управления системы задаётся кодом управления, поступающим в УУ из внешней среды. Алгоритм управления ОА называется микропрограммой, откуда и произошло название принципа М. Уилкса.

Микропрограмма может быть представлена в виде последовательности микрокоманд, хранящихся в специальной управляющей памяти и представляющих собой определённым образом организованные битовые строки. Такой подход порождает автоматы с "программируемой" логикой или микропрограммные устройства управления (МУУ).

Реализация микропрограммы в виде сети элементов "И", "ИЛИ", "НЕ", связанной с регистром памяти RG, порождает автомат с "жёсткой" логикой или микропрограммный автомат (МПА). Сеть элементов называется комбинационной схемой (КС) — см. Рисунок 2.

Рисунок 2. Структурная схема микропрограммного автомата.

Рисунок 2. Структурная схема микропрограммного автомата.

Для формирования распределённой во времени последовательности наборов микроопераций Y(0), Y(1), ...,Y(t), где t — время, необходимо иметь информацию о предыстории работы схемы. Эту предысторию представляют собой наборы логических условий X(0), X(1), ..., X(t — 1), поступавшие на вход МПА в предыдущие моменты времени. Таким образом,


Y(t)=f(X(0),X(1),...,X(t — 1),X(t))

Вышеуказанные функции являются громоздкими и практически их нельзя реализовать аппаратно, особенно при наличии циклов с неизвестным числом повторений. Для хранения предыстории работы схемы используются состояния системы, образующие множество состояний A={a1, ..., aM}. Состояния am A кодируются кодами K(am) разрядности R?]log2M[, используя внутренние переменные Tr T={T1, ..., TR}. Коды K(am) хранятся в регистре RG, причём в момент времени t=0 в RG хранится код начального состояния a1. Код K(a1) записывается в RG по сигналу Start и обычно является нулевым. Для смены кода состояния в RG используются функции возбуждения, образующие множество ?={?1, ...,?R}. Для задания момента смены кодов состояний (переключения) автомата используются сигналы синхронизации Clock.

В последнее время, с развитием микросхем программируемой логики — ПЛИСов, использование и проектирование конечных автоматов с "жесткой" логикой, получило второе дыхание.

Хотя характеристики микросхем постоянно улучшаются, задача оптимизации схемы УУ остается традиционно актуальной. Успешное решение этой задачи позволяет получить более дешёвые цифровые схемы, что особенно важно при массовом производстве аппаратуры.


БИС МАТРИЧНОЙ ЛОГИКИ


Целью данного раздела является ознакомление с существующими на сегодняшний день технологиями программируемых логических схем.

Рисунок 3. Классификация ПЛИС по архитектурным признакам.

Рисунок 3. Классификация ПЛИС по архитектурным признакам.

SPLD (Simple Programmable Logic Devices), т. е. простые программируемые логические устройства. По архитектуре эти ПЛИС делятся на подклассы программируемых логических матриц ПЛМ (PLA — Programmable Logic Arrays) и программируемой матричной логики ПМЛ (PAL — Programmable Arrays Logic, или GAL — Generic Array Logic).

Оба эти подкласса микросхем реализуют дизъюнктивные нормальные формы (ДНФ) переключательных функций, а их основными блоками являются две матрицы: матрица элементов И и матрица элементов ИЛИ, включенные последовательно. Такова структурная модель ПЛМ и ПМЛ. Технически они могут быть выполнены и как последовательность двух матриц элементов ИЛИ — НЕ, но варианты с последовательностью матриц И — ИЛИ и с последовательностью матриц ИЛИ — НЕ — ИЛИ — НЕ функционально эквивалентны, т. к. второй вариант согласно правилу де Моргана тоже реализует ДНФ, но для инверсных значений переменных.

Заметим, что термин "матрица" обозначает в данном случае не более чем "набор", "множество" и обусловлен тем, что схемные элементы ПЛМ и ПМЛ удобнее всего располагать по строкам и столбцам, обеспечивая тем самым регулярность структуры БИС.


ПЛМ — ПРОГРАММИРУЕМЫЕ ЛОГИЧЕСКИЕ МАТРИЦЫ



Структура ПЛМ


Рисунок 4. Базовая   структура ПЛМ.

Рисунок 4. Базовая структура ПЛМ.

Базовую структуру ПЛМ можно увидеть на рисунке 4, где m, l, n — параметры ПЛМ

На входы первой матрицы поступают т входных переменных в виде как прямых, так и инверсных значений, так что матрица имеет 2т входных линий. На ее выходах формируются конъюнктивные термы, ранг которых не выше т. В дальнейшем для краткости конъюнктивные термы называются просто термами. Число термов не имеет прямой связи с величиной т является конструктивными параметрами матрицы — числом которое обозначим через l. Первая матрица идентична для обоих подходов SPLD, т. е. для ПЛМ и ПМЛ.

Термы поступают на вход матрицы ИЛИ. Эти матрицы для ПЛМ и ПМЛ различны. В ПЛМ матрица ИЛИ программируется, а в ПМЛ она фиксированная.

Программируемая матрица ИЛИ микросхем ПЛМ составлена из дизъюнкторов, имеющих по l входов. На входы каждого дизъюнктора при программировании можно подать любую комбинацию имеющихся термов, причем термы можно использовать многократно (т. е. один и тот же терм может быть использован для подачи на входы нескольких дизъюнкторов).

Число дизъюнкторов в матрице ИЛИ определяет число выходов ПЛМ, которое обозначим через п. Из изложенного видно, что ПЛМ позволяет реализовать систему из п переключательных функций, зависящих не более чем от m переменных и содержащих не более чем l термов.


FPGA — ПРОГРАММИРУЕМАЯ ПОЛЬЗОВАТЕЛЕМ ЛОГИЧЕСКАЯ МАТРИЦА


В данном разделе, мы детально рассмотрим архитектуру FPGA, наиболее важному классу (на сегодняшний день) из всего семейства программируемых СБИС.

FPGA(Field Programming Gate Array) — программируемая пользователем логическая матрица подобна CPLD, вывернутому наизнанку.

Как показано на Рисунке 5, логика разбита на большое количество программируемых логических блоков, которые индивидуально являются меньшими, чем PLD. Они распределены вдоль всего чипа на множество программируемых взаимосвязей, и весь массив окружен программируемыми блоками ввода/вывода. Программируемый логический блок FPGA имеет меньше возможностей чем типичный PLD, но чип FPGA содержит намного больше логических блоков, чем CPLD того же самого размера.

Рисунок 5. Общая архитектура кристалла FPGA.

Рисунок 5. Общая архитектура кристалла FPGA.

Логический блок с перестраиваемой конфигурацией


Рисунок 6. Логический блок с перестраиваемой конфигурацией.

Рисунок 6. Логический блок с перестраиваемой конфигурацией.

Самые важные программируемые элементы CLB — генераторы логических функций — F, G, и H. И F и G могут выполнить любую комбинационную логическую функцию от четырех входов, а H может исполнить любую комбинационную логическую функцию от трех входов.

Как и в CPLD, трапециевидные поля на Рисунке 6 представляют программируемые мультиплексоры. Обратите внимание, что выводы F и G так же как дополнительные входы CLB могут быть направлены к вводам H мультиплексорами M1 — M3, так что возможно реализовать некоторые функции больше чем четырех от входов. Таксономия функций, которые могут быть реализованы F, G, и H в единственном CLB, дается ниже:

  • Любая функция до четырех переменных, плюс любая другая функция до четырех несвязанных переменных, плюс любая третья функция до трех несвязанных переменных.
  • Любая одна функция пяти переменных.
  • Любая функция четырех переменных, плюс другая функции шести несвязанных переменных.
  • Функции до девяти переменных, включая проверку четности для двух 4 битных входов.

При соответствующем программировании мультиплексоров M7 — M8 и M12 — M13, выводы функциональных генераторов могут быть направлены на выводы X и Y CLB, или они могут быть зафиксированы на D — триггерах FF1 и FF2. Триггера могут использовать фронт или срез общего синхросигнала K, что выбирается мультиплексорами M9 и M14. Они могут также использовать сигнал разрешения синхронизации, EC, выбираемый M10 и M15. Источники EC и трех других внутренних сигналов выбираются из набора четырех входов C1 — C4 мультиплексорами M3 — M6 сверху CLB.

Выходы XQ и YQ CLB выводят выходы триггеров из CLB. Если триггера не используются в CLB, мультиплексор M11 или M16 может выбрать XQ или YQ, чтобы быть "выводом обхода", который является просто копией ввода CLB, выбранного M4 или M6.

Помеченный блок "S/R control" от каждого триггера определяет, установлен или сброшен триггер в конфигурации. Это также определяет, отвечает ли триггер на глобальный сигнал установки/сброса (не показан) или на сигнал SR CLB, выбранный мультиплексором M5.


Блок ввода — вывода


Структуру блока ввода — вывода (IOB) показана на Рисунке 7. Контакт ввода — вывода может использоваться для ввода или вывода или обоих.

Контакты ввода/вывода содержат запускаемый фронтом D — триггер выбираемый мультиплексорами M5 — M7.

Рисунок 7. Блок ввода  —  вывода

Рисунок 7. Блок ввода — вывода

Программируемый блок соединений


Как мы показали на Рисунке 5, каждый CLB в FPGA внедрен в подключенную к сети структуру, которая действительно является только проводами с программируемыми связями. Рисунок 8 дает немного более подробную схему соединений. Провода действительно "не принадлежат" ни одной CLB.

Число в каждой стрелке указывает число проводников на пути сигнала. Таким образом, мы можем видеть, что CLB имеет два проводника (вывода) которые идут к CLB ниже и направо от данного. Он также соединяется с тремя группами проводов выше, одним ниже, и четырьмя слева. Сигналы по этим проводам могут течь в любом направлении.

Четыре сигнала в группе "Global Clock", оптимизированы для использования как вводы синхронизации к CLB, обеспечивая короткую задержку. Две группы "Singles" оптимизированы для обеспечения гибкой связи между смежными блоками.

Возможно подключить CLB к другому, находящемуся далее чем один "пролет", используя "Single" провода, но они должны пройти программируемый переключатель для каждого пролета, что добавляет задержку. Провода в группах "Doubles" проходят два CLB перед тем, как зайти на переключатель, так что они обеспечивают более короткие задержки для более длинных подключений.

Для действительно длинных подключений, группы "Long" не проходят никаких программируемых выключателей вообще; вместо этого, они проходят полностью через чип и управляются элементами с тремя состояниями около CLB.

Подобно CPLD, FPGA ценны гибкостью архитектуры и устойчивостью результатов, полученных от сборки после того, как сделаны маленькие изменения в дизайне. Нет ничего более печального чем внести небольшое изменение в большой дизайну и обнаружить, что он больше не соответствует требованиям синхронизации. Таким образом, изготовители FPGA научились обеспечивать "дополнительные" ресурсы в архитектуре, чтобы гарантировать стабильные результаты.

Рисунок 8. Общая структура блока соединений

Рисунок 8. Общая структура блока соединений


Список литературы


  1. А.А. Баркалов "Синтез устройств управления на программируемых логических устройствах" — Донецк: ДонНТУ, 2002
  2. Соловьев В.В. Проектирование функциональных узлов цифровых систем на программируемых логических устройствах. — Минск: Бестпринт, 1996
  3. Mano M. Computer System Architecture. — N.D.: Prentice Hall, 1997
  4. Угрюмов Е.П. Цифровая схемотехника — Сб.: БХВ — Петербург, 2004
  5. Altera 1998 Data Book, January 1998
  6. The Programmable Logic Data Book — Xilinx — 1998
  7. ACT Family FPGA Data Book, Actel
  8. Bursky D. Andvanced CPLD architecture Challenge FPGAs. — Electronic Design — 1998