Forum: FPGA, VHDL & Co. HILFE, ich finde nicht raus wo der Fehler liegt!


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Gabriel (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Liebe Kollegen!

Ich bekomme beim simulieren immer den Fehler

There is an U'X'.... in an arithmetic operand, the result will be X

Ich hab alles schon x mal durchgesehen und finde nichts, was mache ich 
falsch?


D A N K E
Gabriel

von Gabriel (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anbei noch die Testbench!

von Gabriel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gefunden, danke!!!!

von Läubi .. (laeubi) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Wie lautet den der Fehler genau? Meist kommt eine Entsprechende WARNUNG 
das zum Zeitpunkt 0ns solch ein Zustand auftritt soblad du aber einmal 
Werte zuweiss ist das Egal..

von Gabriel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
**Warning: There is an 'U'|'X'| .. in an arithmetic operand, the result 
will be 'X'(es)

Fehler besteht doch noch.

von SuperWilly (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nimm doch mal entsprechende Signal-Initialisierungen vor.


z.B.

signal ls_counter : integer range 0 to 15  := 0;

Gruß,
SuperWilly

von Gabriel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ja, war eine gute Idee, s_ledcounter ist jetzt im Reset drinnen.

Ich hab herausgefunden, dass s_ctr = xxxxxxxx ist obwohl ich ihn im 
Reset habe. ????

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
> **Warning: There is an 'U'|'X'| .. in an arithmetic operand, the result
> will be 'X'(es)
Sieh dir z.B. mal deinen s_ledctr an.


Abhilfe: gib gleich bei der Definition von Signalen jedem einen 
Defaultwert an.
signal s_ctr : std_logic_vector (7 downto 0) := (others => '0'); -- da auf einen Ausgang nicht zugegriffen werden darf.    
signal s_ledctr : std_logic_vector (25 downto 0) := (others => '0');
constant C_1HZ : std_logic_vector(25 downto 0):= "10110111000110110000000000"; --48M Dezimal
signal s_led : std_logic_vector (7 downto 0) := (others => '0');
signal s_rep : std_logic := '0';


BTW:
> if reset_n ='1' then --asynchroner Reset
Sowas ist böse:
Ich hätte da (wegen ***_n) einen low-aktiven Reset vermutet    :-o

Sieh dir mal das numeric_std Package an (statt der std_logic_arith Lib).

Wenn du deinen s_ledctr als integer range 0 to 48000000 anlegst, 
kannst du direkt auf 48000000 vergleichen, ohne irgendwelche 
Bitumrechenereien zu machen.

von Gabriel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nein, das wars nicht. Ich hab immer noch bei s_crt xxxxxxxx stehen.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Du weist s_ctr aus zwei Prozessen etwas zu (einmal getaktet, einmal 
kombinatorisch). Das geht natürlich nicht. Das kommt von der 
Zwei-Prozess-Schreibweise. Pech gehabt :-/

Abhilfe: s_ctr wird nur im getakteten Teil manipuliert.

von Gabriel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
reset_n ist inzwischen auch low active

von Gabriel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
schaut gut aus. Ich hab´s beim 2. Prozess übersehen. DANKE, ich hoffe 
jetzt funktioniert der Rest.


D A N K E ! ! !

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.