Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейств Spartan-3, Virtex-II и Virtex-IIPRO

№ 6’2005
Группа арифметических команд микропроцессорного ядра PicoBlaze, предназначенного для использования в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Группа арифметических команд микропроцессорного ядра PicoBlaze, предназначенного для использования в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Все статьи цикла:

Группа арифметических команд новой версии микропроцессорного ядра PicoBlaze пополнилась двумя вариантами инструкции COMPARE, которая будет представлена в заключительной части данного раздела. В структуре полей арифметических команд микропроцессорного ядра PicoBlaze, предназначенного для применения в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, произошли те же изменения (по сравнению с форматами аналогичных команд для базовой версии ядра [2]), что и в логических инструкциях, рассмотренных в предыдущем разделе.

В таблице 9 приведены модифицированные варианты форматов команд сложения ADD содержимого регистра с номером N и константы kk, а также содержимого двух регистров общего назначения с номерами N и M без учета переноса.

Таблица. 9. Форматы команд сложения двух операндов без учета переноса для микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Таблица 10 представляет новую версию формата инструкций ADDCY, выполняющих операции суммирования двух операндов с учетом значения флага переноса, полученного при выполнении предыдущей команды.

Таблица. 10. Форматы команд сложения двух операндов с учетом переноса для микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Форматы инструкций SUB, предназначенных для выполнения операции вычитания содержимого регистра с номером M или константы kk из содержимого регистра с номером N, без учета заема, в новой редакции представлены в таблице 11.

Таблица. 11. Форматы команд вычитания без учета заема для микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Модифицированные варианты форматов команд SUBCY, используемых для вычисления разности двух операндов с учетом значения заема, образовавшегося при выполнении предыдущей операции, приведены в таблице 12.

Таблица. 12. Форматы инструкций вычитания с учетом заема для микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Для осуществления арифметического (в отличие от поразрядного) сравнения значений двух восьмиразрядных операндов предназначена команда COMPARE. В качестве операндов при выполнении данной инструкции могут выступать содержимое регистра общего назначения и константа или содержимое двух регистров общего назначения. Первым операндом в инструкциях COMPARE всегда является содержимое регистра общего назначения, номер которого N указан в виде значения первого параметра команды. В качестве второго операнда выступает либо константа kk, значение которой указывается непосредственно в коде команды, либо содержимое другого регистра общего назначения с номером M, который задается в виде значения второго параметра команды. В таблице 13 показаны форматы двух вариантов команды сравнения COMPARE.

Таблица. 13. Форматы инструкций арифметического сравнения двух операндов для микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Исполнение команды COMPARE аналогично выполнению операции вычитания без учета заема, но полученный при этом результат не сохраняется. Информация о соотношении операндов отражается в состоянии флагов. Если значения операндов равны, то все разряды результирующего слова принимают значение логического нуля, и флаг нулевого результата ZERO Flag устанавливается в состояние, соответствующее логической единице. В остальных случаях флаг нулевого результата ZERO Flag находится в сброшенном состоянии. В том случае, если значение второго операнда больше значения первого операнда, то флаг CARRY Flag устанавливается в состояние, соответствующее логической единице. При другом соотношении операндов флаг CARRY Flag остается в сброшенном состоянии. Рис. 4 поясняет выполнение команд арифметического сравнения двух операндов.

Осуществление операций арифметического сравнения двух операндов
Рис. 4. Осуществление операций арифметического сравнения двух операндов

Команды сдвига данных микропроцессорного ядра PicoBlaze, предназначенного для использования в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

В формате команд, предназначенных для выполнения операций сдвига данных, произошли те же изменения, что и в формате логических инструкций — длина поля кода операции увеличилась на два бита и составляет шесть двоичных разрядов, а также поменялось значение кода операции. Мнемоническая форма записи команд сдвига осталась прежней. Новые форматы инструкций логического (арифметического) и циклического сдвига данных, находящихся в регистре общего назначения с указанным номером, представлены в таблице 14.

Таблица. 14. Форматы команд логического (арифметического) и циклического сдвига данных микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Команды ввода-вывода микропроцессорного ядра PicoBlaze, предназначенного для использования в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Формат инструкций ввода-вывода, предназначенных для чтения данных из входного порта в заданный регистр общего назначения и передачи информации из указанного регистра в выходной порт, отличается от структуры аналогичных команд базового варианта ядра PicoBlaze длиной поля кода операции [2]. В командах ввода-вывода новой версии ядра длина поля кода операции составляет шесть двоичных разрядов. Кроме того, в инструкциях ввода-вывода поменялось значение кода операции. Мнемоническая форма записи этих инструкций сохранилась без изменений. Новые варианты форматов команд ввода-вывода с различными видами адресации приведены в таблице 15.

