Компоненты и технологии, № 6'2003 Софт
Особенности микропроцессорного ядра РкоВЬю, предназначенного для применения в проектах,
реализуемых на основе ПЛИС семейства У1г!ех-11
Микропроцессорное ядро РкоВ1аге, предназначенное для применения в проектах, выполняемых на базе ПЛИС серии У1гГех-11, отличается от других представителей этого семейства наиболее широкими функциональными возможностями. Учитывая, что этот модуль является результатом дальнейшего развития микропроцессорного ядра РкоВ1аге, реализуемого на основе кристаллов семейств БрагГап-М, БрагГап-МЕ, У1гГех, У1гГех-Е, основное внимание в настоящей статье сосредоточено на отличиях его характеристик, архитектуры и системы команд по сравнению с базовым ядром, описание которого приведено в предыдущих статьях [1, 2].
Валерий Зотов
Основные характеристики микропроцессорного ядра PicoBlaze
для Virtex-II
Основные характеристики семейства встраиваемых микропроцессорных ядер PicoBlaze [1] в большинстве своем относятся ко всем представителям этой серии. Однако ядро, предназначенное для применения в кристаллах семейства Virtex-II, имеет ряд отличительных особенностей. К их числу относятся следующие характеристики:
• разрядность шины адресов — 10 бит;
• разрядность шины команд — 18 бит;
• объем блока регистров общего назначения — 32 восьмиразрядных регистра;
• объем встроенного ППЗУ микропрограмм, реализуемого на основе блочной памяти ПЛИС Block SelectRAM, составляет 1024x18 разрядов;
• объем ресурсов кристалла, необходимых для реализации микропроцессорного ядра PicoBlaze в ПЛИС семейства Virtex-II, ограничивается
84 секциями (slices), что составляет 9% от полного объема логических ресурсов кристалла XC2V40E и 0,25% от логической емкости ПЛИС XC2V6000E;
• повышенная производительность, достигающая 40-70 MIPS (в зависимости от типа используемого кристалла).
Структура проекта микропроцессорного ядра PicoBlaze для Virtex-II
Структура встраиваемого микропроцессорного ядра PicoBlaze, предназначенного для использования в составе проектов, реализуемых на базе кристаллов семейства Virtex-II, приведена на рис. 1. Она отличается от структуры, рассмотренной в одной из предыдущих публикаций [1], только типом и параметрами модулей, которые входят в ее состав.
Исполнительный модуль выполнен в форме компонента KCPSM2, представляющего собой макрос с относительным размещением, описание которого на языке VHDL содержится в файле kcpsm2.vhd.
Модуль ЦПУ (исполнительный модуль) PicoBlaze (KCPSM2)
Входные данные Прерывание Сброс
Память программ
INSTRUCTION[17:0] ADDRESS[9:0]
->CLK
Тактовый сигнал ■ 18^
Шина команд
IN_PC)RT[7:0]
INTERRUPT
RESET
OUT_PORT[7:0] PORT_ID[7:0] READ STROBE
> CLK WRITE_STROBE
INSTRUCTION[17:0] ADDRESS[9:0]
10
_► Выходные данные
э Адрес порта ввода/вывода -> Строб чтения
Строб записи
Шина адресов команд
Рис. 1. Структура микропроцессорного ядра PicoBlaze для Virtex-II
Компоненты и технологии, № 6'2003
Отличия интерфейса этого компонента от макроса, который является основой микропроцессорного ядра PicoBlaze, реализуемого на базе ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E [1], заключаются в размерности векторов, представляющих шины адресов и команд. Выражения декларации компонента KCPSM2 в составе VHDL-описания проектируемой системы выглядят следующим образом.
component kcpsm2 Port (
address і out std_logic_vector(9 downto 0); instruction і in std_logic_vector(17 downto 0); port_id і out std_logic_vector(7 downto 0); write_strobe і out std_logic; out_port і out std_logic_vector(7 downto 0); read_strobe і out std_logic; in_port і in std_logic_vector(7 downto 0); interrupt і in std_logic; reset і in std_logic; clk і in std_logic );
end component;
В приведенных здесь и далее выражениях декларации используется система обозначений интерфейсных цепей компонентов микропроцессорного ядра PicoBlaze, подробно описанная ранее [1]. Включение экземпляра компонента, представляющего исполнительный модуль, в состав структурного описания архитектуры проектируемой системы осуществляется с помощью соответствующей конструкции [1] для компонента KCPSM, в которой следует изменить название компонента на kcpsm2.
Функции программной памяти, как и в ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E, выполняет один модуль блочного ОЗУ Block SelectRAM. Но в отличие от кристаллов указанных семейств, информационная емкость одного модуля блочной памяти ПЛИС семейства Virtex-II составляет 1B кбит, что позволило в четыре раза увеличить максимальный объем загружаемой микропроцессорной программы. Модуль программной памяти представлен в виде компонента с названием prog_rom, который фактически описывает ППЗУ с информационной емкостью 1024x18 разрядов, реализуемое на основе однопортового блочного ОЗУ с аналогичной организацией. Для декларации этого компонента следует воспользоваться конструкцией, которая имеет следующий виді
component prog_rom Port (
address і in std_logic_vector(9 downto 0); instruction і out std_logic_vector(17 downto 0); clk і in std_logic );
end component;
Создание экземпляра компонента, представляющего программную память, выполняется с помощью оператора, который используется для аналогичного компонента, рассмотренного в первой статье цикла [1]. При включении выражений декларации и создания экземпляра компонента, соответствующего программной памяти, в состав описания проектируемой системы следует вместо идентификатора prog_rom указать название компонента, совпадающее с иден-------------------------www.finestreet.ru-
тификатором файла, в котором должен быть записан исходный текст программы. Необходимость такой замены объясняется тем, что ассемблер формирует описание содержимого ППЗУ программ на языке VHDL в виде файла с расширением vhd, название которого совпадает с идентификатором файла, содержащего исходный текст программы.
Сопряжение основных компонентов микропроцессорного ядра PicoBlaze демонстрирует VHDL-описание объекта EMBED-DED_KCPSM2, структуру которого составляет исполнительный модуль и подключенный к нему модуль программной памяти. Ниже приведен полный текст описания объекта EMBEDDED_KCPSM2, имеющий ту же структуру, что и описание объекта EMBED-DED_KCPSM [1].
-- EMBEDDED_KCPSM2.VHD
-- Standard IEEE libraries library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity embedded_kcpsm2 is Port ( port_id : out std_logic_vector(7 downto 0); write_strobe : out std_logic; read_strobe : out std_logic; out_port : out std_logic_vector(7 downto 0); in_port : in std_logic_vector(7 downto 0); interrupt : in std_logic; reset : in std_logic; clk : in std_logic); end embedded_kcpsm2;
architecture connectivity of embedded_kcpsm2 is
-- Declaration of KCPSM-II
component kcpsm2 Port ( address : out std_logic_vector(9 downto 0); instruction : in std_logic_vector(17 downto 0);
port_id : out std_logic_vector(7 downto 0); write_strobe : out std_logic;
out_port : out std_logic_vector(7 downto 0); read_strobe : out std_logic;
in_port : in std_logic_vector(7 downto 0); interrupt : in std_logic; reset : in std_logic; clk : in std_logic); end component;
-- declaration of program ROM
component prog_rom Port ( address : in std_logic_vector(9 downto 0); instruction : out std_logic_vector(17 downto 0); clk : in std_logic); end component;
-- Signals used to connect KCPSM-II to program ROM
signal address : std_logic_vector(9 downto 0); signal instruction : std_logic_vector(17 downto 0);
-- Connection of macros
begin
processor: kcpsm2 port map( address => address, instruction => instruction,
port_id => port_id, write_strobe => write_strobe, out_port => out_port, read_strobe => read_strobe, in_port => in_port, interrupt => interrupt, reset => reset, clk => clk); program: prog_rom port map( address => address, instruction => instruction, clk => clk);
end connectivity ;
- END OF FILE EMBEDDED_KCPSM2.VHD
В случае применения объекта EMBED-DED_KCPSM2 в качестве элемента, входящего в состав разрабатываемой системы, следует воспользоваться выражениями декларации и создания экземпляра соответствующего компонента, которые приведены первой статье цикла [1] для макроса EMBEDDED_KCPSM. В этих выражениях следует только изменить название компонента embedded_kcpsm на embedded_kcpsm2. Все рассмотренные компоненты полностью совместимы с любой из конфигураций средств проектирования фирмы Xilinx серии ISE (Integrated Synthesis Environment), включая свободно распространяемую — WebPACK ISE [3].
Архитектура микропроцессорного ядра PicoBlaze для Virtex-II
Архитектура микропроцессорного ядра PicoBlaze, предназначенного для применения в кристаллах семейства Virtex-II, изображена на рис. 2. В структурном отношении она практически не отличается от архитектуры встраиваемого микропроцессорного модуля [1]. Различия проявляются на уровне отдельных структурных элементов. Эти отличия обусловлены, прежде всего, тем, что преимущества архитектуры ПЛИС семейства Virtex-II, по сравнению с кристаллами серий Spartan-II, Spartan-IIE, Virtex, Virtex-E, позволили расширить функциональные возможности структурных элементов соответствующего микропроцессорного ядра из семейства PicoBlaze.
Объем блока регистров общего назначения увеличен до тридцати двух восьмиразрядных регистров, которые обозначаются соответствующими порядковыми номерами s00 — s1F. Тем самым создаются предпосылки для повышения уровня оптимизации разрабатываемой микропроцессорной программы. Двукратное увеличение числа регистров общего назначения позволяет, прежде всего, сохранять больший объем промежуточных результатов вычислений, входных и выходных данных, не используя внешнего (по отношению к микропроцессорному ядру) ОЗУ. Замена обращений к внешней оперативной памяти обращениями к регистрам позволяет получить существенный выигрыш в быстродействии при выполнении программы за счет исключения операций перемещения данных между регистрами и ОЗУ и благодаря тому, что каждый из регистров общего назначения может выполнять функции аккумулятора.
е
Компоненты и технологии, № 6'2003
Входные данные IN_PORT[7:0] 8/ >
10
Блок регистров общего назначения 32 регистра X 8 разрядов
s1F s17 sOF s07
s1E S16 sOE s06
S1D S15 sOD s05
S1C S14 S0C S04
S1B s13 sOB s03
S1A s12 sOA s02
S19 s11 s09 s01
S18 s10 s08 S00
А-
Память программ 1024x18 бит
Блок
дешифрации
команд
Блок управления вводом/вывсщом
Адрес порта ввода/вывода PORT_ID[7:0]
-----► READSTROBE
-----► WRITESTROBE
Выходные данные —►OUT_PQRT[7:0]
АЛУ
ZERO CARRY , Регистр , статуса
Тактовый сигнал
Прерывание
INTERRUPT —
Схема управления прерываниями
Адрес
команды
ADDRESS[9:0]
БЛОК
управления
выбором
следующего
адреса
Регистр фиксации флагов при прерываниях
Программный
счетчик
Стек
Рис. 2. Архитектура микропроцессорного ядра PicoBlaze для Virtex-II
Четырехкратное увеличение адресного пространства программной памяти потребовало расширения шины адресов до десяти разрядов. Тем самым обеспечивается возможность прямого обращения к любой ячейке ППЗУ, используемого для хранения микропроцессорных программ, в диапазоне адресов от 000 до 3FF. При этом длина команд возросла до восемнадцати разрядов, что повлекло за собой соответствующее расширение шины команд.
В соответствии с увеличением ширины шины адресов также изменена разрядность элементов архитектуры микропроцессорного ядра РкоЫаге, которые выполняют функции формирования и хранения адресов команд. Разрядность программного счетчика,
регистров стека и блока управления выбором адреса следующей команды составляет десять бит.
Модернизация блока дешифрации команд, обусловленная необходимостью учета рассмотренных выше особенностей элементов архитектуры, привела, в частности, к изменению формата команд, поддерживаемых микропроцессорным ядром РкоЫаге, которое предназначено для применения в кристаллах семейства УМех-Н.
Изменения в процедуре обработки прерываний коснулись только значения адреса, по которому указывается вектор процедуры обслуживания прерывания. В связи с расширением диапазона адресов программной памяти в качестве адреса вектора прерывания,
Таблица 1. Форматы команд переходов микропроцессорного ядра РгсоВЬге для УНех-!!
Поле кода операции Поле адреса переходе Мнемоника Выполняемая операция
1 1 о 1 о о X X A A A A A A A A A A JUMP aaa Безусловный переход
1 1 о 1 о 1 о о A A A A A A A A A A JUMP Z,aaa Переход при условии, что флаг ZERO Flag находится в установленном состоянии
1 1 о 1 о 1 о 1 A A A A A A A A A A JUMP NZ,aaa Переход при условии, что флаг ZERO Flag находится в сброшенном состоянии
1 1 о 1 о 1 1 о A A A A A A A A A A JUMP C,aaa Переход при условии, что флаг CARRY Flag находится в установленном состоянии
1 1 о 1 о 1 1 1 A A A A A A A A A A JUMP NC,aaa Переход при условии, что флаг CARRY Flag находится в сброшенном состоянии
17 16 Т5 74 7з" 12 11 Ю" ~ T 7 T T T T 2 1 T Номер разряда микрокоманды
Таблица 2. Форматы команд вызова подпрограмм для микропроцессорного ядра РгсоВЬге для УНех-!!
Поле кода операции Поле адреса подпрограммы Мнемоника Выполняемая операция
1 1 о 1 1 о X X A A A A A A A A A A CALL aaa Безусловный вызов подпрограммы
1 1 о 1 1 1 о о A A A A A A A A A A CALL Z,aaa Вызов подпрограммы при условии, что флаг ZERO Flag находится в установленном состоянии
1 1 о 1 1 1 о 1 A A A A A A A A A A CALL NZ,aaa Вызов подпрограммы при условии, что флаг ZERO Flag находится в сброшенном состоянии
1 1 о 1 1 1 1 о A A A A A A A A A A CALL C,aaa Вызов подпрограммы при условии, что флаг CARRY Flag находится в установленном состоянии
1 1 о 1 1 1 1 1 A A A A A A A A A A CALL NC,aaa Вызов подпрограммы при условии, что флаг CARRY Flag находится в сброшенном состоянии
17 Тб Т5 Т4 Тз" 72" ТГ Ю" T ~ ~ ~T T T "2” T T | Номер разряда микрокоманды
который в семействе микропроцессорных ядер PicoBlaze соответствует максимально допустимому значению адреса, используется значение 3FF.
Система команд микропроцессорного ядра PicoBlaze
для Virtex-II
В состав системы команд микропроцессорного ядра PicoBlaze, встраиваемого в проекты, которые выполняются на основе ПЛИС семейства Virtex-II, входят те же 49 инструкций, что были подробно рассмотрены ранее [2]. При этом сохраняется классификация команд по функциональному признаку, в соответствии с которой они подразделяются на шесть уже известных групп. Изменения произошли в формате команд и их мнемонической записи. Необходимость преобразования формата инструкций обусловлена архитектурными особенностями, рассмотренными в предыдущем разделе. Как уже упоминалось, длина всех команд в двоичном представлении составляет восемнадцать разрядов. В большинстве инструкций поменялась длина полей и, соответственно, коды выполняемых операций. В некоторых командах изменилось взаимное расположение полей. В последующих разделах для каждой функциональной группы команд будут представлены соответствующие форматы и мнемоника инструкций рассматриваемого представителя семейства микропроцессорных ядер PicoBlaze.
Команды управления последовательностью выполнения операций в программе для ядра PicoBlaze для Virtex-II
В командах безусловного и условных переходов JUMP изменилась структура поля кода операции и длина поля адреса перехода. В соответствии с разрядностью шины адресов длина поля адреса перехода увеличена до десяти двоичных разрядов. При мнемонической форме записи команд передачи управления в программе параметр, определяющий адрес перехода, задается в виде последовательности, состоящей из трех шестнадцатеричных символов. Форматы команд безусловного и условных переходов JUMP в новой редакции представлены в таблице 1.
Модификация команд обращения к подпрограммам CALL также затронула структуру поля кода операции и длину поля адреса вызываемой процедуры. В новой редакции поле адреса вызываемой подпрограммы включает в себя десять двоичных разрядов. При мнемонической форме записи команд обращения к подпрограммам значение параметра, указывающее начальный адрес вызываемой процедуры, представляется в виде трехзначного шестнадцатеричного числа. Новые версии форматов команд безусловного и условных вызовов подпрограмм CALL приведены в таблице 2.
Преобразование инструкций возврата из подпрограммы RETURN коснулось тех же
Компоненты и технологии, № 6'2003
полей, что и в командах вызова подпрограмм. Для всех вариантов команд завершения выполняемой подпрограммы и передачи управления основной программе или подпрограмме, из которой производилось обращение к этой процедуре, изменены коды выполняемой операции. Мнемоническая форма записи команд RETURN сохранилась без изменений. В таблице 3 представлены модифицированные форматы команд безусловного и условного возврата из подпрограммы RETURN.
Группа логических команд микропроцессорного ядра PicoBlaze
для Virtex-II
В формате инструкций, которые относятся к группе логических команд, следует обратить внимание на два основных отличия по сравнению с аналогичными инструкциями, представленными в прошлом номере журнала [2]. Во-первых, длина поля кода операции увеличилась на один разряд и составляет пять бит. Во-вторых, поля команд, предназначенные для определения номеров регистров, содержимое которых используется в качестве операндов, также содержат пять двоичных разрядов. Изменение длины полей, в которых указываются номера регистров, связано с двукратным увеличением объема блока регистров общего назначения.
В качестве номера регистра NN, который указывается в тексте инструкций, может использоваться любое число в диапазоне от 0 до 31, которое при мнемонической форме записи команд задается в виде последовательности из двух шестнадцатеричных символов (00-1F).
Новая редакция форматов команд поразрядных операций «Логическое И» (поразрядное умножение) AND, выполняемых над содержимым регистра общего назначения и константой kk, значение которой задается непосредственно в тексте инструкции, а также над содержимым двух регистров общего назначения, приведена в таблице 4.
Модифицированные форматы инструкций OR, предназначенных для выполнения операций поразрядного сложения двух операндов (поразрядное «Логическое ИЛИ»), определены в таблице 5 для двух вариантов.
В первом случае операндами является содержимое любого из тридцати двух регистров общего назначения и константа kk, значение которой указывается в соответствующем поле команды, а во втором — содержимое двух регистров с номерами NN и MM.
Новая редакция форматов команд XOR, используемых для выполнения поразрядной операции «Исключающее ИЛИ» с участием содержимого регистра общего назначения с номером NN и константы kk или содержимого двух регистров с номерами NN и MM, представлена в таблице 6.
Форматы инструкций LOAD, предназначенных для загрузки константы или содержимого какого-либо регистра в выбранный регистр общего назначения, в новой редакции приведены в таблице 7.
Таблица З. Форматы команд безусловного и условного возврата из подпрограммы для микропроцессорного ядра PicoBlaze для Virtex-II
Поле кода операции Поле адреса Мнемоника Выполняемая операция
1 о о 1 о о X X о о о о о о о о о о RETURN Безусловный возврат из подпрограммы
1 о о 1 о 1 о о о о о о о о о о о о RETURN Z Возврат из подпрограммы при условии, что флаг ZERO Flag находится в установленном состоянии
1 о о 1 о 1 о 1 о о о о о о о о о о RETURN NZ Возврат из подпрограммы при условии, что флаг ZERO Flag находится в сброшенном состоянии
1 о о 1 о 1 1 о о о о о о о о о о о RETURN C Возврат из подпрограммы при условии, что флаг CARRY Flag находится в установленном состоянии
1 о о 1 о 1 1 1 о о о о о о о о о о RETURN NC Возврат из подпрограммы при условии, что флаг CARRY Flag находится в сброшенном состоянии
Ї7 Тб ТТ ТГ Т7 ТТ ТТ То" Т ~Т ~ ~т т т т т т | Номер разряда микрокоманды
Таблица 4. Форматы команд поразрядных операций «Логическое И» микропроцессорного ядра PicoBlaze для Virtex-II
Поле кода Поле номера операции регистра
Поле константы
Поле кода операции
Поле номера Поле номера Нулевые первого регистра второго регистра разряды
17 1б 15 14 13 12 11 1о 9 В 7 б 5 4 3 2 1 о
AND sNN, kk
AND sNN,sMM
Выполняемая операция
Поразрядное «Логическое И» содержимого регистра sNN и константы kk
Выполняемая операция
Поразрядное «Логическое И» содержимого регистров sNN и sMM
Номер разряда микрокоманды
Таблица S. Форматы команд поразрядных операций «Логическое ИЛИ» микропроцессорного ядра PicoBlaze для Virtex-II
Поле кода Поле номера операции регистра
Поле константы
Поле кода операции
Поле номера Поле номера Нулевые первого регистра второго регистра разряды
17 1б 15 14 13 12 11 1о 9 В 7 б 5 4 3 2 1 о
OR sNN, kk
OR sNN,sMM
Выполняемая операция
Поразрядное «Логическое ИЛИ» содержимого регистра sNN и константы kk
Выполняемая операция
Поразрядное «Логическое ИЛИ» содержимого регистров sNN и sMM
Номер разряда микрокоманды
Таблица б. Форматы команд поразрядных операций «Исключающее ИЛИ» микропроцессорного ядра PicoBlaze для Virtex-II
Поле кода Поле номера операции регистра
Поле константы
Поле кода операции
Поле номера Поле номера Нулевые первого регистра второго регистра разряды
17 1б 15 14 13 12 11 1о 9 В 7 б 5 4 3 2 1 о
XOR sNN, kk
XOR sNN,sMM
Выполняемая операция
Поразрядное «Исключающее ИЛИ» содержимого регистра sNN и константы kk
Выполняемая операция
Поразрядное «Исключающее ИЛИ» содержимого регистров sNN и sMM
Номер разряда микрокоманды
Таблица 7. Форматы инструкции загрузки данных в регистр общего назначения микропроцессорного ядра PicoBlaze для Virtex-II
Поле кода Поле номера операции регистра
Поле константы
Выполняемая операция
^ LOAD sNN, kk I Загрузка константы kk в регистр sNN
Поле кода операции Поле номера первого регистра Поле номера второго регистра Нулевые разряды Мнемоника Выполняемая операция
о 1 о о о n n n n n m m m m m о о о LOAD sNN,sMM Загрузка содержимого регистра sMM в регистр sNN
17 Тб ТТ ТТ ТТ 12 11 То" т 7 Т ~Г Т Т 2 1 Т Номер разряда микрокоманды
Группа арифметических команд микропроцессорного ядра PicoBIaze
для Virtex-II
В структуре полей и мнемонической форме записи арифметических команд микропроцессорного ядра PicoBlaze, предназначенного для применения в кристаллах семейства Virtex-II, произошли те же изменения (по сравнению с форматами аналогичных команд, приведенными ранее [2]), что
и в логических инструкциях, рассмотренных в предыдущем разделе.
Модифицированные варианты форматов команд сложения ADD содержимого регистра с номером NN и константы kk или содержимого двух регистров общего назначения с номерами NN и MM без учета переноса представлены в таблице 8.
Новая версия форматов инструкций ADDCY, предназначенных для вычисления суммы двух операндов с учетом значения
о
о
о
о
K
K
K
K
K
K
K
K
n
n
n
n
n
о
о
о
о
о
о
n
n
n
n
n
m
m
m
m
о
о
о
о
K
K
K
K
K
K
K
K
n
n
n
n
n
о
о
о
о
о
о
n
n
n
n
n
m
m
m
m
о
о
о
K
K
K
K
K
K
K
K
n
n
n
n
n
о
о
о
о
о
n
n
n
n
n
m
m
m
e
Компоненты и технологии, № 6'2003
Таблица S. Форматы команд сложения двух операндов без учета переноса для микропроцессорного ядра PicoBlaze для Virtex-II
Поле кода Поле номера операции регистра
Поле константы
ADD sNN, kk
Выполняемая операция
Сложение содержимого регистра sNN и константы kk
Поле кода операции
Поле номера Поле номера Нулевые первого регистра второго регистра разряды
17 1б 15 14 13 12 11 1о 9 В 7 б 5 4 3 2 1 о
ADD sNN,sMM
Выполняемая операция
Сложение содержимого регистров sNn и sMM
Номер разряда микрокоманды
Таблица 9. Форматы команд сложения двух операндов с учетом переноса для микропроцессорного ядра PicoBlaze для Virtex-II
Поле кода Поле номера операции регистра
Поле константы
Поле кода операции
Поле номера Поле номера Нулевые первого регистра второго регистра разряды
17 1б 15 14 13 12 11 1о 9 В 7 б 5 4 3 2 1 о
ADDCY sNN, kk
ADDCY sNN,sMM
Выполняемая операция
Сложение содержимого регистра sNN и константы kk с учетом переноса
Выполняемая операция
Сложение содержимого регистров sNN и sMM с учетом переноса
Номер разряда микрокоманды
Таблица 10. Форматы команд вычитания без учета заема для микропроцессорного ядра PicoBlaze для Virtex-I
Поле кода Поле номера операции регистра
Поле константы
Поле кода операции
Поле номера Поле номера Нулевые первого регистра второго регистра разряды
17 1б 15 14 13 12 11 1о 9 В 7 б 5 4 3 2 1 о
SUB sNN, kk
SUB sNN,sMM
Выполняемая операция
Вычитание из содержимого регистра sNN константы kk
Выполняемая операция
Вычитание содержимого регистра sMM из содержимого регистра sNN
Номер разряда микрокоманды
Таблица її. Форматы инструкций вычитания с учетом заема для микропроцессорного ядра PicoBlaze для Virtex-II
Поле кода Поле номера операции регистра
Поле константы
Поле кода операции
Поле номера Поле номера Нулевые первого регистра второго регистра разряды
17 1б 15 14 13 12 11 1о 9 В 7 б 5 4 3 2 1 о
Мнемоника Выполняемая операция
SUBCY sNN, kk Вычитание из содержимого регистра sNN константы kk с учетом заема
Мнемоника Выполняемая операция
SUBCY sNN,sMM Вычитание содержимого регистра sMM из содержимого регистра sNN с учетом заема
Номер разряда микрокоманды
Таблица 12. Форматы команд логического или циклического сдвига данных микропроцессорного ядра PicoBlaze для Virtex-II
Поле кода операции П оле номера регистра Поле направления сдвига Полетипа сдвига Мнемо- ника Выполняемая операция
1 о 1 о о n n n n n о о о о 1 1 1 о SRG sNN Логический сдвиг содержимого регистра эМ вправо на один разряд с записью 0
1 о 1 о о n n n n n о о о о 1 1 1 1 SR1 sNN Логический сдвиг содержимого регистра эМ вправо на один разряд с записью 1
1 о 1 о о n n n n n о о о о 1 о 1 о SRX sNN Логический сдвиг содержимого регистра эМ вправо с сохранением последнего разряда
1 о 1 о о n n n n n о о о о 1 о о о SRA sNN Циклический сдвиг содержимого регистра эМ вправо через разряд переноса/заема
1 о 1 о о n n n n n о о о о 1 1 о о RR sNN Циклический сдвиг содержимого регистра эМ вправо без участия бита переноса
1 о 1 о о n n n n n о о о о о 1 1 о SW sNN Логический сдвиг содержимого регистра эМ влево на один разряд с записью 0
1 о 1 о о n n n n n о о о о о 1 1 1 SL1 sNN Логический сдвиг содержимого регистра эМ влево на один разряд с записью 1
1 о 1 о о n n n n n о о о о о о 1 о SLX sNN Логический сдвиг содержимого регистра эМ влево с сохранением последнего разряда
1 о 1 о о n n n n n о о о о о о о о SLA sNN Циклический сдвиг содержимого регистра эМ влево через разряд переноса/заема
1 о 1 о о n n n n n о о о о о 1 о о RL sNN Циклический сдвиг содержимого регистра эМ влево без участия бита переноса
17 Тб Т5 74 Тз" 12 11 То" T 7 т ~г т т 2 1 т | Номер разряда микрокоманды
флага переноса, полученного при выполнении предыдущей операции, приведена в таблице 9.
Форматы инструкций SUB, используемых для выполнения операции вычитания с участием тех же операндов, что и в командах сложения, без учета заема, в новой редакции представлены в таблице 10.
Модифицированные варианты форматов команд SUBCY, предназначенных для вычисления разности двух операндов с учетом значения заема, образовавшегося при выполнении предыдущей операции, приведены в таблице 11.
Команды сдвига данных для микропроцессорного ядра PicoBlaze для Virtex-II
В формате команд, предназначенных для выполнения операций сдвига данных, произошли те же изменения, что и в формате логических инструкций — длина полей кода операции и номера регистра увеличилась на один бит и составляет пять двоичных разрядов. Отличия в мнемонической форме записи команд сдвига от однотипных выражений, приведенных в предыдущей статье [2], заключаются только в форме представления параметра, определяющего номер регистра общего назначения, над содержимым которого выполняется соответствующая операция. Номер регистра, участвующего в операции сдвига, задается в виде последовательности, состоящей из двух шестнадцатеричных символов. Преобразованные форматы инструкций логического (арифметического) и циклического сдвига данных, находящихся в регистре общего назначения с указанным номером, представлены в таблице 12.
Команды ввода-вывода микропроцессорного ядра PicoBlaze
для Virtex-II
Структура инструкций ввода-вывода, используемых для организации чтения данных из входного порта в заданный регистр общего назначения и передачи информации из указанного регистра в выходной порт, отличается от структуры аналогичных команд, приведенной ранее [2], длиной полей кода операции и номеров регистров, каждая из которых составляет по пять двоичных разрядов. Значения номеров регистров общего назначения, используемых в операциях ввода-вывода, при мнемонической форме записи указываются в виде двухразрядного шестнадцатеричного числа. Новые варианты форматов команд ввода-вывода с различными видами адресации приведены в таблице 13.
Команды обслуживания прерываний микропроцессорного ядра PicoBlaze для Virtex-II
В формате инструкций обслуживания прерываний изменилось взаимное расположение поля кода операции и поля режима обра-
о
о
о
о
K
K
K
K
K
K
K
K
n
n
n
n
n
о
о
о
о
о
о
n
n
n
n
n
m
m
m
m
m
о
о
о
K
K
K
K
K
K
K
K
n
n
n
n
n
о
о
о
о
о
n
n
n
n
n
m
m
m
m
m
о
о
о
K
K
K
K
K
K
K
K
n
n
n
n
n
о
о
о
о
о
n
n
n
n
n
m
m
m
m
m
о
о
K
K
K
K
K
K
K
K
n
n
n
n
n
о
о
о
о
n
n
n
n
n
m
m
m
m
m
Компоненты и технологии, № 6'2003
Таблица 13. Форматы команд ввода-вывода микропроцессорного ядра РкоВЬге для У1г[ех-1
Поле кода Поле номера операции регистра
Поле адреса порта ввода/вывода
Выполняемая операция
1 о о о о n n n n n K K K K K K K K INPUT sNN, kk Чтение данных из порта ввода/вывода с адресом кк в регистр эМ
1 о о о 1 n n n n n K K K K K K K K OUTPUT sNN, kk Запись данных из регистра эМ в порт ввода/вывода с адресом кк
Поле кода операции Поле номера первого регистра Поле номера второго регистра Нулевые разряды Мнемо- ника Выполняемая операция
1 1 о о о n n n n n m m m m m о о о INPUT sNN,(sMM) Чтение данных из порта ввода/вывода с адресом, определяемым регистром эММ, в регистр эМ
1 1 о о 1 n n n n n m m m m m о о о OUTPUT sNN,(sMM) Запись данных из регистра эМ в порт с адресом, определяемым регистром эММ
17 1б 15 14 13 12 11 1о 9 В 7 б 5 4 3 2 1 о Номер разряда микрокоманды
Таблица 14. Форматы команд обслуживания прерываний микропроцессорного ядра Р1соВ!аге для УНех-П
Поле кода операции Поле режима обработки прерываний Мнемо- ника Выполняемая операция
1 о 1 1 о о о о о о о о о о о о о 1 RETURNI ENABLE Возврат из процедуры обработки и установка режима запрета прерывания
1 о 1 1 о о о о о о о о о о о о о о RETURNI DISABLE Возврат из процедуры обработки и установка режима разрешения прерывания
1 1 1 1 о о о о о о о о о о о о о 1 ENABLE INTERRUPT Установка режима разрешения прерывания
1 1 1 1 о о о о о о о о о о о о о о DISABLE INTERRUPT Установка режима запрета прерывания
17 1б Т5" и 73" 72 7Г їо" Т ~т Т ~5~ Т Т ~т т т | Номер разряда микрокоманды
ботки прерываний. Кроме того, длина каждого из этих полей команды в двоичном представлении стала составлять девять разрядов. При этом мнемоника инструкций, используемых для обработки прерываний, осталась прежней.
Завершая рассмотрение особенностей встраиваемого микропроцессорного модуля РкоВ1аге, реализуемого в кристаллах серии УгЛех-П, следует упомянуть о новой версии ассемблера, включенной в состав комплекта, предоставляемого пользователю. Новый вариант программы, формирующей файлы описания содержимого программной памяти, учитывает изменения в формате команд и параметры блочного ОЗУ используемых ПЛИС. В следующей статье цикла будут представлены отличительные особенности наиболее компактной версии микропроцессорного ядра РкоВ1аге, предназначенной для использования в проектах, выполняемых на базе кристаллов семейства СооШиппег-П.
Новая редакция форматов команд возврата из процедуры обслуживания прерываний RETURNI и установки режима обслуживания прерываний в программе ENABLE INTERRUPT и DISABLE INTERRUPT представлена в таблице 14.
Литература
1. Зотов В. РкоВ1аге — семейство восьмиразрядных микропроцессорных ядер, реализуемых на основе ПЛИС фирмы ХШпх // Компоненты и технологии. 2003. № 4.
2. Зотов В. Система команд микропроцессорного ядра РкоВ1аге, реализуемого на основе ПЛИС семейств БраЛап-П, 8раг1ап-11Е, Уи1ех, Уи1ех-Е // Компоненты и технологии. 2003. № 5.
3. Зотов В. Проектирование цифровых устройств на основе ПЛИС фирмы ХШпх в САПР МеЬРаск КЕ. М.: Горячая линия — Телеком. 2003.
Мнемо
ника
е