Умножающие устройства. Блоки устройства на языке VHDL. Конвейеризированный умножитель lpm_mult

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

8 страниц (Word-файл)

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

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

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

Кафедра Компьютерные Системы и Программные Технологии

ОТЧЕТ

о лабораторной работе №4.

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

Выполнил студент

гр. 3081/2 Туркин Е.А

Преподаватель

Максименко С.Л.

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

2010 г.


Часть 1. Синтез последовательного умножающего устройства по структурной схеме с разрядностью операндов равной 9.

Выполнение работы:

1.  Блоки устройства на языке VHDL.

Рис. 1. Структурная схема умножающего устройства

“adder.vhd”

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_unsigned.all;

entity adder is

     port(

          A : in std_logic_vector (8 downto 0);

          B : in std_logic_vector (8 downto 0);

          E : in std_logic;

          S : out std_logic_vector (9 downto 0)

     );

end adder;

architecture RTL of adder is

     signal tmp_A : std_logic_vector (9 downto 0);

     signal tmp_B : std_logic_vector (9 downto 0);

begin

          tmp_A <= '0'&A;

          tmp_B <= '0'&B;

          conditional_signal_assignment: S <= tmp_A + tmp_B when E = '1' else '0'&A;

end RTL;

Блок Adder в зависимости от сигнала S[0], соответствующего анализируемому разряду bi, осуществляет либо сложение данных на входных портах, либо передачу на выход данных с порта A[].

“reg.vhd”

library IEEE;

use IEEE.std_logic_1164.all;

entity reg is

     port(

          D : in std_logic_vector (9 downto 1);

          Q : out std_logic_vector (9 downto 1);

          clr, ena, clk : in std_logic

     );

end reg;

architecture RTL of reg is

begin

     process (clk, clr, ena)

     begin

          if clr = '1' then Q <= (others => '0');

          elsif ena = '0' then null;

          elsif clk'event and clk = '1' then Q <= D;              

          end if;

     end process;

end RTL;

Блок Reg выполняет функцию регистра с асинхронным сбросом и разрешением работы.

“shift_reg.vhd”

library IEEE;

use IEEE.std_logic_1164.all;

entity shift_reg is

     port(

          SH_in : in std_logic;

          D : in std_logic_vector (8 downto 0);

          LS, ena, clk : in std_logic;

          Q : out std_logic_vector (8 downto 0)

     );

end shift_reg;

architecture RTL of shift_reg is

     signal sh_rg : std_logic_vector (8 downto 0);

begin

     Q <= sh_rg;

     process (clk,ena)

     begin

          if clk'event and clk = '1' then

                if LS = '1' then sh_rg <= D;

                elsif ena = '1' then

                     sh_rg <= SH_in & sh_rg(8 downto 1);

                end if;

          end if;

     end process;   

end RTL;

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

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