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
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
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
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.