Du kannst auch alle drei Prozesse in einen verpacken. Dabei prüfst Du, ob Reset auf '1' steht (nicht auf rising_edge). Wenn ja, dann wird alles auf '0' gesetzt, ansonsten auf die anderen Eingaben reagiert. Also etwa so
Code:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
ENTITY auswahl IS
PORT(
rst : IN std_logic;
start : IN std_logic;
zw_zeit : IN std_logic;
enable_zaehler : OUT std_logic;
in_w_en : OUT std_logic;
up_dn_zahler : OUT std_logic
);
-- Declarations
END auswahl ;
--
ARCHITECTURE verh_auswahl OF auswahl IS
signal zw_z: std_logic := '0';
signal z_alt: integer := 1;
BEGIN
--Taster Reset Prozess
reset_proc: process(rst, zw_zeit, start)
begin
if rst = '1' then -- bei Reset auf nichts anderes reagieren
enable_zaehler <= '0';
in_w_en <= '0';
up_dn_zahler <= '1';
zw_z <= '0';
z_alt <= 1;
else -- Kein Reset
--Taster Zwischenzeit Prozess
if rising_edge (zw_zeit) then
if zw_z = '0' then
zw_z <= '1';
in_w_en <= '1';
else
in_w_en <= '0';
end if;
end if;
--Enable-Zähler-Signal Prozess
if rising_edge(start) then
if zw_z = '0' then
if z_alt = 1 then
enable_zaehler <= '1';
up_dn_zahler <= '1';
z_alt <= 2;
elsif z_alt = 2 then
enable_zaehler <= '0';
z_alt <= 3;
elsif z_alt = 3 then
enable_zaehler <= '1';
up_dn_zahler <= '0';
z_alt <= 4;
else
enable_zaehler <= '0';
z_alt <= 1;
end if;
end if;
end if;
end if;
end process;
END ARCHITECTURE verh_auswahl;
Dann hat jedes Signal genau eine Quelle.
MfG Mark
Edit: 'then' nach dem ersten if eingefügt.
Lesezeichen