You are on page 1of 6

ТЕХНИЧЕСКИ УНИВЕРСИТЕТ - СОФИЯ

ФАКУЛТЕТ ПО ЕЛЕКТРОНИКА И АВТОМАТИКА

Курсова задача
По СПМЕ

Изготвили: Фак№, група:

Тонка Танчева 605 277, 31а

Светла Райкова 605 289, 31а

Тема: Да се проектира и изследва 4 разряден пълен суматор с входен и


изходен сигнал на пренос.

Дата: 25.01.2010г. Проверил:

Пловдив /доц.Св.Иванов/
I. Еднобитов пълен суматор.
Суматорът е цифрова верига, която изпълнява сумиране на числа. В
съвремените компютри суматорите се срещат в аритметичните логически
устройства /АЛУ/, където се изпълняват и други функции.

Пуленият суматор /Фиг.1/може да събере три бита: два бита вход и един
бит пренос, което представлява трите му входа in1, in2 и c_in, което му позволява
операции с големи числа. Изходният сигнал от двата входни ипеноса
представлява сума еднобитов сигнал.

𝑠1 = 𝑖𝑛1! |𝑖𝑛2 𝑐_𝑜𝑢𝑡 = 𝑠3|𝑠2

𝑠2 = 𝑐_𝑖𝑛 &𝑠1 𝑠𝑢𝑚 = 𝑐_𝑖𝑛 ! | 𝑠1

𝑠3 = 𝑖𝑛2&𝑖𝑛1

Връзката между входа и изхода е представен с формула


(1) и (2), а проектираният елемент на Фиг.2.

𝑠𝑢𝑚 = 𝑖𝑛1⨁𝑖𝑛2 ⨁𝑐_𝑖𝑛 1

𝑐_𝑜𝑢𝑡 = 𝑖𝑛1. 𝑖𝑛2 + 𝑐_𝑖𝑛. 𝑖𝑛1 ⊕ 𝑖𝑛2 2

Кодът съставен от седата Active – HDL v7.2, която е използвана за


проектиране на пълният суматор, е представен по-долу.
-- Title : full_adder_1bit

-- 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;

architecture full_adder_1bit of full_adder_1bit is


---- Signal declarations used on the diagram ----
signal s1 : STD_LOGIC;
signal s2 : STD_LOGIC;
signal s3 : STD_LOGIC;

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/.

Символът на вече готовият четири битов


суматор е показан на Фиг.4. Входовете in1, in2 се
подават през четирибитова шина in1(3:0) и in2(3:0)
паралелно на всеки чип. Изходът sum се взима
паралелно от всеки чип в четири битова шина
sum(3:0). Вход carry_in и изход carry_out са еднобитови
и се предават серийно между чипове U1, U2, U3 и U4.

Кодът съставен от среда Active – HDL е показан по-долу.

-- 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;

-- other libraries declarations


library FULL_ADDER;

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;

architecture full_adder_4bit of full_adder_4bit is


---- Component declarations -----
component full_adder_1bit
port (
c_in : in STD_LOGIC;
in1 : in STD_LOGIC;
in2 : in STD_LOGIC;
c_out : out STD_LOGIC;
sum : out STD_LOGIC
);
end component;

---- Signal declarations used on the diagram ----


signal NET191 : STD_LOGIC;
signal NET195 : STD_LOGIC;
signal NET199 : STD_LOGIC;

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;

III. Графика на входните и изходни сигнали.


Графика на входните и изходни сигнали след симулация е показана на
Фиг.5.

За входен сигнал на in1 и in2 е избранана постоянна бинарна стойност,


съответно 0b1 и 0b1111. За сигнал на carry_in и carry_out е избрана функция
hotkey, която да извършва toggle на пин, извършвана ръчно с натискане на R
клавиш за период от 10ns, за целта на симулацията.

You might also like