Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lek2013 / Lek10_FPGA.docx
Скачиваний:
61
Добавлен:
31.05.2015
Размер:
1.97 Mб
Скачать

Синтезируемое процессорное ядро

Количество логических элементов в современных ПЛИС позволяет реализовать внутри кристалла микропроцессорное ядро. Т.к. оно появляется только при загрузке конфигурационной информации, то такое ядро поучило название синтезируемого процессорного ядра или софт-ядра.

Можно разработать свое процессорное ядро, с уникальной архитектурой, полностью адаптированное под решаемую задачу (что достаточно сложно).

Но можно воспользоваться уже имеющимися IP блоками описывающими синтезируемое процессорное ядро.

PicoBlaze – 8-ми разрядное синтезированное ядро код которого бесплатно доступен на языке VHDL. Также бесплатно доступен ассемблер и эмулятор.

Основные характеристики ядра PicoBlaze:

  1. Разрядность шины адреса 10 бит, т.е. максимальное число команд 1024

  2. Разрядность шины команд составляет 18 бит (число бит под одну процессорную команду)

  3. Имеется 16 восьмиразрядных регистров общего назначения

  4. Есть 64 байтное сверхоперативное ОЗУ

  5. АЛУ процессора позволяет выполнять сложение, вычитание, сдвиг числа.

  6. Имеется система обработки прерываний.

  7. Производительность составляет порядка 40-50 MIPS при тактовой частоте до 100 МГЦ

  8. Внутри кристалла ПЛИС процессор занимает 96 секций – обычно не более 5% кристалла.

Архитектура процессорного ядра

Ядро имеет сверхоперативное ОЗУ которое позволяет ускорить работу программы за счет минимизации числа обращений к памяти. Восьмиразрядное АЛУ кроме сложения, вычитания и поразрядного сдвига может выполнять сравнение данных из регистров общего назначения. Результат сравнения отражается на значении флага переноса CARRY и флага нуля ZERO. Используя флаги переноса можно выполнять команды перехода по условию, т.е. команды ветвления.

Структура проекта содержащего ядро PicoBlaze

При добавлении к проекту ядра PicoBlaze появляются два модуля на языке VHDL.

Первый модуль – описание постоянной памяти программ

Второй модуль – собственно описание процессорного ядра (файл kcpsm3.vhd, кторый доступен на сайте Xilinx.com)

Модуль памяти программ описывается следующем образом

library unisim;

use unisim.vcomponents.all;

entity p1 is

Port ( address : in std_logic_vector(9 downto 0);

instruction : out std_logic_vector(17 downto 0);

clk : in std_logic);

end p1;

architecture ………..

Описание памяти программ формируется из кода на ассемблере для ядра PicoBlaze.

Пример компиляции программы:

Z:\asmPB\kcpsm3.exe p1.psm

После успешной компиляции ассемблерной программы появиться файл p1.vhdl который можно добавить в проект.

Замечание: ассемблер может запускаться только на 32-х разрядной windows. Решение проблемы для 64-х разрядной – установка виртуальной машины.

Модуль описания процессорного ядра это стандартный файл kcpsm3.vhd имеющий описание:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity kcpsm3 is

Port (

// адрес считываемой инструкции

address : out std_logic_vector(9 downto 0);

// сама инструкция

instruction : in std_logic_vector(17 downto 0);

// данные входного порта

in_port : in std_logic_vector(7 downto 0);

// данные выходного порта

out_port : out std_logic_vector(7 downto 0);

// сигнал разрешения чтения данных c входного порта

read_strobe : out std_logic;

// сигнал разрешения записи в выходной порт

write_strobe : out std_logic;

// адрес порта ввода или вывода

port_id : out std_logic_vector(7 downto 0);

// сигнал внешнего прерывания

interrupt : in std_logic;

// сигнал окончания обработки прерывания

interrupt_ack : out std_logic;

// сброс

reset : in std_logic;

// тактовый сигнал

clk : in std_logic);

end kcpsm3;

architecture …….

Соседние файлы в папке Lek2013