Professional Documents
Culture Documents
Курсова задача
По СПМЕ
Пловдив /доц.Св.Иванов/
I. Еднобитов пълен суматор.
Суматорът е цифрова верига, която изпълнява сумиране на числа. В
съвремените компютри суматорите се срещат в аритметичните логически
устройства /АЛУ/, където се изпълняват и други функции.
Пуленият суматор /Фиг.1/може да събере три бита: два бита вход и един
бит пренос, което представлява трите му входа in1, in2 и c_in, което му позволява
операции с големи числа. Изходният сигнал от двата входни ипеноса
представлява сума еднобитов сигнал.
𝑠3 = 𝑖𝑛2&𝑖𝑛1
-- Design : full_adder
-- Author : ing.Tancheva & ing.Raykova
-- Company : TU
--
-------------------------------------------------------------------------------
-- Design unit header --
library IEEE;
use IEEE.std_logic_1164.all;
entity full_adder_1bit is
port(
c_in : in STD_LOGIC;
in1 : in STD_LOGIC;
in2 : in STD_LOGIC;
c_out : out STD_LOGIC;
sum : out STD_LOGIC
);
end full_adder_1bit;
begin
- Component instantiations - //уравнения-връзка между логическите елементи в чипа
s2 <= c_in and s1;
s3 <= in2 and in1;
c_out <= s3 or s2;
s1 <= in2 xor in1;
sum <= c_in xor s1;
end full_adder_1bit;
II. Четири битов пълен суматор.
Изпълнението на четири битов суматор след проектиране на еднобитов
става, като се използва вече готовата библоитека на еднобитов суматор /Фиг.3/.
-- Title : full_adder-4bit
-- Design : full_adder
-- Author : ing.Tancheva & ing.Raykova
-- Company : TU
-------------------------------------------------------------------------------
-- Design unit header --
library IEEE;
use IEEE.std_logic_1164.all;
entity full_adder_4bit is
port(
carry_in : in STD_LOGIC;
in1 : in STD_LOGIC_VECTOR(3 downto 0);
in2 : in STD_LOGIC_VECTOR(3 downto 0);
carry_out : out STD_LOGIC;
sum : out STD_LOGIC_VECTOR(3 downto 0)
);
end full_adder_4bit;
begin
---- Component instantiations ----
U1 : full_adder_1bit
port map(
c_in => carry_in,
c_out => NET191,
in1 => in1(3),
in2 => in2(3),
sum => sum(3)
);
U2 : full_adder_1bit
port map(
c_in => NET191,
c_out => NET195,
in1 => in1(2),
in2 => in2(2),
sum => sum(2)
);
U3 : full_adder_1bit
port map(
c_in => NET195,
c_out => NET199,
in1 => in1(1),
in2 => in2(1),
sum => sum(1)
);
U4 : full_adder_1bit
port map(
c_in => NET199,
c_out => carry_out,
in1 => in1(0),
in2 => in2(0),
sum => sum(0)
);
end full_adder_4bit;