Problem mit counter

Gast #298142
Lesenswert?
• ▲
▼
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!
Angehängte Dateien:
Gast #298145
Lesenswert?
• ▲
▼
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.
Gast #298146
Lesenswert?
• ▲
▼
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.
Gast #298147
Lesenswert?
• ▲
▼
...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 ?
Gast #298148
Lesenswert?
• ▲
▼
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 !
Gast #298149
Lesenswert?
• ▲
▼
...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?
Gast #298152
Lesenswert?
• ▲
▼
>...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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.