while in verilog

Benutzeravatar
AlexPi11
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 154
Registriert: 18. Apr 2009 15:32

while in verilog

Beitrag von AlexPi11 »

Ich hänge zur zeit schon die eine gute Weile an einem Problem und habe es auf dieses hier reduziert:
Funktioniert:

Code: Alles auswählen

while(VariableA > Wert)
 begin
   VariableA--;
   Befehle;
 end
Funktioniert nicht (bei Synthese):

Code: Alles auswählen

while(VariableA > Wert)
 begin
   VariableA--;
   Befehle;
   if(boolescher Ausdruck)
     VariableA = VariableA;
 end
Error: Loop has iterated 64 times.
Muss man bei while nocht etwas beachten? Für mich ist der Code gleich. :|
Zumindest ist die Fehlerqulle gefunden - hat ein gutes Weilchen gedauert. Ich bau' das jetzt wohl komplett um, aber ich würde gerne wissen, wo den nun das Problem war/ist.

davidda
Windoof-User
Windoof-User
Beiträge: 31
Registriert: 19. Okt 2009 17:27

Re: while in verilog

Beitrag von davidda »

Der Grund wieso der zweite Code nicht synthetisiert, ist m.E. dass du eine Variable an deine Iterationsvariable VariableA zuweist. Das geht aber nur mit Konstanten. ISE kann somit nicht zur Compilezeit ermitteln, wie oft die Schleife zur Laufzeit durchlaufen werden müsste, ergo wie viel mal er den Schleifencode in Hardware widerholen muss.

Letztendlich ist es also auf den grundlegenden Unterschied zwischen einer Software-Schleife und dieser Instruktion "baue diese Schaltung x mal in die Hardware" zurückzuführen.

Antworten

Zurück zu „Archiv“