Impuls kürzer als Takt erzeugen

OP #2010564
Lesenswert?

Hallo.. kann ich im VHDL in einem CPLD einen Impuls erzeugen, der 
deutlich kürzer als das schnellste Taktsignal ist ?
Konkret habe ich einen (leider nicht änderbaren Takt) von Impulsbreite 
62.5ns =16Mhz und benötige einen 10ns schmalen Impuls.
Wie geht das wenn es überhaupt realisierbar ist?
#2010574
Lesenswert?

Du könntest eine Reihe von Invertern oder anderen Elementen als 
Verzögerung verwenden und dann ver"und"en mit einem nichtverzögerten 
Signal. Musst du aber die herstellerspezifischen Entities direkt 
verwenden, damit der VHDL-Compiler das nicht wegoptimiert, oder 
vielleicht auch per Schematic Entry. Ist aber nur zum experimentieren 
gedacht, da sich das von Charge zu Charge des CPLDs ändern kann, oder 
auch mit Betriebsspannung oder Temperatur, also nichts für ein Produkt.
Moderator (Firma: Titel) Persönliche Seite #2010741
Lesenswert?

Ralph H. schrieb:
> Danke.. habt ihr ne Ahnung wieviele Inverter ich brauch, um in etwa 10ns
> hinzubekommen ?
Wie schnell ist dein CPLD?

Frank Buss schrieb:
> Musst du aber die herstellerspezifischen Entities direkt
> verwenden, damit der VHDL-Compiler das nicht wegoptimiert, oder
> vielleicht auch per Schematic Entry.
In VHDL gibt es dafür bestimmte Attribute. Auf Anhieb fällt mir KEEP 
ein. So etwas in der Art habe ich beim Ringoszillator auch gemacht:
http://www.lothar-miller.de/s9y/categories/29-Ringoszillator

Aber: weil ein simpler Inverter in einem CPLD auch schon einen 
Produktterm braucht, wird das Ganze ziemlich ressourcenhungrig.
Und vor allem: der CPLD-Hersteller garantiert nur eine maximale 
Durchlaufzeit von Pin-zu-Pin. Wenn du Glück (oder in deinem Fall Pech) 
hast, dann ist das CPLD wesentlich schneller...  :-/
#2011840
Lesenswert?

@  Ralph H. (guru)

>@Falk... hm schön wäre es ja :), wobei die Frage auch prinzipieller
>Natur ist,

> denn ich glaub jeder hat mal das Problem irgendwann.

Nö, nur du, der du immer noch nicht die Grundlagen SYNCHRONER 
Schaltungen kapiert hast. Genausowenig wie Netiquette. Beschreibe 
dein Vorhaben, nicht deinen vermeintlichen Lösungsansatz.

MFG
Falk

P S Zum Thema kurze Pulse erzeugen nur soviel, siehe Glitch, Absatz 
"Das Problem"
OP #2011911
Lesenswert?

@Falk... Danke das Du schreibst, aber nimms mir nicht übel, ich habe 
sehr konkret beschrieben was ich will ! und denk auch die Netiquette 
eingehalten zu haben. Ich wüsste nicht das ich einen Lösungsansatz 
beschrieben habe, sondern ein Problem, bzw. einen konkret Frage gestellt 
!

Konkret hab ich ein Taktsignal von 62.5ns Impulsbreite und will aus der 
steigenden Flanke (also rising_edge) NACHEINANDER im Abstand von ca. 
20ns 2 kurze '1' Pulse von 10ns Breite erzeugen die EXTERNE RAMS 
dazubewegt die Adressen zu übernehmen. der 1.Impuls kommt mit dem 
rising_edge Ereignis.. danach 30ns später der 2. Impuls. Das Ganze muss 
sich innerhalb der 62.5ns und dem '1' Pegel dieses Taktes abspielen !!
Nun hab ich die ganze Aufgabenstellung dargelegt, obgleich meine 
Reduktion auf das Kernproblem (1.Beitrag) das Gleiche fragt.

Aber Du hast in Sachen "synchron" Recht ! Das hat sich mir tatsächlich 
noch nicht richtig erschlossen !

Ich hoffe nett genug geschrieben zu haben, um eine nette Antwort zu 
erhalten ! Viele Grüße :-)
#2011962
Lesenswert?

@  Ralph H. (guru)

>Konkret hab ich ein Taktsignal von 62.5ns Impulsbreite

