3) «Прыжковый с условием». Инструкция, выполняющая переход по метке «прыжок» при выполнении условия, которое использует регистры.
4) «Прыжковый». Безусловный переход.
5) «Работающий с памятью». Чтение или запись в память.
В структуре указано - «варьируется» так, как длина обрабатываемого вектора может меняться в зависимости от параметров, указанных при синтезе схемы.
В целом, команд небольшое количество, поэтому процессор можно отнести к типу RISC (англ. reduced instruction set computer - компьютер с коротким набором команд). В таблице 1 представлен полный набор команд.
Таблица 1. Набор команд
|
мнемоника |
битовый код |
тип |
описание |
|
|
add |
0000 |
регистровый |
сложение |
|
|
and |
0001 |
регистровый |
И |
|
|
or |
0010 |
регистровый |
ИЛИ |
|
|
not |
0011 |
регистровый |
отрицание |
|
|
mul |
0100 |
регистровый |
умножение |
|
|
div |
0101 |
регистровый |
деление |
|
|
addi |
0110 |
непосредственный операнд |
сложение с операндом |
|
|
shfl |
0111 |
непосредственный операнд |
сдвиг в лево |
|
|
shfr |
1000 |
непосредственный операнд |
сдвиг в право |
|
|
beq |
1001 |
прыжковый с условием |
переход при верном условии |
|
|
jmp |
1010 |
прыжковый |
безусловный переход |
|
|
sw |
1011 |
работающий с памятью |
запись в память |
|
|
lw |
1100 |
работающий с памятью |
чтение из памяти |
|
|
nop |
1101 |
пустая команда |
ничего не делать |
|
|
slt |
1110 |
регистровый |
установить если меньше |
|
|
sub |
1111 |
регистровый |
вычитание |
4.3 Особенности системы
Как говорилось выше процессор является векторным и это приводит к тому, что за счет параллелизма данных достаточно провести выборку одной команды вместо нескольких. Таким образом мы повышаем быстродействие системы. Данная особенность будет полезна при применении в таких областях как: обработка видеоизображении, радиолокации, машинное обучение.
Следующая особенность устройства - это обработка данных в формате фиксированной точки. В отличие от стандарта IEEE754 и ему подобных, где часть бит отводится для представления экспоненты, формат фиксированной точки подразумевает что экспонента постоянная. И таким образом, мы не только уменьшаем необходимое количество бит для представления числа, но и упрощаем цифровую схему для обработки данных.
Большую роль в вычислительных системах играет ввод-вывод данных и в данной работе процессор снабжен интерфейсом, который работает по принципу fifo (first in first out - с англ. яз. первый пришел - первый ушел). Данный способ позволяет подключать разные блоки протоколов передачи например: SPI, UART, I2C.
Рисунок 8. Схема асинхронного FIFO [10].
Как видно на рисунке 5 у нас есть два тактовых сигнала «wclk» (тактовый сигнал протокола передачи) и «rclk» (частота работы процессора). Наличие двух разных клоковых доменов позволяет подключать к процессору различные протоколы передачи, которые работают на разных частотах. Таким образом, повышается легкость встраивания системы в различные приложения.
Так как у нас в схеме fifo есть два клока это влечет за собой некоторые проблемы. Самая главная из них это метастабильность, которая проявляет себя как запрещенный уровень напряжения на выходе последовательной логики. Возникает данное явление из-за невыполнения условии «времени установки» и «времени удержания» при пересечении клоковых доменов. На рисунке 6 показаны времена удержания и установки.
Рисунок 9. Временная диаграмма. «tsetup» и «thold» времена удержания и установки соответственно
Для решения данной проблемы используется пересинхронизатор, который представляет из себя двух последовательно соединенных триггера, и код Грея, в котором каждая следующая последовательность отличается от прошлой одним битом. Исходную последовательность кодируют (код Грея) и передают в другой тактовый домен, где принимающая сторона пропускает данные через пересинхронизатор и декодирует их. Пересинхронизатор гарантирует только лишь корректность логических уровней и может исказить передаваемую битовую последовательность. Код Грея необходим для того, чтобы мы получили либо старую информацию то, есть которая была на период раньше, либо новую, но никак не верную.
5. Средства реализации
5.1 Обоснование выбора
Для реализации вычислительного устройства планируется использовать ПЛИС. С помощью данной технологии возможно создания реально работающей системы, которую можно применять на практике.
Создание же интегральной микросхемы невозможно по причине не хватки ресурсов(дороговизна). Симуляция интегральной микросхемы не даст возможности использовать на практике. Таким образом, ПЛИС позволяет создать вычислительную систему при этом с возможностью использовать с реальным оборудованием.
5.2 Процесс проектирования
Реализация вычислительной системы на ПЛИС происходит в несколько этапов [11]. На рисунке 10 представлена блок схема процесса проектирования.
Рисунок 10. Процесс проектирования на ПЛИС
Первый этап - это выбор чипа ПЛИС, основные параметры которого:
· Количество логических блоков
· Количество входов / выходов
· Количество встроенной памяти
· Быстродействие чипа
· Наличие специализированных блоков (DSP, PLL и т.п.)
Второй этап заключается в описании логики работы на ЯОА. Затем идет моделирование работы цифровой схемы с использованием симулятора. Следующий шаг заключается в размещении блоков (в большинстве случаев ручное размещение не требуется) и назначение входов и выходов к конкретным пинам микросхемы. Важный этап «наложение ограничении» определяет частоту работы схемы, что является в большинстве случаев главным фактором, влияющим на производительность системы. И заключительный этап - это генерация битового файла, который загружается в конфигурационную память ПЛИС тем самым задавая логику работы вычислительной системы.
5.3 Обзор используемого программного обеспечения
Выбор программного обеспечения (ПО) главным образом определяется используемой ПЛИС так, как производитель разрешает работать с микросхемой только через свои инструменты. По этой причине и в силу того, что в данной работе используется элементная база от Intel, для разработки используется ПО от Intel: Intel Quartus Prime, ModelSim-Intel.
Quartus Prime
Размещение, наложение ограничении по времени, создание битового файла (см. рис. 10) - это этапы, которые осуществляются в Quartus Prime [12]. По сути, данная программа является набором инструментов, каждый из которых выполняет один из приведенных выше этапов. Основные инструменты:
· Chip planer необходим для ручного назначения логических ресурсов.
· Pin planer отвечает за настройку вводов / выводов
· Timing Analyzer предназначен наложения и анализа ограничении по времени
· Создание битового файла и конфигурация происходят из главного окна Quartus Prime.
Таким образом, в Quartus Prime есть всё необходимое для работы с ПЛИС фирмы Intel Altera. Однако моделирование происходит в ModelSim-Intel.
Рисунок 11. Работа в Quartus Prime
ModelSim - Intel
Как известно тестирование является одним из важных этапов проектирования сложных систем. При работе с ПЛИС тестирование проводится с помощью моделирования логики работы системы. Для проведения симуляции в данной работе используется программа ModelSim [13]. В ней присутствует весь необходимый функционал:
· Поддержка SystemVerilog
· Системные прерывания
· Объектно-ориентированное программирование
· Вывод диаграмм изменения сигналов
· Поддержка Tool Command Language
В целом ModelSim - это современный инструмент моделирования, который помогает избежать ошибок на ранней стадии разработки.
Рисунок 12. Работа в ModelSim
5.4 Элементная база
На сегодняшний день существует два основных производителя ПЛИС - Xilinx и Intel Altera. Каждая компания не уступает другой в ПО или аппаратной части, поэтому выбор был сделан в пользу Intel Altera благодаря плате, на которой расположен чип ПЛИС.
Плата, используемая в данном проекте, хорошо подходит для прототипирования и инженерного творчества в силу нескольких причин: соотношение цены и ресурсов, наличием множества интерфейсов, хорошо документированным описанием.
Интерфейс для отладки проекта был продиктован несколькими соображениями. Он должен быть простым и хорошо документирован производителем.
ПЛИС Cyclone 4
Рисунок 13. Микросхема ПЛИС Altera Cyclone 4 [4]
Для реализации вычислительного устройства используется микросхема ПЛИС Cyclone 4 [4] фирмы Intel Altera. В таблице 2 приведены ресурсы данной интегральной схемы.
Таблица 2. Ресурсы ПЛИС Altera Cyclone 4
|
Логические элементы |
Встроенная память |
Умножители |
ФАПЧ |
Сети тактовой частоты |
Банки Ввода вывода |
Кол-во пинов ввода вывода |
|
|
6 272 |
270 |
15 |
2 |
10 |
8 |
179 |
· Логический элемент (ЛЭ), представленный на рисунке 2, позволяет реализовать булевую функцию с 4-8 переменными. Наличие мультиплексоров позволяет объединять такие ЛЭ для создания более сложного функционала. Также есть возможность выбрать с помощью какой логик будет создана функция: комбинационной или последовательной.
· Встроенная память помогает создать системы с буферами или кэшами, что сокращает время обработки данных так, как нет необходимости обращаться к внешней памяти.
· Умножители - это встроенные функциональные блоки, которые значительно быстрее производят операцию умножения, чем если бы умножение было реализовано с помощью логических блоков.
· ФАПЧ (Фазовая автоподстройка частоты) - генератор, предназначенный для создания новой частоты, из подающейся на вход. Встроенный в ПЛИС ФАПЧ позволяет создать систему, которая содержит несколько тактовых областей с различной частотой работы.
· Сеть тактовой частоты необходима для корректной работы последовательной логики. Суть её работы заключается в недопущении расфазировки тактовых сигналов.
· В ПЛИС есть возможность назначать группам пинов различные рабочие напряжения, соответствующие, например напряжение транзисторно-транзисторной логики, комплиментарной металл-оксид полупроводниковой логики. Такие группы называются банками ввода / вывода.
· Большое количество пинов помогает создать гибкую систему ввода и вывода данных.
Отладочная плата
Рисунок 14. Отладочная плата RZ-Easy FPGA A2.1 с ПЛИС Cyclone 4 [14]
Для создания вычислительного устройства использовалась плата RZ-Easy FPGA A2.1 [14], изображенная на рисунке 14. На плате присутствует множество интерфейсов такие как:
· PS2
· RS232
· SP3232
· VGA
· JTAG
· AS
· LCD
· Выходы/входы ПЛИС для задания функционала пользователем
Также на плате расположены:
· M25P16 - микросхема для сохранения конфигурации ПЛИС при отключении питания
· SDRAM - оперативное запоминающие устройство объемом 64 Мбит
· Кварцевый генератор тактовой частоты (50 МГц)
· ПЛИС Cyclone 4
UART интерфейс
Рисунок 15. Передача данных по UART
Universal Asynchronous Receiver-Transmitter (UART) - это асинхронный протокол связи, использующий 2 линии по одной для отправки и принятия данных [15]. Передача данных в UART идет по одному биту в равные промежутки времени. Для задания времени удержания бита на линии задают скорость UART, которая указывается в бодах. Скорость (S) бодах связана с длительностью бита (T), как T = 1/S. Когда линия простаивает, она удерживается в логической единице. Начало передачи начинается с посылки стартового бита, который равен логическому нулю. В конце на линию выставляется один стоповый бит (лог. 1). Обычно за раз передают один байт. На рисунке 15 можно увидеть две транзакции передающиеся по UART.
В работе UART используется как средство связи для отладки вычислительной системы. Подключение происходит через конвертер USB - UART CP2102 фирмы Silicon Labs [16] (см. рисунок 16). USB подключается к персональному компьютеру, а UART к ПЛИС, внутри которой реализован контроллер UART. На рисунке 17 представлена принципиальная схема конвертера.
Рисунок 16. Конвертер USB - UART CP2102 фирмы Silicon Labs
Рисунок 17. Принципиальная схема конвертера [16]