Таблица. 15. Форматы команд ввода-вывода микропроцессорного ядра PicoBlaze, предназначенного для реализации на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Команды обслуживания прерываний микропроцессорного ядра PicoBlaze, предназначенного для использования в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

В инструкциях, относящихся к группе команд обслуживания прерываний, изменилась длина поля кода операции и поля режима обработки прерываний. Длина каждого из этих полей команды в новой версии составляет девять разрядов. Кроме того, изменились значения кодов операций обработки прерываний. При этом мнемоническая форма записи инструкций, используемых для обработки прерываний, осталась без изменений.

Форматы команд возврата из процедуры обслуживания прерываний RETURNI и установки режима обслуживания прерываний в программе ENABLE INTERRUPT и DISABLE INTERRUPT для микропроцессорного ядра PicoBlaze, реализуемого на базе кристаллов семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, представлены в таблице 16.

Таблица. 16. Форматы команд обслуживания прерываний микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Команды чтения и записи данных в сверхоперативное запоминающее устройство микропроцессорного ядра PicoBlaze, предназначенного для использования в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Команды чтения и записи данных в сверхоперативное запоминающее устройство предназначены для организации обмена данными между регистрами общего назначения и внутренней сверхоперативной памятью. В инструкциях, относящихся к рассматриваемой группе, используются два параметра. Значение первого параметра определяет номер регистра общего назначения, используемого в качестве приемника данных при выполнении операции чтения информации из СОЗУ или в качестве источника при осуществлении операции записи данных в СОЗУ. Значение второго параметра определяет адрес ячейки сверхоперативной памяти, к которой производится обращение. Адресация ячеек СОЗУ в инструкциях чтения и записи данных может осуществляться с помощью восьмиразрядной константы, значение которой задается непосредственно в команде, или содержимого регистра общего назначения с указанным номером. Форматы команд чтения и записи данных в сверхоперативное запоминающее устройство микропроцессорного ядра PicoBlaze, предназначенного для использования в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, приведены в таблице 17.

Таблица 17. Форматы команд чтения и записи данных в сверхоперативное запоминающее устройство микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Команда FETCH sN, kk выполняет операцию чтения данных из ячейки СОЗУ с адресом kk в регистр общего назначения с номером sN. Чтение данных из ячейки СОЗУ, адрес которой указывает содержимое регистра sM, осуществляется с помощью инструкции FETCH sN,(sM).

Передача содержимого регистра общего назначения с номером sN в ячейку СОЗУ с адресом kk осуществляется с помощью команды STORE sN, kk. Для записи данных из регистра sN в ячейку СОЗУ, адрес которой определяется содержимым регистра sM, предназначена команда STORE sN,(sM). Рис. 5 демонстрирует процесс выполнения операций чтения и записи данных в сверхоперативное запоминающее устройство при различных видах адресации.

Рис. 5. Выполнение инструкций чтения и записи данных в сверхоперативное запоминающее устройство при различных видах адресации

Ассемблер микропроцессорного ядра PicoBlaze, предназначенного для использования в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Новый вариант микропроцессорного ядра PicoBlaze, предназначенный для применения в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, поддерживается соответствующей версией ассемблера, которая включена в состав архива файлов, предоставляемого пользователю. Новая версия ассемблера реализована в виде программы Kcpsm3.exe, которая формирует файлы описания содержимого программной памяти в различных форматах. Данная программа, в отличие от ассемблера Kcpsm2.exe [5], поддерживает все новые инструкции микропроцессорного ядра PicoBlaze, реализуемого на базе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, а также учитывает изменения в формате команд и параметры блочного ОЗУ используемых кристаллов.

Трансляция исходного текста программ для микропроцессорного ядра PicoBlaze, встраиваемого в проекты, реализуемые на базе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, осуществляется с помощью командной строки, формат которой имеет следующий вид:

В приведенной выше командной строке квадратные скобки служат для обозначения необязательного параметра. Таким образом, используемое по умолчанию расширение файла, содержащего исходный текст программы, psm можно не указывать.

На рис. 6 в наглядном виде представлена информация об исходных файлах, используемых при трансляции программ микропроцессорного ядра PicoBlaze, предназначенного для реализации в кристаллах семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, и выходных файлах, формируемых ассемблером KCPSM3.

Рис. 6. Файлы, формируемые ассемблером микропроцессорного ядра PicoBlaze, предназначенного для реализации на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Для выполнения трансляции разработанной программы кроме основного файла, содержащего исходный текст этой программы на языке ассемблера, необходимы файлы шаблонов ROM_form.vhd, ROM_form.v и ROM_form.coe. Файлы ROM_form.vhd и ROM_form.v представляют собой шаблоны описания содержимого ППЗУ программ на языках высокого уровня VHDL и Verilog соответственно. В файле ROM_form.coe содержится шаблон описания содержимого ППЗУ микропрограмм в формате, воспринимаемом генератором ядер Xilinx CORE Generator.

