Counter Enable/Disable Problem

Gast #1902921
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.
Moderator (Firma: Titel) Persönliche Seite #1902934
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;
Moderator (Firma: Titel) Persönliche Seite #1902985
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren