Умножающие устройства. Последовательное умножающее устройство. Схема устройства умножения двух чисел разрядности N = 8

Страницы работы

Содержание работы

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

Кафедра автоматики и вычислительной техники

Отчет по лабораторной работе №4

(Учебная дисциплина «Автоматизации проектирования дискретных устройств»)

Умножающие устройства

Работу выполнил студент группы №3081/2                     

Работу принял преподаватель___________                          

Санкт-Петербург

2010

1. Последовательное умножающее устройство.

Устройство работает по алгоритму умножения младшими разрядами вперед со сдвигом частичной суммы.

Схема устройства умножения двух чисел разрядности N = 8 изображена на следующем рисунке.


рис.1.1. Схема умножающего устройства.

Сумматор ADDER осуществляет в зависимости от S[0] либо сложение операндов , либо передачу А на выход устройства.

В регистрах REG и SHIFT_REG накапливается сумма частичных произведений.

Сдвиг частичной суммы производится структурно — с выхода сумматора ADDER младший бит идет на  SHIFT_REG, а остальные биты на  REG.

Блок CONTROL осуществляет установку начальных условий и выдает определенные управляющие сигналы на остальные устройства, для выполнения алгоритма.

Временная диаграмма работы такого устройства:


          Рис. 1.2. Временная диаграмма работы последовательного умножителя.

Данные для умножения подаются оба по шине D. Сначала 1й операнд в регистр SHIFT_REG, когда RESET = 1 и  SHIFT_REG находится в режиме загрузки, когда  RESET = 0, то подается 2й операнд и он идет на вход B сумматора ADDER.

READY = 1 говорит о том, что результат на шине S готов.

2. Последовательное умножающее устройство. Индивидуальное задание.

Задание:

Разр. A

Разр. B

Код A

Код B

Код S

Порт A

Порт B

8

5

прям

обр

доп

пар

посл

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

Схема разработанного устройства:


рис.2.1. Схема умножающего устройства для чисел со знаком.

Это устройство представляет собой последовательный умножитель из пункта 1, в который добавлены еще 2 блока — COD_CONVERT и SERIAL_TO_PAR. 

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

COD_CONVERT выделяет модули операндов и анализирует их знаки, также осуществляет преобразование результата в требуемый код.

Остальные блоки абсолютно аналогичны блокам устройства из пункта 1. У них только изменена разрядность чисел с которыми производится работа с помощью настраиваемых параметров.

Диаграммы работы такого устройства. На диаграммах представлены различные варианты — умножение чисел с одинаковыми и разными знаками, получение в результате умножения на ноль положительного и отрицательного нуля (обратный код).


Рис. 2.2. Временная диаграмма работы последовательного умножителя чисел со знаком.

Первое умножение — B = 1, A = -10(138 прямом коде), результат S = 32757 (-10 в обратном коде).

Второе умножение — B = 0, A = -10(138 прямом коде), результат S = 32767 — отрицательный ноль.


Рис. 2.3. Временная диаграмма работы последовательного умножителя чисел со знаком.

Первое умножение — B = 3, A = 74, результат S = 222.

Второе умножение — B = -2 (30 в дополнительном коде), A = -74 (202 прямом коде), результат S = 146 положительное число в обратном коде.

Все блоки устройства описаны на VHDL.  Исходный код, и синтезируемые в результате компиляции схемы для всех блоков.

Листинг 1. ADDER.vhd.

LIBRARY IEEE;

USE IEEE.std_logic_1164.all;

ENTITY ADDER is

generic(

N1   : integer := 7;                                

N2   : integer := 4

);

port(

A    : in std_logic_vector(N1-1 downto 0);

B    : in std_logic_vector(N2-1 downto 0);

E    : in std_logic;

S    : out std_logic_vector(N1 downto 0)

);

END ADDER;

ARCHITECTURE ADDER_arch of ADDER is

signal     tmp : std_logic_vector (N1-1 downto N2);

BEGIN

tmp <= (others => '0');

with E select

S(N1 downto 0) <=

('0' & A(N1-1 downto 0) )                       when '0',

(tmp & B(N2-1 downto 0)) + ('0'&A(N1-1 downto 0)) when '1';

END ADDER_arch;


рис 2.4. Синтезированная схема блока ADDER вRTL Viewer.

ADDER состоит из сумматора и мультиплексора, в зависимости от сигнала E на выходной шине будет либо сумма A и B, либо A.

Листинг 2. REG.vhd.

LIBRARY IEEE;

USE IEEE.std_logic_1164.all;

USE IEEE.std_logic_unsigned.all;

ENTITY REG is

generic(

N1   : integer := 8                                 

);

port(

D    : in std_logic_vector (N1-1 downto 0);

CLR  : in std_logic;

ENA  : in std_logic;

CLK  : in std_logic;

Q    : out std_logic_vector (N1-1 downto 0)

);

END REG;

ARCHITECTURE REG_arch of REG is

Похожие материалы

Информация о работе