Окончание. Начало в №1'2004.
Система команд микропроцессорного ядра MicroBlaze
Команды сдвига данных
Инструкции этой группы предназначены для выполнения операций арифметического или циклического сдвига данных, хранящихся в регистре общего назначения, номер которого указывается в качестве второго параметра команды. В составе рассматриваемой группы команд можно выделить две подгруппы: основную и дополнительную.
Инструкции сдвига данных, относящиеся к основной подгруппе, поддерживаются всеми элементами семейства микропроцессорных ядер MicroBlaze по умолчанию. Дополнительные команды сдвига данных поддерживаются элементами этого семейства только при условии, что в процессе конфигурирования ядра MicroBlaze включена соответствующая опция.
Рис. 13. Выполнение основных операций арифметического и циклического сдвига данных
Основной набор инструкций сдвига содержит команды арифметического и циклического сдвига данных на один разряд вправо. Эти инструкции содержат два параметра. Первый параметр определяет номер регистра общего назначения, предназначенного для записи результата операции. Второй параметр указывает номер регистра, содержащего исходные данные. Форматы основных инструкций сдвига данных представлены в таблица 12.
Таблица 12. Форматы основных команд арифметического и циклического сдвига данных
Команда SRA Rd,Ra позволяет осуществить операцию арифметического сдвига вправо данных, которые содержатся в регистре с номером a, с сохранением состояния последнего (крайнего левого) разряда. Циклический сдвиг данных в регистре общего назначения с номером a на один разряд вправо, выполняемый через разряд переноса (займа) CARRY Flag регистра статуса, осуществляется с помощью команды SRC Rd,Ra. Инструкция SRL Rd,Ra предназначена для реализации операции арифметического сдвига данных, содержащихся в регистре с номером a, вправо на один разряд с записью нулевого бита в «освободившийся» (крайний левый) разряд. Результат основных сдвиговых операций, осуществляемых с помощью команд SRA, SRC и SRL, записывается в регистр общего назначения с номером d. При выполнении этих сдвиговых инструкций бит данных, «выталкиваемый» из регистра общего назначения с номером a в процессе сдвига, записывается в двадцать девятый разряд регистра статуса, который содержит значение флага переноса (займа) CARRY Flag. На рисунке 13 в наглядной форме показан процесс выполнения основных сдвиговых операций, поддерживаемых микропроцессорным ядром MicroBlaze.
Дополнительные команды сдвига позволяют осуществить операцию арифметического или циклического сдвига данных вправо или влево на несколько разрядов. При использовании этих инструкций необходимо указать три параметра.
Первые два параметра выполняют те же функции, что и в основных командах сдвига данных. Значение третьего параметра команды косвенно или явно определяет, на какое количество разрядов выполняется сдвиг.
В качестве третьего параметра дополнительных инструкций сдвига может указываться номер регистра общего назначения или непосредственно числовое значение. Если третий параметр команды представляет собой номер регистра, то последние пять разрядов (с 27-го по 31-й) содержимого этого регистра определяют, на какое количество разрядов производится сдвиг. Форматы дополнительных инструкций арифметического и циклического сдвига данных представлены в таблице 13.
Таблица 13. Форматы дополнительных команд арифметического и циклического сдвига данных
Для осуществления операции циклического сдвига данных, хранящихся в регистре с номером a, вправо на N разрядов предусмотрены команды BSRL Rd,Ra,Rb и BSRLI Rd,Ra,Imm. При использовании инструкции BSRL значение N определяют последние пять разрядов содержимого регистра с номером b.
В команде BSRLI значение N указывается непосредственно в виде константы Imm. Условные изображения, приведенные на рис. 14, поясняют выполнение дополнительных команд арифметического и циклического сдвига данных.
Рис. 14. Выполнение дополнительных команд арифметического и циклического сдвига данных
Команды BSRA Rd,Ra,Rb и BSRAI Rd,Ra,Imm предназначены для выполнения операций арифметического сдвига содержимого регистра общего назначения с номером a вправо на N разрядов. При этом в «освободившиеся» (крайние левые) разряды регистра Rd, используемого для записи результата операции, заносится значение нулевого разряда исходного регистра Ra (рис. 14). Количество разрядов N, на которое производится сдвиг, в инструкции BSRA определяется последними пятью разрядами содержимого регистра с номером b, а в команде BSRAI — значением константы Imm.
Операции циклического сдвига содержимого регистра общего назначения с номером a на N разрядов влево реализуются с помощью инструкций BSLL Rd,Ra,Rb и BSLLI Rd,Ra,Imm. Значение N при выполнении команды BSLL составляют пять последних разрядов содержимого регистра с номером b (рис. 14). В инструкции BSLLI это значение задается непосредственно в виде константы Imm.
Как видно из рис. 14, при использовании дополнительных сдвиговых команд циклический или арифметический сдвиг данных производится без участия разряда переноса (займа) CARRY Flag регистра статуса.
Команды преобразования типов данных
Команды преобразования типов данных позволяют трансформировать значения, представленные различным количеством двоичных разрядов, в 32-разрядное слово. Форматы этих инструкций приведены в таблице 14.
Таблица 14. Форматы инструкций преобразования типов данных
Команда SEXT8 Rd,Ra предназначена для выполнения операции знакового расширения однобайтового значения, которое содержится в регистре общего назначения с номером a, до 32-разрядного слова. Для осуществления операции знакового расширения 2-байтового значения, которое находится в регистре с номером a, используется инструкция SEXT16 Rd,Ra. Результат преобразования данных, выполняемого с помощью команд SEXT8 и SEXT16, записывается в регистр общего назначения с номером d. Процесс выполнения инструкций преобразования типов данных демонстрирует рисунок 15.
Рис. 15. Выполнение инструкций преобразования типов данных
Команду IMM Imm также можно отнести к группе инструкций преобразования типов данных. 16-разрядное значение Imm, указываемое в качестве единственного параметра инструкции, записывается в регистр, предназначенный для хранения временных данных. Это значение автоматически учитывается при выполнении следующей команды, относящейся к типу В, в качестве 16 старших разрядов значения, указываемого непосредственно в этой инструкции. Таким образом, инструкция IMM позволяет указывать 32-разрядные значения при использовании непосредственного способа определения операндов в команде.
Команды передачи данных
Данную группу составляют инструкции, предназначенные для организации обмена данными между памятью и регистрами общего назначения. В системе команд микропроцессорного ядра MicroBlaze предусмотрены инструкции, позволяющие передавать данные в виде слов размерностью четыре байта (32 двоичных разряда), полуслов размерностью 2 байта (16 двоичных разрядов) и побайтно (8 двоичных разрядов). При выполнении операций обращения к памяти используется косвенная адресация. Значение адреса памяти при выполнении операций чтения или записи представляется в виде суммы содержимого некоторого базового регистра общего назначения и смещения.
Номер базового регистра указывается в виде второго параметра соответствующей команды. При мнемонической форме записи команд передачи данных значение смещения определяется с помощью третьего параметра инструкции. Смещение может задаваться двумя способами. Первый способ позволяет определить значение смещения в виде содержимого одного из регистров общего назначения. При использовании второго способа значение смещения является результатом знакового расширения 16-разрядной константы Imm, указанной непосредственно в инструкции, до 32-разрядного слова. Поэтому в качестве третьего параметра команд передачи данных может использоваться номер регистра общего назначения или 16-разрядная константа Imm. Номер регистра общего назначения, который используется в качестве источника данных, записываемых в память, или для хранения информации, извлекаемой из памяти, указывается в виде первого параметра соответствующей команды передачи данных.
Форматы инструкций, предназначенных для загрузки данных различной длины из памяти в регистр общего назначения, приведены в таблице 15.
Таблица 15. Форматы команд передачи данных из памяти в регистр общего назначения
Инструкции LBU Rd,Ra,Rb и LBUI Rd,Ra,Imm используются для передачи байта данных из памяти в регистр общего назначения с номером d при различных способах определения значения смещения. Передаваемые данные записываются в младшие восемь разрядов регистра Rd. В остальные разряды этого регистра заносится нулевое значение. Рисунок 16 иллюстрирует выполнение операций побайтной загрузки данных.
Рис. 16. Выполнение инструкций передачи байта данных из памяти в регистр общего назначения
Команды LHU Rd,Ra,Rb и LHUI Rd,Ra,Imm выполняют загрузку полуслова данных, состоящего из 2 байт, из памяти в регистр общего назначения с номером d. Считанная информация размещается в младшие 16 разрядов регистра Rd. Неиспользуемые разряды этого регистра сбрасываются в состояние, соответствующее нулевому значению. Рисунок 17 в наглядной форме поясняет выполнение копирования полуслова данных из памяти в регистр общего назначения.
Рис. 17. Выполнение команд передачи полуслова данных из памяти в регистр общего назначения
Для передачи слова данных из памяти в регистр общего назначения предназначены команды LW Rd,Ra,Rb и LWI Rd,Ra,Imm. Процесс их выполнения показан на рисунке 18.
Рис. 18. Выполнение инструкций передачи слова данных из памяти в регистр общего назначения
Для сохранения в памяти информации, содержащейся в регистрах общего назначения, предусмотрены три типа команд, отличающиеся размерностью передаваемых данных. Каждый из этих типов представлен двумя вариантами инструкций, соответствующими различным способам определения смещения при вычислении адреса записи. Информация о форматах этих команд содержится в таблице 16.
Таблица 16. Форматы команд передачи данных из регистра общего назначения в память
Запись младшего байта данных из регистра с номером d в память по адресу, равному сумме значений содержимого регистров с номерами a и b или содержимого регистра Ra и результата знакового расширения константы Imm, осуществляется с помощью команд SB Rd,Ra,Rb и SBI Rd,Ra,Imm соответственно. Рисунке 19 поясняет выполнение операций побайтной передачи данных из регистра общего назначения в память.
Рис. 19. Выполнение команд побайтной передачи данных из регистра общего
назначения в память
Инструкции SH Rd,Ra,Rb и SHI Rd,Ra,Imm используются для передачи полуслова данных, состоящего из двух младших байт содержимого регистра общего назначения с номером d, в память. Выполнение команд записи полуслова данных из регистра общего назначения в память иллюстрирует рисунок 20.
Рис. 20. Выполнение инструкций копирования полуслова данных из регистра
общего назначения в память
Команды SW Rd,Ra,Rb и SWI Rd,Ra,Imm предназначены для сохранения в памяти содержимого регистра общего назначения с номером d. На рисунок 21 в наглядной форме показан процесс выполнения операций записи слова данных в память.
Рис. 21. Выполнение команд передачи слова данных из регистра общего назначения в память
Команды управления последовательностью выполнения операций в программе
Группа инструкций, используемых для передачи управления в программе, включает в себя:
- команды безусловных переходов;
- команды условных переходов;
- команды возврата из подпрограмм и процедур обслуживания прерываний.
Система команд микропроцессорного ядра MicroBlaze содержит инструкции безусловных переходов, использующие как абсолютную, так и относительную адресацию. При абсолютной адресации исполнительный адрес, по которому осуществляется передача управления в программе, указывается в виде значения соответствующего параметра команды.
В случае применения инструкций переходов, использующих относительную адресацию, исполнительный адрес вычисляется как сумма текущего значения содержимого программного счетчика и смещения, задаваемого в виде значения соответствующего параметра команды. Для определения значения адреса перехода (при абсолютной адресации) или смещения (при относительной адресации) может применяться регистровый косвенный или непосредственный способы.
При регистровом косвенном способе значение адреса перехода или смещения содержится в регистре общего назначения, номер которого указывается в качестве соответствующего параметра команды. Непосредственный способ позволяет задавать требуемые значения адреса или смещения в виде составной части (соответствующего поля) инструкции. Как правило, при этом значение адреса или смещения представляет собой результат знакового расширения 16-разрядной константы Imm, указанной непосредственно в инструкции, до 32-разрядного слова.
Большинство команд безусловных переходов представлено в двух вариантах: с немедленной передачей управления и с задержкой исполнения. При выполнении инструкции с немедленной передачей управления загрузка нового значения (адреса перехода) в программный счетчик осуществляется сразу же после завершения обработки этой команды.
Инструкции безусловных переходов с задержкой исполнения применяются с целью сокращения временных потерь, вызванных необходимостью перезагрузки конвейера после их выполнения. При использовании этих команд фактическая передача управления происходит только после завершения исполнения следующей инструкции, находящейся в фазе дешифрации. В конце мнемонического идентификатора таких инструкций присутствует символ D (Delay), указывающий на то, что исполнение этих команд осуществляется с дополнительной задержкой.
Микропроцессорное ядро MicroBlaze поддерживает четырнадцать разновидностей команд безусловной передачи управления в программе, форматы которых приведены в таблице 17.
Таблица 17. Форматы команд безусловной передачи управления в программе
В инструкциях безусловного перехода BR Rb и BRI Imm используется относительная адресация с регистровым косвенным и непосредственным указанием значения смещения соответственно. Команда BR передает управление по адресу, равному сумме значений текущего состояния программного счетчика и содержимого регистра общего назначения, номер которого указывается в качестве единственного параметра инструкции. При использовании команды BRI адрес перехода представляет собой сумму текущего значения программного счетчика и результата знакового расширения 16-разрядной константы Imm, указанной непосредственно в инструкции, до 32-разрядного слова. Рисунок 22 демонстрирует выполнение команд безусловного перехода с относительной адресацией.
Рис. 22. Выполнение инструкций безусловного перехода с относительной
адресацией
Команды BRD Rb и BRID Imm также предназначены для осуществления безусловного перехода с относительной адресацией, но передача управления осуществляется только после завершения обработки следующей (декодируемой) инструкции. Команды BRLD Rd,Rb и BRLID Rd,Imm выполняют те же операции, что и предыдущая пара инструкций, сохраняя предварительно текущее состояние программного счетчика в регистре общего назначения. Номер регистра, используемого для записи текущего состояния программного счетчика, указывается в качестве значения первого параметра этих команд. Рисунок 23 поясняет выполнение команд безусловного перехода с относительной адресацией и задержкой исполнения.
Рис. 23. Выполнение инструкций безусловного перехода с относительной адресацией и задержкой исполнения
Инструкции BRA Rb и BRAI Imm реализуют функцию безусловной передачи управления в программе с использованием абсолютной адресации, с регистровым косвенным и непосредственным указанием значения адреса перехода соответственно. В команде BRA значение адреса перехода определяется содержимым регистра общего назначения, номер которого указывается в качестве единственного параметра инструкции. Команда BRAI передает управление по адресу, который представляет собой результат знакового расширения 16-разрядной константы Imm, указанной непосредственно в инструкции, до 32-разрядного слова. Рис. 24 демонстрирует выполнение команд безусловного перехода с абсолютной адресацией.
Рис. 24. Выполнение инструкций безусловного перехода с абсолютной адресацией
Команды BRAD Rb и BRAID Imm позволяют осуществлять безусловный переход с абсолютной адресацией и задержкой исполнения, которая необходима для завершения обработки следующей инструкции (находящейся в стадии декодирования). Единственным отличием команд BRALD Rd,Rb и BRALID Rd,Imm от предыдущей пары инструкций является сохранение текущего состояния программного счетчика в регистре общего назначения, номер которого указывается в качестве значения первого параметра этих команд. На рис. 25 показана последовательность операций при выполнении команд безусловного перехода с абсолютной адресацией и задержкой исполнения.
Рис. 25. Выполнение инструкций безусловного перехода с абсолютной адресацией и задержкой исполнения
Инструкции BRK Rd,Rb и BRKI Rd,Imm предназначены для реализации в программе режима Break с передачей управления по указанному адресу. В этих командах применяется абсолютная адресация. Первым параметром в данных инструкциях является номер одного из регистров общего назначения, который используется для записи значения текущего состояния программного счетчика. Содержимое этого регистра впоследствии может использоваться в процессе вычисления адреса возврата при выполнении соответствующей инструкции. В качестве значения второго параметра команды BRK также указывается номер регистра, содержимое которого определяет адрес передачи управления. В инструкции BRKI адрес перехода представляет собой результат знакового расширения 16-разрядной константы Imm, указанной непосредственно в инструкции, до 32-разрядного слова. При исполнении рассмотренных команд флаг Break in Progress Flag (28-й разряд регистра статуса) переключается в установленное состояние. Процесс выполнения команд BRK и BRKI иллюстрирует рисунок 26.
Рис. 26. Выполнение команд BRK и BRKI
При условных переходах загрузка в программный счетчик нового адреса, по которому передается управление в программе, производится только при выполнении соответствующего условия. Если заданное условие не выполнено, то программный счетчик продолжает работу в инкрементном режиме. Проверка выполнения соответствующего условия заключается в сопоставлении с нулем значения содержимого одного из регистров общего назначения, номер которого указывается в качестве первого параметра инструкций условных переходов. Система команд микропроцессорного ядра MicroBlaze содержит инструкции, позволяющие анализировать выполнение одного из шести типов условий:
- значение содержимого указанного регистра равно нулю;
- значение содержимого указанного регистра не равно нулю;
- значение содержимого указанного регистра меньше нуля;
- значение содержимого указанного регистра меньше или равно нулю;
- значение содержимого указанного регистра больше нуля;
- значение содержимого указанного регистра больше или равно нулю.
В отличие от команд безусловного перехода в инструкциях условных переходов всегда используется относительная адресация с регистровым косвенным и непосредственным указанием значения смещения. Все команды условной передачи управления представлены в двух вариантах: с немедленным исполнением и с задержкой до завершения обработки следующей (декодируемой) инструкции. Форматы команд условных переходов представлены в таблице 18.
Таблица 18. Форматы команд условных переходов
Инструкции BEQ Ra,Rb и BEQI Ra,Imm инициируют передачу управления по заданному адресу при условии, что значение содержимого регистра общего назначения с номером a равно нулю. Адрес перехода формируется путем суммирования текущего значения программного счетчика и смещения, которое указывается в виде содержимого регистра Rb (в команде BEQ) или результата знакового расширения 16-разрядной константы Imm до 32-разрядного слова (в команде BEQI). При исполнении команд BNE Ra,Rb и BNEI Ra,Imm управление передается инструкции с указанным адресом только в случае, если значение содержимого регистра общего назначения с номером a неравно нулю. Инструкции BLT Ra,Rb и BLTI Ra,Imm загружают новое значение адреса в программный счетчик при условии, что значение содержимого регистра Ra меньше нуля.
С помощью команд BLE Ra,Rb и BLEI Ra,Imm осуществляется переход к выполнению инструкции с указанным адресом, если содержимое регистра Ra меньше или равно нулю.
Инструкции BGT Ra,Rb и BGTI Ra,Imm предназначены для передачи управления в программе по новому адресу при условии, что значение содержимого регистра Ra больше нуля. Команды BGE Ra,Rb и BGEI Ra,Imm позволяют выполнить переход к инструкции с требуемым адресом, если содержимое регистра Ra больше или равно нулю. Рисунок 27 поясняет выполнение команд условных переходов.
Рис. 27. Выполнение инструкций условных переходов
Инструкции BEQD Ra,Rb, BNED Ra,Rb, BLTD Ra,Rb, BLED Ra,Rb, BGTD Ra,Rb, BGED Ra,Rb, BEQID Ra,Imm, BNEID Ra,Imm, BLTID Ra,Imm, BLEID Ra,Imm, BGTID Ra,Imm, BGEID Ra,Imm выполняют те же функции, что и команды BEQ, BNE, BLT, BLE, BGT, BGE, BEQI, BNEI, BLTI, BLEI, BGTI, BGEI, рассмотренные выше. Отличие заключается в том, что передача управления производится при выполнении соответствующего условия только после завершения обработки следующей инструкции, находящейся в стадии дешифрации. Процесс выполнения команд условного перехода с задержкой исполнения показан на рисунке 28.
Рис. 28. Выполнение инструкций условного перехода с задержкой исполнения
В системе команд микропроцессорного ядра MicroBlaze представлено три инструкции возврата управления в программе:
- команда возврата из подпрограмм;
- команда возврата из процедур обслуживания прерываний;
- команда выхода из режима Break.
Все команды этой подгруппы предусматривают задержку передачи управления до момента завершения исполнения следующей инструкции, находящейся в стадии дешифрации. Тем самым снижаются временные потери, связанные с необходимостью перезагрузки конвейера. В командах возврата применяется относительная адресация, при которой значение адреса возврата складывается из базового значения и смещения.
Все три инструкции возврата управления используют два параметра. В качестве значения первого параметра указывается номер регистра общего назначения, в котором содержится базовый адрес передачи управления.
Вторым параметром является 16-разрядная константа, значение которой определяется непосредственно в составе инструкции. Результат знакового расширения этой константы до 32-разрядного слова используется в качестве значения смещения при относительной адресации. Форматы инструкций возврата управления приведены в таблице 19.
Таблица 19. Форматы команд возврата управления в программе
Инструкция возврата из процедуры обслуживания прерывания RTID Ra,Imm предназначена для передачи управления программе, при выполнении которой поступил запрос прерывания. Адрес возврата вычисляется как сумма содержимого регистра общего назначения с номером a и результата знакового расширения константы Imm до 32-разрядного значения. После завершения исполнения этой команды флаг Interrupt Enable Flag (30-й разряд регистра статуса) переключается в установленное состояние (высокого логического уровня), разрешая тем самым обработку последующих прерываний. Выполнение инструкции возврата из процедуры обслуживания прерывания демонстрирует рисунок 29.
Рис. 29. Выполнение инструкций возврата управления в программе
Безусловное завершение выполняемой подпрограммы и передача управления основной программе или подпрограмме, из которой производилось обращение к этой процедуре, осуществляется с помощью команды RTSD Ra,Imm. При возврате из подпрограмм выполняется та же последовательность действий, что и при возврате из процедуры обслуживания прерывания, но значения флагов регистра статуса не изменяются (рис. 29).
Команда RTBD Ra,Imm используется для выхода из режима Break с передачей управления по адресу, значение которого равно сумме содержимого регистра общего назначения с номером a и результата знакового расширения константы Imm. После ее исполнения флаг Break in Progress Flag (двадцать восьмой разряд регистра статуса) переключается в сброшенное состояние (низкого логического уровня) (рис. 29).
Группа инструкций ввода/вывода
Интерфейс ввода-вывода микропроцессорного ядра MicroBlaze, соответствующий спецификации FSL (Fast Simplex Link), поддерживает два режима передачи данных: с блокировкой и без блокировки работы процессора. Для каждого из этих режимов предусмотрены соответствующие команды ввода-вывода. При выполнении инструкций, использующих режим блокировки, работа процессора приостанавливается до завершения считывания или записи достоверных данных. Исполнение команд ввода-вывода без блокировки не останавливает функционирование процессора независимо от того, могут ли быть считаны или переданы достоверные данные через указанный канал интерфейса FSL.
Одни и те же каналы интерфейса FSL могут использоваться для передачи как информационных, так и управляющих данных.
Тип передаваемого слова данных определяет значение специального контрольного бита.
В случае передачи информационных данных значение этого бита должно быть равно нулю. Для идентификации управляющих данных используется единичное значение контрольного бита. Поэтому для передачи информационных и управляющих данных используются различные варианты инструкций ввода-вывода.
Команды ввода-вывода через каналы интерфейса FSL используют два параметра. Значение первого параметра определяет номер регистра общего назначения, используемого в качестве приемника данных при операции ввода (чтения) или в качестве источника при выполнении операции вывода (записи). Второй параметр позволяет указать номер используемого канала интерфейса FSL.
Система команд микропроцессорного ядра MicroBlaze включает в себя четыре инструкции, предназначенные для чтения данных различного типа, поступающих через входной интерфейс FSL. Информация о форматах этих команд содержится в таблице 20.
Таблица 20. Форматы команд чтения данных, передаваемых через интерфейс FSL
Команда GET Rd,FSLn выполняет операцию чтения информационных данных из n-го канала интерфейса FSL в регистр общего назначения с номером d, используя режим блокировки процессора. Инструкция nGET Rd,FSLn предназначена для чтения информационных данных из n-го канала интерфейса FSL в регистр Rd без блокировки. Считывание управляющих данных из n-го канала интерфейса FSL в регистр с номером d в режиме блокировки осуществляется с помощью команды cGET Rd,FSLn. Для чтения управляющих данных из n-го канала интерфейса FSL в регистр Rd без блокировки используется инструкция ncGET Rd,FSLn. Если при выполнении операций чтения значение контрольного бита не соответствует ожидаемому типу данных, то флаг FSL Error Flag (27-й разряд регистра статуса MSR) устанавливается в состояние, соответствующее высокому логическому уровню. При выполнении команд чтения без блокировки для достоверных данных флаг переноса Carry Flag (двадцать девятый разряд регистра статуса) сбрасывается в состояние низкого логического уровня. В случае чтения неверных данных флаг переноса устанавливается в состояние высокого логического уровня. Рисунок 30 поясняет выполнение инструкций чтения данных из каналов интерфейса FSL.
Рис. 30. Осуществление операций чтения данных из каналов интерфейса FSL
Для передачи данных различного типа из регистра общего назначения в выходной канал интерфейса FSL предусмотрены четыре варианта инструкций, форматы которых приведены в таблице 21.
Таблица 21. Форматы команд записи данных в выходной канал интерфейса FSL
Передача информационных данных из регистра общего назначения с номером a в n-й канал интерфейса FSL в режиме блокировки осуществляется с помощью команды PUT Ra,FSLn. Для записи информационных данных из регистра Ra в n-й канал интерфейса FSL без блокировки предназначена команда nPUT Ra,FSLn. Команда cPUT Ra,FSLn выполняет операцию передачи управляющих данных из регистра Ra в n-й канал интерфейса FSL, используя режим блокировки процессора. Инструкция ncPUT Ra,FSLn осуществляет вывод управляющих данных из регистра Ra в n-й канал интерфейса FSL без блокировки. При успешном выполнении команд передачи данных из регистра общего назначения в выходной канал интерфейса FSL флаг переноса Carry Flag сбрасывается в состояние низкого логического уровня. В противном случае флаг переноса устанавливается в состояние высокого логического уровня. Рисунок 31 поясняет выполнение команд передачи данных различного типа из регистра общего назначения в выходной канал интерфейса FSL.
Рис. 31. Выполнение инструкций передачи данных из регистра общего назначения в выходные каналы интерфейса FSL
Группа специальных команд
Инструкции, входящие в данную группу, предназначены для копирования содержимого регистров специального назначения в регистры общего назначения и наоборот. Форматы специальных команд представлены
в таблице 22.
Таблица 22. Форматы специальных команд
Инструкция MTS S1,Ra позволяет загрузить содержимое выбранного регистра общего назначения Ra в регистр состояния MSR. Данные, записанные в регистр состояния с помощью команды MTS, вступают в силу через один цикл после исполнения этой инструкции.
Команда MFS Rd,Sa выполняет копирование содержимого одного из регистров специального назначения Sa в регистр общего назначения с номером d. При использовании в инструкции MFS в качестве второго параметра S1 производится копирование содержимого регистра состояния MSR. Если в качестве второго параметра указано значение S0, то в регистр общего назначения Rd записывается содержимое программного счетчика. Рисунок 32 иллюстрирует выполнение специальных инструкций.
Рис. 32. Выполнение специальных инструкций
Инструкции записи в кэш-память
Для работы с кэш-памятью в системе команд микропроцессорного ядра MicroBlaze предусмотрены две инструкции, позволяющие загружать содержимое выбранного регистра общего назначения в кэш-память данных и в кэш-память команд. Эти инструкции используют два параметра. В качестве первого параметра указывается номер регистра общего назначения, который используется для хранения адреса записи. Второй параметр определяет номер регистра общего назначения, содержимое которого копируется в кэш-память. Форматы команд, предназначенных для работы с кэш-памятью, определены в таблице 23.
Таблица 23. Форматы команд записи данных и команд в кэш+память
Инструкция WIC Ra,Rb используется для загрузки содержимого регистра общего назначения Rb в кэш-память команд. Инструкция WDC Ra,Rb выполняет операцию копирования содержимого регистра Rb в кэш-память данных. Рисунок 33 поясняет процессвыполнения этих команд.
Рис. 33. Осуществление операций записи данных и команд в кэш+память
На этом завершается описание системы команд микропроцессорного ядра MicroBlaze. Прежде чем приступить к изучению процесса разработки устройств на основе этого модуля, необходимо познакомиться с программными средствами проектирования, составной частью которых является ядро MicroBlaze.
Поэтому в следующей публикации цикла будут рассмотрены характеристики и структура пакета Embedded Development Kit (EDK), предлагаемого фирмой Xilinx в качестве основного инструмента разработки и отладки встраиваемых микропроцессорных систем на основе ПЛИС серий FPGA.
Валерий Зотов
|