Forum: FPGA, VHDL & Co. Generieren von 1ms Pulse nach einem Trigger


von VHDL Anfänger (Gast)


Lesenswert?

Hallo zusammen,

da ich ein VHDL Neuling bin, bin ich auf euer Hilfe angewiesen.

Ziel ist es nach einem Trigger einen Signal von 1ms (Quarz von 10Mhz 
vorhanden) zu generieren, es ist zwar sehr einfach aber bekomme ich 
nicht hin, jedes Mal bekomme ich Fehler bei der Synthese (XP2, Diamond).
1
-- Clk, Trigger: Inputs
2
-- Puls : Output
3
4
signal Enable: std_logic := '0';
5
6
Process (clk, Trigger)
7
begin
8
 if trigger'Event and Trigger='1' then
9
    Enable <= '1';
10
 end if;
11
12
 if Clk'Event and Clk='1' then
13
  if Enabe = 1 then
14
    Puls <= '1';
15
    counter <= 0; 
16
  end if;
17
18
  if Puls = '1' then
19
    counter <= counter + 1;
20
    if counter >= 10000 then
21
      Puls = '0';
22
     end if;
23
  end if;
24
end process

mein Problem ist: das "Enable" muss wieder auf 0 gesetzt werden, wo kann 
ich das am besten tun?

Vielen Dank für die Hilfe

von Klaus (Gast)


Lesenswert?

Dein Problem ist, du hast gar nicht die passende Anzahl von ifs und end 
ifs in deinem Codefetzen.

von VHDL Anfänger (Gast)


Lesenswert?

sorry, aber das liegt daran das ich es auf die schnelle eingetippt habe, 
ist aber nicht das Problem.

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


Lesenswert?

VHDL Anfänger schrieb im Beitrag #3040551:
> jedes Mal bekomme ich Fehler bei der Synthese (XP2, Diamond).
WELCHEN?

> if trigger'Event and Trigger='1' then
>   if Clk'Event and Clk='1' then
Die Ursache allen Übels: du hast zuviele Takte in deinem Design!

> Generieren von 1ms Pulse nach einem Trigger
Vorgehensweise: Nur 1 Takt (den Quarzoszillator), dann den Trigger 
einsynchronisieren und danach noch eine Flankenerkennung (such 
einfach mal hier im FPGA-Forum mal danach). Dann mit der erkannten 
Flanke (steigend oder fallend) einen Zähler auf 0 setzen, und solange 
der kleiner als 9999 ist (weil 0...9999 schon 10000 Schritte sind) eine 
1 ausgeben.

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.