Использование ресурсов ПЛИС Stratix III фирмы Altera при проектировании микропроцессорных ядер
Рассматриваются варианты:
- управляющий автомат [1] и синхронное ПЗУ [2], разработанные на языке VHDL для реализации в базисе ПЛИС APEX20KE (EP20K30ETC144), вариант 1;
- микропроцессорное ядро с системой команд из работы [1] для вычислений с фиксированной запятой в системе MATLAB/Simulink [3, 4], код языка VHDL получен с применением приложения Simulink HDL Coder, вариант 2;
- управляющий автомат [1] и синхронное ПЗУ на язке VHDL [5] в базисе ПЛИС Stratix III EP3SL50F484C2, вариант 3;
- управляющий автомат на языке VHDL [1] и мегафункция синхронного ПЗУ RAM: 1-PORT [5] в базисе ПЛИС Stratix III, вариант 4;
- управляющий автомат, созданный с применением приложения StateFlow системы MATLAB/Simulink, и асинхронное ПЗУ, код языка VHDL получен с применением Simulink HDL Coder [6] в базисе ПЛИС Stratix III EP3SL50F484C2, вариант 5 (табл. 1).
Таблица 1. Используемые ресурсы ПЛИС Stratix III EP3SL50F484C2 и ПЛИС APEX20KE EP20K30ETC144
ПЛИС Stratix III/ APEX20KE | Управляющий автомат и синхронное ПЗУ на языке VHDL ПЛиС APEX20KE EP20K30ETC144 | Микропроцессорное ядро для вычислений с фиксированной запятой c применением MATLAB/Simulink ПЛиС Stratix III EP3SL50F484C2 | Управляющий автомат и синхронное ПЗУ на языке VHDL ПЛиС Stratix III EP3SL50F484C2 | Управляющий
автомат на языке VHDL и мегафункция синхронного ПЗУ RAM: 1-PORT ПЛиС Stratix III EP3SL50F484C2 |
Управляющий автомат, созданный с применением StateFlow MATLAb/Simulink, и асинхронное ПЗУ на языке VHDL ПЛиС Stratix III EP3SL50F484C2 |
Вариант | 1 | 2 | 3 | 4 | 5 |
ALUTs/LUT | 116 | 201 | 111 | 106 | 103 |
7 входов/4
6/3 5/2 4/1 ≤3/0 |
101
9 23 16 0 |
8
22 45 29 97 |
0
6 25 49 31 |
0
22 45 15 24 |
1
13 29 27 33 |
Режимы работы ALUTs: | |||||
нормальный | — | 158 | 94 | 89 | 85 |
расширенный | — | 8 | 0 | 0 | 1 |
арифметический | — | 26 | 17 | 17 | 17 |
общий арифметический | — | 9 | 0 | 0 | 0 |
Регистры ALM/ LC-регистры | 33 | 93 | 33 | 33 | 59 |
ALM/LC | 149 | 119 | 61 | 58 | 64 |
Память, бит (1 880 064)/(24 576) | 1536 (6%) | 0 | 0 | 4096 (< 1%) | 0 |
Максимальная тактовая частота, МГц | 73,84 | 318,.57 (Slow 1100 мВ 85C Model) | 327,98 (Slow 1100 мВ 85C Model) | 245,64 (Slow 1100 мВ 85C Model) | 275,33
(Slow 1100 мВ 85C Model) |
Предварительно рассмотрим архитектурные особенности ПЛИС семейства Stratix III. Основой семейства ПЛИС Stratix III являются адаптивные логические блоки (ALM), которые объединяются в логические блоки (logic array block, LAB). Таблица перекодировки (LUT) адаптивного логического блока (Memory LAB) может быть сконфигурирована как 16·2 двухпортовое ОЗУ. Всего 10 таких ALM могут образовать блок двухпортового ОЗУ емкостью 16·20 бит (320 бит конфигурационной памяти). LUT логических блоков (LAB) такой возможностью не обладают. Блоки Memory LAB и LAB сосуществуют парами и подключены к локальным матрицам межсоединений и к строкам и столбцам С4, С12, R4, R20, обладающим различной скоростью распространения сигналов и длиной межсоединений (рис. 1). Локальные матрицы позваляют напрямую подключать соседние блоки LAB, блоки памяти с архитектурой TriMatrix, встроенные блоки цифровой обработки сигналов (DSP-блоки) или блоки ввода/вывода. Архитектура межсоединений MultiTrack обеспечивает большую доступность ко всем окружающим LAB с помощью меньшего числа связей, что позволяет увеличитьпроизводительность, снизить энергопотребление и оптимизировать упаковку логики.
Рис. 1. Фрагмент архитектуры ПЛИС семейства Stratix III
ALM обеспечивают эффективное управление логическими функциями, то есть позволяют упаковывать большее число комбинационных и последовательностных логических элементов. Каждый блок способен реализовы-вать различные комбинационные функции на 8-входовой LUT-таблице, которая аппарат-но реализуется на двух 4-входовых адаптивных LUT-таблицах, и последовательностную логику на двух программируемых D-триггерах, а также арифметические операции на двух специализируемых сумматорах (рис. 2). С помо-шью такой LUT-таблицы можно реализовать булевы функции от 7, 6 и две независимые функции с меньшим числом переменных. Триггеры reg0 и reg1 могут быть использованы независимо от LUT-таблиц.
Рис. 2. Адаптивный логический блок ПЛИС Stratix III
Примечание. ALUT0 и ALUT1 могут быть сконфигурированы как двухпортовое ОЗУ емкостью 16×2 бит
ALM способны работать в различных режимах: нормальный, расширенный LUT-режим, арифметический, общий арифметический и LUT-reg (в этом режиме используются три триггера). В каждом режиме ресурсы ALUT используются различно.
Например, ALM способен реализовать две независимые 4-входовые функции (без общих входов). На рис. 3 показаны примеры реализации функций как без каких-либо общих входов, так и с ними. Нормальный режим работы позволяет обеспечить полную совместимость с 4-входовыми LUT-таблицами предыдущих серий ПЛИС, такими как APEX II, FLEX.
Рис. 3. Реализация булевых функций в нормальном режиме работы ALM: а) двух независимых функций от 4 переменных; б) независимой функции 5 и 3 переменных; в) функции 5 и 4 переменных с одним общим входом; г) функции 5 и функции 5 переменных с 2 общими входами; д) функции 6 переменных; е) функции 6 и функции 6 переменных с 4 общими входами
Для реализации булевой функции 6 переменных могут быть использованы входы dataa, datab, datac, datad, а также входы datae0, datafO или datae1, dataf1 (рис. 4). Если используются входы datae0, dataf0, то выход функции регистерный или триггер reg0 может быть обойден. Если доступны входы datae1 и datafO, то используется выход триггера reg1 или триггер reg1 может быть обойден.
Рис. 4. Реализация булевой функции 6 переменных в нормальном режиме работы ALM
На рис. 5 показан типовой шаблон реализации булевой функции 7 переменных для комбинационной схемы. Неиспользуемый вход dataf1 доступен для упаковки триггера. Данный шаблон используется для реализации конструкции if-else языка VHDL. Работа ALUT в арифметическом режиме показана на рис. 6. Арифметический режим используется для реализации сумматоров, счетчиков и др. Встроенные сумматоры в ALM могут работать в двух режимах: как два независимых 2-входовых сумматора (арифметический режим) или один как 3-входовый для реализации сложных арифметических операций (общий арифметический режим).
Рис. 5. Работа ALUT в расширенном режиме
Рис. 6. Работа ALUT в арифметическом режиме
Используемые ресурсы ПЛИС Stratix III EP3SL50F484C2 и ПЛИС APEX20KE EP20K30ETC144 при проектировании микропроцессорных ядер показаны в таблице 1. Из анализа таблицы 1 можно сделать выводы, что различные варианты микропроцессорного ядра занимают менее 1% используемых ресурсов ПЛИС и обладают более чем в два раза большей тактовой частотой, чем при реализации в базисе ПЛИС APEX20KE.
Варианты 1, 3 и 4 наиболее схожи между собой, так как базируются на одном варианте управляющего автомата из работы [1] и задействуют одинаковое количество триггеров (33 триггера). Вариант 2 (93 триггера) и вариант 5 (59 триггеров) базируются только на системе команд из работы [1] и разработаны с помощью системы MATLAB/Simulink. По числу упакованных элементов комбинационной логики ПЛИС Stratix III превосходят ПЛИС APEX20KE и обеспечивают выигрыш по быстродействию микропроцессорных ядер.
Наиболее скоростной вариант микропроцессорного ядра — вариант 3, а по функциональной сложности, которая обеспечивает ряд преимуществ, таких как поддержка формата с фиксированной запятой и распределенная система управления блоками процессора, — вариант 2. Вариант 2 не использует блоки встроенной памяти.
Вариант 2 из работ [3, 4] с системой команд из работы [1] наиболее близок к архитектуре микропроцессорного ядра PicoBlaze, для реализации в базисе ПЛИС Spartan II, Virtex (рис. 7) и является его упрощенной версией. Вариант 2 состоит из следующих блоков: управляющего автомата (блок CPU_Controller); памяти программ — ПЗУ процессора (блок Memory); АЛУ процессора (блок alu); двух регистров общего назначения (РОН, блоки RegisterA и RegisterB); регистра специального назначения (РСН), выполняющего роль стека (блок PC_Inc); счетчика команд (блок PC); регистра инструкций (блок Instruction_Reg).
Рис. 7. Архитектура микропроцессорного ядра PicoBlaze для реализации в базисе ПЛИС Spartan II и Virtex
Архитектура микропроцессорного ядра PicoBlaze основана на концепции раздельных шин данных и команд (гарвардская, или двух-шинная архитектура). Память для хранения данных и память для хранения программы располагаются в разных местах, допуская полное совмещение во времени операций вызова команды из памяти и ее выполнения, что позволяет добиться высокой скорости выполнения операций. Варианты микропроцессорных ядер (варианты 1-5) условно характеризуются одношинной структурой, так как в рассматриваемых вариантах отсутствует возможность подключения памяти данных.
Микропроцессорное ядро PicoBlaze содержит 16 восьмиразрядных регистров, входящих в блок РОН (в варианте 2 их два), 8-разрядное АЛУ, регистр статуса и регистр фиксации флагов при выполнении обработки прерываний (в варианте 2 отсутствуют), программный счетчик, блок управления вводом/выводом (в варианте 2 отсутствует), стек (15 уровней, в варианте 2 стек организован на регистре R), схему управления прерываниями (в варианте 2 отсутствует), блок управления выбором адреса следующей команды (в варианте 2 отсутствует), дешифратор команд и ПЗУ на основе блочной памяти ПЛИС Block SelectRAM, объем которого составляет 256·16 разрядов. Микропроцессорное ядро PicoBlaze задействует 9% логических ресурсов ПЛИС XC2S50E и 2,5% ПЛИС XC2S300E.
Вариант 2 поддерживает лишь несколько команд из 3 групп команд ядра PicoBlaze (всего 6 групп: 1-я группа — команды, управляющие последовательностью выполнения операций в программе, и команды обработки подпрограмм, например, JUMP, CALL, RETURN; 2-я группа — логические команды, например, поразрядное умножение AND; 3-я группа — арифметические команды, например, команда получения суммы двух операндов без учета переноса ADD; 4-я группа — команды сдвига; 5-я группа — команды ввода/вывода; 6-я группа — команды для обслуживания прерываний). Ядро PicoBlaze поддерживает 49 команд, время выполнения команд — постоянное, а варианты 1-5 — только 15, и время выполнения команд у микропроцессорных ядер рассматриваемых вариантов сильно разнится. В таблицах 2 и 3 показан формат команд переходов JUMP ядра PicoBlaze и варианта 2 с системой команд из работы [1]. Ядро PicoBlaze поддерживает 1 безусловную и 3 условных команды переходов. В варианте 2 из-за отсутствия развитого АЛУ (например, не предусмотрены арифметические команды с учетом переноса/заема и др.), регистра статуса и блока управления выбором следующего адреса поддерживается лишь одна команда перехода c условием — JMPZ.
Таблица 2. Формат команды переходов микропроцессорного ядра PicoBlaze
Поле кода операции |
Поле адреса переходов |
Мнемоника |
Выполняемая операция |
||||||||||||||
1 |
0 |
0 |
0 |
x |
x |
0 |
1 |
A |
A |
A |
A |
A |
A |
A |
A |
JUMP aa |
Безусловный переход |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
A |
A |
A |
A |
A |
A |
A |
A |
JUMP Z,aa |
Переход при условии, что флаг ZERO Flag находится в установленном состоянии |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
A |
A |
A |
A |
A |
A |
A |
A |
JUMP NZ,aa |
Переход при условии, что флаг ZERO Flag находится в сброшенном состоянии |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
A |
A |
A |
A |
A |
A |
A |
A |
JUMP C,aa |
Переход при условии, что флаг CARRY Flag находится в установленном состоянии |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
A |
A |
A |
A |
A |
A |
A |
A |
JUMP NC,aa |
Переход при условии, что флаг CARRY Flag находится в сброшенном состоянии |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Номер разряда команды |
Таблица 3. Формат команды переходов микропроцессорного ядра (вариант 2)
Поле кода операции |
Поле адреса переходов |
Мнемоника |
Выполняемая операция |
||||||||||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
A |
A |
A |
A |
A |
A |
A |
A |
JMP |
Безусловный переход по адресу, заданному младшим байтом команды |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
A |
A |
A |
A |
A |
A |
A |
A |
JMPZ |
Переход по адресу, заданному младшим байтом команды, если содержимое регистра A равно нулю |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Номер разряда команды |
Трассировочная архитектура MultiTrack, используемая в ПЛИС Stratix III, обеспечивает связь между различными кластерами логических элементов и характеризуется определенным количеством шагов (hop), необходимых для того, чтобы соединить один LAB с другим. Чем меньше количество шагов и предсказуемее модель трассировки, тем выше производительность и легче оптимизация архитектуры с помощью инструментов САПР. Архитектура трассировки межсоединений MultiTrack обеспечивает большую доступность ко всем окружающим LAB с помощью меньшего числа связей, что позволяет увеличить производительность, снизить энергопотребление и оптимизировать упаковку логики. На рис. 8 различными цветами (темно-синий и синий) показано число шагов, требующихся для соединения LAB (сноска) с окружающими LAB для реализации микропроцессорного ядра по варианту 2. Таким образом, трассировка до всех LAB выполняется за два шага.
Рис. 8. Трассировочные ресурсы ПЛИС Stratix III EP3SL50F484C2, задействованные при реализации микропроцессорного ядра по варианту 2
Обобщая полученные результаты, можно сделать выводы, что наиболее удачен вариант 2 — микропроцессорное ядро с системой команд из работы [1] для вычислений с фиксированной запятой в системе MATLAB/Simulink [3, 4]. Код языка VHDL микропроцессорного ядра получен с применением приложения Simulink HDL Coder системы MATLAB/Simulink.
- Тарасов И. Проектирование конфигурируемых процессоров на базе ПЛИС. Часть II // Компоненты и технологии. 2006. № 3.
- Строгонов А., Буслов А. Проектирование учебного процессора для реализации в базисе ПЛИС с использованием системы MATLAB/Simulink // Компоненты и технологии. 2009. № 5.
- Строгонов А. Проектирование учебного процессора с фиксированной запятой в системе MATLAB/Simulink // Компоненты и технологии. 2009. № 7.
- Строгонов А., Буслов А., Давыдов С. Проектирование учебного процессора с фиксированной запятой в САПР Quartus II компании Altera // Компоненты и технологии. 2009. № 11.
- Строгонов А. В., Цыбин С. А. Использование различных типов памяти при проектировании учебного микропроцессорного ядра для реализации в базисе ПЛИС // Компоненты и технологии. 2009. № 12.
- Строгонов А. В., Цыбин С. А. Проектирование микропроцессорных ядер с использованием приложения StateFlow системы MATLAB/Simulink // Компоненты и технологии. 2010. № 1.
- Зотов В. Ю. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы XILINX. М.: Горячая линия — Телеком, 2006.