Hallo, ich bin Anfänger was CPLDs/FPGAs angeht und brauche deshalb ein wenig Hilfe... Aufgabe ist eine variable Zeitsteuereinheit aufzubauen, mit mehreren (hier erst einmal 8) Trigger-Ausgängen. Ein Zähler wird mit externen 100MHz getaktet und irgendwann kommt ein Trigger-Ereignis - Jeder der 8 Trigger-Ausgänge schaltet verzögert high, nach der für ihn eingestellen Periodenanzahl nach dem Trigger-Ereginis. Es ist ein 32bit Zähler. Über eine einfache Schnittstelle zu einem Mikrocontroller (A[0..3], D[0..16], WR) werden die Verzögerungszeiten für die 8 Kanäle in 16 16bit-Register geladen, ein High- sowie Low-Register für jeden Kanal. Ich habe das mal in Quartus aufgebaut (siehe Anhang). Die gesamte Schaltung ist noch etwas komplexer, aber dies hier ist der für meine Frage relevante Teil. Da ich mich schon in Quartus eingearbeitet habe und ein Altera-Programmieradapter vorhanden ist, würde ich gern einen Altera-Baustein verwenden. Die Frage ist nur welcher?! Eine andere Anforderung ist die Hand-Lötbarkeit, somit kommen keine Chips in BGA-Gehäusen in Frage. Auch mit diesen Einschränkungen ist die Auswahl noch sehr groß! Generell ist die Frage: CPLD oder FPGA? Meinem Verständnis nach ist ein CPLD besser für meine Aufgabe geeignet. Die Taktfrequenz des Zählers von 100MHz sollte ja auch noch damit machbar sein. Oder hätte es Vorteile einen FPGA einzusetzen? Und dann ist die Frage: Welche Serie? Ich habe die MAX II ins Auge gefasst. Oder sollte ich die neueren MAX V verwenden? Oder doch ein FPGA oder gar ICs anderer Herstelle?! Ich bin für jegliche Tips dankbar! Grüße Sascha
Sascha W. schrieb: > variable Zeitsteuereinheit Wie genau muss es denn werden (Jitter, Zeitauflösung)? Und wieviele Kanäle sollen es werden? Im Prinzip willst Du doch sowas bauen, oder? http://www.berkeleynucleonics.com/model-577 Duke
Sascha W. schrieb: > Meinem Verständnis nach ist ein CPLD besser für meine Aufgabe geeignet. > Die Taktfrequenz des Zählers von 100MHz sollte ja auch noch damit > machbar sein. Das kann jede Technik. > Oder hätte es Vorteile einen FPGA einzusetzen? Ich würde ein FPGA nehmen, und du wirst es auch brauchen, denn du brauchst da schon mal 256 Flipflops für die Register, dann noch den Zähler und zudem die Vergleicher. Das wird ein großes CPLD. > Und dann ist die Frage: Welche Serie? Lattice MachXO2. Single Supply, Interner Oszillator (wer weiß wofür man das noch brauchen könnte), ConfigFlash in Chip, also vom Handling wie ein CPLD, von den Möglichkeiten (Anzahl Flipflops) ein FPGA. > Oder doch ein FPGA oder gar ICs anderer Herstelle?! Für 20€ bekommst du einen neuen Programmer und für lau die Toolchain. Und es ist nicht schlecht, mal mit so einem kleinen überschaubaren Projekt über den Tellerrand rauszuschauen...
Sascha W. schrieb: > Es ist ein 32bit Zähler. Über eine einfache Schnittstelle zu einem > Mikrocontroller (A[0..3], D[0..16], WR) werden die Verzögerungszeiten > für die 8 Kanäle in 16 16bit-Register geladen Nur die grössten CPLDs haben 288 FlipFlops, also ein FPGA, da tut es schon ein kleines, du brauchst ja nur vielleicht 32 I/Os. > Altera-Baustein verwenden. Die Frage ist nur welcher?! > Eine andere Anforderung ist die Hand-Lötbarkeit, somit kommen keine > Chips in BGA-Gehäusen in Frage. Eigentlich lassen sich alle von Altera/Intel scheisse löten. Also ein Eval-Board.
Michael B. schrieb: > Eigentlich lassen sich alle von Altera/Intel scheisse löten. > Also ein Eval-Board. Wie gesagt: ein MachXO2 mit 100 oder 144 Pins als TQFP geht locker von Hand. Die Punktlandung schlechthin...
:
Bearbeitet durch Moderator
In überlege gerade mir auch so etwas ähnliches zu bauen ... Cplds sind zu klein wie Lothar schon schrieb, FPGAS hätte ich genug aber das einfachste wird wahrscheinlich sein, es mit einem STM32F446 zu realisieren. Der F446 besitzt 2*32Bit Counter mit interner 180Mhz und extern 90 MHz Takfrequenz. Jeder Counter hat 4 compare Register mit Ausgängen bis 90Mhz. Reload und compare register sind doppelt gepuffert und laden synchron zum Takt und lassen sich via DMA aus dem Ram umkonfigurieren. Damit kann jeder Kanal nicht nur eine Flanke generieren sondern beliebige Impulsfolgen. Dann gibt es auch noch ein Repeat Register. Evtl werde ich dahinter noch ein Cpld hängen um die Kanäle logisch zu verknüpfen zu können. Das müsste ich erstmal alles in ein FPGA kloppen und viel höher wird da die Taktfrequenz wahrscheinlich am Ende auch nicht werden. Ein Nucleo Board mit Programmer zum Testen kostet ja nicht mal 20€ und das kann ich mir gerade noch leisten ;-).
Danke für Eure Antworten! Duke: Ja, soetwas ähnliches soll es werden. Das CPLD oder FPGA übernimmt nur die grobe Verzögerung bis zu ~42s mit eben 10ns Auflösung. Die eigentlichen Trigger-Signale werden von ECL-Bausteinen bereitgestellt, die direkt vom 100MHz-Signal gespeist werden - Um Jitter zu minimieren. Die Feinauflösung übernimmt eine programmierbare Verzögerungsleitung im Signalpfad mit einer Auflösung von 10ps. Von diesen Kanälen sollten mindestens 8 vorhanden sein, besser 12 oder gar 16. -- Lothar: Du hast völlig recht, mein Projekt lädt tatsächlich zum herumstöbern ein, genug Zeit ist auch vorhanden. Ich habe halt schon mal mit einem Altera Cyclone III gespielt, aber wirklich nur gespielt, um mal einen FPGA angefasst zu haben. Das Board und Zubehör sind halt noch vorhanden, deshalb habe ich mich in diese Richtung orientiert. Wenn Du mir so frei heraus den Lattice MachXO2 und die passende Toolchain empfiehlst, werde ich ihn mir auf jeden Fall anschauen! Mit dem integrierten Flash ist er natürlich netter in der Handhabung als andere FPGAs die wenigstens noch einen externen Flash benötigen. -- Ich habe natürlich mit einem großen CPLD gerechnet, den EPM1270T144C3. Mit dem aktuellen Design sind 480 der 1270 logischen Elemente belegt (38%) und natürlich nur ein Bruchteil der Pins (ist ein 144-pinner mit 116 IO-Pins). Es soll ohnehin ein Einzelstück werden, strenge Kostenoptimierung ist nicht angesagt... Da eher Luft nach oben für zukünftige Modifikationen und Erweiterungen! Für mein hier vorliegendes Problem ist es also die Wahl zwischen einem großen CPLD oder einem kleinen FPGA - doch beide kämen durchaus in Frage? Da ich in diesem Gebiet absolut frisch bin, habe ich leider noch absolut gar kein Bauchgefühl was man wann einsetzt. Und rein von der logischen Abwägung her ist es ein "es geht mit beidem" - Mit einer Prise genereller Verunsicherung wegen der fehlenden Erfahrung. Wie im übrigen zu sehen klicke ich mir die Logik als Schaltplan zusammen. Ist das akzeptabel? Ausreichend für ein solches Vorhaben? Oder sollte ich doch VHDL pauken und direkt einsetzen? Weitere Vorschläge und Hinweise sind willkommen!
Sascha W. schrieb: > Für mein hier vorliegendes Problem ist es also die Wahl zwischen einem > großen CPLD oder einem kleinen FPGA - doch beide kämen durchaus in > Frage? Ja. So ist es. > Wie im übrigen zu sehen klicke ich mir die Logik als Schaltplan > zusammen. Ist das akzeptabel? Es ist eine Sackgasse. Du wirst den nie zum Test "mal kurz" irgendwohin portiert bekommen. Und dann lies dir mal den Beitrag "kruder Fehler bei FPGA-Programmierung (ISE WEBpack-Schematic)". Der gilt für die Schaltplaneingabe generell. > Oder sollte ich doch VHDL pauken und direkt einsetzen? Ja. Wie gesagt: das ist ein kleines schnuckeliges Projekt. Ideal zum Lernen.
Lothar M. schrieb: >> Eigentlich lassen sich alle von Altera/Intel scheisse löten. >> Also ein Eval-Board. > Wie gesagt: ein MachXO2 mit 100 oder 144 Pins als TQFP geht locker von > Hand. Seit wann kommt der MachXL von Altera ?
Michael B. schrieb: > Seit wann kommt der MachXL von Altera ? Es ist ein MachXO. Und du weißt sicher, wie ich das gemeint habe oder kannst es dir herleiten nachdem du den vorletzten Satz im allerersten Post des Threads gelesen hast.
:
Bearbeitet durch Moderator
Danke für Deine Hilfe Lothar! Du sagst mir was ich ja eigentlich schon gedacht habe, was das lernen von VHDL angeht... Und ja, stimmt, dieses Projekt ist wirklich eine gute Gelegenheit dafür! Ich habe mir in der Zwischenzeit die MachXO2 mal etwas angeschaut - Ja, doch, die sehen wirklich gut aus! Auch erstaunlich günstig... Und sie brauchen nicht einmal elendig viele Spannungen. Lattice Diamond lädt noch, den Download werde ich wohl noch abwarten und es anschließend installieren und einen kurzen Blick darauf werfen, doch dann ist's Zeit fürs Bett. Ich melde mich morgen bestimmt noch mit ein paar Fragen zürück. Grüße Sascha
Wenn du schon Quartus kennst und einen Altera Programmer hast, dann nimm doch ein Max10. Das sind im Prinzip Cyclone FPGAs mit integriertem Flash und 3.3V Speisung. Genau wie die MachXO2, nur von allem etwas mehr bei gleichem Preis (z.B. DSP Einheiten, teilweise ADCs). Gibt es auch im TQFP144 von 2k- bis 50k-LUTs! Andi
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.