XOR gate
Model
- xor_gate.vhd
-- ############################################################################ -- # Project : VHDL-Modellbibliothek # -- # # -- # Filename : xor_gate.vhd # -- # # -- # Schaltung : Mehrfach EXOR-Gatter mit parametrierbarer Anzahl # -- # von Eingaengen # -- # # -- # Modell : xor_gate # -- # # -- # # -- # # -- # Designer : Wolfgang Sehr; ueberarbeitet von Stefan Schmechtig # -- # Abteilung : Lehrstul fuer rechnergestuetzten Schaltungsentwurf # -- # Datum : 28.03.1995 # -- ############################################################################ -- ############################################################################ -- # IEEE PACKAGES # -- ############################################################################ Library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; -- ############################################################################ ENTITY xor_gate IS GENERIC ( X: INTEGER := @BITBR -- X: Bitbreite des Gatters ); PORT (@EING y : OUT STD_LOGIC ); -- exor_ein_x : x-ter Eingang des EXOR-Gatters -- : -- ausgang : Ausgang des EXOR-Gatters END xor_gate; ARCHITECTURE dataflow OF xor_gate IS SIGNAL daten_ein : UNSIGNED((X-1) DOWNTO 0); -- daten_ein : internes Signal fuer Eingangsdaten BEGIN ${EING_ZUW} PROCESS(daten_ein) VARIABLE erg_u : STD_LOGIC; VARIABLE erg_o : STD_LOGIC; VARIABLE erg : STD_LOGIC; BEGIN erg_u := '1'; erg_o := '0'; erg := '1'; FOR i IN 0 TO (X-1) LOOP erg_u := erg_u AND daten_ein(i); erg_o := erg_o OR daten_ein(i); END LOOP; erg := NOT(erg_u) AND erg_o; y <= erg; END PROCESS; END dataflow; CONFIGURATION CFG_xor_gate OF xor_gate IS FOR dataflow END FOR; END CFG_xor_gate;
Testbench
- tb_gate.vhd
-- ############################################################################ -- # Project : VHDL-Modellbibliothek # -- # # -- # Filename : tb_gate.vhd # -- # # -- # Schaltung : Testbench fuer Einfach-Gatter mit parametrierbarer # -- # Anzahl von Eingaengen # -- # # -- # Modell : tb_gate # -- # # -- # Designer : Wolfgang Sehr # -- # Abteilung : Lehrstul fuer rechnergestuetzten Schaltungsentwurf # -- # Datum : 28.03.1995 # -- ############################################################################ -- ############################################################################ -- # IEEE PACKAGES # -- ############################################################################ Library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; -- ############################################################################ ENTITY TB_gate IS GENERIC (X : INTEGER := ${BITBR} -- X: Anzahl der Eingaenge -- des Gatters ); END TB_gate; ARCHITECTURE behaviour OF TB_gate IS SIGNAL tb_daten_ein : UNSIGNED ((X-1) DOWNTO 0); SIGNAL tb_y : STD_LOGIC; -- tb_daten_ein : Dateneingangsvektor von der Testbench -- : erzeugt -- : -- tb_y : Ausgangsvektor des Gatters -- : COMPONENT gate PORT( ${TB_PDEKL} y : OUT STD_LOGIC ); END COMPONENT; BEGIN UUT: gate PORT MAP (${TB_EING_ZUW} y => tb_y ); stim: PROCESS BEGIN tb_daten_ein <= CONV_UNSIGNED(0, tb_daten_ein'LENGTH); WAIT FOR 10 ns; LOOP tb_daten_ein <= tb_daten_ein + '1'; WAIT FOR 10 ns; END LOOP; END PROCESS; END behaviour; CONFIGURATION CFG_TB_gate OF TB_gate IS FOR behaviour FOR UUT: gate USE CONFIGURATION WORK.CFG_gate; END FOR; END FOR; END CFG_TB_gate;
Synopsys VSS Trace
- trace_gate.vhd
tr tb_daten_ein tr tb_y