Forum: FPGA, VHDL & Co. CPLD oder FPGA für eine konkrete Anwendung?


von Sascha W. (arno_nyhm)


Angehängte Dateien:

Lesenswert?

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

von Duke Scarring (Gast)


Lesenswert?

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

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


Lesenswert?

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...

von Michael B. (laberkopp)


Lesenswert?

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.

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


Lesenswert?

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
von Hans-Georg L. (h-g-l)


Lesenswert?

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 ;-).

von Sascha W. (arno_nyhm)


Lesenswert?

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!

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


Lesenswert?

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.

von Michael B. (laberkopp)


Lesenswert?

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 ?

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


Lesenswert?

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
von Sascha W. (arno_nyhm)


Lesenswert?

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

von Andi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.