Forum: FPGA, VHDL & Co. Abgrenzung zwischen GALs/CPLDs/FPGAs


von Markus (Gast)


Lesenswert?

Hi,

ich lese mich gerade in die Thematik ein und mußte feststellen, daß die
Unterscheidung zwischen diesen Logikfamilien nur anhand der internen
Strukturen getroffen wird, aber über deren praktischen Unterschiede
wird wenig geschrieben.

Für welche Anwendungen nimmt man denn einen GAL, einen CPLD und wo
einen FPGA? Mir ist klar, daß die Übergänge fließend sind und daß man
z.B. eine CPU natürlich auch mit einzelnen TTL-ICs realisieren kann
(http://mycpu.mikrocontroller.net/). Mir war aber z.B. bis vor kurzem
nicht klar, daß man mit einem GAL auch einen Zähler realisieren kann.
Opencores.org kenne ich, aber diese Projekte sind weitgehend auf FPGAs
ausgelegt, auch wenn da in einigen Fällen auch ein CPLD gereicht
hätte.

Markus

von Camel (Gast)


Lesenswert?

CPLDs haben gröbere Strukturen als FPGAs, d.h. Makrozellen die wiederum
zu Logikblöcken zusammengefasst sind. Damit haben sie niedrigere und
vorhersagbare Timings und sind damit besser für schnelle Statemachines
und Adresskodierungen geeignet.

von Thomas (Gast)


Lesenswert?


von Markus (Gast)


Lesenswert?

Ich habe mich wohl etwas unklar ausgedrückt. Mir ist schon klar, worin
die internen Unterschiede liegen, aber ich kann daraus keine
Schlußfolgerungen bezüglich realen Projekten ziehen. Welchen Baustein
nimmt man denn typischerweise wofür?

Wenn man im Internet rumsucht, dann ist DIE Standardanwendung für CPLDs
der Adresszähler für Logikanalysatoren. Da muß es doch mehr sinnvolle
Anwendungsfälle geben?

Was ich suche ist eine (natürlich sehr grobe) Unterscheidung der
Logikfamilien bezüglich Anwendungsfall, nicht bezüglich interner
Strukturen.

Markus

von Peter D. (peda)


Lesenswert?

CPLDs sind da vorzuziehen, wo es auf geringste Stromaufnahme (Xilinx
Coolrunner) ankommt oder das sie sofort da sind und keine externen
Komponenten (EEPROM) benötigen.
Auch ist ein Software-Schutz einfacher, da das Programm ja nicht aus
einem externen EEPROM ausgelesen werden muß.

CPLDs nimmt man oft für Adreßdekodierung, bei FPGAs hätte man da das
Henne-Ei-Problem (CPU arbeitet nicht, weil der Adreßdekoder noch nicht
funktioniert, Adreßdekoder arbeitet nicht, weil die CPU ihn noch nicht
mit dem Programm gefüttert hat).


FPGAs sind bezüglich arithmetischer Funktionen effektiver, d.h. man
kann damit leichter CPU-Cores nachbilden.

Ansonsten sind die Unterschiede sehr gering, d.h. für die meisten
Anwendungen ist beides geeignet.


Ich benutze CPLDs z.B. als I2C-Interface, HPIB-Interface, schneller
Frequenzzähler, Adreßdekoder+SRAM-Interface+Bootloader (mit Truth-table
als BootPROM).


Peter

von Jörn G (Gast)


Lesenswert?

Im FPGA hast du meistens Komponenten wie DualRAM oder Multiplier, die du
nicht erst aus Gattern basteln mußt, sondern die sofort hocheffektiv
arbeiten.

Was Camel geschrieben hat und du sofort abgetan ist schon ganz richtig
als Antwort auf deine Frage. Wenn dir das Prinzip wirklich klar ist,
was die internen Unterschiede ausmacht, dann sollte dir auch die
Anwendung klar sein!
Wenn nicht, dann prüf dein Wissen lieber nochmal.

Schnelle parallel Vorgänge, die nicht extrem komplex sind, sind gut für
FPGAs. Hast du sehr komplexe StatemMachines, oder benötigst du internen
RAM ist ein FPGA wohl besser.

Prinzipiell merkst du schon, was du brauchst, wenn du erst das Projekt
ein wenig geplant und strukturiert hast.

Manchmal braucht man auch beides.

Ich finde die Abgrenzung DSP <-> FPGA heutzutage eigentlich viel
schwieriger.

jörn

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.