
VHDL lection
.pdf
Одноразрядный сумматор
Сin SUM
S
A
Сout
B
S = Cin ×(A × B + A × B)+ Cin ×(A Å B)
Cout = A × B + Cin ×( A + B)

Одноразрядный сумматор
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity sum is port(
Cin : in STD_LOGIC;
A : in STD_LOGIC;
B : in STD_LOGIC; S : out STD_LOGIC;
Cout : out STD_LOGIC
);
end sum;

Одноразрядный сумматор
architecture sum of sum is begin
S <= (Cin and ((A and B) or ((not A)and (not B)))) or ((not Cin) and (A xor B));
Cout <= (A and B) or (Cin and (A or B));
end sum;

Одноразрядный сумматор
CIN |
|
|
1 |
|
S1 |
|
|
|
|
& |
|
S9 |
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
1 |
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
1 |
|
|
S2 |
|
|
& |
S5 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
2 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
S |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
3 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
S3 |
|
|
|
|
|
2 |
S8 |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
B |
1 |
|
|
|
|
& |
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
3 |
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S6 |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
S7 |
|
|
|
& |
|
S10 |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
M2 |
|
|
|
4 |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
COUT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S11 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
& |
|
4 |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
S4 |
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
1 |
1 |
|
|
|
5 |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

N-разрядный сумматор
|
|
|
|
|
|
|
|
|
Сin |
SUM |
S |
|
S(i) |
|
|
|
||||
|
|
|
|
|
||
|
|
|
|
|
||
|
|
|
|
|
|
|
A(i) |
|
A |
|
Сout |
|
|
|
|
|
|
|||
B(i) |
|
B |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сin |
SUM |
S |
|
S(i+1) |
|
|
|
||||
A(i+1) |
|
A |
|
|
||
|
|
|
||||
|
|
Сout |
|
|
||
|
|
|
|
|||
B(i+1) |
|
B |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
||
|
|
|
|
|

N-разрядный сумматор
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity sum_n is generic(
N : integer := 8
);
port(
Cin : in STD_LOGIC;
A : in STD_LOGIC_VECTOR(N-1 downto 0); B : in STD_LOGIC_VECTOR(N-1 downto 0); Cout : out STD_LOGIC;
S : out STD_LOGIC_VECTOR(N-1 downto 0)
); end sum_n;

N-разрядный сумматор
architecture sum_n of sum_n is component sum is
port(
Cin : in STD_LOGIC;
A : in STD_LOGIC;
B : in STD_LOGIC; S : out STD_LOGIC;
Cout : out STD_LOGIC
);
end component sum;
signal C_in : STD_LOGIC_VECTOR(0 to N); signal C_out : STD_LOGIC_VECTOR(0 to N-1); begin
C_in(0) <= Cin;
sums: for i in 0 to N-1 generate
sum: sum port map (C_in(i), A(i), B(i), S(i), C_out(i)); C_in(i+1) <= C_out (i);
end generate;
Cout <= C_out(N-1); end sum_n;

Запоминающее устройствоство
n |
А |
MEM |
|
|
k |
|
|
|
|
DI |
|
|
k |
|
|
|
DO |
||
|
|
|
||
|
RW |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CS |
|
|
|
|
|
|
|
|
|
|
|
|
|

Запоминающее устройствоство
CS |
RW |
A |
DI |
DO |
|
|
|
|
|
1 |
X |
X |
X |
Z |
|
|
|
|
|
0 |
0 |
A |
Data |
Z |
|
|
|
|
|
0 |
1 |
A |
X |
Data |
|
|
|
|
|
Хранениенение
Записьись
Чтениение

Запоминающее устройствоство
library ieee;
use ieee.std_kogic_1164.all;
entity RAM is
generic (N, K : integer;
|
t_cs, tsu_a_cs, tsu_rw_cs, tsu_di_cs : time); |
port |
(A : in std_logic_vector (0 to N-1); |
|
DI : in std_logic_vector (0 to K-1); |
|
DO : in std_logic_vector (0 to K-1); |
|
CS, RW : in std_logic); |
end entity; |
|