Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства CoolRunner-II
В предыдущих публикациях данного цикла [1–3] были рассмотрены элементы семейства 8-разрядных микропроцессорных ядер PicoBlaze, предназначенные для использования в проектах, которые выполнются на базе ПЛИС серий FPGA фирмы Xilinx. Несмотря на то, что кристаллы серий CPLD обладают значительно меньшими функциональными возможностями по сравнению с представителями семейств FPGA, некоторые из них могут применятся для реализации встраиваемых микропроцессорных систем. Для этих целей фирма Xilinx предлагает наиболее компактную версию микропроцессорного ядра PicoBlaze, которая предназначена для применения в проектах, реализуемых на основе ПЛИС семейства CoolRunner?II.
Все статьи цикла:
- Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства Virtex-II
- Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства CoolRunner-II
- Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейств Spartan-3, Virtex-II и Virtex-IIPRO
- Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейств Spartan-3, Virtex-II и Virtex-IIPRO
Встраиваемый микропроцессорный модуль для ПЛИС семейства CoolRunner-II разработан на основе микропроцессорного ядра PicoBlaze, предназначенного для реализации на базе кристаллов семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E. Поэтому в настоящей статье при рассмотрении характеристик, архитектуры и системы команд микропроцессорного ядра PicoBlaze для ПЛИС семейства CoolRunner-II представлены только его отличительные особенности по сравнению с базовым ядром, описание которого было опубликовано ранее [1–2].
Данное семейство кристаллов отличается от других серий ПЛИС CPLD, выпускаемых фирмой Xilinx, высоким быстродействием, низкой потребляемой мощностью и наличием микросхем с достаточно большим объемом логических ресурсов. Более подробно характеристики кристаллов семейства CoolRunner-II представлены в отдельной статье [4].
Основные характеристики ядра PicoBlaze, реализуемого на базе ПЛИС семейства CoolRunner?II
Микропроцессорное ядро PicoBlaze, предназначенное для разработки систем на основе кристаллов семейства CoolRunner-II, обладает основными техническими характеристиками, схожими с характеристиками базового модуля, представленными в первой публикации цикла [1]. Наиболее существенные различия проявляются в вопросе применения встроенного ППЗУ микропрограмм, объеме блока регистров общего назначения и производительности. Рассматриваемый представитель семейства PicoBlaze отличается от микропроцессорного ядра для ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E следующими особенностями:
- возможность применения в проектах, выполняемых на основе кристаллов CoolRunner-II с числом макроячеек 256 и более (XC2C256, XC2C384, XC2C512);
- объем блока регистров общего назначения — восемь регистров по восемь разрядов;
- отсутствие встроенного ППЗУ микропрограмм;
- четырехуровневый стек;
- объем ресурсов кристалла, необходимых для реализации микропроцессорного ядра PicoBlaze в ПЛИС CoolRunner-II, составляет 212 макроячеек, что соответствует 83% от полного объема логических ресурсов кристалла XC2C256 (при этом используется 155 регистров и 53 пользовательских вывода ПЛИС, что составляет 61 и 45% от полного объема этих ресурсов).
Структура проекта ядра PicoBlaze, реализуемого на основе CoolRunner?II
В кристаллах семейства CoolRunner-II, как и в ПЛИС CPLD других серий, отсутствуют ресурсы выделенной блочной памяти. Использование же основных логических ресурсов ПЛИС (триггеров, входящих в состав макроячеек) для формирования программной памяти встраиваемого процессорного модуля крайне неэффективно. Поэтому в версии микропроцессорного ядра PicoBlaze, предназначенной для реализации в кристаллах семейства CoolRunner-II, исключен модуль встроенного ППЗУ микропрограмм. Таким образом, структура рассматриваемого варианта встраиваемого микропроцессорного ядра PicoBlaze, в отличие от рассмотренных ранее представителей этого семейства, содержит только исполнительный модуль.
Комплект микропроцессорного ядра PicoBlaze, предназначенного для семейства CoolRunner-II, содержит три группы файлов, упакованных в архив. Каждая из этих групп расположена в отдельном каталоге (разделе) архива. Первая группа содержит файлы всех необходимых модулей описаний на языке VHDL. Файлы этой группы расположены в разделе VHDL. Вторая группа включает в себя исполняемый программный модуль ассемблера asm.exe и файл его исходного описания на языке С. В эту же группу включен файл, содержащий тестовую программу на языке ассемблера, и файлы, полученные в результате обработки этой программы ассемблером. Данная группа файлов находится в разделе C. Третья группа файлов, расположенная в разделе DEMO_TEST, представляет собой тестовый проект, иллюстрирующий использование компонентов ядра. Демонстрационный проект и все компоненты ядра полностью совместимы с любой из конфигураций средств проектирования фирмы Xilinx серии ISE (Integrated Synthesis Environment), включая свободно распространяемую — WebPACK ISE [3].
Исполнительный модуль выполнен в форме компонента picoblaze, представляющего собой макрос с относительным размещением, описание которого на языке VHDL содержится в файле picoblaze.vhd. В этом описании используется ряд компонентов следующего (более низкого) уровня иерархии, которые в большинстве своем соответствуют элементам архитектуры микропроцессорного ядра PicoBlaze. Описания этих компонентов находятся в соответствующих файлах, которые расположены в том же разделе, что и файл описания компонента верхнего уровня иерархии picoblaze. Названия файлов, содержащих описания компонентов нижнего уровня иерархии, как правило, совпадают с именами этих компонентов. Выражения декларации компонента picoblaze в составе VHDL-описания проектируемой системы выглядят следующим образом.
В приведенных выражениях декларации используется та же система обозначений интерфейсных цепей компонентов микропроцессорного ядра PicoBlaze, что и для компонентов базового варианта, подробно описанная ранее [1]. Включение экземпляра компонента, представляющего исполнительный модуль picoblaze, в состав структурного описания архитектуры проектируемой системы осуществляется с помощью следующей конструкции.
В приведенном шаблоне следует вместо идентификатора inst_name_processor задать метку, которая, как правило, соответствует позиционному обозначению создаваемого экземпляра компонента. Кроме того, в операторе port map нужно указать названия сигналов, которые используются в описании проектируемого устройства.
Для отладки разрабатываемой программы методом моделирования ядра в составе создаваемого проекта с помощью системы ModelSim XE [5–8] можно использовать компонент виртуального ПЗУ микропрограмм. Этот компонент представляет ПЗУ информационной емкостью 4 кбит с организацией 256×16 разрядов. В качестве шаблона для декларации и создания экземпляра компонента виртуального ПЗУ микропрограмм можно использовать соответствующие выражения, приведенные для модуля программной памяти ядра PicoBlaze, реализуемого на базе ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E [1]. Название компонента виртуального ПЗУ микропрограмм должно совпадать с именем файла, в котором содержится текст отлаживаемой программы на языке ассемблера.
Тестовый проект, включенный в состав комплекта микропроцессорного ядра PicoBlaze, можно использовать в качестве образца VHDL-описания отладочной системы. Основу этой системы образует VHDL-описание объекта DEMO, в структуру которого входит исполнительный модуль и подключенный к нему модуль виртуальной программной памяти. Ниже приведен полный текст описания тестовой системы, который также демонстрирует методику применения компонента picoblaze в составе проектируемого устройства.
В структуре представленного описания можно выделить три раздела. В первом разделе описания указаны ссылки на используемые стандартные библиотеки и пакеты. Следующий раздел содержит операторы, описывающие интерфейс объекта DEMO. В третьем разделе приводится структурное описание архитектуры этого объекта. Этот раздел состоит из пяти секций. Первая секция содержит выражения декларации используемых компонентов. Во второй секции представлены выражения декларации внутренних сигналов устройства. В третьей секции описывается собственно структура объекта DEMO. Четвертая секция содержит выражения, которые определяют значения сигналов на неиспользуемых входах микропроцессорного ядра. Пятая секция описывает процесс формирования выходных сигналов объекта DEMO.
Архитектура ядра PicoBlaze, реализуемого на основе CoolRunner?II
Архитектура микропроцессорного ядра PicoBlaze, предназначенного для применения в кристаллах семейства CoolRunner-II, изображена на рисунке. В структурном отношении она отличается от архитектуры базового микропроцессорного модуля [1] только отсутствием встроенного блока программной памяти. Кроме того, имеются различия, которые проявляются уже на уровне отдельных структурных элементов. Эти отличия обусловлены, прежде всего, ограниченным объемом ресурсов ПЛИС семейства CoolRunner-II по сравнению с кристаллами серий Spartan-II, Spartan-IIE, Virtex, Virtex-E. Поэтому одной из основных задач при разработке рассматриваемого варианта микропроцессорного ядра PicoBlaze являлась минимизация ресурсов кристалла, необходимых для его реализации. Решение этой задачи достигнуто за счет сокращения функциональных возможностей отдельных структурных элементов.
Вдвое уменьшен объем блока регистров общего назначения, который в новой версии содержит восемь восьмиразрядных регистров, обозначаемых соответствующими порядковыми номерами s0–s7.
Почти в четыре раза (с пятнадцати уровней до четырех) сокращена глубина стека программного счетчика. Тем самым накладывается более жесткое ограничение на количество вложенных вызовов процедур в разрабатываемой программе.
Модернизация блока дешифрации команд, обусловленная необходимостью снижения объема используемых ресурсов ПЛИС, привела, в частности, к изменению формата команд, поддерживаемых микропроцессорным ядром PicoBlaze, которое предназначено для применения в кристаллах семейства CoolRunner-II.
Система команд ядра PicoBlaze, реализуемого на основе CoolRunner?II
Базовая система команд микропроцессорного ядра PicoBlaze, встраиваемого в проекты, выполняемые на основе ПЛИС семейства CoolRunner-II, включает в себя 49 инструкций [2]. При классификации команд по функциональному признаку они подразделяются на шесть уже известных групп. Изменения произошли только в формате команд. В ряде инструкций поменялась длина полей и коды выполняемых операций. При этом полная длина команд не изменилась и по-прежнему составляет шестнадцать двоичных разрядов. В некоторых командах изменилось взаимное расположение полей. Мнемоническая форма записи инструкций сохранилась без изменений.
При необходимости разработчик может расширить существующую систему команд, дополнив ее собственными инструкциями. Для этого нужно внести соответствующие изменения в файлы исходного описания микропроцессорного ядра picoblaze.vhd и ассемблера asm.cpp.
В последующих разделах будут представлены соответствующие форматы инструкций для каждой функциональной группы, которые входят в базовую систему команд рассматриваемого представителя семейства микропроцессорных ядер PicoBlaze.
Команд управления последовательного выполнения операций в программе для ядра PicoBlaze, реализуемого на базе CoolRunner?II
В командах безусловного и условных переходов JUMP изменились значения и структура поля кода операции. Форматы команд безусловного и условных переходов JUMP в новой редакции представлены в таблице 1.
Модификация команд обращения к подпрограммам CALL также затронула структуру поля кода операции. Поле адреса вызываемой подпрограммы осталось без изменений. Новые версии форматов команд безусловного и условных вызовов подпрограмм CALL приведены в таблице 2.
Преобразование инструкций возврата из подпрограммы RETURN проявилось в изменении структуры полей и значений кода выполняемой операции. В таблице 3 представлены модифицированные форматы команд безусловного и условного возврата из подпрограммы RETURN.
Группа логических команд PicoBlaze, предназначенного для кристаллов CoolRunner?II
В формате инструкций, относящихся к группе логических команд, произошли следующие изменения по сравнению с аналогичными инструкциями, представленными ранее [2]. Во-первых, все команды этой группы имеют одинаковую длину поля кода операции. В новой редакции это поле включает в себя пять двоичных разрядов. Во-вторых, длина полей команд, в которых указываются номера регистров, используемых при выполнении операции, уменьшилась на один бит и составляет три двоичных разряда. Изменение длины полей, предназначенных для определения номеров регистров, обусловлено двукратным сокращением объема блока регистров общего назначения. В качестве номеров регистров N и M, которые указываются при мнемонической форме записи инструкций, могут использоваться любые числа в диапазоне от 0 до 7.
Новая редакция форматов команд поразрядных операций «Логическое И» (поразрядное умножение) AND, выполняемых над содержимым одного из регистров общего назначения и константой kk, значение которой задается непосредственно в тексте инструкции, а также над содержимым двух регистров общего назначения, приведена в таблице 4.
Модифицированные форматы инструкций OR, предназначенных для выполнения операций поразрядного сложения двух операндов (поразрядное «Логическое ИЛИ»), определены в таблице 5 для двух вариантов. В первом случае операндами является содержимое любого из восьми регистров общего назначения и константа kk, значение которой указывается в соответствующем поле команды, а во втором — содержимое двух регистров с номерами N и M.
Новая редакция форматов команд XOR, используемых для выполнения поразрядной операции «Исключающее ИЛИ» с участием содержимого регистра общего назначения с номером N и константы kk или содержимого двух регистров с номерами N и M, представлена в таблице 6.
Форматы инструкций LOAD, предназначенных для загрузки константы или содержимого какого-либо регистра в выбранный регистр общего назначения, в новой редакции приведены в таблице 7.
Группа арифметических команд ядра PicoBlaze, предназначенного для CoolRunner?II
В структуре полей арифметических команд ядра PicoBlaze, предназначенного для применения в кристаллах CoolRunner-II, произошли те же изменения (по сравнению с форматами аналогичных команд, приведенными ранее [2]), что и в логических инструкциях, рассмотренных в предыдущем разделе.
Модифицированные варианты форматов команд сложения ADD содержимого регистра с номером N и константы kk или содержимого двух регистров общего назначения с номерами N и M без учета переноса представлены в таблице 8.
Новая версия форматов инструкций ADDCY, предназначенных для вычисления суммы двух операндов с учетом значения флага переноса, полученного при выполнении предыдущей операции, приведена в таблице 9.
Форматы инструкций SUB, используемых для выполнения операции вычитания с участием тех же операндов, что и в командах сложения, без учета заема, в новой редакции представлены в таблице 10.
Модифицированные варианты форматов команд SUBCY, предназначенных для вычисления разности двух операндов с учетом значения заема, образовавшегося при выполнении предыдущей операции, приведены в таблице 11.
Команды сдвига данных для ядра PicoBlaze, предназначенного для кристаллов CoolRunner?II
В формате команд, предназначенных для выполнения операций сдвига данных, изменилась длина полей кода операции и номера регистра. Преобразованные форматы инструкций логического (арифметического) и циклического сдвига данных, находящихся в регистре общего назначения с указанным номером, представлены в таблице 12.
Клманды ввода-вывода PicoBlaze для CoolRunner?II
Структура инструкций ввода-вывода, используемых для организации чтения данных из входного порта в заданный регистр общего назначения и передачи информации из указанного регистра в выходной порт, отличается от структуры аналогичных команд, приведенной ранее [2], длиной полей кода операции и номеров регистров. В новой редакции команд ввода-вывода указанные поля содержат соответственно пять и три двоичных разряда.
Новые варианты форматов команд ввода-вывода с различными видами адресации входных и выходных портов приведены в таблице 13.
Команды обслуживания прерываний ядра PicoBlaze для CoolRunner?II
В формате инструкций обслуживания прерываний изменилось взаимное расположение и длина поля кода операции и поля режима обработки прерываний.
Новая редакция форматов команд возврата из процедуры обслуживания прерываний RETURNI и установки режима обработки прерываний в программе ENABLE INTERRUPT и DISABLE INTERRUPT представлена в таблице 14.
Для практического освоения рассмотренного варианта микропроцессорного ядра PicoBlaze и для аппаратной отладки проектов, включающих это ядро, можно воспользоваться инструментальным комплектом CoolRunner-II Design Kit, возможности которого были рассмотрены на страницах «КиТ» [9].
На этом завершается рассмотрение характеристик, архитектуры и системы команд встраиваемых восьмиразрядных микропроцессорных модулей семейства PicoBlaze. В следующей публикации цикла будут обсуждаться вопросы использования ассемблера для данного семейства микропроцессорных ядер.
Литература
- 1. Зотов В. PicoBlaze — семейство восьмиразрядных микропроцессорных ядер, реализуемых на основе ПЛИС фирмы Xilinx // Компоненты и технологии. 2003. № 4.
- Зотов В. Система команд микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E // Компоненты и технологии. 2003. № 5.
- Зотов В. Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства Virtex-II // Компоненты и технологии. 2003. № 6.
- Зотов В. CoolRunner-II — новое поколение высокопроизводительных ПЛИС CPLD фирмы Xilinx с микромощным потреблением // Схемотехника. 2003. № 5–10.
- Зотов В. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx в САПР WebPack ISE. М.: Горячая линия — Телеком. 2003.
- Зотов В. ModelSim — система HDL-моделирования цифровых устройств // Компоненты и технологии. 2002. № 6.
- Зотов В. Функциональное моделирование цифровых устройств, проектируемых на базе ПЛИС фирмы Xilinx в среде САПР WebPACK ISE // Компоненты и технологии. 2002. № 7.
- Зотов В. Временное моделирование цифровых устройств, проектируемых на базе ПЛИС фирмы Xilinx в среде САПР WebPACK ISE // Компоненты и технологии. 2002. № 8.
- Зотов В. Инструментальный комплект CoolRunner-II Design Kit для практического освоения методов программирования ПЛИС семейств CPLD фирмы Xilinx // Компоненты и технологии. 2003. № 2.