Hallo alle miteinander ... Möcht schlichtweg mal in die Runde fragen, welche Mittelchen verwendet werden, um die Zahl der nötigen I/O-Pins des Projektes auf die des Controllers zu senken. Sollen beispielsweise ein LCD Display angesteuert und eine HEX-Matrix abgefragt werden, so ist es ja unnötig einen "High-End" Controller zu verwenden, nur weil dieser mehr Pins aufweist. ODER 16 Taster können mittels Schaltnetz, EEPROM, GAL, RAM oder wwi hexadezimal codiert werden, so dass nur 4 Pins am Controller nötig sind. ODER Stichwort SPI- und UART-Schnittstelle. Wie können diese zur Pin-Reduzierung verwendet werden??? MfG Mü
LCD Display: I2C Controller von Philips verwenden, braucht nur 2 Pins... 16 Tasten kann man mittels Multiplex abfragen, 2x8 Matrix, so dass man nur 2 Leitungen am Controller braucht, da die 8 sowiso (z.B. Datenbus) zur Verfügung stehen.
Effektive Variante wäre ein Shift-Register, z.B. das 74hct594/595 welches sogar ein Output-Latch enthält bzw. 74hct597, was ein Input-Latch hat. Oder die einfachen Shift-Register (74hct164/165/166) bei Bedarf in Kombination mit einem separaten Latch. Oder gleich ein CPLD, da kann dann die ganze Logik rein. Es gibt auch spezielle I/O-Expander mit z.B. SPI, habe ich aber noch nicht benutzt.
Hi, entweder nutzt man einen teuren I/O Expander PC8574 oder man nutzt billige SPI Schieberegister (74HC595 / 74HC164). Dieses Problem solltest du aber auch mit der Suchfunktion hier im Forum geloest bekommen. Manchmal lohnt es sich auch in Wikki reinzuschaun. Mfg Dirk
von Benedikt: "16 Tasten kann man mittels Multiplex abfragen, 2x8 Matrix, so dass man nur 2 Leitungen am Controller braucht" Und die Adresse das Multiplexers??? Wird die dann nicht vom µC generiert??? Schliesslich muss er doch wissen welche Taste gedrückt wurde. Oder bin ich auf dem falschen Kurs??? mfg mü
Wenn man sowiso einen 8bit Datenbus hat, legt man diese Ausgänge der Reihe nach an Masse, und schaut welche von den beiden Eingängen auf Low ist (dann ist ne Taste gedrückt)
Hallo Leute, könnte mir vielleicht in diesem Sinne jemand mal erklären, was ein GAL CLPD FPGA ist? Ich habe schon im Wiki nachgeschaut, aber irgendwie fehlt mir da jetzt etwas an Informationen. Was können die Dinger, wie programmiert man sie (Assembler - C - Logik?) und wie verwende ich sie in Schaltungen? Gruß Marcus
Hallo, ein GAL besitzt mehrere Eingänge und meißtens genauso viele Ausgänge. Den Ausgängen lassen sich einfache logische Verknüpfungen der Eingänge zuweisen (AND, OR, NOT). Diese Bausteine haben einen sehr hohen Stromverbrauch. Für die Programmierung gibt es einfache und kleine GAL-Assembler, benötigt wird außerdem spezielle Hardware. Die CPLD's sind die Nachfolger der GAL's. Sie bestehen aus einzelnen Funktionsblöcken, die wiederum beinhalten ein Flipflop und massenhaft Logic. Motivation für diese Funktionsblöcke war, daß man die Durchlaufzeit unabhängig von den einzelnen logischen Verknüpfungen machen wollte. CPLD's können sehr komplex sein, mehrere tausend nutzbare Gatter sind kein Problem. Sie sind sehr schnell und unterstützen mehrere Stromsparmodi. Programmieren kann man sie sehr einfach mit grafischen Werkzeugen, oder aber mit VHDL, einer Hardwarebeschreibungssprache. Für beides werden von den unterschiedlichen Herstellern i. d. R. kostenlose Tools angeboten (z.B. Webpack on Xilinx) Viele CPLDs besitzen eine sogenannte JTAG-Schnittstelle, die einfach an den Parallelport angeschlossen werden kann. Mit CPLDs lässt sich alles mögliche machen, Adresskodierung für externe RAMs, Realisierung großer Zähler usw. FPGA sind noch komplexer, sie eignen sich hervorragend zur Umsetzung von state machines, mit FPGAs lassen sich komplette Prozessoren realisieren. Programmiert werden sie oft mit den gleichen Tools wie die CPLDs, ist natürlich herstellerabhängig. Mehr weis ich darüber nicht. Fazit: GALs vermeiden, CPLDs sind einfach, leistungsstark und billig. Ruhig mal bei Xilinx, Altera oder Lattice auf der Homepage schauen, die haben massenhaft Infos darüber. Auch einfach mal die Software ausprobieren, aber sei gewarnt: das Webpack von Xilinx umfasst komplett mit Simulator schonmal 800MB (!!). Soviel mal meine bisherigen Erkenntnisse, habe kürzlich auch erst mein erstes rojekt mit einem CPLD realisiert (bzw. bin noch dabei). Gruß Thorsten
Hi GAL sind programmierebare Logikbausteine mit einer konfigurierbaren Eingangsmatrix und einem FF (bzw. einer sog. Makrozelle die etwas mehr kann als ein normales FF) an jedem Ausgang. Die werden üblicherweise in ABEL oder ähnlichem programmiert. Die Konfiguration der Chips wird über eine EEPROM Technik realisiert und sie sind damit direkt nach dem Einschalten bereit. CPLD's sind nichts anderes als etwas komplexere GAL's mit mehr Makrozellen. Programmierung wohl in VHDL oder Verilog. Auch hier wieder EEPROM-Technik. Meist ist bei 512 Makrozellen Schluß. Man kann also max. Schaltungen mit 512 Flip-Flops realisieren. FPGA's sind anders aufgebaut. Sie bestehen aus einer Matrix aus identischen Logikblocks (sog. CLB Configurable Logic Block) welche meist aus ein oder mehrere Lock-Up-Tabellen und ein bis zwei FF bestehen. Die Ein-und Ausgänge dieser CLB's lassen sich über die Matrix an andere CLB's heranführen und so kann man dann Logik aufbauen. Große FPGA's haben tausende dieser CLB's. Damit lassen sich wesentlich größere Schaltungen aufbauen. Ein großer FPGA kann einen AVR (ohne Flash) problemlos "simulieren". Konfiguriert werden FPGA's meist per SRAM d.h. beim Einschalten müssen sie ihr "Programm" irgendwoher beziehen. Matthias
Für ein 12 Tasten Feld hab ich mal eine etwas "krumme" Methode verwendet um nur einen (A/D) Pin zu verbrauchen. 12 Widerstände in Reihe geschaltet. Den ersten an Plus, den letzen an Masse. Zwischen den einzelnen Widerständen wurde dann mit Tasten die Spannung (jede Taste einen Widerstand) abgenommen und der gemeinsame Anschluss des Tastenfelds dann an einen A/D Eingang. Je nach anliegender Spannung weiß man dann welche Taste gedrückt ist. Damit die Methode zuverlässig funktioniert muss mann aber mindestens drei A/D Werten einer Taste zuordnen. Die Methode hab ich übrigens vom C-Control Application Board abgeschaut.
Vervollständigung meinerseits zur Namensgebung: GAL = SPLD = Simple Programmable Logic Device CPLD = Complex Programmable Logic Device FPGA = Field Programmable Gate Array Jedoch nochmal ne Frage zum Fazit von Thorsten ... Wieso CPLDs den GALs vorziehen??? Oft hat man doch nur ein paar Kleinigkeiten zu realisieren, so dass die GALs vollkommen ausreichend sind. Und ich mein das auch im physikalischen Sinne (Gehäuse). Oder gibts CPLDs auch in GAL-Größe. Wenn ja, so sag wo (biiiiitte, am besten gleich mit Link), ich kenn nur die Dinger, die mit mindestens 84 Pins daher kommen (ALTERA). Bezüglich der Stromversorgung muss ich ehrlich sagen, hab ich mir noch nie groß gedanken gemacht. Ich benutze die GALs von Lattice. Wie stehen die in der Sache im Vergleich zu anderen???
Ich möchte jetzt zum Betreff "zu wenig pins !!!" neben der orginären
Fragestellung und der damit ÜBERHAUPT nicht gekoppelten Fragestellung
"was ist ein GAL" noch ein ganz neues Thema in diesen Therad
einbringen :
Wird es die Menschheit schaffen, in diesem Jahrzehnt eien Reise zum
Mars zustande zu bringen ??"
>> Nein, ich will nur drauf hinweisen, daß es total Panne von "Marcus
Maul" ist, "in deisem Sinne" irgend ein zusammenhangloses Ding in
die Runde zu schmeissen. Der Nutzen erschliesst sich mir überhaupt
nicht. Das kostet nix, einfach einen neuen Thread aufzumachen !!!!
Was sich mir nun wiederum nicht erschließt, was denn eine mögliche bemannte Marsmission in diesem Jahrzehnt mit zu "zu wenig pins" zu tun haben soll. Außer vielleicht, daß sie daran scheitern könnte, das die eingesetzten Mikrocontroller zu wenig Port-Pins haben. Oder die Besatzung hat vergessen, genügend Pins (Kegel fürs Bowling) einzupack, und sich deshalb auf der langen Reise dann zu Tode langweilt. Den Zusammenhang von GAL,CPLD und FPGA zur Porterweiterung kann ich da schon eher erkennen, zumal genau diese ja auch als mögliche Lösung vorgeschlagen wurden. Wenn ich also ein ähnliches Problem habe (Porterweiterung), aber nicht genau weiß, was denn nun die o.g. Bauelemente genau sind, finde ich eine entsprechende Frage in genau diesem Thread durchaus angebracht ("...in diesem Sinne jemand mal erklären, was ein GAL CLPD FPGA ist...") Denn wenn ich in einem neuen Thread einfach so frage, was denn eigentlich GAL/CPLD/FPGA ist, könnte es mir passieren, das dann anworten kommen wie "Die Glasgugel sind heute alle defekt" "Hoppla, ist mir doch gerade meine Glaskugel runtergefallen" "Keine Schaltung, kein Programm, keine Antwort" "Weiß Du überhaupt wo das heiße Ende des Lötkolben ist?" usw... Gruß Ingo PS.: Besten Dank für die Antworten zum Thema "Was ist GAL/CPLD/FPGA"! War mir auch nicht so ganz klar, bei FPGA dachte ich immer, das sei eine Gehäusebauform :-)
PGAs sind "pin grid arrays" wie sie eigentlich alle gesockelten Prozessoren aufweisen (z.B. FCPGA -> flip chip pin grid array)
Aha, wieder was dazu gelernt, danke! Meine Assoziation FPGA -> Gehäuse kam wohl daher, das man z.B. bei CPUs im Sockel 478 öft den Begriff "mPGA"- oder "mPGA2"-Gehäuse lesen kann. Und FCPGA ist ja auch nicht soweit von FPGA entfernt :-) Beim FPGA dachte ich, es könnte ja z.B. ein "Flat Pin Grid Array" oder sowas sein. Wie das F in TQFT (Thin Quad Flat Pack)
FPGA = fiel programmable gate array. Im Unterschied zu ASICs kann diese also der Anwender programmieren. Ein FPGA besteht also aus simplen Gattern, die man verschalten muß. Um eine Macrozelle eines CPLDs nachzubilden, können dabei 100 Gatter oder mehr nötig sein. Durch die notwendige Reihenschaltung von Gattern können sich unterschiedliche Laufzeiten ergeben, bei einem FPGA ist daher immer eine Laufzeitüberprüfung notwendig und zwar nach jedem Compilerdurchlauf. Bei CPLDs sind dagegen die Durchlaufzeiten einer Macrozelle fest definiert. D.h. man muß nur einmal prüfen, obs geht. Bezüglich der Gleichungseingabe sind beide ähnlich, aber der Compiler für einen FPGA muß ne Menge mehr rechnen. Peter
Hi @Peter FPGA's sind keineswegs nur ein Feld aus Gattern sondern genau das was ich oben schrieb: Eine Matrix aus sog. CLB's. Ein CLB besteht dabei aus mindestens einer LUT (Look Up Table) mit n Eingängen, einem FF und etwas Gemüse außen rum. Matthias
Hallo Leute, ich muß jetzt aber auch einmal ein Lob an alle hier im Forum loswerden. Erstmal danke für die bisherigen guten Antworten - egal in welchem Beitrag - zudem finde ich das Klima hier immer wieder klasse. So leid es mir jetzt tut, aber die folgende Begründung möchte ich doch loswerden. @Martin S.: >> Nein, ich will nur drauf hinweisen, daß es total Panne von "Marcus Maul" ist, "in deisem Sinne" irgend ein zusammenhangloses Ding in die Runde zu schmeissen. Der Nutzen erschliesst sich mir überhaupt nicht. Das kostet nix, einfach einen neuen Thread aufzumachen !!!! Neuen Thread aufmachen hab ich mir überlegt, aber dann solltest Du mir auch die Frage beantworten können, wie denn ein andere Leser, der wie ich gerne von dem dutzen 74xx574 74XX375 herunterkommen möchte, den Gedankenblitz von Portpin erweitern und GALs/CPGA hinbekommt, wenn er denn nicht einmal weiß, was sich hinter diesen kleinen Bausteinen versteckt? Deshalb habe ich ja ein Memoryinterface mit schlappen 5 74HC375 gebastelt - leider tuts das aufgrund des Timings nicht. GALS hätten mir da wirklich helfen können und werden das jetzt auch. Meine bisherigen "Pinerweiterungen" beruhen leider auf diesen Baustein und pro 8Ports benötige ich dann immer min. 2 Pins. Bei 16 Pins 10 Pins usw. Macht keine wirklich große Einsparung. Gals /CPLG sind eventuell nicht gerade das Non plus ultra für alle Probleme, aber sie scheinen schon eine gute Hilfe zu sein. Gruß
Vorne weg: es gibt zwar CPGAs noch CPLGs, die haben aber nichts mit programmierbarer Logik zu tun. Mittlerweile sind CPLDs auf dem Markt, die an die leistungsmäßig an die FPGAs der unteren Klasse heranreichen, besonders was den Takt betrifft. Ich denke da nur an die Xilinx CoolRunner2 Serie oder den Altera Max II. Mal davon abgesehen ist die Entwicklungszeit erheblich kürzer.
Hi warum ist die Entwicklungszeit für einen CPLD kürzer als die für ein FPGA mit der identischen Funktion? Der VHDL-Code dürfte sich nicht unterscheiden. Den Rest macht der Compiler. Matthias
> warum ist die Entwicklungszeit für einen CPLD kürzer als die für ein > FPGA mit der identischen Funktion? CPLD sind gut simulierbar, da die Laufzeiten bekannt sind, Schaltungen in FPGAs sind kaum vorher simulierbar, da die Laufzeiten davon abhängen an welcher Stelle im FPGA die Logic platziert wird - ausserdem können FPGAs, CPLDS in der Komplexitität um Längen abhängen, hundertausende, oder gar Millionen Gatter(-equivalente) sind schnell zur Hand. Wer FPGAs nutzt hat ausserdem meistens etwas komplexeres vor, als jemand der ne CPLD nutzt. ;-) > Der VHDL-Code dürfte sich nicht > unterscheiden. Kommt darauf an, was man machen will. FPGA haben meistens sehr viele interessante Funktionen an Board (Dualram, ...) die man auch nutzen sollte und nicht selber mit FlipFlops basteln. > Den Rest macht der Compiler. Compiler? Synthetisierer wohl eher. cu joern
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.