hallo leute könnte jemand mir erklären wieso der Ausgang bei der Simulation am Anfang für Latch im Quartus ist undefiniert. obwohl ich es im Entity schon deklariert: Q : out std_logic:='0'; danke
Poste mal den ganzen Code. Versuch auch mal rauszufinden, welche Art von undefiniert das ist (X, U, ...)
hier ist den Code für einfaches Latchs library ieee ; use ieee.std_logic_1164.all; entity D_latch is port( data_in: in std_logic; enable :in std_logic; q : out std_logic:='0' ); end D_latch; architecture behv of D_latch is begin process(data_in, enable) begin if (enable='1') then q <= data_in; end if; end process;
Mhm... du definierst zwar einen Startwert für q, aber vorerst keinen für data_in und enable. Außerdem werden diese Eingänge von irgendeiner Quelle getrieben. Damit hast du zwar kurzzeitig '0' auf dem Ausgang, aber das wird sofort durch 'undefiniert' überschrieben weil die Eingänge undefiniert sind.
hi danke für eure Antworte ich habe jetzt die Eingänge definiert aber trozdem ändert sich nicht. vielleicht wegen altera Board de2 ich muss nur den Grund wissen? danke
> ich habe jetzt die Eingänge definiert aber trozdem ändert sich nicht. Bedenke dass die Eingänge nicht nur anfangs definiert sein müssen, sondern auch definiert bleiben müssen. > vielleicht wegen altera Board de2 Dazu müsste der Simulator das Board kennen, was ich eher nicht vermute, d.h. ich vermute, die Quelle für den unbekannten Wert liegt im FPGA. Poste mal etwas mehr Code, am besten ein Minimalbeispiel an dem man den Fehler sehen kann, und insbesondere die Testbench.
Welchen Simulator verwendest du? Bei Modelsim Xilinx Edition geht das... Baisis: dein Code, keine weiteren Initialisierungen.
Lothar Miller wrote: > Welchen Simulator verwendest du? > Wavevector QuartusII 7.
1 | library ieee ; |
2 | use ieee.std_logic_1164.all; |
3 | |
4 | entity D_latch is |
5 | port( data_in: in std_logic; |
6 | enable :in std_logic; |
7 | q : out std_logic:='0' |
8 | );
|
9 | end D_latch; |
10 | |
11 | |
12 | architecture behv of D_latch is |
13 | begin
|
14 | process(data_in, enable) |
15 | begin
|
16 | if (enable='1') then |
17 | q <= data_in; |
18 | end if; |
19 | end process; |
jeder Process wird bei einem Simulationsstart ausgeführt unabhängig von seiner sensitivity liste. jedes Signal wird mit dem 'linken' Wert aus seinem Definitionsbereich initialisiert => enable und data_in sind 'U' => beim Prozessdurlauf wird q nicht durch 'U' überschrieben. Modelsim macht also richtig
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.