Реализация n-битного умножения на Spartan 3E Kit с использованием аппаратных умножителей

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

µконфигурация структуры устройства в процессе его функционирования

Объем ПЛИС в настоящее время достигает более 1млн. вентилей типа 2И-НЕ. Современные ПЛИС являются ISP приборами, т.е. программируемыми непосредственно в системе. Время задержки современных ПЛИС составляет до 0,5нс. на вентиль, а системные частоты составляют 200 МГц.

3. Эскизный проект

 

Эскизный проект - этап составления спецификаций отдельных блоков, разработка подробной структурно-блочной схемы устройства.

Если требуется снизить материальные затраты, а время работы не так критично, то можно разработать структурную схему, блоки которой выполняют несколько функций и могут использоваться несколько раз. Например, сначала блок производит какую-либо операцию, результата операции сохраняется в ФУ хранения, а затем блок выполняет другую операцию. Один из входных параметров для следующей операции может поступить из ФУ хранения, в который перед этим был занесен результат предыдущей операции. Так как двоичное умножение на 2n - это то же самое что сдвиг значения на n позиций, то умножитель можно использовать как сдвигающее устройство или другой ресурс общего назначения. Такой подход можно использовать в приложениях, которым бы не потребовалось большое количество доступных умножителей.

 

.1 Спецификация умножителя, основные режимы

 

.1.1 Сдвигающее устройство

Умножитель может использоваться как сдвигающее устройство. Один операнд посылается на вывод и сдвигается на n позиций, если другой операнд является степенью двойки (2n). Так как знаковый разряд (MSB) не может использоваться для управления сдвигом, 18x18 умножитель с дополнительным кодом может сдвигать от 0 до 16 позиций.

Из 36 строк вывода, те, что менее значимы, чем сдвинутые строки данных, автоматически заполнены нулями; а те, что более существенны, чем сдвинутые данные, заполнены нулями или единицами, в зависимости от состояния MSB ввода. Это и будет результатом умножения с дополнительным кодом.

Пользователь может производить логический сдвиг 17 входных битов путем удержания низкого уровня на MSB, или производить арифметический сдвиг 18-разрядного числа с дополнительным кодом.

Стандартное сдвигающее устройство, основанное на CLB, использовало бы массив из n мультиплексоров, каждый с n входами, и требовало большого количества маршрутизации ресурсов. Сдвигающие устройства, основанные на умножителе, имеющие больше чем 18 бит, и циклические сдвигающие устройства любой длины требуют внешнее коммутационное ИЛИ для выводов, но используют гораздо меньшее количество ресурсов CLB.

 

.1.2 Генератор возвращения величины

Чтобы сгенерировать абсолютное значение числа, используя умножение, необходимо умножить на 1, если число положительное (MSB равно нулю), и умножить на -1, если оно отрицательное (MSB равно один). В примечании с дополнительным кодом, 1 когда все нули, заканчиваясь единицей в младшем бите, и -1 когда все единицы, включая младший бит. Поэтому, генератор возвращения величины или абсолютный генератор значения может быть имплементирован путем умножения значения с единицей в младшем бите и старшими битами (MSB) входного значения на остальных разрядных позициях. На рисунке 3.1 представлен генератор возвращения величины.

 

Рисунок 3.1 - Генератор возвращения величины

3.1.3 Возвращение дополнительного кода

Генерирование двоичного дополнения числа обычно требует только одного LUT на бит с использованием логики переноса для больших чисел. Однако, если сложно использовать LUT, то можно использовать умножитель для того, чтобы возвратить дополнительный код ввода. Умножение входного числа на число равной длины, состоящее из всех единиц, генерирует дополнительный код числа той же самой длины разрядов выхода. Любые посторонние биты более высокого порядка игнорируются. Рисунок 3.2 отображает двоичный генератор возвращения дополнения.

 

Рисунок 3.2 - Генератор возвращения дополнения Двоичный дополнение

 

.1.4 Комплексное умножение

Комплексное умножение - умножение комплексных чисел, которые имеют реальную (вещественную) и мнимую часть с мнимым модулем i, равным квадратному корню из -1. Комплексное умножение может быть выполнено, используя только три реальных множителя: ac, bd, и (а + b)(с + d). Вещественной частью (а + ib)(с + id) является ac - bd, а мнимой частью является (а+ b)(с + d) - ac - bd . Большое количество умножителей в архитектуре Spartan -3 позволяет удобнее производить даже более сложное умножение.

3.1.5 Режим разделения времени в матричном умножении

Много конвейерных функций в компьютерной графике и видео выражены в матричной математике. Умножение 3 x 3 матриц требовал бы 27 умножителей и 18 сумматоров, чтобы сгенерировать 3 x 3 матричный результат. Преобразование цвета может быть описано как умножение 3 x 3 матрицы на константу, которое требует девять умножений и шесть сложений для получения результата.

Высокоскоростная возможность устройства Spartan-3 позволяет пользователю "разделять время" умножителей. Вместо девяти умножителей, в проекте имеется девять наборов вводов, приводящих к девяти наборам выходов в девять раз ускоряя работу системы, сокращая расчеты умножителя до одного. Логика сумматора реализована на CLB ресурсах, и при срабатывании каждого третьего таймера вывод сумматора сохраняется на выходе регистров, чтобы зафиксировать три результата.

 

.1.6 Умножение с плавающей точкой

Значения с плавающей точкой добавляют к числу экспоненту и знаковый ?/p>