Forum: Mikrocontroller und Digitale Elektronik zu wenig pins !!!


von MikeMü (Gast)


Lesenswert?

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ü

von Benedikt (Gast)


Lesenswert?

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.

von wolli (Gast)


Lesenswert?

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.

von Dirk (Gast)


Lesenswert?

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 MikeMü (Gast)


Lesenswert?

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ü

von Benedikt (Gast)


Lesenswert?

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)

von Marcus Maul (Gast)


Lesenswert?

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

von Thorsten (Gast)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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

von Malte Marwedel (Gast)


Lesenswert?

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.

von MikeMü (Gast)


Lesenswert?

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

von Martin S. (Gast)


Lesenswert?

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

von Ingo Henze (Gast)


Lesenswert?

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 :-)

von wolli (Gast)


Lesenswert?

PGAs sind "pin grid arrays" wie sie eigentlich alle gesockelten
Prozessoren aufweisen (z.B. FCPGA -> flip chip pin grid array)

von Ingo Henze (Gast)


Lesenswert?

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)

von Peter D. (peda)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

FPGA = field programmable gate array.

von Matthias (Gast)


Lesenswert?

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

von Marcus Maul (Gast)


Lesenswert?

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ß

von wolli (Gast)


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

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

von Joern Gerhard (Gast)


Lesenswert?

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