Forum: FPGA, VHDL & Co. std_logic_vector auf Metavalue prüfen


von Hans-Werner (Gast)


Lesenswert?

Da ich bei der Konvertierung eines std_logic_vectors in einen integer 
eine Fehlermeldung erhalte das dieser einen Metavalue beinhaltet, möchte 
ich diesen zuvor auf Metavalues abprüfen.
Isr es möglich einen Aufzählungstyp zu definieren und zu prüfen ob ein 
Wert in diesem Aufzählungstyp enthalten ist ?
Es gibt ja 'pred und 'succ usw. Gibt es auch so etwas wie is_member ?

Danke

von Xenu (Gast)


Lesenswert?

Falls es sie gibt, kenne ich sie nicht. Aber ich weiß, was ich machen 
würde: Programmiere eine Schleife, in der Du durch den Vektor durchgehst 
und auf die Metawerte abprüfst.

Allerdings solltest Du doch im Simulator sehen, was für Werte Dein 
Vektor hat. Wahrscheinlich hast Du bloß Deine Signale nicht 
initalisiert, die haben dann am Anfang 'U' als Wert.

von Stefan A. (chaos)


Lesenswert?

Hab ein ähnliches Problem.

Gibt es wirklich keinen eleganteren Weg als eine Schleife über den 
Vektor um herauszufinden, ob der Vektor X oder Z enthält?

Zur Prüfung auf valide Daten in der Testbench wäre das mehr als 
nützlich.

von Da M. (damicha)


Lesenswert?

Hallo.


Es gibt im Package std_logic_1164 die Funktion: is_X(). Diese prüft ob 
ein 'U' | 'X' | 'Z' | 'W' | '-' vorhanden ist. Die Funktion ist für 
Vektoren und für ein einzelnes Bit definiert. Die Quelldatei zum Package 
liegt bei Modelsim unter vhdl_src/ieee/stdlogic.vhd.

Gruß DaMicha.

von Stefan A. (chaos)


Lesenswert?

Vielen Dank,

ich hatte den Funktionsnamen bereits gelesen, allerdings auf eine reine 
'X' Prüfung geschlossen. Wenn die Funktion auch alle andern 'ungültigen' 
Werte prüft passt sie natürlich genau.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Und das Ganze noch in eine klitzekleine Prozedur verpackt,
damit der Aufruf und das Handling augenfreundlicher wird..
..und fertig.

Im Anhang eine kleine Testbench, die sich selber testet  ;-)

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.