for - schleife

Gast #388022
Lesenswert?
• ▲
▼
die for schleife soll mehrmals hinteinander durchlafen werden,
allerings immer mit anderen startpunken.
erstes mal von 0 -5 laufen
zweites mal von 1 - 0 (also 1,2,3,4,5,0)
dreitten mal von 2 - 1 ( 2,3,4,5,0,1)

würde das so funktionieren ?

q : IN    STD_LOGIC_VECTOR( 5 DOWNTO 0);

for i in  q'RIGHT to q'LEFT loop
  if  q(i)='1'  then next <= state(i+1);
                    exit;
  end if;
end loop;


for i in  q'RIGHT+1 to q'LEFT+1 loop      -- ist der copiler
intelligent genug
  if  q(i)='1'  then next <= state(i+1);  -- von 1 bis 0 zu laufen
oder wird er von 1-6 laufen ?
                    exit;
  end if;
end loop;


for i in  q'RIGHT+2 to q'LEFT+2 loop      -- ist der copiler
intelligent genug
  if  q(i)='1'  then next <= state(i+1);  -- von 1 bis 0 zu laufen
oder wird er von 1-6 laufen ?
                    exit;
  end if;
end loop;


benuzet xilinx ise 7.1
ich glaube ich mache mir da zuviel hoffnungen was die intelligenz des
compilers angeht ?
  danke
    Chris
Gast #388023
Lesenswert?
• ▲
▼
Ich würde das erst mal als Statemachine ansehen, und ausrechnen,
wieviele states minimal erforderlich sind. drei Durchläufe( 2 Bit ) mal
6 Zustände (3 Bit) wären eine 5 Bit Statemachine, 4 Bit dürften nicht
reichen. Jetzt noch eine sinnvolle Codierung dieser max. 32 Zustände,
mit  Vermeidung illegaler Zustände
#388024
Lesenswert?
• ▲
▼
So wie Du dir das vorstellst wird es nicht funktionieren.
Es hat auch weniger mit der Intelligenz des Compilers zu tun, sondern
mit der Tatsache daß Zugriffe außerhalb der gültigen Index-grenzen als
Fehler betrachtet werden sollen, die der Compiler tunlichst melden
soll.

Probier es mit dem Modulo operator
q(i mod 6)

Klaus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren