Основы вычислительной техники. Методические рекомендации по курсовой работе. Учебное пособие
.pdf
Рис. 6.1. Окно задания основных настроек сумматора
сплавающей запятой ALTFP_ADD_SUB
Вполе задания формата числа с плавающей запятой оставьте значение по умолчанию Single precisions (32 bits), чтобы использовать формат с одинарной точностью. В этом случае разрядность мантиссы и порядка определяется автоматически и соответствует стандарту IEEE-754: 23 разряда мантиссы и 8 разрядов порядка.
ПолезаданияWhatistheoutputlatency…позволяетуказатьжелаемую задержку получения результата, которая определяется числом ступеней реализуемого в сумматоре конвейера. Сложность операции сложения с плавающей запятой, включающей операции нормализации и суммирования, обусловливает необходимость поэтапной обработки данных, которая может быть эффективно
51
реализована путем конвейеризации1. Поскольку проводимое исследование, выполняется на модели устройства средствами моделирования, можно указывать минимальное значение задержки получения результата, равное 7.
В поле задания Which operating mode… оставьте значение по умолчанию Addition only, чтобы исследовать работу устройства только в режиме суммирования.
Нажмите кнопку Next.
4.Вследующемокне(рис.6.2)задайтеиспользованиедополнительных выводов NaN, overflow, underflow и zero для контроля особых ситуаций при суммировании в формате с плавающей запятой по стандарту IEEE-754.
5.В мастере настроек на страницах 3 и 4 оставьте настройки по умолчанию. На странице 5 включите генерацию файла с символомдлябиблиотечногомодуляQuartusPrimesymbolfile.Завершите создание модуля, нажав на кнопку Finish.
6.Создайте схему исследуемого устройства по рис. 6.3. Выполните анализ и синтез.
7.Создайтефайлдлявыполнениямоделированияработысумматора.Задайтетактовыйсигналclkдляустройства.Дляэтоговыделите его временную диаграмму, нажав на его имя, затем выполните команду Edit → Value → Overwrite clock… или нажмите кнопку
.
ВпоявившемсяокнеClockзадайтепериодсигналасинхронизации Period, равный 10 нс (рис. 6.4). Оставив остальные значения
1 При конвейеризации требуемые вычисления разбиваются на этапы, каждому из которых соответствует своя ступень конвейера. При этом вычисления организуются таким образом, что на вход первой ступени конвейера подаются исходные данные, на вход каждой очередной ступени конвейера – результаты предыдущей ступени, а результат вычислений будет получен на выходе последней ступени конвейера. Все ступени конвейера выполняют вычисления одновременно и синхронно под управлением тактового сигнала clk. Таким образом, новые данные на вход конвейера можно подавать на каждом такте, однако результаты вычислений будут формироваться с задержкой, равной числу ступеней конвейера. При увеличении числа ступеней (длины) конвейера повышаются аппаратные затраты на его реализацию, но при этом увеличивается максимальная частота работы конвейера.
52
Рис. 6.2. Окно задания настроек используемых выводов сумматора с плавающей запятой ALTFP_ADD_SUB
по умолчанию, нажмите кнопку OK. Полученная временная диаграмма должна выглядеть как на рис. 6.5.
8. Выполните моделирование операции суммирования чисел 3,5и–1,8.Втабл.6.1показанысоответствующиешестнадцатерич- ное и двоичное представления этих чисел. Для двоичного представленияотдельнопоказанызначениязнака,порядкаимантиссы с указанием разрядов, в которых они хранятся.
Например, для числа 3,5 может быть получено традиционное представление в формате с плавающей запятой:
3,510 =11,12 =1,11 21,
где мантисса m = 111, а порядок p = 1.
53
Рис. 6.3. Схема сумматора чисел в формате с плавающей запятой
Рис. 6.4. Окно задания параметров синхросигнала
Рис. 6.5. Пример временной диаграммы для синхросигнала
В формате с плавающей запятой IEEE-754 с одинарной точностью в поле мантиссы сохраняются разряды после запятой, а в поле порядка – его смещенное, всегда положительное значение
р + 127, равное 12810 =100000002.
54
Таблица 6.1
Примеры представления чисел в формате с плавающей запятой с одинарной точностью
Десятич- |
Число в формате с плавающей запятой с одинарной точностью |
|||
ное |
Шестнадцате- |
|
Двоичное представление |
|
представ- |
ричное представ- |
Знак |
Порядок |
Мантисса |
ление |
ление, 32 разряда |
[31] |
[30..23] |
[22..0] |
3,5 |
4060 0000h |
0 |
1000 0000 |
110 0000 0000 0000 0000 0000 |
–1,8 |
bfe6 6666h |
1 |
0111 1111 |
110 0110 0110 0110 0110 0110 |
Пример с фрагментом плана тестирования, включающим сум- мированиечисел3,5и–1,8,ивременнаядиаграмма,показывающая его реализацию, представлены в табл. 6.2 и на рис. 6.6. Десятичные значения указаны с точностью до двух знаков после запятой.
9.Всоответствиисиндивидуальнымзаданием(см.прил.4)разработайте и реализуйте план тестирования сумматора с плавающейзапятой.Включитевплантестированияслучаисуммирования чисел с разными комбинациями знаков и с разным соотношением порядков. Включите в план тестирования случаи, приводящие
кформированию флагов zero, overflow, underflow и NaN.
Впояснительную записку включите снимок с экрана со схемой исследуемогосумматораиполностьюзаполненныйплантестирования. Соблюдайте структурирование двоичных данных, представленных в таблице: в 32-разрядном значении должны быть выделены разряды знака, порядка и мантиссы.
Впояснительную записку включите снимки экрана с результатами моделирования сумматора. Для каждой временной диаграммы укажите соответствующие номера тестовых случаев для входных сигналов и номера тестовых случаев для выходных сигналов. Убедитесь, что на временных диаграммах показаны результаты моделирования для всех тестов.
Включите в пояснительную записку объяснение перевода десятичного числа в двоичное в формате с плавающей запятой IEEE-754 и обратно для одного из чисел, использованных в ходе исследования сумматора.
55
56
Таблица 6.2
Пример фрагмента плана тестирования для сумматора чисел в формате с плавающей запятой
Тест |
Входные воздействия |
|
Результат |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
||
|
|
A |
|
B |
|
Y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ожи- |
|
|
|
|
|
|
|
|
|
|
|
дае- |
|
|
|
|
|
|
|
|
|
|
Зна- |
мый |
|
деся- |
|
деся- |
|
|
NaN |
overflow |
underflow |
zero |
деся- |
|
тич- |
|
тич- |
|
деся- |
|||||
ки |
|
|
|
|
|
|
|
||||
опе- |
тич- |
двоичное |
ное |
двоичное |
ное |
двоичное |
тичное |
|
|
|
|
ный |
зна- |
зна- |
знако- |
|
|
|
|
||||
ран- |
по- |
|
ко- |
|
ко- |
|
вое |
|
|
|
|
дов |
рядок |
|
вое |
|
вое |
|
|
|
|
|
|
|
резуль- |
|
|
|
|
|
|
|
|
|
|
|
тата |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A > 0, |
поло- |
0 10000000 |
3,5 |
1 01111111 |
–1,8 |
0 01111111 |
≈ 1,7 |
0 |
0 |
0 |
0 |
B < 0 |
жи- |
11000000000000000000000 |
|
11001100110011001100110 |
|
10110011001100110011010 |
|
|
|
|
|
|
тель- |
|
|
|
|
|
|
|
|
|
|
|
0 10000100 |
48,1 |
1 01111110 |
–0,79 |
0 10000100 |
≈ 47,31 |
0 |
0 |
0 |
0 |
|
|
ный |
10000000110011001100110 |
|
10010011111101111100111 |
|
01111010011111001110110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
отри- |
0 10000000 |
3,5 |
1 10000000 |
–2,8 |
0 01111110 |
≈ 0,7 |
0 |
0 |
0 |
0 |
|
ца- |
11000000000000000000000 |
|
01100110011001100110011 |
|
01100110011001100110100 |
|
|
|
|
|
|
тель- |
|
|
|
|
|
|
|
|
|
|
|
0 01111110 |
0,7 |
1 01111110 |
–0,79 |
1 01111011 |
≈ –0,09 |
0 |
0 |
0 |
0 |
|
|
ный |
01100110011001100110011 |
|
10010011111101111100111 |
|
01101100100010110100000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 6.6. Временная диаграмма изменения входных и выходных данных из табл. 6.2
Сохраните архив проекта fp_adder в портфолио.
Контрольное задание 1. По указанию преподавателя модифицируйте входные данные теста и объясните полученные результаты.
Контрольное задание 2. На примере одного из тестов в плане тестированияобъяснитезакономерностивизменениивеличинмантиссы и порядка при выполнении суммирования.
7. ИССЛЕДОВАНИЕ АЛГОРИТМИЧЕСКОГО УМНОЖЕНИЯ ЧИСЕЛ В ПРЯМЫХ КОДАХ НА ДВОИЧНОМ СУММАТОРЕ
На основе способов умножения в столбик можно организовать четыре алгоритма умножения в зависимости от последовательности операций сложения и выбора сдвига (используются двоичный сумматор и сдвигающий регистр). Их разрядность зависит от разрядности операндов и от реализуемого алгоритма (табл. 7.1).
Анализируя различные способы умножения, для каждого из алгоритмов рассмотрим модели с различными уровнями детализации:
–математическую модель (арифметическое выражение, по которому ведется вычисление);
–схему алгоритма;
–структурную схему устройства умножения.
Далее будут использованы следующие обозначения.
1. Регистр (Rg) – это простое запоминающее устройство для хранениямногоразрядныхданных.Вначалекаждоготактарегистр
57
|
|
Таблица 7.1 |
Базовые алгоритмы двоичного умножения |
||
|
|
|
Сдвигаемое значение |
Суммирование |
|
младшими разрядами |
старшими разрядами |
|
|
вперед |
вперед |
Множимое (A) |
мр(м) |
ср(м) |
Сумма (S) |
мр(Σ) |
ср(Σ) |
запоминаетподаваемыенаеговходыданные.Навыходахрегистра устанавливаются текущие хранимые данные.
2.Начальная установка (н. у.).
3.Сигнал дискретного времени clk (такты), в котором работает устройство. Событием, задающим дискретное время, будем считать переключение сигнала clk из 0 в 1.
4.Устройствоуправления(УУ)дляразрешенияработыэлементов схемы и выдачи отсчетов времени.
5.Управляемый двоичный сумматор ∑.
7.1.Умножение младшими разрядами вперед со сдвигом множимого
Математическая модель. В произведении A × B раскроем B побитно, опираясь на формат естественного представления числа. Для упрощения записи представим число как целое:
S = A×B = A(2n−1bn−1 +2n−2bn−2 +…+21b1 +20b0 )= =2n−1 Abn−1 +2n−2 Abn−2 +…+2Ab1 + Ab0 =
A A A
= n−1 bn−1 + n−2 bn−2 +…+ 1 b1 + Ab0 +0.
Исходное значение A не сдвинуто. Значит, можно получить младшее частичное произведение Ab0 и прибавить его к значению (н. у. = 0), накапливаемому в сумматоре. Операция арифметическогосдвигамножимогоAнаодинразрядвлевопозволяетполучить следующее частичное произведение Ab1. Аналогично путем последовательного сдвига множимого на один разряд влево могут быть получены все частичные произведения.
58
Схема алгоритма умножения младшими разрядами вперед со сдвигом множимого. Схе-
ма представлена на рис. 7.1. Задаются н. у., накапливаемой сумме присваивается значение 0. Каждый цикл алгоритма умножения предусматривает операцию сложения на двоичном сумматоре и операцию сдвига. Операция сложения выполняется всегда, дажееслиbi =0.Всеговыполняетсяn циклов.
В последнем цикле сдвиг не требуется. Он включен, чтобы все итерации алгоритма были одинаковыми. Это упрощает УУ.
Схема устройства умножения. Схема при-
ведена на рис. 7.2. Разрядность операндов равнаn; разрядности сумматора∑, сдвигающего регистра RgA← и регистра суммы Rg∑ равны 2n; разрядность сдвигающего регистра RgB→ равна n. В сдвигающем регистре RgA← выполняется арифметический сдвиг влево,вRgB→ –произвольныйсдвигвправо.
Устройство управления реализует следующий алгоритм. Вначале УУ задает начальные установки в регистры (элементы памяти).
Затем в Rg∑ записывается ноль; в старшие n разрядов RgA← загружается ноль, в младшие – разряды множимого A[n–1..0]. В регистр RgB→ загружается множитель B[n–1..0].
На каждом такте работы УУ анализирует состояние младшего разряда RgB→ и выдает на управляемый сумматор команду сложения с содержимым RgA← (bi = 1) или команду сложения с нулем (bi = 0, пустое сложение). На RgA← и RgB→ выдается команда «сдвинуть», на Rg∑ – команда «записать». На схеме для этого и следующих алгоритмов связи для управления н. у. и потактной работой показаны на структурной схеме пунктиром. На одну итерацию цикла работы устройства приходится один такт.
59
–
– –
–
–
Рис. 7.2. Структурная схема устройства умножения младшими разрядами вперед со сдвигом множимого
Рис. 7.3. Содержимое регистров умножителя младшими разрядами вперед со сдвигом множимого
Оценка быстродействия. Для n итераций цикла:
tц = (tΣ + tсдв); tумн = n (tΣ + tсдв).
60
