Gast
#418559
Hallo zusammen, ich kämpfe immer noch mit der Einarbeitung in VHDL. Ich habe eine Art Vergleicher programmiert, der nur den größten Wert eines 12-Bit-Musters ausgeben soll. Im Moment zähle ich testweise den Eingang von 000000000000 bis 000000001111 hoch, es sollte also auch 000000001111 ausgegeben werden (und zwar beim Zählerstand 000000000000). Statt dessen bekomme ich immer 000000001000 ausgegeben (siehe Anhang). Sieht zufällig jemand meinen Fehler? Ich habe schon x-mal alle Möglichkeiten durchgespielt und komme immer zu dem Ergebnis, dass der Code eigentlich so funktionieren müsste. Hier mein Code und im Anhang das Ergebnis: library IEEE; use IEEE.std_logic_1164.all; -- defines std_logic types use IEEE.std_logic_unsigned.all; entity jc2_top is port ( eing : in STD_LOGIC_VECTOR (11 downto 0) := "000000000000"; Q : out STD_LOGIC_VECTOR (11 downto 0) := "000000000000" ); end jc2_top; architecture jc2_top_arch of jc2_top is signal QIN : STD_LOGIC_VECTOR (11 downto 0) := "000000000000"; signal QOLD : STD_LOGIC_VECTOR (11 downto 0) := "000000000000"; signal anf : std_logic := '1'; begin process (eing) begin QIN <= eing; if (QOLD < QIN) THEN QOLD <= QIN; anf <= '0'; Q <= "000000000000"; elsif (QOLD > QIN) THEN Q <= QOLD; if ((QIN = "000000000000") and (anf = '0')) THEN QOLD <= "000000000000"; anf <= '1'; end if; else end if; end process; end jc2_top_arch;
