Разработка алгоритма умножения

Разработка алгоритма умножения

Перевод сомножителей из десятичной системы счисления в четверичную:

Множимое:

_36| 4

36|9| 4

08|2

  * 0,25 4
  * 1,00
4
  * 0,00
4
  0,00

Разработка алгоритма умножения - student2.ru =210,100

Разработка алгоритма умножения - student2.ru =100111,001111

Множитель:

_47| 4

4 |11| 4

  * 0,51 4
  * 2,04
4
  * 0,16
4
  0,64

_78|2

43

Разработка алгоритма умножения - student2.ru =233,200

Разработка алгоритма умножения - student2.ru =100000,101111

Запишем сомножители в форме с плавающей запятой в прямом коде:

Мн = 0,100111001111 Разработка алгоритма умножения - student2.ru = 0.1100 (закодировано по заданию)

Мт = 0,100000101111 Разработка алгоритма умножения - student2.ru = 0.1100

Умножение двух чисел с плавающей запятой на 2 разряда множителя одновременно в прямых кодах сводится к сложению порядков, формированию знака произведения, преобразованию разрядов множителя согласно алгоритму и перемножению мантисс сомножителей.

Разработка алгоритма умножения - student2.ru = 0.1100 +3
Разработка алгоритма умножения - student2.ru = 0.1100 +3
P = 0.0110 +6

Результат закодирован в соответствии с заданием на кодировку множимого.

Знак произведения определяется суммой по модулю два знаков сомножителей:

знМн Разработка алгоритма умножения - student2.ru зн Мт = 0 + 0 = 0

Для умножения мантисс необходимо предварительно преобразовать множитель, чтобы исключить диаду 11 (34), заменив ее на триаду 101 и диаду 10 (24).

Преобразованный множитель имеет вид:

Разработка алгоритма умножения - student2.ru = Разработка алгоритма умножения - student2.ru

Мн = 0,0210100

2Мн = 0,1020200

Разработка алгоритма умножения - student2.ru = 3,3123300

Умножение по алгоритмуВ

0,000000000000 11,111111111111111111111111 Разработка алгоритма умножения - student2.ru
0,000000210100 11,111111111111100111011111 Разработка алгоритма умножения - student2.ru Мн
0,000000210100 11,111111111111100111011111 Разработка алгоритма умножения - student2.ru
0,000002101000 11,111111111110011101111111 Разработка алгоритма умножения - student2.ru
3,333333123100 00,000000000000011000011111 Разработка алгоритма умножения - student2.ru Мн
0,000001230300 11,111111111101100011001111 Разработка алгоритма умножения - student2.ru
0,000012303000 11,111111110110001100111111 Разработка алгоритма умножения - student2.ru
0,000123030000 11,111111011000110011111111 Разработка алгоритма умножения - student2.ru
3,333333123100 00,000000000000011000011111 Разработка алгоритма умножения - student2.ru Мн
0,000122213300 11,111111011010100100001111 Разработка алгоритма умножения - student2.ru
0,001222133000 11,111101101010010000111111 Разработка алгоритма умножения - student2.ru
0,000001020200 11,111111111101111011101111 Разработка алгоритма умножения - student2.ru Мн
0,001223213200 11,111101101000100100101111 Разработка алгоритма умножения - student2.ru
0,012232132000 11,110110100010010010111111 Разработка алгоритма умножения - student2.ru
0,122321320000 11,011010001001001011111111 Разработка алгоритма умножения - student2.ru

После окончания умножения необходимо оценить погрешность вычислений. Для этого полученное произведение Разработка алгоритма умножения - student2.ru = 0,122321320000, ( Разработка алгоритма умножения - student2.ru * Разработка алгоритма умножения - student2.ru 6) приводится к нулевому порядку, а затем переводится в десятичную систему счисления:

Разработка алгоритма умножения - student2.ru = 122321,320000

Разработка алгоритма умножения - student2.ru = 1722,2375

Результат прямого перемножения операндов дает следующее значение:

Разработка алгоритма умножения - student2.ru = 1721,875

Абсолютная погрешность:

Δ = 1722,2375- 1721,875 = 0,3625

