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


von J.D. (Gast)


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:
1
if data_in_serial = '0' then
2
   counter_enable <= '1';
3
end if;    
4
5
if counter_enable = '1' then          
6
   if counter = 29 then
7
   counter <= 0;
8
   counter_enable <= '0'; 
9
  DATA_OUT <= data_out_parallel(28 downto 5);
10
11
elsif counter < 29 then
12
   counter <= s_counter + 1;
13
   DATA_OUT <= (others => 'Z');
14
end if;

An welchem Punkt kann ich den Counter wieder disablen?

Vielen Dank schonmal,
J.D.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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:
1
-- prozess 1
2
if data_in_serial = '0' then
3
   counter_enable <= '1';
4
end if;    
5
if counter = 29 then
6
   counter_enable <= '0'; 
7
end if;
8
9
-- prozess 2
10
if counter_enable = '1' then          
11
   if counter = 29 then
12
     counter <= 0;
13
     DATA_OUT <= data_out_parallel(28 downto 5);
14
   elsif counter < 29 then
15
     counter <= s_counter + 1;
16
     DATA_OUT <= (others => 'Z');
17
  end if;
18
end if;

von J.D. (Gast)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von J.D. (Gast)


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.

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
Noch kein Account? Hier anmelden.