mikrocontroller.net

Forum: FPGA, VHDL & Co. problem mit counter und ausgabe


Autor: ace (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe mir gerade einen counter gebastelt, der mit einem wert geladen 
wird, dann soll der counter solange hochzählen bis ein zielwert erreicht 
ist. das klappt auch alles wunderbar, ich habe meinen process(clk, 
reset) und mit jedem takt zählt der counter hoch (binärcounter). im 
eigentlichen process() mache ich noch andere sachen, aber eigentlich nur 
if esle anweisungen.
mein problem ist jetzt folgendes:
der anfangswert soll geladen werden und dann sollen die jeweiligen 
schritte des counters auch ausgegeben werden.
ich habe mit variablen gearbeitet und eine zuweisung am ende des 
processes gemacht, ohne erfolg.
wenn ich aber direk in das ausgangssignal schreibe klappt es.
Problem dabei ist jedoch, dass das ausgangssignal um einen taktzyklus zu 
spät ausgegeben wird und der letzte wert, also der endwert, gar nicht 
ausgegeben wird.

irgendwas läuft da schief. ich verstehe auch nicht warum es nicht mit 
der variablen zuweisung am ende klappt. muss ich mein vorhaben sonst in 
2 processe unterteilen?

gruß

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
....Glaskugel?

Poste halt mal deinen Sourcecode

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Problem dabei ist jedoch, dass das ausgangssignal um einen taktzyklus
>zu spät ausgegeben wird
Nein, der wird nicht einen Takt zu spät ausgegeben.
Sondern du erwartest ihn einen Takt zu früh.
Bei der 1-Prozess-SM wird jeder Ausgangswert (sofern er registriert ist) 
mit der nächsten Taktflanke ausgegeben. Was da als if- oder case-Abfrage 
drin ist, wird also erst beim nächsten Takt ausgegeben bzw. 
aktualisiert.

>und der letzte wert, also der endwert, gar nicht ausgegeben wird.
Das kommt auf die Abfrage an...
Aber nachdem du schon mal an der Latency (so heißt der Effekt, wenn 
alles später passiert als erwartet) gescheitert bist, dürfte das auch so 
ein Seiteneffekt sein.

Poste der Einfachheit halber einfach mal deinen Code, das macht die 
Diagnose einfacher.

Autor: ace (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh je...

Leute das tut mir leid... ich mach hier schon seit 3Tagen rum und kein 
erfolg, deswegen heute der post, und siehe da, nochmal rübergeschaut und 
fehler gefunden. Ich habe irgendwie meine signale vermischt (signale und 
variablen) deswegen die verzögerung. man kann von einer fehlerhaften 
zuweisung sprechen. Nun ist alles so wie es sein sollte, aber vielen 
dank für die schnellen antworten. das nächste mal poste ich auch gleich 
den source code, hab ich vorhin nur vergessen sorry...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ ace
> Ich habe irgendwie meine signale vermischt (signale und variablen)
Ja, schmeiß die Variablen weg  ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.