extrem kurzen Impuls erzeugen und nutzen

OP #1993096
Lesenswert?
• ▲
▼
Wie kann ich folgende Aufgabenstellung lösen ?

Ich brauche einen kurzen H/L Impuls zum Laden eines Latches, der beim
Erreichen des Höchstzählerstandes erzeugt werden soll.

Dazu hab ich in der realen Hardware (Digitaluhr) z.B. einen 4 bit 
Zähler, dessen Ausgang 3 und 1 über ein AND Gatter auf den L-aktiven 
Reseteingang des Zählers geht und den Zähler beim Erreichen des 
Höchstzählerstandes (10)rücksetzt. Den dabei entstehenden schmalen H/L 
Impuls hab ich zum weiterzählen und Laden genutzt. Das wird ja im CPLD 
so nicht gehen oder?
Wie kann ich sowas in VHDL machen ? Haken der Sache ist, der Impuls 
MUSSS!!! am Ende !!! der Taktflanke kommen, der den Höchstzähler standen 
erzeugt.

PS: mit nem 2.Takt geht das, aber den hab ich nicht zur Verfügung!
Gast #1993105
Lesenswert?
• ▲
▼
Stichwort synchrones Design! Solche Spielchen mit Latches und Pulsen 
sind gefährlich und werden zwangsläufig zu Problemen führen. Besser 
verwendet man flankengesteuerte D-Flipflops. Anstelle des Pulses wie 
beim Latch kriegen die einen Enable-Eingang. Dieses Signal muss genau 
dann auf High sein, wenn eben die Bedingung (in deinem Fall ein 
Zählerstand) erreicht ist.
#1993108
Lesenswert?
• ▲
▼
@  Ralph H. (guru)

>Ich brauche einen kurzen H/L Impuls zum Laden eines Latches, der beim
>Erreichen des Höchstzählerstandes erzeugt werden soll.

Was ist an diesem Puls exterm kurz? Warum Latches? Nimm FlipFlops.

>Impuls hab ich zum weiterzählen und Laden genutzt. Das wird ja im CPLD
>so nicht gehen oder?

Nö, diesen Murks aus der TTL-Ära sollte man schnell vergessen, siehe 
Glitch.

>Wie kann ich sowas in VHDL machen ? Haken der Sache ist, der Impuls
>MUSSS!!! am Ende !!! der Taktflanke kommen, der den Höchstzähler standen
>erzeugt.

Bleib mal locker, für dein bissel Gemüse muss man GAR NICHTS groß 
schreiben.

Siehe Taktung FPGA/CPLD.

>PS: mit nem 2.Takt geht das, aber den hab ich nicht zur Verfügung!

Käse. Beschäftige dich mal mit den Grundlagen synchroner 
Schaltungstechnik. Da läuft alles ganz easy mit EINEM Takt.

MFG
Falk
#1993179
Lesenswert?
• ▲
▼
So einen Murks macht man in CPLDs/FPGAs nicht. Du kannst doch einen 
synchronen Zähler bauen, und bei Zählerstand 9 erzeugst du den 
reset-Impuls. Bei der nächsten Flanke wird der Zähler zurückgesetzt. 
Völlig glitchfrei von 0 bis 9 gezählt. Den Selben Impuls nimmst du zum 
Weiterzählen der nächsten Zählerstufen. Fertig ist der Lack.
1
Signal Counter, Counter_2 : unsigned(3 downto 0) := (others => '0');
2
Signal Reset : std_logic := '0';
3
 
4
Process(CLK)
5
Begin
6
  if rising_edge(CLK)then
7
    if Reset = '1' then Counter <= (others => '0');
8
    else Counter <= Counter + 1;
9
    end if;
10
  end if;
11
end Process;
12

13
Reset <= '1' when Counter = 9 else '0';
14

15
Process(CLK)
16
Begin
17
  if rising_edge(CLK)then
18
    if Reset = '1' then Counter_2 <= Counter_2 + 1;
19
    end if;
20
  end if;
21
end Process;

Mal schnell 2 kaskadierte 4-Bit Zähler...
OP #1994145
Lesenswert?
• ▲
▼
@silvia... Vielen Dank für Deinen konstruktiven Beitrag ;-)

@supachris.. Danke für Deinen Beitrag, ich will ja eben diesen 
DigitalMurks nicht machen und hab hier gefragt :-) Aber, müsste der 
Zähler nicht erst bis 10 zählen, ehe Reset aktiv wird? ist ja ein 
Dezimalzähler.

LG Ralph
#1994243
Lesenswert?
• ▲
▼
Der "Trick" ist ja, dass der Reset beim 10. Zählerschritt aktiv wird. 
Beim synchronen Design passiert immer alles zum nächsten Taktschritt. 
Daher wird der Reset nach der 9 aktiv und setzt den Zähler auf 0 zurück. 
Was ja bei einer Digitaluhr sinnvoll ist, denn die 10 kannst du auf 
einer Stelle ja nicht mehr darstellen. Der Impuls ist dann genau einen 
Takt lang und kann einwandfrei und sauber zum Weiterzählen der nächsten 
Stelle genommen werden. Wie im Beispiel oben.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.