Слайд 1Лекция 5. Основные элементы ПЛИС
Слайд 2Основные элементы ПЛИС
В наиболее типичном варианте ПЛИС, выполненная по технологии
FPGA, состоит из прямоугольной матрицы конфигурируемых логических блоков (Configurable Logic
Blocks, CLB), блоков ввода-вывода (Input/Output Block, IOB) и дополнительных блоков. Между CLB располагаются программируемые трассировочные линии. Между матрицей CLB и блоками ввода-вывода имеются отдельные межсоединения, которые и обеспечивают подключение внешних сигналов.
FPGA – это сокращение от английского словосочетания Field Programmable Gate Array
Слайд 3Основные элементы ПЛИС
Современные ПЛИС
также содержат блоки памяти (BRAM),
секции
цифровой обработки сигналов (DSP) и в отдельных случаях - аналого-
цифровые и цифроаналоговые преобразователи.
Каждый модуль двухпортовой блочной памяти емкостью 36 кбит, который может использоваться в виде двух независимых блоков объемом 18 кбит, оснащен встроенной системой обнаружения и коррекции ошибок (ECC) и специальной схемой управления, необходимой для организации запоминающих устройств, функционирующих по принципу «первым вошел – первым вышел» (FIFO).
Слайд 4
В состав секций SLICEL входит логика ускоренного переноса и мультиплексоры,
предназначенные для расширения функциональных возможностей конфигурируемых логических блоков CLB.
В
секциях типа SLICEM, кроме логики ускоренного переноса и мультиплексоров расширения количества аргументов выполняемых функций, применяются таблицы преобразования, которые могут конфигурироваться как элементы 64-разрядной распределенной памяти или как сдвиговые регистры различной разрядности (до 32 разрядов).
Основные элементы ПЛИС
Слайд 5
Основной элемент для реализации логических функций ЛОГИЧЕСКИЙ ГЕНЕРАТОР 6LUT. Блоки
5LUT- статическая память.
Логический генератор (LUT) реализует любую функцию с не
более чем 6 операндами.
Кроме того возможно использование LUT блоков SLICEM в режиме с частично совмещенными входами, когда память разбивается на два фрагмента по 32 бита (формируются две логические функции с не более чем 5 операндами каждая).
При этом, поскольку в самой LUT всего 6 входов, часть входов должна быть обобщена Такой режим автоматически используется САПР.
Основные элементы ПЛИС
Слайд 6
Логические генераторы (LUT) могут также использоваться в режимах распределенной памяти
(distributed memory) и сдвиговых регистров (SHR). Поскольку LUT представляет собой
элемент статической памяти, который хранит таблицу истинности в явном виде, в SLICEM его можно использовать по прямому назначению – в качестве обычного компонента памяти.
Показанный элемент распределенной памяти имеет следующие сигналы:
– we – сигнал разрешения записи;
– d – данные для записи;
– wclk – вход тактового сигнала;
– a – адрес для записи;
– dpra – адрес для чтения, второй порт
(dualportreadaddress);
– spo – выход первого порта (singleportoutput);
– dpo – выход второго порта (dualportoutput).
Основные элементы ПЛИС
Слайд 7
LUT может функционировать и как сдвиговый регистр, использующий следующие сигналы:
имеет
следующие сигналы:
– d – данные для записи в сдвиговый регистр;
–
clk – тактовый сигнал;
– a – адресный вход;
– q – выход данных.
LUT в режиме сдвигового регистра может
использоваться совместно с триггером той же
логической ячейки, увеличивая глубину сдвигового регистра на 1.
Основные элементы ПЛИС
Слайд 8
Временные диаграммы работы триггера. Сигналы PRE, CLR действуют асинхронно, то
есть установка триггера может осуществляться без привязки к фронту тактового
сигнала.
Для логической секции FPGA Xilinx существует понятие controlset. Оно соответствует набору управляющих сигналов (clk, ce, sr), которые должны быть идентичны для всех триггеров секции. Это означает, например, что невозможно использовать сигнал ce только для одного триггера в секции. Следует обратить внимание, что тактовый сигнал также включен в controlset, т.е. все триггеры должны тактироваться одним и тем же тактовым сигналом. На практике такое ограничение означает, что при необходимости использовать разные управляющие сигналы соответствующие триггеры будут помещены в разные секции.
Основные элементы ПЛИС
Слайд 9
Триггеры FPGA имеют гарантированное начальное значение после включения питания. Значения всех
триггеров (и других компонентов системы) записаны в конфигурационном файле, и
инициализация выполняется с помощью специальных трассировочных ресурсов. Поэтому отдельные цепи сброса, для обеспечения начального состояния триггера, являются избыточными и ухудшают проект. Самый простой способ начальной установки триггера– объявление сигнала с начальным значением:
Основные элементы ПЛИС
signal reg1 : std_logic := ‘1’;
В этом примере на VHDL объявляется триггер с именем reg1, которому присваивается начальное значение 1. Это значение будет корректно учитываться средствами моделирования, и будет записано в конфигурационный файл FPGA.
Слайд 10
Основные элементы ПЛИС
В ПЛИС семейства VIRTEX (ARTIX-7 и Kintex-7) содержатся
многофункциональные блоки, предназначенные для стандартных операций по цифровой обработке сигналов
(DSP48E1).
Вычислительные возможности блока ЦОС видны из схемы- АЛУ и блок умножения.
Слайд 11
В ПЛИС Xilinx 7-й серии содержатся аналого- цифровые блоки XADC
Каждый
блок содержит 2 12-разрядных аналого-цифровых преобразователя (АЦП) и мультиплексор. Кроме
того, к аналого-цифровому блоку относятся внутрикристалльные датчики напряжения питания и температуры.
Аналого-цифровой блок XADC поддерживает 17 внешних входных аналоговых каналов. Коммутация аналоговых сигналов на входы АЦП осуществляется с помощью мультиплексора. Каждый АЦП позволяет выполнять преобразование входного аналогового сигнала с частотой дискретизации 1 млн выборок/с и точностью 0,1%.
Наличие блока XADC в составе ПЛИС позволяет реализовать устройства цифровой обработки низкочастотных сигналов на базе одного кристалла без внешних АЦП.
Слайд 12
Семейство Artix-7
Наименьшие значения потребляемой мощности и низкой стоимостью, ориентированы на
применение в составе серийно выпускаемой аппаратуры.
CLB - общее количество
триггеров
CMT – блоки управления синхронизацией
PCIe- интерфейсы к PCI express
XADC- Аналого- цифровые преобразователи
Слайд 13
Семейство Кintex-7
Увеличено число ЦОС DSP48E1 и модулей двухпортовой блочной памяти
Block RAM. Используются высокоскоростные приемопередатчики RocketIO типа GTX, поддерживающие скорость
приема и передачи данных до 10,3125 Гбит/с.
Содержат аппаратный модуль интерфейса PCI Express, который поддерживает скорости передачи данных 2,5 и 5 Гбит/с
Слайд 14
Семейство Virtex-7
Увеличено число ЦОС DSP48E1 и модулей двухпортовой блочной памяти
Block RAM. Используются высокоскоростные приемопередатчики RocketIO (MGT) типа GTX+GTH+GTZ, поддерживающие
скорость приема и передачи данных до 10,3125 (очень много) Гбит/с.
Содержат аппаратный модуль (блок) интерфейса PCI Express, который поддерживает (PCI Express Gen 1, 2 и 3) скорости передачи данных 2,5 и 5 Гбит/с
Слайд 15
Организация работы со статической памятью в ПЛИС
Слайд 16
Работа со статической памятью
Внутри ПЛИС Xilinx есть специальный аппаратный ресурс
– блочная память или BRAM (Block RAM).
Эти блоки выполнены
аппаратно, т.е. часть логики кристалла зафиксирована под память, и не может быть использована по другому назначению. Количество таких блоков зависит от конкретного типа кристалла ПЛИС и может быть до нескольких сотен. Каждый блок имеет два аппаратных порта, которые могут работать на разных тактовых частотах.
Другой ресурс, который можно использовать как память – это сами конфигурационные блоки ПЛИС. Из конфигурационных блоков можно собрать логическую схему статической памяти. Тогда биты информации, хранящиеся в такой памяти будут «размазаны» или «распределены» по большей (по сравнению с BRAM, организованным локально) площади кристалла, и такая память будет называться распределенной памятью (Distributed RAM).
Слайд 17
Работа со статической памятью
Сравнивая блочную и распределенную память, надо сказать
следующее:
Блочная память – это аппаратные блоки.
Блочная память – дорогостоящий ресурс.
Количество ее ограничено. При этом, если требуется объем памяти меньший чем объем одного блока (18 или 36 Кбит), то все равно будет использован весть блок, и неиспользованная его часть просто пропадет. При этом распределенная память может быть создана конкретного объема: ни одного лишнего конфигурационного блока не будет задействовано.
При использовании блочной памяти ее разные порты могут работать на разных частотах. Это удобно использовать для синхронизации между разными клоковыми доменами.
Схемы как блочной так и распределенной памяти создаются с использованием программы генератора процессорного ядра. В ней можно выбрать необходимый тип памяти, объем, ширины шин данных, особенности и интерфейса. После создания IP блока, работать с памятью надо через интерфейс, подобный рассмотренному на следующем слайде.
В VHDL есть возможность описать массив ячеек статической памяти с помощью сигналов типа массив и стандартных операторов.
Слайд 18
Организация работы со статической памятью в ПЛИС
entity static_ram
PORT (
clk : IN STD_LOGIC; -- тактовый сигнал
rst :
IN STD_LOGIC; -- сигнал сброса
en : IN STD_LOGIC; -- сигнал разрешения работы (опционально)
we : IN STD_LOGIC; -- write enable, сигнал определяющий операцию
записи или чтения
addr : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -- шина адреса ячейки
din : IN STD_LOGIC_VECTOR(15 DOWNTO 0); -- входная шина данных
dout : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) -- выходная шина данных
);
END static_ram;
Слайд 19
Организация работы со статической памятью в ПЛИС
Блок памяти имеет следующие
порты:
– addra, addrb – адреса портов A и B соответственно;
–
dia, dib – данные для записи для портов A и B (32 бита);
– dipa, dipb – дополнительные данные для записи (4 бита);
– wea, web – входы разрешения записи (побайтно);
– clka, clkb – тактовые сигналы для портов;
– ena, enb – входы разрешения работы блока памяти (при чтении состояние выходов не обновляется, если нет разрешающего сигнала);
– regcea, regceb – разрешение работы выходных регистров;
– rsta, rstb – сброс выходных регистров (не влияет на содержимое массивов памяти);
– doa, dob – выходы данных для портов A и B (32 бита);
– dopa, dopb – дополнительные выходы данных для портов A и B (4 бита).
Слайд 20
Организация работы со статической памятью в ПЛИС
Физически размещенные в FPGA
блоки памяти являются 18-битными. Такая разрядность позволяет реализовывать схемы контроля
четности, когда каждые 8 бит имеют дополнительный 9-й бит для хранения бита четности. Соответственно, каждые 16 бит имеют 2 дополнительных бита четности, а 32 – 4 бита. Для удобства работы с дополнительными битами в графическом представлении модуля они выделены в отдельные шины dipa, dipb, dopa, dopb.
Дополнительные биты не являются автоматически заполняемыми и представляют собой разряды, доступные для записи в них произвольных значений. Разработчик может выбирать требуемую ему разрядность, включая 1, 2, 4, 9, 18 или 36 бит, в особых случаях- до 72 бит.
Слайд 21
Организация работы со статической памятью в ПЛИС
Слайд 22
Организация работы со статической памятью в ПЛИС
Слайд 23
Организация работы со статической памятью в ПЛИС: двухпортовая память
library IEEE;
use
IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity rams_16 is
port(clka : in std_logic;
clkb : in std_logic;
ena
: in std_logic;
enb : in std_logic;
wea : in std_logic;
web : in std_logic;
addra : in std_logic_vector(5 downto 0);
addrb : in std_logic_vector(5 downto 0);
dia : in std_logic_vector(15 downto 0);
dib : in std_logic_vector(15 downto 0);
doa : out std_logic_vector(15 downto 0);
dob : out std_logic_vector(15 downto 0));
end rams_16;
Слайд 24
Организация работы со статической памятью в ПЛИС: двухпортовая память
architecture syn
of rams_16 is
type ram_type is array (63 downto 0) of
std_logic_vector(15 downto 0);
shared variable RAM : ram_type;
begin
process (CLKA)
begin
if CLK 'event and CLK = ‘1‘ then
if ENA = ’1’ then
if WEA = ’1’ then
RAM(conv_integer(ADDRA)) := DIA;
end if;
DOA <= RAM(conv_integer(ADDRA));
end if;
end if;
end process;
Слайд 25
Организация работы со статической памятью в ПЛИС
process (CLKB)
begin
if CLKB 'event
and CLKB = ‘1‘ then
if ENB = ’1’ then
if WEB
= ’1’ then
RAM(conv_integer(ADDRB)) := DIB;
end if;
DOB <= RAM(conv_integer(ADDRB));
end if;
end if;
end process;
end syn;
Слайд 26
Термин:
IP cores (IP-ядра, от англ. Intellectual Property — интеллектуальный продукт.
В FPGA (ПЛИС) под Hard IP-Core понимают специализированные области кристалла,
выделенные для определенных функций. В этих областях реализованы блоки неизменной структуры, спроектированные по методологии ASIC (как области типа БМК или схем со стандартными ячейками), оптимизированные для заданной функции и не имеющие средств её программирования.
В случае использования данного вида ядер размер площади, используемой на кристалле, сокращается, улучшаются характеристики быстродействия, но в данном случае происходит потеря универсальности.
Слайд 27
Термин:
Приложение CoreGenerator входит в состав САПР фирмы Xilinx и предлагает
разработчику графический интерфейс быстрого конфигурирования стандартных цифровых блоков для реализации
их в ПЛИС (IP-ядер). С помощью CoreGenerator имеется возможность создания шаблонов на языке Verilog, которые потом будут использованы как instance (см. componentinstantiation) в проектах пользователя. Генерация компонентов с помощью CoreGenerator обладает рядом преимуществ:
– IP-ядра, как правило, представляют собой верифицированные компоненты, имеющие качественное размещение на кристалле, и вследствие этого способные работать на высокой тактовой частоте;
– ряд специфичных ресурсов ПЛИС, например, модули формирования тактовой частоты, достаточно сложны для освоения, однако вносят в проект полезные функциональные возможности, поэтому рекомендуются к использованию; соответственно, CoreGenerator предоставляет возможности для их быстрого конфигурирования с последующим добавлением к проекту.
Слайд 28
Запускаем генератор
и выбираем тип
IP ядра
Слайд 29
Выбираем параметры
памяти, в частности,
в частности ширину
данных
(Data Width),
количество данных (Depth – глубина), тип создаваемой памяти
(Memory Type)
Слайд 30
Создаем и подключаем
файл coe- файл коэффициентов,
после этого формируется
память
по заданным параметрам
Слайд 31
Коммутационная система ПЛИС
Трассировочные ресурсы ПЛИС:
а) Stratix IV фирмы
Altera с использованием технологии DirectDrive;
б, в) фирмы Xilinx с использованием
технологии ExpressFabric: б) Virtex-4; в) Virtex-5
Слайд 32
Коммутационная система ПЛИС
Пример организации взаимодействия между логическими блоками
Слайд 33
Блоки ввода- вывода
Каждый доступный разработчику ввод- вывод (pin) может
быть сконфигурирован как вход, выход или универсальный вход-выход.
Зачастую возможен выбор
рабочих напряжений, для разработчика- чем меньше напряжение, тем на большей частоте можно работать, но тем меньше помехозащищенность.
Внешние контакты ПЛИС в САПР
Vivado
set_property IOSTANDARD LVCMOS18 [all_inputs]
set_property IOSTANDARD LVCMOS18 [all_outputs]
create_clock -period 1.600 -name CLK [get_ports clk]
set_property PACKAGE_PIN N15 [get_ports clk]
…