Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cris_diss_21_07_last.docx
Скачиваний:
9
Добавлен:
18.12.2018
Размер:
10.16 Mб
Скачать

4.3. Аппаратная реализация мультиматричного процессора

Задача: реализовать мультиматричный процессор (Execution_unit), оперирующий матрицами и векторами в кристалле FPGA. Набор инструкций: (A – and, B – xor, C – or, D – slc – shift left crowding). Средства проектирования мультипроцессора: Spartan 3A FPGA, Virtex 6; Virtex 5; синтез, трассировка и размещение – Xilinx ISE Design Suite 13; моделирование и верификация –Xilinx ISIM; языки описания аппаратуры – VHDL, Verilog. Принцип работы: Cчитать матрицу m из n (16) векторов из памяти, а также матрицу A такой же размерности, обработать их одновременно в одном такте и записать результат в память матрицы m. Для реализации используется несколько модулей памяти, соответствующих операциям xor, or, and, slc соответственно. Программа, реализованная на языке VHDL, имеет следующую структуру: регистровый файл и исполняющее операции устройство. Регистровый файл служит для хранения информации: временного хранения данных, считанных из памяти, и хранения результатов. Исполняющее устройство разделено на 2 модуля реализации операций (xor, or, and), и (slc). Реализация функциональности представлена в табл. 1 и табл. 2. Все VHDL-коды синтеза для модуля мультиматричного процессора представленны в Приложении А.1 – А.8. Верификационный и тестовые векторы для ММП представленны в Приложении А.9.

Здесь представлены параметры проекта по реализации операций xor, or, and. Для реализации указанных функциональностей недостаточно ресурсов кристалла Spartan 3A FPGA по входам и выходам (табл.1). Поэтому проект был реализован на Virtex6 (табл. 2). На рис. 4.4 показаны структура и интерфейс мультиматричного процессора (ММП). Исполняющее устройство состоит из 3-х блоков: блок xоr_or_and, блок slc и блок мультиплексора (sixteen_mux4_to_1). Соединения между этими блоками показаны на рис.4.5.

Таблица. 1. Target Device: Spartan 3A FPGA

Таблица 2. Target Device: Virtex 6

Рис.4.4. Структура и Интерфейс ММП

Рис. 4.5. Соединения между основными узлами управляющего устройства

Моделирование взаимодействия входной матрицы (Input Vectors) изображенный на рис. 4.6. Имеются два входных наборов каждый, из которого состоит из 16 х 16 матрицы, хранимой в ОЗУ ram1 и ram2. Первая матрица – это мтрица, подлежающая сравнению с матрицией ассоциаторов – вторая матрица.

Рис. 4.6. Взаимодействие входных матриц

Далее представлена аппаратная реализация и верификация матричной функциональности XOR. На рис. 4.7 иллюстрируется процесс моделирования и верификации инструкции XOR (XOR Waveforms) для всех координат взаимодействующих матриц. Важно отметить, что во всех процессах моделирования и верификации инструкции Xor, or, and и slc одновременно моделируется процесс записи данных в памяти. Здесь желтым маркером отмечено, что на момент начала операции записи адрес уже сформирован и доступен для записи или чтения данных см рис. 4.7, 4.10, 4.12 и 4.14. Здесь показано, что результаты любой из 4-х операций приходят одновременно и записываются в память по словам или строкам таблицы.

На рис. 4.8 представлен фрагмент результата процесса синтеза инструкции Xor (XOR Schematics) для выполнения координатных операций в параллельном режиме.

Рис. 4.7. Взаимодействие XOR матриц

Рис. 4.8. Фрагмент синтеза Xor-матричной операции

На рис. 4.9 представлен фрагмент результата процесса синтеза инструкции Xor (XOR Schematics) в части получения интерфейса законченной функциональности в кристалле FPGA. Их 16, каждый из них выполняет Xor операции над двумя 16-битовыми векторами одновременно.

Рис. 4.9. Интерфейс Xor-матричной операции

Аналогичные схемотехнические и верификационные решения реализованы и для Or-матричной операции, которые представлены на рис. 4.10 и 4.11.

Рис. 4.10. Верификация or-матричной операции

Рис. 4.11. Схемотехническое решение Or-матричной операции.I

Наиболее существенные фрагменты схемотехнических и верификационных решений для And-матричной операции представлены на рис. 4.12, 4.13.

Рис. 4.12. Верификация AND-матричной операции

Рис. 4.13. Схемотехническое решение And-матричной операции

Наиболее существенные фрагменты схемотехнических и верификационных решений для SLC-матричной операции представлены на рис. 4.14, 4.15.

Рис. 4.14. Верификация SLC-матричной операции

Рис. 4.15. Схемотехническое решение SLC-матричной операции.I

Для выполнения матричных операций необходимо подготовить информацию с помощью регистров, которые построчно формируют таблицу. Для этого выполняется проектирование регистров – Register File. Длина переменных регистра равная n, которая зависит только от числа триггеров на кристалле программируемого логического устройства. Но для верификации функциональности использовались 32 регистров по 16 разрядов для считывания информации из памяти. Послесинтезное моделирование регистров представлено на рис. 4.16.

Здесь Datafrom_ram1, datafrom_ram2 – регистровые переменные для считывания данных из памяти. Datato_ram1, datato_ram2, datato_ram3 и datato_ram4 – регистровые переменные для хранения результатов выполнения любых из 4-х операций и последующей записи данных в соответствующую память. Четыре Модули памяти используются для повышения быстродействия считывания/записи данных. Сигнали ready, mem_rd_wr,– переменные управляющих сигналов: все слова считаны, записаны в память, готовы к записи, сигнал для памяти запись/чтение соответственно, data_avail данные доступны – переменная для исполняющего устройства:. read_mem_addr, write_mem_addr – переменные адреса чтения/записи. Clk_period – clock сигнал. Reg – переменные регистров. Переменная instr_code – это двухбитовый код операции, который служит для выбора одной из четырёх опраций xor, or, and или slc(сдвиг влево с уплотнением). Если instr_code равно “00” выбирается xor инструкции , “01” – or, “10” – and, “11” – slc.

Моделирование регистров показано на рис 4.16 и 4.17, на которых показаны процессы формированя содержимого регистров для последующего выполнения матричных инструкций процессора и приема результаты каждой матричной операции соответственно. На рис 4.16 показано, что данные для выполнения одной из 4-х операций приходят по словам из обоих памяти и заносятся в регистры. Матрица m (входного запроса) заносится в регисры с номерами 0 – 15, а матрица ассоциаторов (эталонная) заносится в регисры с номерами 16 – 31.

Регистры приема данных из исполняющего устройства (Execution Unit) рис. 4.17 – это первые 16 регистры из 32-х регистров в которые ранее заносили входные данные m из памяти. Здесь показано, что результаты данные для выполненной одной из 4-х операций приходят из управляющего устройства одновременно и записываются в регисры целиком в одном такте.

Рис. 4.16. Моделирование регистров приема данных из обоих памяти

Рис. 4.17 Моделирование регистров приемов данных из исполняющего устройства

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]