Hallo, anbei findet ihr einen Programmschnitt für den beim kompilieren folgende Fehlermeldung bzw. folgende Warnung ausgegeben wird: << Found 6Bit incrementor, 'un1_count[27:32]' >> So richtig kann ich mit dieser Warnung nichts anfangen und hoffe auf eure Erfahrungen :o) Sollten mehr Infos meiner seits notwendig sein, einfach anfordern ... Vielen Dank und Gruß Sebastian!
"Found 6Bit incrementor, 'un1_count[27:32]'" ist weder ein Fehler, noch eine Warnung. Kann es sein dass Du falsche Zeile reinkopiert hast? Und was für eine Software benutzt Du überhaupt?
Ich arbeite mit Libero IDE von Actel. Habe also auch ein Evo-board von Actel. Ich bin mir sicher, dass ich keine falsche Zeile hinein kopiert habe. Da ich noch VHDL Anfänger bin, versuche ich alle Ausgaben nach dem Kompilieren nachzuvollziehen ... bei o.g. Warnung gelingt mir das allerdingsnicht.
Hallo Sebastian, abgesehen von der Meldung, die sich offenbar auf den Counter bezieht (m.E. kein Problem), was soll folgender Ausdruck bewirken: ... and busyadc<='0' ??? ich würde für den Counter auch ein Signal verwenden, keine Variable.
...das signal kommt von meiner externen hardware. busy adc wird von einem A/D converter ausgegeben, wenn die digitalen werte nach der wandlung am ausgang anstehen. diese werte werden in den fpga geschrieben, wenn der counter den wert 17 hat. busyadc ist nur eine doppelte absicherung dafür, dass die werte wirklich am ausgang des ADC anstehen. dieser benötigt für die A/D wandlung 14taktzyklen meines grundtaktes, daher der counter. warum wäre es besser auch ein signal für den counter zu verwenden? ich denke, da ich mich auf meinen externe grundtakt beziehe ist das taktsignal in verbindung mit der variablen count eine passende lösung. letzten endes ???: ihr seid der meinung, die warnung kann ignoriert werden ?
Hallo, ja ich denke, Du kannst die Meldung erstmal ignorieren. Zum Thema Signal / Variable : Wenn Du count als Variable deklarierst und nicht als Signal, dann ist besondere Vorsicht geboten. Ich verwende deshalb Variablen nur für Kombinatorik. Das Problem ist (villeicht weisst Du es ja schon), dass das Syntheseergebnis bei Variablen von der Reihenfolge abhängen kann, in der Du Deinen Source-Code schreibst. Hier ein kleines Beispiel : count := count +1; -- hier als erste Zeile if count = 0 then cnt_zero <= '1'; else cnt_zero <= '0'; end if; lifert ein anderes Synthese-Ergebnis als : if count = 0 then cnt_zero <= '1'; else cnt_zero <= '0'; end if; count := count +1; -- jetzt am Ende hingeschrieben Wers nicht glaubt, probiere es selbst aus. In dem Beispiel wirkt es sich nur aufs Timing aus, aber auch das kann schon lustige Effekte bringen. Wenn man stattdessen count als Signal deklariert, dann ist es egal, wo die Zeile count <= count +1 im Prozess hingeschrieben wird -> immer dasselbe Ergebnis bei der Synthese !
...ok, das ist ein überzeugendes argument für die definition von count als signal. zur syntax: count<=count+1; oder count:=count+1; macht das einen unterschied? obere syntax ist zu verwenden wenn count ein signal und untere, wenn count eine variable?
...darf denn ein aber signal vom typ integer sein? das erscheint mir unlogisch?!
>...darf denn ein aber signal vom typ integer sein? das erscheint mir
unlogisch?!
Ja darf es, man sollte es allerdings auf den nötigen wertebereich
begrenzen.
Also statt
SIGNAL fetch_counter_q : integer;
besser
SUBTYPE FETCH_COUNTER_TYPE IS integer RANGE 63 DOWNTO 0;
SIGNAL fetch_counter_q : FETCH_COUNTER_TYPE;
Sonst wird ein 32bit counter eingefügt.
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.