mikrocontroller.net

Forum: FPGA, VHDL & Co. Counter Enable/Disable Problem


Autor: J.D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.

Ich stehe vor folgendem Problem:

Ein aktivierter Counter soll bei erreichen eines Werts deaktiviert 
werden.
Die Aktivierung erfolgte durch eine fallende Flanke.
So wie in folgendem Beispiel ist es logischerweise nicht möglich:
if data_in_serial = '0' then
   counter_enable <= '1';
end if;    

if counter_enable = '1' then          
   if counter = 29 then
   counter <= 0;
   counter_enable <= '0'; 
  DATA_OUT <= data_out_parallel(28 downto 5);

elsif counter < 29 then
   counter <= s_counter + 1;
   DATA_OUT <= (others => 'Z');
end if;

An welchem Punkt kann ich den Counter wieder disablen?

Vielen Dank schonmal,
J.D.

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

Bewertung
0 lesenswert
nicht lesenswert
J.D. schrieb:
> So wie in folgendem Beispiel ist es logischerweise nicht möglich:
Klar, warum sollte das nicht gehen?
Weil du den Code aus mehreren Prozessen herausgeschnipselt hast?

Dann probiers mal so:
-- prozess 1
if data_in_serial = '0' then
   counter_enable <= '1';
end if;    
if counter = 29 then
   counter_enable <= '0'; 
end if;

-- prozess 2
if counter_enable = '1' then          
   if counter = 29 then
     counter <= 0;
     DATA_OUT <= data_out_parallel(28 downto 5);
   elsif counter < 29 then
     counter <= s_counter + 1;
     DATA_OUT <= (others => 'Z');
  end if;
end if;

Autor: J.D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Widerspricht sich nicht die Forderung danach, dass die Bedingung für 
counter_enable <= '0' ist, dass counter_enable = '1' ist?

Dort liegt gerade mein Verständnisproblem...

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

Bewertung
0 lesenswert
nicht lesenswert
> So wie in folgendem Beispiel ist es logischerweise nicht möglich:
Poste mal deinen ganzen Code als Anhang (Dateiendung bitte *.vhd wegen 
Syntaxhighlighting) und sag, was logischerweise nicht geht.

Wahrscheinlich liegt dein Verständnisproblem darin, dass der Zustand 
eines Signals eines Prozesses festgelegt wird. Und bei getakteten 
Prozessen ist das dann jeweils der nächste Takt.

Autor: J.D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast mir schon einen hilfreichen Hinweis gegeben. Es gab einen 
Syntaxfehler an anderer Stelle, den ich jetzt finden konnte.
Vielen Dank,
J.D.

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.