δ Разработка алгоритма умножения - student2.ru ; δ = Разработка алгоритма умножения - student2.ru

Эта погрешность получена за счет приближенного перевода из десятичной системы счисления в четверичную обоих сомножителей, а также за счет округления полученного результата произведения.

Разработка функциональных схем основных узлов

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

ОЧУ - это комбинационное устройство, имеющее 5 входов и 3 выхода:

· 2 разряда из регистраМн, преобразованные в ФДК;

· 2 разряда из регистра Мт, преобразованные в ПМ;

· управляющий вход h.

Разряды множителя закодированы в обыкновенной двоичной с/с:

0 - 00; 1 - 01; 2 - 10; 3 - 11.

Разряды множимого закодированы в соответствии с заданием:

0 - 11; 1 - 01; 2 - 10; 3 - 00.

Управляющий вход h определяет тип операции:

0 - умножение закодированных цифр, поступивших на информационные входы ОЧУ.

1 - вывод на выходы без изменения значения разрядов, поступивших из регистра множимого.

Принцип работы ОЧУ описывается с помощью таблицы истинности.

Таблица истинности ОЧУ

Мн Мт Упр. Ст. разряд Мл.разряд   Пример
Разработка алгоритма умножения - student2.ru Разработка алгоритма умножения - student2.ru Разработка алгоритма умножения - student2.ru Разработка алгоритма умножения - student2.ru h Разработка алгоритма умножения - student2.ru Разработка алгоритма умножения - student2.ru Разработка алгоритма умножения - student2.ru Разработка алгоритма умножения - student2.ru
3·0=00
Выход - код «03»
3·1=03
Выход - код «03»
3·2=12
Выход - код «03»
x x x x 3·3=21
x x x x Выход - код «03»
1·0=00
Выход - код «01»
1·1=01
Выход - код «01»
1·2=02
Выход - код «01»
x x x x 1·3=03
x x x x Выход - код «01»
2·0=00
Выход - код «02»
2·1=02
Выход - код «02»
2·2=10
Выход - код «02»
x x x x 2·3=12
x x x x Выход - код «02»
0·0=00
Выход - код «00»
0·1=00
Выход - код «00»
0·2=00
Выход - код «00»
x x x x 0·3=00
x x x x Выход - код «00»


В таблице выделено 8 безразличных набора, т.к. на входы ОЧУ из разрядов множителя не может поступить “11”.

Проведём минимизацию переключательных функций картами Карно-Вейча. Для проведения минимизации переключательных функций необходимо выделить те наборы переменных, где функция принимает нулевое значение. Также необходимо включить и все безразличные наборы, то есть наборы, которые не могут прийти на вход схемы ОЧУ.

Из таблицы истинности видно, что функция Разработка алгоритма умножения - student2.ru всегда равна «1».

Минимизация функции Разработка алгоритма умножения - student2.ru картами Карно:

Разработка алгоритма умножения - student2.ru   Разработка алгоритма умножения - student2.ru                
      Разработка алгоритма умножения - student2.ru * *   Разработка алгоритма умножения - student2.ru 0
        * *    
        * *    
      Разработка алгоритма умножения - student2.ru * *   Разработка алгоритма умножения - student2.ru 0

Минимизировав функцию, получим:

Разработка алгоритма умножения - student2.ru

Минимизация функции Разработка алгоритма умножения - student2.ru картами Вейча:

    Разработка алгоритма умножения - student2.ru            
                       
Разработка алгоритма умножения - student2.ru             Разработка алгоритма умножения - student2.ru 0      
  * * * * Разработка алгоритма умножения - student2.ru * * * *   Разработка алгоритма умножения - student2.ru
             
                   
                       
          Разработка алгоритма умножения - student2.ru          
      h   h      

Минимизировав функцию, получим:

Разработка алгоритма умножения - student2.ru

 
  Разработка алгоритма умножения - student2.ru

Разработка алгоритма умножения - student2.ru Минимизация функции Разработка алгоритма умножения - student2.ru картами Карно:

