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?
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.
Damit nix weg optimiert wird, oder wenn die Laufzeit zu kurz ist, kannst du auch das Verzögerungsignal aus dem CPLD heraus führen und über einen 2. Eingang wieder rein.
Danke.. habt ihr ne Ahnung wieviele Inverter ich brauch, um in etwa 10ns hinzubekommen ?
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... :-/
Ich benutze einen XC9572-15 und habe nicht ein Pin mehr übrig :-( Mal gucken ob die Lösung ein Ansatz ist.. aber leider erst heute abend. Danke Euch !!
@ Ralph H. (guru) >Ich benutze einen XC9572-15 und habe nicht ein Pin mehr übrig :-( >Mal gucken ob die Lösung ein Ansatz ist.. aber leider erst heute abend. Ich wette mal, dass dein Problem locker ohne einen solchen unsinnigen Puls auskommt . . .
@Falk... hm schön wäre es ja :), wobei die Frage auch prinzipieller Natur ist, denn ich glaub jeder hat mal das Problem irgendwann.
@ 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"
@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 :-)
@ 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
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
Ralph H. schrieb: > Die sinnvolle Lösung ist nur eine kürzere Taktperiode!? Die sinnvollere Lösung ist ein FPGA statt des CPLDs. Darauf gibt es Taktmanager, mit denen du den externen Takt vervielfachen und in einzelne Zeitschlitze aufteilen kannst. Das wäre reproduzierbar.
@Lothar.. Jo das klingt besser, aber ich lern ja grad erst mal CPLD :D..und bau nun auch nicht mehr um... ich werd versuchen nen schnelleren Takt zu implementieren. FPGA kommt später mal dran :-)
Gibt es denn eine untere Grenze für das RAM, oder musst du das wegen deiner Anwendung so schnell ansteuern?
Nein das RAM-Latch müsste auch schneller können. Wobei das ja auch eher noch mit eine gundsätzliche Frage nach dem kürzeren Impuls war. Mein reales Problem war nicht ganz so wichtig, weil ich das nun mit mehr Takt lösen werde.
Wie wärs mit einem Quarz der vierfach so schnell wie dein bisheriger Takt schwingt dann kanst deinen Takt und die Impulse mit dem Cpld locker generieren. Deine Schaltung wird dann halt vom Cpld getaktet.
Ja so in etwa schwebt mir das auch vor, aber ich muss mal gucken was der 74HCT14 der den Takt erzeugt, kann... müsste ja mind. 32 Mhz (2x) sein.64 Mhz wird der nicht schaffen..
@ 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.