16 MHz sind zwar 62.5ns PERIODENDAUER, über die PULSBREITE sagt das aber 
nocht nciht soo viel aus. Bei idealem Tastverhältnis von 50% sind das 
31,2ns.

> und will aus der
>steigenden Flanke (also rising_edge) NACHEINANDER im Abstand von ca.
>20ns 2 kurze '1' Pulse von 10ns Breite erzeugen die EXTERNE RAMS
>dazubewegt die Adressen zu übernehmen.

Tja, sieht eher schlecht aus. Es gibt zwar diverse Tricks dafür, die 
sind aber meistens nicht sonderlich gut und stabil.

> der 1.Impuls kommt mit dem
>rising_edge Ereignis.. danach 30ns später der 2. Impuls. Das Ganze muss
>sich innerhalb der 62.5ns und dem '1' Pegel dieses Taktes abspielen !!

Hier sind wir schon mal im Widerspruch. Dein Takt hat nur ~31,2ns einen 
HIGH Pegel.

>Nun hab ich die ganze Aufgabenstellung dargelegt,

Was sinnvoll und nötig ist.

> obgleich meine
>Reduktion auf das Kernproblem (1.Beitrag) das Gleiche fragt.

Das ist nicht der Punkt. Die Frage ist, wie man das Gesamtproblem 
sinnvoll löst, sprich deine RAM-Ansteuerung, und NICHT wie man komische 
Pulse erzeugt.

Sinnvollerweise brauchst du einen schnelleren Takt. Dort kann man dann 
was machen, mit invertierten Takt und so. Das ist schon mehr als genug 
getrickst. Und warum brauchst du  ZWEI Pulse inerhalb EINES Taktes?

MFG
Falk
OP #2011984
Lesenswert?

Falk Brunner schrieb:
> 16 MHz sind zwar 62.5ns PERIODENDAUER, über die PULSBREITE sagt das aber
> nocht nciht soo viel aus. Bei idealem Tastverhältnis von 50% sind das
> 31,2ns.
upps... na dann wirds noch schwieriger, denn Du hast Recht ! Mein 
Tastverh. ist aber 1:1

> Tja, sieht eher schlecht aus. Es gibt zwar diverse Tricks dafür, die
> sind aber meistens nicht sonderlich gut und stabil.
Hab ich mir beim lesen auch schon so gedacht, aber gehofft, dennoch ne 
Lösung zu finden. Ich werd wohl den Taktgenerator ändern müssen.

> Hier sind wir schon mal im Widerspruch. Dein Takt hat nur ~31,2ns einen
> HIGH Pegel.
Ja da wird es eng mit dem Timing, also die Ladeimpulse kürzer machen.

> ..Und warum brauchst du  ZWEI Pulse inerhalb EINES Taktes?
Die 2 Impulse kommen in der realen Hardware die ich im CPLD nachbilde 
definitiv nacheinander. Aber es sollte ansich auch 1 Impuls genügen. Das 
wäre zu testen.

Aber ums mal zusammenzufassen, es ist ohne Tricks und "instabile" 
Lösungen nicht möglich einen stabilen und zeitlich exakt definierbaren 
Impuls einer deutlich kürzeren Dauer als kürzeste Taktsignal zu 
erzeugen, richtig ?

Die sinnvolle Lösung ist nur eine kürzere Taktperiode!?

LG Ralph
#2012234
Lesenswert?

@  Ralph H. (guru)

>upps... na dann wirds noch schwieriger, denn Du hast Recht ! Mein
>Tastverh. ist aber 1:1

1:1 ist ein Fußballergebnis. Ein Tastverhältnis ist immer eine Zahl 
zwuschen 0 und 1 bzw. 0 und 100%. Damit wird es vor allem mathematisch 
deutlich einfacher handhabar.

>Lösung zu finden. Ich werd wohl den Taktgenerator ändern müssen.

Ja. Nimm einen fertigen Quarzoszillator, dort kommt ein schöner, 
fertiger Takt raus.

>Aber ums mal zusammenzufassen, es ist ohne Tricks und "instabile"
>Lösungen nicht möglich einen stabilen und zeitlich exakt definierbaren
>Impuls einer deutlich kürzeren Dauer als kürzeste Taktsignal zu
>erzeugen, richtig ?

Nein.

>Die sinnvolle Lösung ist nur eine kürzere Taktperiode!?

Ja.

MfG
Falk

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