При отсутствии ошибок в исходном тексте транслируемой программы ассемблером KCPSM3 формируется набор файлов, название которых за исключением нескольких отчетов совпадает с идентификатором исходного файла, а расширение соответствует типу содержащейся в них информации.

Все файлы, генерируемые новой версией ассемблера, можно условно разбить на пять групп. Первую группу составляют файлы, в которые записывается содержимое программной памяти в форматах, воспринимаемых средствами проектирования фирмы Xilinx серии ISE. В эту группу входят файлы описания содержимого программной памяти на языках VHDL и Verilog, а также в формате, воспринимаемом генератором ядер Xilinx CORE Generator, которые имеют расширение vhd, v и coe соответственно. VHDL- и Verilog-описания содержимого ППЗУ программ используются на этапах синтеза и моделирования проектируемой системы. Ко второй группе относятся файлы, описывающие содержимое ППЗУ микропрограмм в форматах, используемых утилитами, не входящими в состав САПР серии ISE. В эту группу входят файлы, содержащие результаты трансляции в виде кодов в шестнадцатеричном и десятичном представлении, которые имеют расширение hex и dec соответственно. Третью группу образуют файлы отчетов о ходе и результатах выполнения процесса трансляции. Файл с расширением log содержит детальную информацию о трансляции каждой строки ассемблерной программы. В файле constant.txt перечисляются все константы, используемые в программе, с указанием их значений. Файл labels.txt содержит информацию о метках, которые содержатся в программе, и адресах программной памяти, которые им соответствуют. В четвертую группу входит единственный файл, имеющий расширение fmt, в котором записан отформатированный вариант исходного текста программы на языке ассемблера. К пятой группе относятся файлы pass1.dat–pass5.dat, содержащие промежуточные результаты, полученные на различных фазах процесса трансляции. Информация, которая содержится в этих файлах, может использоваться в процессе отладки транслируемой программы.

При переходе от одной из прежних версий микропроцессорного ядра PicoBlaze к новому варианту, рассматриваемому в настоящей статье, следует обратить внимание на то, что разработанное ранее программное обеспечение не может использоваться непосредственно в новой версии ядра. Для переноса этих программ необходимо привести их исходные тексты в соответствие с форматами команд, поддерживаемыми ассемблером KCPSM3. Особое внимание нужно обратить на формат представления адресов переходов и подпрограмм, а также номеров регистров общего назначения. При этом нужно учитывать возможные различия в объеме программной памяти и блока регистров общего назначения в используемой ранее и новой версии микропроцессорного ядра PicoBlaze. Кроме того, различная глубина стека в этих версиях накладывает ограничения на количество вложенных вызовов подпрограмм. После корректировки исходных текстов программ следует выполнить их трансляцию с помощью новой версии ассемблера KCPSM3.

Загрузчик программ для микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Заметным недостатком рассмотренных ранее микропроцессорных ядер семейства PicoBlaze [1–5] является необходимость повторного выполнения этапов синтеза и реализации аппаратной части разрабатываемой системы при внесении каких-либо изменений в программное обеспечение. На рис. 7 показан типовой маршрут проектирования встраиваемых микропроцессорных систем на основе восьмиразрядного ядра PicoBlaze. Он включает в себя следующие этапы [6]:

  • формирование проекта и HDL-описания разрабатываемой микропроцессорной системы;
  • подготовка исходного текста программы на языке ассемблера для проектируемой микропроцессорной системы;
  • трансляция разработанной программы с помощью ассемблера;
  • синтез разрабатываемой микропроцессорной системы;
  • размещение и трассировка разрабатываемой микропроцессорной системы в кристалле;
  • формирование конфигурационной последовательности проектируемой микропроцессорной системы;
  • загрузка конфигурационной последовательности встраиваемой микропроцессорной системы в кристалл ПЛИС.
Рис. 7. Типовая последовательность этапов проектирования встраиваемых микропроцессорных систем на основе ядра PicoBlaze, реализуемых в ПЛИС FPGA семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4

Для новой версии ядра, реализуемого на основе кристаллов семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, в архив файлов, предоставляемых пользователю, включен загрузчик программного кода через порт JTAG-интерфейса применяемой ПЛИС. При использовании загрузчика JTAG Program Loader маршрут проектирования встраиваемых микропроцессорных систем на основе ядра PicoBlaze приобретает вид, показанный на рис. 8. Типовая ветвь этого маршрута, включающая этапы синтеза, реализации и формирования конфигурационной последовательности, выполняется только один раз. В случае модификации микропроцессорной программы достаточно выполнить трансляцию исходного текста этой программы и воспользоваться загрузчиком JTAG Program Loader. Запись кода новой микропроцессорной программы непосредственно в программную память ядра PicoBlaze осуществляется через порт JTAG-интерфейса с помощью стандартного загрузочного кабеля фирмы Xilinx, предназначенного для конфигурирования ПЛИС.

