Forum: FPGA, VHDL & Co. Modelsim will nicht rechnen


von serber (Gast)


Lesenswert?

Hallo

Mache gerade erste Schritte in Modelsim.
Aber anstatt mein Design richtig zu simulieren, spuckt er ständig
folgenden Fehler aus:


"There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand,
the result will be 'X'(es)."

Wie bringe ich den dazu, dass er auch mit std_logic - Typen rechnen
kann?

Mfg

von Jörn (Gast)


Lesenswert?

Die Warnung besagt, dass einer der Operanten der arithmetischen Funktion
 einen U, X, W, Z Wert hat und mit diesem nicht gerechnet werden. Somit
kann keine Aussage über das Ergebnis gemacht werden und es wird auf X
gesetzt.

Poste mal deinen Code, dann wird die Fehlersuche einfacher.

Gruß Jörn

von serber (Gast)


Lesenswert?

Bitteschön:

Das Ding teilt einen (schnellen) Takt.

entity vhdldatei is
  Port (Ausgang: out std_logic_vector (7 downto 0);
        Takt: in bit);
end vhdldatei;

architecture Behavioral of vhdldatei is
signal  ZAHL : std_logic_vector (24 downto 0);
begin
  process (Takt)
  begin
    if (Takt = '1' and Takt'event)
      then ZAHL <= ZAHL + 1;
    end if;
  end process;

  Ausgang <= Zahl (24 downto 17);
end Behavioral;


Ich finde das komische ist, dass das VHDL-Design ohne Probleme
synthetisiert wird und auf dem FPGA auch läuft.
Nur der Simulator kommt damit nicht zurecht.

von T.M. (Gast)


Lesenswert?

Da ZAHL am Simulationsstart unititialisiert ist, wird es vom Simulator
erstmal auf 'U' = unitialized gesetzt. Naja, und dann ergeben die
Additionen natürlich erstmal keinen Sinn. Lösung dürfte hier sein, das
Signal ZAHL mit einem Wert zu initialisieren, zB:
1
signal  ZAHL : std_logic_vector (24 downto 0) := (OTHERS => '0');
Arithmentik in VHDL führt man aber besser sowieso mit den Standardtypen
unsigned / signed aus. Zu finden im Package numeric_std.


T.M.

von Mirco (Gast)


Lesenswert?

Wie macht man eigentlich hier im Forum den Code rein, dass er so
besonders dargestellt wird ?

von FPGAküchle (Gast)


Lesenswert?

in die zeile vor code schreibt man in geschweiften Klammern  vhdl,
in die zeile nach dem code auch in geschw. Klammern /vhdl.
geschweifte Klammer ist "{" bzw. "}"

Das selbe funktioniert auch im hiesiegen wiki, nur das man dort spitze
klammern verwendet. (also "<" und ">") Siehe:

http://www.mikrocontroller.net/articles/VHDL_schnipsel_or_vectorbits

Test forum (geschw.):
{vhdl}
--codezeile geschw.
{/vhdl}

Test wiki (spitz):
<vhdl>
--codezeile
</vhdl>

von FPGAküchle (Gast)


Lesenswert?

Huch :-o ; nochmal


Test forum (geschw.):
{vhdl}
--codezeile geschw.
{/vhdl}


jetzt mit Leerzeichen in der Codezeile

Test forum (geschw.):
{vhdl}
 --codezeile geschw.
{/vhdl}


jetzt mit vhd statt vhdl, ohne Leerzeichen:

Test forum (geschw.):
{vhd}
--codezeile geschw.
{/vhd}


jetzt mit vhd statt vhdl, mit Leerzeichen:

Test forum (geschw.):
{vhd}
 --codezeile geschw.
{/vhd}

von FPGAküchle (Gast)


Lesenswert?

... aufgeb ...

von T.M. (Gast)


Lesenswert?

Hier nimmt man eckige Klammern ;-)

von FPGAküchle (Gast)


Lesenswert?

Ah, ja die gibts ja auch noch, test mer mal

Test forum (eckig.):
1
--codezeile eckig.


Jetzt mit Leerzeichen in der Codezeile

Test forum eckig):
1
 --codezeile eckig.


jetzt mit vhd statt vhdl, ohne Leerzeichen:

Test forum (eckig.):
[vhd]
--codezeile eckig.
[/vhd]


jetzt mit vhd statt vhdl, mit Leerzeichen:

Test forum (eckig.):
[vhd]
 --codezeile eckig.
[/vhd]

von Mentorwürger (Gast)


Lesenswert?

Und was sagt uns das jetzt?

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
Noch kein Account? Hier anmelden.