Forum: FPGA, VHDL & Co. einfaches Monoflop


von Ralph H. (guru)


Lesenswert?

Ich beschäftige mich grade mit der Erzeugung eines Impulses mit einer 
festen Dauer, der jedesmal erzeugt werden soll, wenn am Eingang einer 
Schaltung eine L/H Flanke auftritt, also ein klassisches Monoflop.
Wie könnte ein einfaches Monoflop zum üben aussehen, welches bei einer 
L/H Flanke einen L-Impuls L von konstanter Dauer von z.b. 5mikrosec 
liefert?
Das Monoflop soll NICHT nachtriggerbar sein, dafür sehr einfach.
Vielen Dank für Eure Hilfe !

von Duke Scarring (Gast)


Lesenswert?

Ich würde dafür einen getakteten Zähler verwenden.

Duke

von Eddy C. (chrisi)


Lesenswert?

Duke Scarring schrieb:
> Ich würde dafür einen getakteten Zähler verwenden.

Bravo! Dann sage ich mal: Nachdem nicht bekannt ist, wie oft das 
Monoflop ausgelöst werden soll, würde ich eine Schmelzsicherung 
verwenden. Die ist definitiv nicht nachtriggerbar.

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


Lesenswert?

Ralph H. schrieb:
> Ich beschäftige mich grade mit der Erzeugung eines Impulses mit einer
> festen Dauer, der jedesmal erzeugt werden soll, wenn am Eingang einer
> Schaltung eine L/H Flanke auftritt, also ein klassisches Monoflop.
Zeiten werden (mal von bösen RC-Tricks abgesehen) in FPGAs und CPLDs 
immer mit Zählern gemacht...

> Wie könnte ein einfaches Monoflop zum üben aussehen, welches bei einer
> L/H Flanke einen L-Impuls L von konstanter Dauer von z.b. 5mikrosec
> liefert?
In welcher Beschreibungssprache?
VHDL:
1
 signal cnt : integer range 0 to 10 := 0;
2
:
3
:
4
 process (clk, eingang) begin
5
    if eingang='1' then
6
      cnt <= 0;
7
      ausgang <= '1';
8
    elsif rising_edge(clk) then
9
       if cnt<10 then
10
          cnt <= cnt+1;
11
          ausgang <= '1';
12
       else
13
          ausgang <= '0';
14
       end if;
15
    end if;
BTW: ich würde das so (mit dem asynchronem Laden) nicht machen, sondern 
eine synchrone Lösung anstreben. Dafür fehlt aber noch einiges an 
Information...

> Das Monoflop soll NICHT nachtriggerbar sein,
Das wäre aber das einfachste... ;-)

von Ralph H. (guru)


Lesenswert?

Hm.. ob mir die beiden Beiträge wirklich helfen ;-)

Also das Monoflop wird relativ regelmäßig angestoßen, ca. aller 50ms..
und der Impuls der es anstößt liegt bei ca. 2ms Dauer.. daraus soll ein
fester Impuls von 2mikrosec werden..

von Ralph H. (guru)


Lesenswert?

Sorry Lothar, da hatten sich unsere Beiträge überschnitten...

Warum ist ein nachtriggerbares Monoflop einfacher ? und was ist hier der 
Unterschied von synchron und asynchron ? Das erschließt sich mir nicht 
richtig.
Fakt ist, das Monoflog wird sehr regelmäßig angestoßen und zwar von 
einen bestimmten Zählerstand, der aber viel zu lang ist und daher 
verkürzt werden muss.

von Balduin T. (balduin)


Lesenswert?

Du willst also einen 2ms Impuls auf 2us verkürzen.

Dann solltest du im obigen beispiel "eingang" auch flankengetriggert 
machen.

Suchst du überhaupt eine FPGA oder CPLD Lösung ?

von Ralph H. (guru)


Lesenswert?

Ich suche eine CPLD Lösung :-)

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


Lesenswert?

Ralph H. schrieb:
> Ich suche eine CPLD Lösung :-)
Das ist schlecht, denn Zähler brauchen FFs, und CPLDs haben nur sehr 
wenige davon...  :-/

Ralph H. schrieb:
> daraus soll ein fester Impuls von 2mikrosec werden..
Waren das nicht gerade eben noch 5 us?
D.h. die Pulsdauer ist nicht soooo wichtig... ;-)
Dann gibt es auch einen Workaround (aka. Bastellösung):
das externe RC-Glied am CPLD-Pin.

Du lässt den Impulseingang einmal direkt ins CPLD (inp) und einmal über 
ein RC-Glied mit t=2us (inpdelay). Im CPLD ist dann etwa folgender Code:
1
   outp <= '1' when inp='1' and inpdelay='0' else '0';

> Warum ist ein nachtriggerbares Monoflop einfacher ?
Weil dann einfach solange der Eingang '1' ist, der Ausgang auch '1' sein 
darf. Es muss also keine Flanke des Eingangssignals erkannt werden...

> Fakt ist, das Monoflog wird sehr regelmäßig angestoßen und zwar von
> einen bestimmten Zählerstand, der aber viel zu lang ist und daher
> verkürzt werden muss.
Normalerweise müsstest du direkt am Zähler angreifen...

von Ralph H. (guru)


Lesenswert?

OK Lothar, die externe Lösung fällt leider aus... da werd ich erstmal 
zum Zähler greifen müssen..
Aber ich denke, wir rutschen erstmal mal ins neue Jahr und wünschen uns 
das wir alle Gesund bleiben, so wir es sind :-)
Nächstes Jahr gehts dann wieder los :-) und weiter mit dem Basteln :-)

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.