Рис. 8. Маршрут проектирования встраиваемых микропроцессорных систем на основе ядра PicoBlaze, реализуемых в ПЛИС FPGA семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, с использованием загрузчика программ JTAG Program Loader

Загрузчик программ JTAG Program Loader выполнен в виде командного файла jtag_loader.bat и комплекта утилит преобразования формата и управления конфигурированием ПЛИС. Этот командный файл содержит набор директив, посредством которых осуществляется последовательный вызов утилит преобразования формата микропроцессорных программ и управления процессом их загрузки в ПЛИС. Исходным модулем для загрузчика является файл, содержащий результаты трансляции исходного текста программы в виде кодов в шестнадцатеричном представлении. Этот файл формируется ассемблером KCPSM3.

Для использования загрузчика программ JTAG Program Loader в структуру микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, были внесены следующие изменения. Программная память реализуется в виде двухпортового оперативного запоминающего устройства. Один из портов программной памяти сопряжен непосредственно с контроллером JTAG-интерфейса. Поэтому новая программа может быть записана в ППЗУ программ через порт JTAG-интерфейса ПЛИС. Кроме того, в блоке программной памяти дополнительно формируется сигнал сброса, который используется для инициализации модуля исполнительного устройства микропроцессорного ядра PicoBlaze. Такая модернизация модуля программной памяти обусловлена тем, что сразу же после загрузки новой программы исполнительное устройство должно быть переведено в исходное (начальное состояние). С учетом этих изменений необходимо в выражениях декларации и создания экземпляра компонента программной памяти добавить описание порта, соответствующего выходу сигнала сброса. При формировании структурного описания микропроцессорного ядра необходимо подключить выход сигнала сброса программной памяти prog_rom ко входу сброса исполнительного устройства kcpsm3.

Модернизированная структура микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4 с поддержкой загрузки программного кода через порт JTAG-интерфейса, изображена на рис. 9.

Рис. 9. Модернизированная структура микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4 с поддержкой загрузки программ через порт JTAG%интерфейса

В процессе трансляции программ, которые должны записываться в программную память микропроцессорного ядра PicoBlaze через порт JTAG-интерфейса ПЛИС с помощью загрузчика JTAG Program Loader, необходимо использовать модифицированные варианты шаблонов описания содержимого ППЗУ вместо файлов ROM_form.vhd и ROM_form.v. Эти варианты соответствуют ППЗУ программ, реализуемому в виде двухпортовой памяти. Модифицированные варианты шаблонов поставляются вместе с загрузчиком в форме файлов JTAG_Loader_ROM_form.vhd и JTAG_Loader_ROM_form.v соответственно.

Заключение

Рассмотренная версия микропроцессорного ядра, предназначенная для реализации на основе ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, как и другие представители семейства PicoBlaze, является свободно распространяемой (бесплатной). Для получения архива файлов, включающего исходные описания компонентов ядра, соответствующую версию ассемблера и загрузчик программ JTAG Program Loader, следует обращаться в центр поддержки и продаж InlineGROUP (www.plis.ru) — официальному дистрибьютору фирмы Xilinx в России, Беларуси и Украине. Практическое освоение методов проектирования встраиваемых микропроцессорных систем, выполняемых на основе рассмотренного варианта ядра PicoBlaze, целесообразно осуществлять с помощью отладочной платы из инструментального комплекта Spartan-3 Starter Kit. Этот комплект отличается невысокой стоимостью и включает в себя помимо отладочной платы загрузочный кабель, который может применяться в дальнейшем для конфигурирования ПЛИС различных семейств, выпускаемых фирмой Xilinx, и средства проектирования WebPack ISE и Foundation ISE (ознакомительную версию).

Литература

  1. Зотов В. PicoBlaze — семейство восьмиразрядных микропроцессорных ядер, реализуемых на основе ПЛИС фирмы Xilinx // Компоненты и технологии, № 4, 2003.
  2. Зотов В. Система команд микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E // Компоненты и технологии, № 5, 2003.
  3. Зотов В. Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства Virtex-II // Компоненты и технологии, № 6, 2003.
  4. Зотов В. Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства CoolRunner-II // Компоненты и технологии, № 7, 2003.
  5. Зотов В. Разработка программ на языке ассемблера для семейства микропроцессорных ядер PicoBlaze // Компоненты и технологии, № 8, 2003.
  6. Зотов В. Ю. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx в САПР WebPack ISE. М.: Горячая линия — Телеком, 2003.
  7. Кузелин М. О., Кнышев Д. А., Зотов В. Ю. Современные семейства ПЛИС фирмы Xilinx. Справочное пособие. М.: Горячая линия — Телеком, 2004.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *