Forum: FPGA, VHDL & Co. Integer range Maximum wiedergeben


von Stefan (Gast)


Lesenswert?

Hallo,


kleines Problemchen bei Integer und Range:
1
--ich hab nen Integer dekl.
2
3
signal counter_variable : integer range 0 to 10;
4
5
-- nun möchte ich im Text das Maximum meiner Range zurückgeben lassen
6
-- zB so:
7
 
8
9
if counter_variable = counter_variable'"MAX" then 
10
    -- Springe irgendwo hin
11
else
12
 counter_variable = counter_variable + 1;
13
end if
14
15
-- Was muss ich für ein Attribut für das "MAX" setzen, damit ich auch 
16
-- wirklich das Maximum, also die 10, zurückbekomme
17
-- Hab keine lust das über ne zusätzliche variable zu lösen

Vielen Dank für Eure Antworten

VG Stefan

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


Lesenswert?

Probier mal counter_variable'High

von Der Besucher (Gast)


Lesenswert?

Also ich würde es mit einer Konstantendefinition lösen.

constant counter_max : integer := 10;
signal counter_variable : integer range 0 to counter_max;

if counter_variable = counter_max then
    -- Springe irgendwo hin
else
 counter_variable = counter_variable + 1;
end if


Ich guge mal, ob man das auch mit einem Attribut lösen kann.

Der Besucher

von Der Besucher (Gast)


Lesenswert?

Der Lothar hats sofort gewusst :)

von Stefan (Gast)


Lesenswert?

super sache, Danke ... ihr seit alle so fit
ein hoch auf den Lothar :)

Probier ich gleich mal aus.

Schönes WE euch allen

von Stefan (Gast)


Lesenswert?

leider doch nicht... :(

Line 107. Prefix of attribute 'high must be an array object.

Das Prefix ist nen Integer

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


Lesenswert?

> Prefix of attribute 'high must be an array object.
>> Also ich würde es mit einer Konstantendefinition lösen.
Also, ich auch (nach genauerer Betrachtung)...  :-o
Oder eben als Generic in die Entity-Schnittstelle mit aufnehmen.

Vordefiniert sind nur die Attribute:
http://www.csee.umbc.edu/help/VHDL/attribute.html

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

'right, wenn du sicherstellst dass kein downto für die Definition 
verwendet wird.

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


Lesenswert?

> 'right
--> Prefix of attribute 'right must be an array object.
Auch das Attribut 'right funktioniert nicht mit integern :-/

von jetztnicht (Gast)


Lesenswert?

hi,

es wuerde auch folgendes gehen:

subtype small_t is natural range 0 to 10;
signal cnt: small_t;



if cnt=small_t'high then
   cnt <=small_t'low;
else
   cnt<=cnt+1;
end if;


regads

von Matthias G. (mgottke)


Lesenswert?

Hallo,

ich habe dazu ein ähnliches Problem: Nur dass ich das Maximum und das 
Minimum innerhalb einer Funktion ermitteln muss. Daher, es wird ein 
Integer übergeben, welches einen unterschiedlichen Range haben kann. Hat 
dafür jemand eine Lösung?

Matthias

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.