4.5. ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ НА HDL ЯЗЫКАХ



В этой секции мы расмотрим модели логических элементов на языках
для разработки электронной аппаратуры:


Упор будет делатся на 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