Interested Article - PicoBlaze

PicoBlaze — общее название серии свободно распространяемых Soft-процессорных ядер, созданных фирмой Xilinx для своих ПЛИС ( FPGA и CPLD ). В основе PicoBlaze лежит архитектура 8-битного RISC-процессора ; скорость работы на ПЛИС семейства может достигать 100 MIPS . Для обращений к периферии процессор имеет 8-битную шину, используя которую можно раздельно читать и записывать до 256 портов.

PicoBlaze распространяется в виде исходного кода на языках VHDL и Verilog для свободного использования на продуктах фирмы Xilinx. Особенности архитектуры гарантируют наилучшие характеристики для ПЛИС семейства Spartan и Virtex. Фирмой Xilinx предлагается к использованию специальное программное обеспечения для трансляции исходного кода на языке Ассемблера. Синтаксис исходного языка нарочито упрощен в угоду простоты и скорости. Также имеется специальное инструментальное программное обеспечение , созданное сторонними организациями (Mediatronix и др.). Альтернативно существует — модифицированное ядро PicoBlaze, распространяемое под лицензией BSD .

Изначально проект «PicoBlaze» носил имя KCPSM, что означает «Constant(K) Coded Programmable State Machine» — программируемый конечный автомат с постоянной программой. Создатель проекта — Кен Чапман (Ken Chapman) — инженер Xilinx, разработавший и реализовавший PicoBlaze (альтернативная расшифровка аббревиатуры KCPSM — «Ken Chapman’s PSM»).

При вставке PicoBlaze в проект на VHDL должно быть использовано соответствующее имя компонента KCPSM . Например, для PicoBlaze3:

component kcpsm3 is 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; interrupt_ack : out std_logic; reset : in std_logic; clk : in std_logic); end component; 

Основные характеристики

Ядро KCPSM3 для PicoBlaze поддерживает:

  • обращение к 18-битным микрокомандам;
  • выполнение микрокоманды за один цикл, два такта;
  • 10 битный программный счетчик микрокоманд PC;
  • одноадресные и двухадресные байтовые операции;
  • 16 встроенных регистров;
  • АЛУ арифметических и логических операций, однобитовый сдвиг;
  • два флага операций: CARRY и ZERRO;
  • встроенное ОЗУ strachpad на 64 байта в пространстве 256 байт;
  • обращение к 256-ти независимым портам на чтение и запись;
  • встроенный стек вызовов на 31 ячейку (CALL/RETURN stack);
  • одноуровневое прерывание .

Ядро KCPSM6 для PicoBlaze поддерживает:

  • обращение к 18-битным микрокомандам;
  • выполнение микрокоманды за один цикл, два такта (имеются исключения);
  • 12 битный программный счетчик микрокоманд PC;
  • дополнительная возможность ветвления программы по содержимому регистра;
  • дополнительная возможность возврата из подпрограмм и одновременная идентификация точки возврата;
  • одноадресные и двухадресные байтовые операции, расширенная по отношению к KCPSM3 система команд;
  • два, программно переключаемых, банка встроенных регистров по 16 регистров каждый;
  • АЛУ арифметических и логических операций, однобитовый сдвиг;
  • два флага операций: CARRY и ZERRO;
  • встроенное ОЗУ strachpad в пространстве 256 байт конфигурируемого размера;
  • обращение к 256-ти независимым портам на чтение и запись;
  • дополнительное пространство 256 портов для специальной константной записи;
  • встроенный стек вызовов на 30 ячеек (CALL/RETURN stack);
  • одноуровневое настраиваемое прерывание ;
  • доступный из программы ID аппаратуры.

Кроме того, ядро PicoBlaze:

  • выполняет команды преимущественно за два такта (в KCPSM6 некоторые команды за 4 такта), при этом тактовая частота может доходить до нескольких сотен МГц;
  • быстро реагирует на прерывания (в худшем случае — за 5 тактов);
  • в версии KCPSM-3 оптимизировано для архитектуры Xilinx Spartan-3: занимает всего 96 ячеек (slices) и 1 блок RAM;
  • в версии KCPSM-6 оптимизировано для архитектуры Xilinx Spartan-6, Virtex®-6, и FPGA седьмой серии: занимает всего 26 ячеек;

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

Специальные возможности

С помощью специальных программных средств программа для PicoBlaze может быть заменена непосредственно в файле прошивки ПЛИС (с расширением bit). С помощью специальных программных средств можно загружать программу для PicoBlaze непосредственно в ПЛИС через интерфейс JTAG .

Примечания

  1. (неопр.) . www.xilinx.com. Дата обращения: 13 ноября 2018. 14 ноября 2018 года.
  2. (неопр.) . Xilinx, Inc.. Дата обращения: 25 июня 2007. 22 ноября 2007 года.
  3. (неопр.) . Xilinx, Inc.. Дата обращения: 25 июня 2007. 6 октября 2008 года.

Ссылки

Same as PicoBlaze