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
Dann hat jedes Signal genau eine Quelle.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;
MfG Mark
Edit: 'then' nach dem ersten if eingefügt.







Zitieren

Lesezeichen