4.5. ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ НА HDL ЯЗЫКАХ
В этой секции мы расмотрим модели логических элементов на языках
для разработки электронной аппаратуры:
- VHDL (VLSI Hardware Description Language)
- Verilog
Упор будет делатся на VHDL, т.к. он для начинающих более понятен.
Можно сравнить:
VHDL - Pascal
Verilog - C
NOT
--------
X | NOT X
---+----
0 | 1
1 | 0
--------
Программа на VHDL:
entity NOT is
port (
A : in bit;
B : out bit);
end NOT;
architecture RTL of NOT is
begin
D <= not A after 2 ns;
end RTL;
Программа на Verilog:
`timescale 1 ns / 10 ns
module Not1 (A, B) ;
input A ;
output B ;
assign #5 B = ~(A);
endmodule
Результатирующая временная диаграмма (для VHDL):
AND
---------------
X1 X2 | AND таблица истинности
---------+-----
0 0 | 0
0 1 | 0
1 0 | 0
1 1 | 1
---------------
Программа на VHDL:
entity AND2 is
port (
X1,X2: in bit;
Y : out bit);
end AND2;
architecture RTL of AND2 is
begin
Y <= X1 and X2 after 5 ns;
end RTL;
Программа на Verilog:
`timescale 1 ns / 10 ns
module AND2M (A, B, C) ;
input A ;
input B ;
output C ;
assign #5 C = A & B;
endmodule
Результатирующая временная диаграмма (для VHDL):
OR
--------------
X1 X2 | OR
--------+-----
0 0 | 0
0 1 | 1
1 0 | 1
1 1 | 1
---------------
entity Or2 is
port(
A, B : in std_logic;
D : out std_logic);
end Or2;
architecture Example of Or2 is
begin
D <= (A or B) after 2 ns;
end Example;
Результатирующая временная диаграмма:
NOR
---------------
X1 X2 | NOR
--------+-----
0 0 | 1
0 1 | 0
1 0 | 0
1 1 | 0
---------------
entity Nor2 is
port(
A, B : in std_logic;
D : out std_logic);
end Nor2;
architecture Example of Nor2 is
begin
D <= not (A or B) after 2 ns;
end Example;
Результатирующая временная диаграмма:
NAND
---------------
X1 X2 | NAND
---------+-----
0 0 | 1
0 1 | 1
1 0 | 1
1 1 | 0
---------------
entity Nand2 is
port(
A, B : in std_logic;
D : out std_logic);
end Nand2;
architecture Example of Nand2 is
begin
D <= (A nand B) after 2 ns;
end Example;
Результатирующая временная диаграмма:
XOR
---------------
X1 X2 | XOR
---------+-----
0 0 | 0
0 1 | 1
1 0 | 1
1 1 | 0
---------------
entity Xor2 is
port(
A, B : in std_logic;
D : out std_logic);
end Xor2;
architecture Example of Xor2 is
begin
D <= (A xor B) after 2 ns;
end Example;
Результатирующая временная диаграмма:
Tristate
---------------
EN A | Tristate
---------+-----
0 0 | Z высокий импеданс, ток не течет
0 1 | Z высокий импеданс, ток не течет
1 0 | 1
1 1 | 0
---------------
entity TRISTATE1 is
port(
A, E : in std_logic;
D : out std_logic);
end TRISTATE1;
architecture Example of TRISTATE1 is
begin
D <= A WHEN (E='1') ELSE 'Z';
end Example;
Результатирующая временная диаграмма:
Программа на Verilog:
module TRISTATE1 (E,A,D);
input A,E;
output D;
reg D;
always @(E or A) begin
if (E)
D = A;
else
D = 1'bz;
end
endmodule
Index Prev Next