logo
Методичка (НСиНК) - лабораторные работы

2. Порядок выполнения работы

  1. Запустите программу NMCalculator, разверните её на весь экран и выберите в главном меню: Setup -> Step of grid -> 5 для 15” монитора или Setup -> Step of grid -> 6 для 17” монитора.

  2. Для начала рассмотрим несколько простых и очевидных примеров использования операции взвешенного суммирования. Выполните следующие действия.

На этом конфигурирование векторного процессора заканчивается, и он настроен на выполнение определённой функции. Остаётся подать исходные данные на входы Х и Y рабочей матрицы, и мы получим результат вычислений в регистре afifo . Если введено/выведено менее 16-ти цифр, то предполагается, что слева число дополняется недостающими нулями. Итак, посмотрим, что же мы получили в результате. Если всё сделали правильно, то в afifo будет число 10 h (16), т.е. это просто сумма 16 4-разрядных тетрад, каждая из которых равна 1 h (0001 b ). Далее выполните следующее.

  1. Теперь вам предстоит самостоятельно запрограммировать рабочую матрицу на вычисление 64-разрядного вектора, который в последующих пунктах будет использоваться вами. Для этого потребуются числа дней рождения студентов вашей бригады. Исходя из того, что в месяце максимальное число дней 31 = 1 Fh , для разрядности входных данных достаточно 8 бит. Числа необходимо перевести в шестнадцатеричную систему и при необходимости дополнить слева нулём до двух шестнадцатеричных цифр. Затем эти числа записываются по порядку в поле Х. Например, если после перевода получились числа 1 Ah и Ch , то в поле Х их надо ввести так: 1 A 0 C или так: C 1 A , но не так: 1 AC . Это важно потому, что иначе данные не будут соответствовать разбиению матрицы и результат будет отличен от ожидаемого. Теперь разбейте рабочую матрицу на 64 ячейки (8 бит х 8 бит). В каждом столбце будут выполняться свои операции, которые перечислены ниже в порядке от младших разрядов к старшим. Для их проведения, необходимо задать нужные весовые коэффициенты и при необходимости соответствующие разряды слова на входе Y . В результате получится искомый вектор, отдельные части которого являются решениями этих задач. Итак, задачи.

  1. Вычислите сумму всех дней рождения.

  2. Из самого большого дня рождения вычтите остальные.

  3. Из суммы всех дней рождения, кроме самого малого, вычтите самое малое, умноженное на 3 h .

  4. Вычислите сумму произведений всех дней рождения и соответствующих им месяцев.

  5. Вычислите сумму всех дней рождения за вычетом их количества.

  6. Вычислите сумму всех дней рождения плюс их количество.

  7. Младший байт входа Х.

  8. Противоположное значение старшего байта входа Х, отличного от 00 h .

Значение входов Х, Y, выхода в afifo и конфигурацию рабочей матрицы (в виде таблицы весовых коэффициентов) занесите в отчет в шестнадцатеричной системе.

  1. Кнопкой Clear all очистите конфигурацию процессора. Результат прошлой операции занесите в поле Х . Сейчас необходимо с помощью операции взвешенного суммирования поменять местами тетрады в слове Х . Подумайте, как это сделать. Значение выхода в afifo и конфигурацию рабочей матрицы (в виде таблицы весовых коэффициентов) занесите в отчет.

  2. Кнопкой Clear all очистите конфигурацию процессора. Теперь рассмотрим операции векторного АЛУ. Векторное АЛУ в отличие от скалярного работает над 64-разрядными данными. Чтобы его использовать, снимите флажок vsum. Помните, что разбиение на элементы при использовании векторного АЛУ одинаково для входов Х и Y и задаётся регистром nb . Занесите в поле Y результат, полученный в пункте 3, поле Х оставьте равным 0, а разбиение задайте произвольно. Выберите операцию вычитания. В результате получим: afifo = XY . Значения входов Х, Y, выхода afifo и выполняемую операцию занесите в отчет в шестнадцатеричной системе. Рекомендуется записывать в столбик – цифра под цифрой.

  3. Сложите на векторном АЛУ результат прошлой операции с результатом пункта 3, не меняя разбиения. Занесите данные, результат и операцию в отчет. Результат должен быть равен 0 h.

  4. Проинвертируйте побитно на векторном АЛУ результат пункта 3. Подумайте, какие для этого нужно выбрать операции, значения входов Х, Y и разбиение на элементы. Занесите данные, результат и операцию в отчет в двоичной системе. Убедитесь в правильности результата.

  5. Поочерёдно выполните побитовые операции and, or и xor над результатами предыдущего пункта и пункта 3. Все данные, результаты и операции занесите в отчет в двоичной системе. Убедитесь в правильности результатов.

  6. Кнопкой Clear all очистите конфигурацию процессора. Рассмотрим операцию маскирования. Выполните операцию маскирования с векторным умножением, настроив процессор согласно первому примеру в пункте 1, но на Y подайте не 0, а то же, что на Х (1111111111111111 h). При этом вектор масок задайте равным: ffffffffffffffff h и 0 h . Все данные, результаты и операции занесите в отчет. Убедитесь в правильности результатов.

  7. Кнопкой Clear all очистите конфигурацию процессора. Выполните операцию логического маскирования, задав на вход Х результат пункта 3, на вход Y 8888888888888888 h и Mask = f0f0f0f0f0f0f0f0 h . Все данные, результаты и операции занесите в отчет. Убедитесь в правильности результатов.

  8. Кнопкой Clear all очистите конфигурацию процессора. Рассмотрим обработку данных функцией активации. Выполните операцию арифметической активации входа Х, складывая Х (=f31f05) с нулём на векторном АЛУ. При этом задайте разбиение на элементы по 8 бит с верхним порогом насыщения, равным 15, и соответственно нижним, равным 6. Все данные, результаты и операции занесите в отчет в двоичной системе. Убедитесь в правильности результатов.

  9. Кнопкой Clear all очистите конфигурацию процессора. Выполните операцию логической активации входа Х, приняв Х равным результату пункта 3. Используйте операцию and с Y = ffffffffffffffff h . При этом разбиение на элементы задайте равным 16 элементам по 4 бита каждый. Все данные, результаты и операции занесите в отчет в двоичной системе. Убедитесь в правильности результатов.

  10. Кнопкой Clear all очистите конфигурацию процессора. Рассмотрим операцию циклического сдвига вправо операнда Х. Задайте всей матрице как одной ячейке весовой коэффициент, равный 1 h , чтобы она просто складывала Х и Y . Выполните операцию взвешенного суммирования операндов Х (=0000000000000001 h ) и Y (=0 h ) два раза: с и без операции shift . Все данные, результаты и операции занесите в отчет. Убедитесь в правильности результатов.