Разработка алгоритма умножения - student2.ru   Разработка алгоритма умножения - student2.ru   Разработка алгоритма умножения - student2.ru     Разработка алгоритма умножения - student2.ru 010   Разработка алгоритма умножения - student2.ru    
  Разработка алгоритма умножения - student2.ru 0 * * Разработка алгоритма умножения - student2.ru 0
  Разработка алгоритма умножения - student2.ru     * Разработка алгоритма умножения - student2.ru *  
        * *    
  * *  

Минимизировав функцию, получим:

Разработка алгоритма умножения - student2.ru

Построенная схема – Схема 2.

Поиск L-экстремалей.

z#(Z-z) 1x1x0 1x0x1 0x1x1 0x0x0 xxx0x
1x1x0 - 1x0x1 0x1x1 0x0x0 0xx0x
xx00x
xxx01
1x0x1 1x1x0 - 0x1x1 0x0x0 0xx0x
0x00x
xx000
0xx01
xx101
0x1x1 1x1x0 1x0x1 - 0x0x0 0x00x
0xx00
0x00x
xx000
0x001
1x101
0x0x0 1x1x0 1x0x1 0x1x1 - 0x001
0x100
0x001
1x000
0x001
1x101
xxx0x 1x110 1x011 0x111 0x010 -
Остаток 1x110 1x011 0x111 0x010 0x001
0x100
0x001
1x000
0x001
1x101
z#(Z-z) n L
1x110 Ø Ø Ø Ø Ø Ø
1x011 Ø Ø Ø Ø Ø Ø
0x111 Ø Ø Ø Ø Ø Ø
0x010 Ø Ø Ø Ø Ø Ø
0x001 Ø Ø Ø Ø Ø Ø Ø Ø
0x100 Ø Ø Ø Ø Ø Ø Ø Ø
0x001 Ø Ø Ø Ø Ø Ø Ø Ø
1x000 Ø Ø Ø Ø Ø Ø Ø Ø
0x001 Ø Ø Ø Ø Ø Ø Ø Ø
1x101 Ø Ø Ø Ø Ø Ø Ø Ø

Откуда получим множество L-экстремалей Разработка алгоритма умножения - student2.ru

Разработка алгоритма умножения - student2.ru

L#E
1x1x0 Ø Ø
1x0x1 Ø Ø Ø Ø
0x1x1 Ø Ø Ø Ø Ø Ø
0x0x0 Ø Ø Ø Ø Ø Ø Ø Ø
Остаток Ø Ø Ø Ø Ø Ø Ø Ø

Получена единственная тупиковая форма:

Разработка алгоритма умножения - student2.ru

Проверка функции Разработка алгоритма умножения - student2.ru картами Карно:

Разработка алгоритма умножения - student2.ru   Разработка алгоритма умножения - student2.ru                
Разработка алгоритма умножения - student2.ru 00 * *   Разработка алгоритма умножения - student2.ru 1   Разработка алгоритма умножения - student2.ru 1 * *
* *     * *
* Разработка алгоритма умножения - student2.ru * Разработка алгоритма умножения - student2.ru   * Разработка алгоритма умножения - student2.ru *
* *     * *

Минимизировав функцию, получим:

Разработка алгоритма умножения - student2.ru

Построенная схема – Схема 3.

Литература

1. Савельев А.Я. Прикладная теория цифровых автоматов. М.: Высшая

школа, 1985.

2. Лысиков Б.Г. Арифметические и логические основы цифровыхавтома-

тов. Мн.: Вышейшая школа, 1980.

3. Лысиков Б.Г. Цифровая вычислительная техника. Мн.: , 2003 г.

4. Луцик Ю.А., Лукьянова И.В., Ожигина М.П. – Учебное пособие по

курсу "Арифметические и логические основы вычислительной техники". -Мн.: ротапринт МРТИ ,2001 г.

5. Луцик Ю.А., Лукьянова И.В.– Учебное пособие по курсу "Арифметические и логические основы вычислительной техники". -Мн.:ротапринт МРТИ ,2004 г.

Разработка алгоритма умножения

Перевод сомножителей из десятичной системы счисления в четверичную:

Множимое:

_36| 4

36|9| 4

08|2

  * 0,25 4
  * 1,00
4
  * 0,00
4
  0,00

