PicoBlaze (PicoBlaze)
PicoBlaze — общее название серии свободно распространяемых Soft-процессорных ядер, созданных фирмой Xilinx для своих ПЛИС (FPGA и CPLD). В основе PicoBlaze лежит архитектура 8-битного RISC-процессора; скорость работы на ПЛИС семейства Virtex 4 может достигать 100 MIPS. Для обращений к периферии процессор имеет 8-битную шину, используя которую можно раздельно читать и записывать до 256 портов.
PicoBlaze распространяется в виде исходного кода на языках VHDL и Verilog[1] для свободного использования на продуктах фирмы Xilinx. Особенности архитектуры гарантируют наилучшие характеристики для ПЛИС семейства Spartan и Virtex. Фирмой Xilinx предлагается к использованию специальное программное обеспечения для трансляции исходного кода на языке Ассемблера. Синтаксис исходного языка нарочито упрощен в угоду простоты и скорости. Также имеется специальное инструментальное программное обеспечение, созданное сторонними организациями (Mediatronix и др.). Альтернативно существует PacoBlaze — модифицированное ядро PicoBlaze, распространяемое под лицензией BSD.
Изначально проект «PicoBlaze» носил имя KCPSM, что означает «Constant(K) Coded Programmable State Machine» — программируемый конечный автомат с постоянной программой. Создатель проекта — Кен Чапман (Ken Chapman) — инженер Xilinx, разработавший и реализовавший PicoBlaze[2] (альтернативная расшифровка аббревиатуры KCPSM — «Ken Chapman’s PSM»).
При вставке PicoBlaze в проект на VHDL должно быть использовано соответствующее имя компонента KCPSM[3]. Например, для 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.
Примечания
[править | править код]- ↑ PicoBlaze 8-bit Microcontroller . www.xilinx.com. Дата обращения: 13 ноября 2018. Архивировано 14 ноября 2018 года.
- ↑ PicoBlaze 8-bit Microcontroller . Xilinx, Inc.. Дата обращения: 25 июня 2007. Архивировано 22 ноября 2007 года.
- ↑ PicoBlaze 8-bit Embedded Microcontroller User Guide . Xilinx, Inc.. Дата обращения: 25 июня 2007. Архивировано 6 октября 2008 года.
Ссылки
[править | править код]- Xilinx PicoBlaze Архивная копия от 8 марта 2018 на Wayback Machine
- PicoBlaze — краткое описание
- PicoBlaze — руководство пользователя
- TechXclusives: Creating Embedded Microcontrollers (Programmable State Machines) (недоступная ссылка) PDF Архивная копия от 6 октября 2007 на Wayback Machine
- PicoBlaze user resources
- Professional IDE for Linux and Windows Архивная копия от 12 октября 2014 на Wayback Machine
- бесплатные инструменты для работы с FPGA от Mediatronix
- Open source Picoblaze assembler Архивная копия от 10 декабря 2010 на Wayback Machine
- Free Linux IDE
- PacoBlaze: a synthesizable and behavioral Verilog clone of PicoBlaze Архивная копия от 17 июля 2011 на Wayback Machine
- Implementation of picoblaze in LabVIEW FPGA on the Xilinx Spartan 3E Starter board Архивная копия от 1 августа 2009 на Wayback Machine