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
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..
**Warning: There is an 'U'|'X'| .. in an arithmetic operand, the result will be 'X'(es) Fehler besteht doch noch.
Nimm doch mal entsprechende Signal-Initialisierungen vor. z.B. signal ls_counter : integer range 0 to 15 := 0; Gruß, SuperWilly
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. ????
> **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.
1 | signal s_ctr : std_logic_vector (7 downto 0) := (others => '0'); -- da auf einen Ausgang nicht zugegriffen werden darf. |
2 | signal s_ledctr : std_logic_vector (25 downto 0) := (others => '0'); |
3 | constant C_1HZ : std_logic_vector(25 downto 0):= "10110111000110110000000000"; --48M Dezimal |
4 | signal s_led : std_logic_vector (7 downto 0) := (others => '0'); |
5 | 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.
Nein, das wars nicht. Ich hab immer noch bei s_crt xxxxxxxx stehen.
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.
schaut gut aus. Ich hab´s beim 2. Prozess übersehen. DANKE, ich hoffe jetzt funktioniert der Rest. D A N K E ! ! !
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.