Разработка алгоритма умножения - student2.ru =210,100

Разработка алгоритма умножения - student2.ru =100111,001111

Множитель:

_47| 4

4 |11| 4

  * 0,51 4
  * 2,04
4
  * 0,16
4
  0,64

_78|2

43

Разработка алгоритма умножения - student2.ru =233,200

Разработка алгоритма умножения - student2.ru =100000,101111

Запишем сомножители в форме с плавающей запятой в прямом коде:

Мн = 0,100111001111 Разработка алгоритма умножения - student2.ru = 0.1100 (закодировано по заданию)

Мт = 0,100000101111 Разработка алгоритма умножения - student2.ru = 0.1100

Умножение двух чисел с плавающей запятой на 2 разряда множителя одновременно в прямых кодах сводится к сложению порядков, формированию знака произведения, преобразованию разрядов множителя согласно алгоритму и перемножению мантисс сомножителей.

Разработка алгоритма умножения - student2.ru = 0.1100 +3
Разработка алгоритма умножения - student2.ru = 0.1100 +3
P = 0.0110 +6

Результат закодирован в соответствии с заданием на кодировку множимого.

Знак произведения определяется суммой по модулю два знаков сомножителей:

знМн Разработка алгоритма умножения - student2.ru зн Мт = 0 + 0 = 0

Для умножения мантисс необходимо предварительно преобразовать множитель, чтобы исключить диаду 11 (34), заменив ее на триаду 101 и диаду 10 (24).

Преобразованный множитель имеет вид:

Разработка алгоритма умножения - student2.ru = Разработка алгоритма умножения - student2.ru

Мн = 0,0210100

2Мн = 0,1020200

Разработка алгоритма умножения - student2.ru = 3,3123300

Умножение по алгоритмуВ

0,000000000000 11,111111111111111111111111 Разработка алгоритма умножения - student2.ru
0,000000210100 11,111111111111100111011111 Разработка алгоритма умножения - student2.ru Мн
0,000000210100 11,111111111111100111011111 Разработка алгоритма умножения - student2.ru
0,000002101000 11,111111111110011101111111 Разработка алгоритма умножения - student2.ru
3,333333123100 00,000000000000011000011111 Разработка алгоритма умножения - student2.ru Мн
0,000001230300 11,111111111101100011001111 Разработка алгоритма умножения - student2.ru
0,000012303000 11,111111110110001100111111 Разработка алгоритма умножения - student2.ru
0,000123030000 11,111111011000110011111111 Разработка алгоритма умножения - student2.ru
3,333333123100 00,000000000000011000011111 Разработка алгоритма умножения - student2.ru Мн
0,000122213300 11,111111011010100100001111 Разработка алгоритма умножения - student2.ru
0,001222133000 11,111101101010010000111111 Разработка алгоритма умножения - student2.ru
0,000001020200 11,111111111101111011101111 Разработка алгоритма умножения - student2.ru Мн
0,001223213200 11,111101101000100100101111 Разработка алгоритма умножения - student2.ru
0,012232132000 11,110110100010010010111111 Разработка алгоритма умножения - student2.ru
0,122321320000 11,011010001001001011111111 Разработка алгоритма умножения - student2.ru

После окончания умножения необходимо оценить погрешность вычислений. Для этого полученное произведение Разработка алгоритма умножения - student2.ru = 0,122321320000, ( Разработка алгоритма умножения - student2.ru * Разработка алгоритма умножения - student2.ru 6) приводится к нулевому порядку, а затем переводится в десятичную систему счисления:

Разработка алгоритма умножения - student2.ru = 122321,320000

Разработка алгоритма умножения - student2.ru = 1722,2375

Результат прямого перемножения операндов дает следующее значение:

Разработка алгоритма умножения - student2.ru = 1721,875

Абсолютная погрешность:

Δ = 1722,2375- 1721,875 = 0,3625

δ Разработка алгоритма умножения - student2.ru ; δ = Разработка алгоритма умножения - student2.ru

Эта погрешность получена за счет приближенного перевода из десятичной системы счисления в четверичную обоих сомножителей, а также за счет округления полученного результата произведения.

Наши рекомендации