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