grundsätzlich habe ich ein Array von unsigneds und einen Prozess, der den ersten Wert von im Array um eins erhöht. Dies funktionierte gut, bis ich ein asynchrones Zurücksetzen implementierte, das die Elemente des Arrays auf 0 setzt. Das Seltsame ist, dass der Rest meines Codes nicht mehr funktioniert, selbst wenn der Code des asynchronen Zurücksetzens nie erreicht wird. Hier ist mein Code:VHDL seltsam Behavoir eines Arrays von unsigned
use work.datentyp.all;
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity vektoruhr is
port (
clk, reset : in std_logic ;
);
end vektoruhr;
architecture v1 of vektoruhr is
signal internal_stamp : vektor := (others => (others => '0'));
begin
process(clk)
begin
if(rising_edge(clk)) then
internal_stamp(0) <= internal_stamp(0) + 1;
end if;
end process;
process(reset)
begin
if(rising_edge(reset)) then
report "reset triggered";
-- internal_stamp <= (others => (others => '0'));
alarm <= '0';
end if;
end process;
end v1;
Wie Sie sehen können, die Linie
-- internal_stamp <= (others => (others => '0'));
wird kommentiert werden. So funktioniert alles gut. Aber wenn ich das - lösche, ist der Wert des ersten Elements zuerst 00, wird dann nach der ersten Inkrementierung auf 0x und nach dem zweiten auf xx geändert. Danach bleibt es bei xx. Der Reset-Eingang wird von Anfang an auf '0' gesetzt und wird niemals geändert.
Hatten Sie alle diesen Code geschrieben, wenn Sie zuerst Ihre Frage gestellt haben wir konnten beantwortet es viel schneller. –
Der Code analysiert nicht. Es gibt ein überflüssiges Semikolon (ein Deklarationstrennzeichen nach der Port-Interface-Objektdeklaration vor dem Closing ')' in der Port-Deklaration. Keine Typangabe für Vektor (vermutlich in fehlendem Paket 'datentyp'). Das Signalzuweisungsziel "Alarm" ist nicht deklariert (und für die Frage nicht notwendig). Nicht ganz [MCVE] (http://stackoverflow.com/help/mcve), aber ausreichend, um mehrere Treiber anzuzeigen. Siehe IEEE Std 1076-2008 14.7.2 Treiber "Jede Signalzuweisungsanweisung in einer Prozessanweisung definiert eine Reihe von Treibern für bestimmte Skalarsignale." – user1155120
Die Quelle für das Paket numeric_std ([-2008] (http://standards.ieee.org/downloads/1076/1076-2008/), [frühere Versionen] (http://standards.ieee.org/downloads/1076 /1076.2-1996/)) teilt uns mit, dass Typ ohne Vorzeichen ein aufgelöster Signaluntertyp oder -typ ist. 4.6 Auflösungsfunktion Abs. 3 "Die Auflösungsfunktion, die einem aufgelösten Signal zugeordnet ist, bestimmt den aufgelösten Wert des Signals als eine Funktion der Sammlung von Eingängen von seinen mehreren Quellen." Die Auflösungsfunktion "aufgelöst" befindet sich im Paket std_logic_1164. – user1155120