Forum: FPGA, VHDL & Co. Was ist FPGA?


von F. K. (crack)


Lesenswert?

Hallo,

ich soll folgende Punkte in ein nicht allzu langes Referat über FPGA's 
einbringen:

------------
-  Was ist FPGA?
-  Hintergrund(Architektur), VHDL
-  Wie, Wofür und Wann setzt man sie ein?
-  Vergleich von DSP, uC, FPGA
-------------

Da ich überhaupt keine Ahnung von FPGA's hatte habe ich mich vorher im 
Internet eingelesen.

Also FPGA = "Field Programmable Gate Array" und bedeutet übersetzt 
"Feld-programmierbare gatter-felder"? Aber gibt nicht wirklich einen 
Sinn.

So ein FPGA besteht ja aus mehreren Logikschaltungen, also aus 
Flip-Flops und kombinatorische Schaltungen.

Und diese Schaltungen kann man nun mittels Softwaresprache(z.B. VHDL) 
ein- und ausschalten, richtig?

Ist das im groben ein FPGA? Diese Informationen konnte ich mir aus dem 
Internet holen. Der Großteil ist nicht wirklich verständlich. Ich müsst 
es bildlich sehen, um es verstehen zu können, denke ich.

Kennt wer einen guten Guide, wo FPGA sehr einfach beschrieben werden 
bitte?

PS: Aso und das ist jetzt keine Auffordung meine Referat zu machen, ich 
bauche nur Hilfestellungen bitte!

Danke!

mfg

FK

: Bearbeitet durch User
von Stefan (Gast)


Lesenswert?

Hab ich auch noch nie gehört. Schau doch mal bei Wikipedia oder hier in 
den Artikeln. Vielleicht ist da was dabei...
S.

von Quack (Gast)


Lesenswert?

In deinem eigenen Post ist FPGA mehrfach klug verlinkt - das hat das 
Forum freundlicherweise fuer dich getan.

von Christoph Z. (christophz)


Lesenswert?

F. K. schrieb:
> Ist das im groben ein FPGA? Diese Informationen konnte ich mir aus dem
> Internet holen. Der Großteil ist nicht wirklich verständlich. Ich müsst
> es bildlich sehen, um es verstehen zu können, denke ich.

Ich denke, da lohnt sich mal ein Blick in das Datenblatt eines FPGAs, da 
sind die Grundstrukturen (eher grob) beschrieben inkl. Blockdiagrammen. 
Denke das hilft, die langen Texte besser zu verstehen.

Schau doch mal im Datenblatt des MachXO nach, das ist ein ganz kleiner 
FPGA, was der Verständlichkeit zu gute kommt (Ich empfehle die Seiten 7 
bis 12):
http://www.latticesemi.com/~/media/Documents/DataSheets/MachXO23/MachXOFamilyDataSheet.pdf

von 12V DC (Gast)


Lesenswert?

Also du kannst dir im groben einen FPGA so vorstellen: Da drin sind 
'Weichen', die gestellt werden, in dem man sie programmiert. Daraus 
ergibt sich dann eine bestimmte 'Schaltung'.

Ich finde in der aktuellen c't Hacks sind die sehr gut beschrieben(Mit 
beispiel etc.)
Wenn du grad keine Lust hast zur nächsten Tanke zu laufen, wie bereits 
gesagt: FPGA <-- ANKLICKEN!!
;-)

von F. K. (crack)


Lesenswert?

Hm ja ok ich habe mir das ja schon durchgelesen, also FPGA<<<-----.

Also besteht ein FPGA aus FlipFlops und kombinatorischen 
Logikschaltungen? Das habe ich ja oben erwähnt.

Ich lese den Text, verstehe jedoch folgenden Satz nicht:
"Diese sind entweder Verknüpfungen verschiedener Logikgatter oder sog. 
LUTs, die über elektr. Schalter entsprechend der vom Anwender 
gewünschten Funktion miteinander geknüpft werden können."

Wenn LUT der Schalter bzw. die Weiche ist, die Logikschaltungen 
verbindet, warum vergleicht man dann "Verschiedene Logikgatter" mit 
"LUTs"? Also Gatter mit Weiche?

Das verstehe ich noch net so recht.

von 12V DC (Gast)


Lesenswert?

Also soweit ich das verstanden habe sind LUT's(Look up table) die 
Eingangsstufen zu den Logik Blöcken. Sie bereiten die Daten sozusagen 
vor.
>Lookup-Tabellen (LUT) bzw. Umsetzungstabellen werden in der Informatik und >in 
der Digitaltechnik verwendet, um Informationen statisch zu definieren >und diese 
zur Laufzeit des Programms - zur Vermeidung aufwändiger >Berechnungen oder hohen 
Speicherverbrauchs - zu benutzen. wikipedia

von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb:
> Hm ja ok ich habe mir das ja schon durchgelesen, also FPGA<<<-----.
>
> Also besteht ein FPGA aus FlipFlops und kombinatorischen
> Logikschaltungen? Das habe ich ja oben erwähnt.
>
> Ich lese den Text, verstehe jedoch folgenden Satz nicht:
> "Diese sind entweder Verknüpfungen verschiedener Logikgatter oder sog.
> LUTs, die über elektr. Schalter entsprechend der vom Anwender
> gewünschten Funktion miteinander geknüpft werden können."
>
> Wenn LUT der Schalter bzw. die Weiche ist, die Logikschaltungen
> verbindet, warum vergleicht man dann "Verschiedene Logikgatter" mit
> "LUTs"? Also Gatter mit Weiche?
>
> Das verstehe ich noch net so recht.

"LUT" ist die Abkürzung für "Look-Up-Table". Man kann sie sich als 
kleines RAM vorstellen, bei den die Adressleitungen die Eingangssignale 
und die Datenausgänge die Ausgangssignale einer logischen Schaltung aus 
Gattern sind.

Im wesentlichen besteht nämlich kein Unterschied ob eine logische 
Funktion, wie z.B. das UND, dessen Wahrheisttabelle ich hier mal kurz 
zeige:

A B O
0 0 0
0 1 0
1 0 0
1 1 0

nun tatsächlich, d.h. physisch durch eine Transistorschaltung, die eine 
UND-Gatter egibt, realisiert wird oder durch einen Speicher, dessen 
Adressen den Ausgangswert eines UND enthalten. Im folgenden zeige ich 
das mal als RAM mit den Adressen 0 bis 3.

Adresse  A  B  O
0        0  0  0
1        0  1  0
2        1  0  0
3        1  1  1

Deswegen sind LUTs zu Gatterschaltungen äquivalent.

von Bitflüsterer (Gast)


Lesenswert?

Die nächstfolgende Frage wäre dann, warum man nun überhaupt LUTs 
anstelle von Gattern nimmt.

Zunächst gibt es bei zwei Eingängen und einem Ausgang, insgesamt 16 
verschiedene Möglichkeiten von logischen Verknüpfungen. Darunter sind 
recht primitive Verknüpfungen, wie ein konstantes Signal und die 
Identität, aber eben auch UND, ODER, XOR, NAND, NXOR etcpp.

Versuche einmal, wenigstens ansatzweise eine Schaltung zu entwerfen, die 
alle 16 Möglichkeiten realisiert. Dann wirst Du sehen, dass recht 
umfangreich wird. Das ist der erste Grund.

Logisch gesehen, brauchst Du vier Bits um aus einer der 16 Möglichkeiten 
auszuwählen. Die Zahl von Bits ist aber "zufällig" auch genau die Anzahl 
Bits, die ein RAM mit 4 Adresse und einem Bit Speicher eben speichern 
kann. Der Aufwand an Speicher ist also bei der Gatterschaltung gleich 
wie bei der LUT (RAM). Das ist der zweite Grund.

Weiter aber, brauchst Du bei der Variante aus Gattern eine zusätzliche 
Schaltung, im wesentlichen Multiplexer und Decoder, die je nach der, aus 
16 Möglichkeiten, gewählten Variante der logischen Verknüpfung, 
angesteuert werden. Diese Schaltung ist, obwohl nicht eigentlich 
kompliziert, recht umfangreich. Das ist der dritte Grund.

von Bitflüsterer (Gast)


Lesenswert?

Ooops. Bei der Wahrheitstabelle des UND ist mir doch tatsächlich ein 
Lapsus passiert. Sie muss natürlich

A B O
0 0 0
0 1 0
1 0 0
1 1 1

sein.

Sorry.

von Benny the Cat (Gast)


Lesenswert?

Wenn dein Englisch einigermaßen solide ist, lohnt sich dieses Video:
https://www.youtube.com/watch?v=gUsHwi4M4xE
Der typ erklärt ausführlich das Prinzip eines FPGA's ohne eine einzige 
Zeile Code, also sehr theoretisch.
Letztens war in der C'T Hacks auch ein Special über FPGA's, in dem auch 
zwei Einsteiger-Boards mitsamt programmier(genauer: Design- )anleitung 
für ein erstes Helloworld mit FPGA's, also sehr praktisch.
Diese beiden Quellen sollten schonmal für ein gutes Grundverständnis 
sorgen.

Grüße

von Lattice User (Gast)


Lesenswert?

Bitflüsterer schrieb:

>
> Weiter aber, brauchst Du bei der Variante aus Gattern eine zusätzliche
> Schaltung, im wesentlichen Multiplexer und Decoder, die je nach der, aus
> 16 Möglichkeiten, gewählten Variante der logischen Verknüpfung,
> angesteuert werden. Diese Schaltung ist, obwohl nicht eigentlich
> kompliziert, recht umfangreich. Das ist der dritte Grund.

Die Igloo Nano von Microsemi/Actel sind so gebaut. Allerdings nur mit 3 
Inputs. Vorteil: Instant on.

von Benny the Cat (Gast)


Lesenswert?

Ebenfalls ein gutes Video, zwar auch auf Englisch, aber gut 
verständlich, da von einem Deutschen vorgetragen:
https://www.youtube.com/watch?v=Er9luiBa32k
Der Referend redet zwar teilweise zu viel über seine HDL-Eigenkreation, 
gibt aber z.B. einen guten Überblick, für welche Anwendung welche 
Hardware geeignet ist.

von F. K. (crack)


Lesenswert?

Bitflüsterer schrieb:
> Man kann sie sich als
> kleines RAM vorstellen, bei den die Adressleitungen die Eingangssignale
> und die Datenausgänge die Ausgangssignale einer logischen Schaltung aus
> Gattern sind.

Also ADRESSLEITUNGEN --> RAM --> DATENAUSGANG. Richtig? Das ist ein 
Speicher von vielem im FPGA, oder?

Bitflüsterer schrieb:
> Im folgenden zeige ich
> das mal als RAM mit den Adressen 0 bis 3.
>
> Adresse  A  B  O
> 0        0  0  0
> 1        0  1  0
> 2        1  0  0
> 3        1  1  1

Die Adressenleitung ist eig. in dem Fall eine 2-Bit-Leitung die A,B 
repräsentiert, richtig?

Bitflüsterer schrieb:
> Zunächst gibt es bei zwei Eingängen und einem Ausgang, insgesamt 16
> verschiedene Möglichkeiten von logischen Verknüpfungen.

Wie kommst du auf 16. Also 2^4 = 16, aber warum 4? Weil es 4 Adressen 
gibt? Aber das verstehe ich dann nicht. Welche Möglichkeiten dann?


Bitflüsterer schrieb:
> Versuche einmal, wenigstens ansatzweise eine Schaltung zu entwerfen, die
> alle 16 Möglichkeiten realisiert. Dann wirst Du sehen, dass recht
> umfangreich wird. Das ist der erste Grund.

1. Grund: Schaltungen zu aufwendig. Mit Speicher einfacher Realisierbar. 
--> Richtig?


Bitflüsterer schrieb:
> Logisch gesehen, brauchst Du vier Bits um aus einer der 16 Möglichkeiten
> auszuwählen. Die Zahl von Bits ist aber "zufällig" auch genau die Anzahl
> Bits, die ein RAM mit 4 Adresse und einem Bit Speicher eben speichern
> kann. Der Aufwand an Speicher ist also bei der Gatterschaltung gleich
> wie bei der LUT (RAM).

Ja, von wo holt man die 4Bits her? Wie kommst du auf diese. Warum ist 
der Aufwand an Speicher und bei Gatterschaltungen gleich? Und warum ist 
das dann ein Grund, Speicher zu nehmen?


Bitflüsterer schrieb:
> Weiter aber, brauchst Du bei der Variante aus Gattern eine zusätzliche
> Schaltung, im wesentlichen Multiplexer und Decoder, die je nach der, aus
> 16 Möglichkeiten, gewählten Variante der logischen Verknüpfung,
> angesteuert werden. Diese Schaltung ist, obwohl nicht eigentlich
> kompliziert, recht umfangreich.

Vielleicht verstehe ich es, wenn ich weiß wie du genau auf 16 
Möglichkeiten kommst, besser.

Hm warum brauche ich da, was zwischen den Dingen auswählt. Ich denke ich 
habe dein Bsp noch nicht so recht begriffen. Warum braucht man das dann 
bei Speichern nicht?

von Christian R. (supachris)


Lesenswert?

F. K. schrieb:
> Wie kommst du auf 16. Also 2^4 = 16, aber warum 4? Weil es 4 Adressen
> gibt? Aber das verstehe ich dann nicht. Welche Möglichkeiten dann?

Die LUT hat 4 "Adress-Eingänge" und in der LUT ist für jede der 16 
möglichen Adressen der Zustand des einen Ausgangs durch die 
Programmierung hinterlegt. Daher kann man mit so einer LUT viel mehr 
machen als mit einem fest verdrahteten 4er UND Gatter oder so.

von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb:

Ich bin gerade vom Nachbarn auf drei Bier eingeladen worden und daher 
ein wenig - ähem - gehandicapt. Aber ich versuche mal, ob ich noch was 
vernünftiges zustande bekomme.

> Bitflüsterer schrieb:
>> Man kann sie sich als
>> kleines RAM vorstellen, bei den die Adressleitungen die Eingangssignale
>> und die Datenausgänge die Ausgangssignale einer logischen Schaltung aus
>> Gattern sind.
>
> Also ADRESSLEITUNGEN --> RAM --> DATENAUSGANG. Richtig?

Richtig!

> Das ist ein
> Speicher von vielem im FPGA, oder?
Schon. Nur besteht ein qualitativer Unterschied. Es gibt Speicher, der 
die Konfiguration enthält. Dazu muss man auch den Inhalt der LUT zählen. 
Und solchen der während der Laufzeit Daten enthält.
Abgesehen davon, kann man das so sagen.

> Bitflüsterer schrieb:
>> Im folgenden zeige ich
>> das mal als RAM mit den Adressen 0 bis 3.
>>
>> Adresse  A  B  O
>> 0        0  0  0
>> 1        0  1  0
>> 2        1  0  0
>> 3        1  1  1
>
> Die Adressenleitung ist eig. in dem Fall eine 2-Bit-Leitung die A,B
> repräsentiert, richtig?

Korrekt.

> Bitflüsterer schrieb:
>> Zunächst gibt es bei zwei Eingängen und einem Ausgang, insgesamt 16
>> verschiedene Möglichkeiten von logischen Verknüpfungen.
>
> Wie kommst du auf 16. Also 2^4 = 16, aber warum 4? Weil es 4 Adressen
> gibt? Aber das verstehe ich dann nicht. Welche Möglichkeiten dann?

Indirekt ja. Es gibt vier verschiedene Ergebnisse weil es vier Adressen 
gibt und die gibt es, weil es zwei Inputs gibt. (Das natürlich nur 
prinzipiell. Je nach Hersteller und Typ können LUTs unterschiedliche 
Anzahlen von Inputs haben. Meist enthalten die auch noch ein oder 
mehrere Flip-Flops).

Konstant 0
A B Out
0 0 0
0 1 0
1 0 0
1 1 0

A und B
A B Out
0 0 0
0 1 0
1 0 0
1 1 1

A und not B
A B Out
0 0 0
0 1 0
1 0 1
1 1 0

Not a und B
A B Out
0 0 0
0 1 1
1 0 0
1 1 0

not A und not B
A B Out
0 0 1
0 1 0
1 0 0
1 1 0

A Identität
A B Out
0 0 0
0 1 0
1 0 1
1 1 1

B Identität
A B Out
0 0 0
0 1 1
1 0 0
1 1 1

A XOR B
A B Out
0 0 0
0 1 1
1 0 1
1 1 0

A oder B
A B Out
0 0 0
0 1 1
1 0 1
1 1 1

A äquivalent B
A B Out
0 0 1
0 1 0
1 0 0
1 1 1

not B
A B Out
0 0 1
0 1 0
1 0 1
1 1 0

Keine Ahnung - bin blau
A B Out
0 0 1
0 1 0
1 0 1
1 1 1

A -> B
A B Out
0 0 1
0 1 1
1 0 0
1 1 1

Not A und B (NAND)
A B Out
0 0 1
0 1 1
1 0 1
1 1 0

Konstant 1
A B Out
0 0 1
0 1 1
1 0 1
1 1 1

Eins fehl. Keine Ahnung. Bin blau.

> Bitflüsterer schrieb:
>> Versuche einmal, wenigstens ansatzweise eine Schaltung zu entwerfen, die
>> alle 16 Möglichkeiten realisiert. Dann wirst Du sehen, dass recht
>> umfangreich wird. Das ist der erste Grund.
>
> 1. Grund: Schaltungen zu aufwendig. Mit Speicher einfacher Realisierbar.
> --> Richtig?

Einfacher in dem Sinne, das die Struktur einfacher ist.

> Bitflüsterer schrieb:
>> Logisch gesehen, brauchst Du vier Bits um aus einer der 16 Möglichkeiten
>> auszuwählen. Die Zahl von Bits ist aber "zufällig" auch genau die Anzahl
>> Bits, die ein RAM mit 4 Adresse und einem Bit Speicher eben speichern
>> kann. Der Aufwand an Speicher ist also bei der Gatterschaltung gleich
>> wie bei der LUT (RAM).
>
> Ja, von wo holt man die 4Bits her? Wie kommst du auf diese. Warum ist
> der Aufwand an Speicher und bei Gatterschaltungen gleich? Und warum ist
> das dann ein Grund, Speicher zu nehmen?

Der Speicher ist einfach und kompakter zu realisieren als eine 
Gatterschaltung. Auch einfacher zu routen.

> Bitflüsterer schrieb:
>> Weiter aber, brauchst Du bei der Variante aus Gattern eine zusätzliche
>> Schaltung, im wesentlichen Multiplexer und Decoder, die je nach der, aus
>> 16 Möglichkeiten, gewählten Variante der logischen Verknüpfung,
>> angesteuert werden. Diese Schaltung ist, obwohl nicht eigentlich
>> kompliziert, recht umfangreich.
>
> Vielleicht verstehe ich es, wenn ich weiß wie du genau auf 16
> Möglichkeiten kommst, besser.

Siehe oben. Eins musst Du Dir noch ausdenken.

> Hm warum brauche ich da, was zwischen den Dingen auswählt. Ich denke ich
> habe dein Bsp noch nicht so recht begriffen. Warum braucht man das dann
> bei Speichern nicht?

Bei Speichern ist die Auswahl sozusagen inbegriffen, in dem ich den 
Speicherinhalt setze.

Bis morgen dann. Hicks.

von F. K. (crack)


Lesenswert?

Warum hat es in dem fall 4 Adresseingänge? Was soll das bedeuten?

Ich mache ja ein UND. Da habe ich ja die Eingänge A und B und die können 
2^2 verschiede werte annehmen und zu jedem wert gibt es einen bestimmten 
Output.

Ich verstehe es nicht so wirklich.

von Wletbester FPGA Pongo (Gast)


Lesenswert?

Wollt ihr hier jetzt alles laienhaft nachzitieren, was in den 
einschlägigen Wikis steht? Hier gibt es einen Artikel und Wikipedia hat 
auch einen. FPGA-FOR-FUN hat auch noch was. 20h zu lesen!

von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb:
> Warum hat es in dem fall 4 Adresseingänge? Was soll das bedeuten?
>
> Ich mache ja ein UND. Da habe ich ja die Eingänge A und B und die können
> 2^2 verschiede werte annehmen und zu jedem wert gibt es einen bestimmten
> Output.
>
> Ich verstehe es nicht so wirklich.

Da muss man aufpassen von was man redet.

Ich habe nur erstmal das Prinzip erklärt. Mit 2 Eingängen und einem 
Ausgang.

In wirklichen FPGAs haben die LUTs meist mehr Adresseingänge und mehr 
Ausgänge. Das ergibt aber nur numerisch eine Erweiterung. Das Prinzip 
ist das selbe.

von Bitflüsterer (Gast)


Lesenswert?

Wletbester FPGA Pongo schrieb im Beitrag #3672232:
> Wollt ihr hier jetzt alles laienhaft nachzitieren, was in den
> einschlägigen Wikis steht?

Jawoll. Das wollen wir. Latürnich. Hicks.

von Weltbester FPGA Pongo (Gast)


Lesenswert?

na dann prost

von Christian R. (supachris)


Lesenswert?

F. K. schrieb:
> Ich mache ja ein UND. Da habe ich ja die Eingänge A und B und die können
> 2^2 verschiede werte annehmen und zu jedem wert gibt es einen bestimmten
> Output.

Ja genau, und indem du das "machst" also im Falle eines FPGAs mit einer 
HDL beschreibst, legst du den Inhalt der LUT fest. Klar, du hast 2 
Eingänge und einen Ausgang, aber es gibt mehr als 4 Möglichkeiten wie du 
aus den beiden Eingängen den Ausgang kombinieren kannst. Das UND ist nur 
eine kleine Untermenge. Die LUT kann auch als XOR, XNOR, NAND, OR, NOR 
usw. programmiert werden. Das ist ja das schöne am FPGA und der LUT 
Geschichte.

Bei 4 oder mehr Inputs wirds dann interessant, denn sowas wie X = A and 
B or C xor D lässt sich ohne LUT zwar abbilden aber das sind dann viele 
Gatter hintereinander. Eine LUT hat dagegen immer nur eine 
Gatterlaufzeit. Deswegen haben aktuelle FPGAs mittlerweile LUTs mit 6 
Eingängen.

von Karl (Gast)


Lesenswert?

Schau dir mal dieses Video an, vielleicht wird es dann klarer:

http://www.altera.com/education/training/courses/ODSW1005

von F. K. (crack)


Lesenswert?

Hm ok danke.

Also nochmals zum Mitschreiben:

Wir "machen" ein UND, d.h wir haben folgende Wahrheitstabelle zuerstmal:

A und B
A B Out
0 0 0
0 1 0
1 0 0
1 1 1

Hat man jetzt eine Adressleitung0, Adressleitung1, Adressleitung2 und 
Adressleitung3.

In Adressleitung0 wird 00 hineingeschickt und Out = 0.
In Adressleitung1 wird 01 hineingeschickt und Out = 0.
In Adressleitung1 wird 10 hineingeschickt und Out = 0.
In Adressleitung1 wird 11 hineingeschickt und Out = 1.

Wird das so gemacht? Aber wo ist der Sinn dahinter? Irgendwie hat mich 
das alles ein bisschen verwirrt.

Eig. braucht man doch nur A und B als Input oder nicht :D.

Ich denke ich stehe auf der Leitung. Jemand muss ich runter schubsen^^, 
dass ich es begreifen kann :P.

von Christian R. (supachris)


Lesenswert?

Bei deinem einfachen UND2 brauchst du natürlich nur eine 2 Bit LUT mit 2 
"Adressleitungen" an denen A und B angeschlossen sind. Durch die Konfig 
des FPGA wird jetzt die o.g. Wertetabelle für das UND in die LUT geladen 
und schon verhält die sich wie ein klassisches UND. In der Praxis hat 
die LUT 4 oder 6 Eingänge, die sind dann halt nicht benutzt. Der Sinn 
ist, dass du keine expliziten UND Gatter usw. Brauchst sondern tausende 
Male die gleiche Schaltung auf dem Chip hast, nämlich die LUT und daraus 
durch die Konfiguration von außen beim Start des FPGAs erst die 
Schaltung realisierst, die du in der HDL beschrieben hast.

: Bearbeitet durch User
von berndl (Gast)


Lesenswert?

F. K. schrieb:
> In Adressleitung0 wird 00 hineingeschickt und Out = 0.
> In Adressleitung1 wird 01 hineingeschickt und Out = 0.
> In Adressleitung1 wird 10 hineingeschickt und Out = 0.
> In Adressleitung1 wird 11 hineingeschickt und Out = 1.
>
> Wird das so gemacht? Aber wo ist der Sinn dahinter? Irgendwie hat mich
> das alles ein bisschen verwirrt.

Angenommen du hast ein FPGA mit LUT4, also 4 'Eingaenge' und du 
moechtest ein 2-fach UND realisieren, also:
1
Q = A and B
An deine LUT wird nun als Adresse
1
"00" & A & B (-> 00xy binaer, das & ist eine Concatenation)
angelegt. Die LUT selber besteht aus einem 16x1bit SRAM, beim 
konfigurieren wurde die mit
1
Adresse 0=b0000: 0
2
Adresse 1=b0001: 0
3
Adresse 2=b0010: 0
4
Adresse 3=b0011: 1
5
Address 4..15: don't care (irrelevant)
initialisiert. Wenn A und B logisch 1 sind und du damit die LUT (das 
SRAM) addressierst, dann faellt am Ausgang eine logische '1' raus (da 
die gebildete Adresse=3 ist), ansonsten eine '0' (bei allen anderen 
'Adressen'). Und das entspricht genau deinem
1
Q = A and B

Einfach mal boolsche Gleichungen mit max. 4 Eingaengen hinschreiben und 
die resultierende Wertetabelle als Inhalt in die LUT schreiben.

Und es gibt auch FPGAs mit LUT6, also nicht 16 sondern 64 Speicherbits. 
Damit kannst du dann boolsche Gleichungen mit 6 Eingaengen 
beschreiben...

von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb:
> ...
> Hat man jetzt eine Adressleitung0, Adressleitung1, Adressleitung2 und
> Adressleitung3.
>
> In Adressleitung0 wird 00 hineingeschickt und Out = 0.
> In Adressleitung1 wird 01 hineingeschickt und Out = 0.
> In Adressleitung1 wird 10 hineingeschickt und Out = 0.
> In Adressleitung1 wird 11 hineingeschickt und Out = 1.
>
> Eig. braucht man doch nur A und B als Input oder nicht :D.

Richtig. So ist es. A und B sind Inputs. Und sie sind auch die 
Adressleitungen. So wie manche Autobahnen gleichzeitig auch 
Europastrassen sind. Oder Väter gleichzeitig Onkels.

Man hat also Adressleitung 0 und Adressleitung 1. Und einen Ausgang Out.

 A und B

 A B Out
 0 0 0
 0 1 0
 1 0 0
 1 1 1

resp.

 A und B

 Adr 0 Adr 1 Out
 0     0     0
 0     1     0
 1     0     0
 1     1     1

> ... Irgendwie hat mich das alles ein bisschen verwirrt.

Was genau hat Dich denn verwirrt?

von F. K. (crack)


Angehängte Dateien:

Lesenswert?

Hm ok, ich denke ich habs fast verstanden:

Also ich habe hier ein Bild mit einem LUT, dass 4 Eingänge hat und einen 
Ausgang.

Man kann nun an diesen Eingängen 2^4 verschiedene binäre Zahlen 
anlegen(0000,0001,0011,0111,1000 etc.), also 16 verschiedene binäre 
Zahlen!

Angenommen wir wollen nur ein UND reintun, dann ist es so wie es berndl 
beschrieben hat:

berndl schrieb:
> Adresse 0=b0000: 0
> Adresse 1=b0001: 0
> Adresse 2=b0010: 0
> Adresse 3=b0011: 1
> Address 4..15: don't care (irrelevant)

Warum nennt man das Adresse? Weil bei einer Adresse x, jene person x 
wohnt?

Wenn b0000, b0001, b0010 am Input anliegt, dann Output = 0, wenn 
Input=b0011, dann ist der Output = 1. --> Das repräsenteirt nun ein AND, 
richtig?


Angenommen wir wollen ein OR und ein UND reinprogrammieren, also 
brauchen wir erstmal folgende truth_tables:

A und B
A B Out
0 0 0
0 1 0
1 0 0
1 1 1

A oder B
A B Out
0 0 0
0 1 1
1 0 1
1 1 1

Wie unterscheidet man jetzt zwischen OR und AND? Die Inputs beim OR sind 
ja dieselben, nur das Out ist anders. Das ist das verwirrnde.

von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb:
> berndl schrieb:
>> Adresse 0=b0000: 0
>> Adresse 1=b0001: 0
>> Adresse 2=b0010: 0
>> Adresse 3=b0011: 1
>> Address 4..15: don't care (irrelevant)
Naja. Nicht ganz irrelevant. Die Eingänge sind ja physisch vorhanden. 
Irgendwas musst Du für diese Eingänge festlegen. Entweder sind sie 
konstant 0. Oder Du definierst auch für die restlichen Kombinationen die 
Ausgangswerte.

>
> Warum nennt man das Adresse? Weil bei einer Adresse x, jene person x
> wohnt?
Das ist so eine Analogie, wie man sie häufig verwendet. Aber in 
Wirklichkeit wohnt da natürlich keine Person.

> Wenn b0000, b0001, b0010 am Input anliegt, dann Output = 0, wenn
> Input=b0011, dann ist der Output = 1. --> Das repräsenteirt nun ein AND,
> richtig?
Fast. Siehe oben.

> Angenommen wir wollen ein OR und ein UND reinprogrammieren, also
> brauchen wir erstmal folgende truth_tables:
>
> A und B
> A B Out
> 0 0 0
> 0 1 0
> 1 0 0
> 1 1 1
>
> A oder B
> A B Out
> 0 0 0
> 0 1 1
> 1 0 1
> 1 1 1
>
> Wie unterscheidet man jetzt zwischen OR und AND? Die Inputs beim OR sind
> ja dieselben, nur das Out ist anders. Das ist das verwirrnde.

Die Frage ist zunächst einmal, ob Du sie tatsächlich unterscheiden 
musst. Ob das Deine Aufgabe so verlangt. Ob das A der UND-Verknüpfung 
das selbe A ist, wie es die ODER-Verknüpfung erhält, oder auch nicht.
Es gibt Fälle wo das so ist und solche in denen das nicht so ist.

Nehmen wir aber an, das es eben nicht dieselben As und Bs sind, wie Du 
es in Deiner Frage voraussetzt.

'A' und 'B' sind für den Zwecke dieses Threads einfach nur wilkürlich 
gewählte Namen. Du kannst also das A und B der UND-Verknüpfung auch 
einfach C und D nennen. Das sollte Deine Frage ein wenig vereinfachen.


 C und D
 C D Out
 0 0 0
 0 1 0
 1 0 0
 1 1 1

 A oder B
 A B Out
 0 0 0
 0 1 1
 1 0 1
 1 1 1

Voilà, schon ist das Problem keines mehr.

Wieviele Adressleitungen braucht die LUT jetzt? Und wieviele 
Ausgangsleitungen?

von Bitflüsterer (Gast)


Lesenswert?

OK. Und jetzt den anderen Fall.

D.h. das A der UND-Verknüpfung enthält dieselbe Information wie das der 
OR-Verknüpfung. Und für B gilt das selbe?

Wieviele Adressleitungen brauchst Du jetzt und wieviele Ausgänge?

Ich will auf folgendes hinaus:

Sehr viel Arbeit steckt beim Hardwaredesign darin, gründlich zu 
überlegen, welche Information auf welche Weise repräsentiert wird.

D.h. erstmal festzustellen, welche Leitungen kommen herein und was 
bedeuten ihre Zustände. So benennst Du auch diese Leitungen und fasst 
sie auch zusammen.

Sei eine Leitung an einen Regensensor angeschlossen. Der Sensor gibt 
eine 1 aus, wenn es regnet und eine 0, wenn es nicht regnet. Diese 
Leitung nennst Du nun nicht A oder B sondern "Regen". Sei eine Leitung 
an einen Windsensor angeschlossen. Er gibt eine 1 aus, wenn Wind weht 
und eine 0, wenn kein Wind weht. Diese Leitung nennst Du nun nicht C 
oder D, sondern "Wind".

Machst Du das konsequent und vollständig, dann gibt es danach keinerlei 
Zweifel mehr, ob nun, das A einer Verknüpfung identisch mit dem A einer 
anderen Verknüpfung ist oder nicht.

von berndl (Gast)


Lesenswert?

F. K. schrieb:
> Warum nennt man das Adresse? Weil bei einer Adresse x, jene person x
> wohnt?
>
> Wenn b0000, b0001, b0010 am Input anliegt, dann Output = 0, wenn
> Input=b0011, dann ist der Output = 1. --> Das repräsenteirt nun ein AND,
> richtig?

Genau so. Und Adresse nenne ich das deshalb, weil es sich um ein 1bit 
breites SRAM handelt das 16 Eintraege hat, also mit 4 Adressbits 
angesteuert wird

>
> Angenommen wir wollen ein OR und ein UND reinprogrammieren, also
> brauchen wir erstmal folgende truth_tables:
>
> A und B
> A B Out
> 0 0 0
> 0 1 0
> 1 0 0
> 1 1 1
>
> A oder B
> A B Out
> 0 0 0
> 0 1 1
> 1 0 1
> 1 1 1
>
> Wie unterscheidet man jetzt zwischen OR und AND? Die Inputs beim OR sind
> ja dieselben, nur das Out ist anders. Das ist das verwirrnde.

Tja, wenn du jetzt z.B. mit einem am FPGA verdrahteten Schalter S 
zwischen AND und OR unterscheiden willst, dann wuerdest du in deine LUT4 
folgendes reinprogrammieren:
1
Adresse=0; bX000: 0
2
Adresse=1; bX001: 0
3
Adresse=2; bX010: 0
4
Adresse=3; bX011: 1
5
Adresse=4; bX100: 0
6
Adresse=5; bX101: 1
7
Adresse=6; bX110: 1
8
Adresse=7; bX111: 1
9
Adresse=8..15 sind durch das X schon abgedeckt, also unabhaengig von 0 und/oder 1
Deine Adressierung der LUT waere also "0" & S & A & B, wobei S der 
Schalter ist, A und B deine Dateneingaenge.

Jetzt koenntest du viele 2-bit Terme ala UND, ODER, NAND, NOR, XOR, ... 
sowie einige Schalter (z.B. 3 Stueck um 2^3=8 Ergebnisvektoren 
abzufragen) alle einfach als Wertetabelle in LUTs abspeichern. Du 
wuerdest am Ausgang immer das gewuenschte Ergebnis bekommen (fuer UND, 
ODER, ...).

Bei zu vielen Schaltern wuerde die Toolchain halt irgendwann mal auf 
etwas effizienteres umschalten. Wenn du also einen 16bit breiten Zaehler 
hast und sowas schreibst:
1
if zaehler < 12345 then
2
  Q = A and B
3
else
4
  Q = A or B
5
end if
dann wuerden die bits des 'zaehler' im IF halt durch eine arithmetische 
Operation (zaehler-12345 -> Ergebnis gleich Null oder ungleich Null) 
ersetzt. Damit wuerde deine Logik im 'if' halt durch eine andere 
Operation ersetzt, aber das Resultat waere das gleiche. Damit wuerde 
dann aber Resourcenverbrauch gegenueber Laufzeit ersetzt werden.

von berndl (Gast)


Lesenswert?

berndl schrieb:
> (zaehler-12345 -> Ergebnis gleich Null oder ungleich Null)
ups, da fehlen die Fallunterscheidungen 'negativ', 'null', 'positiv'...

So machen das auch ALUs (Arithmetic Logical Units) in CPUs...

von Bitflüsterer (Gast)


Lesenswert?

Bis jetzt (d.h. bis zu Deiner letzten Frage) haben wir davon gesprochen, 
wie man mit einem Ding (einer LUT) verschiedene logische Verknüpfungen 
realisiert. Dabei kam es nicht darauf an, ob nun die As und Bs der 
verschiedenen Verknüpfungen identisch sind oder nicht. Wir haben nämlich 
immer vorausgesetzt, das wir zu einem Zeitpunkt entweder ein UND oder 
ein ODER bauen. Wir haben A und B nicht interpretiert, denn das UND und 
das ODER waren immer zweckfrei, d.h. ihr Ergebnis wurde auch nicht 
interpretiert.

Deine Frage taucht erst auf, wenn Du ein UND und ein ODER gleichzeitig 
realisieren möchtest. Dann müssen wir auch klären ob die beiden As die 
selbe Information repräsentieren oder verschiedene.

von F. K. (crack)


Lesenswert?

berndl schrieb:
> "00" & A & B (-> 00xy binaer, das & ist eine Concatenation)

Was meinst du damit? Was bezweckt man damit?


>> Wenn b0000, b0001, b0010 am Input anliegt, dann Output = 0, wenn
>> Input=b0011, dann ist der Output = 1. --> Das repräsenteirt nun ein AND,
>> richtig?
> Fast. Siehe oben.
Hmm, wo oben? In deinem letzten Beitrag? Dass die anderen 16-4 = 12 
verschiedenen Inputs auch irgendwas definieren müssen?


> Nehmen wir aber an, das es eben nicht dieselben As und Bs sind, wie Du
> es in Deiner Frage voraussetzt.
>
> 'A' und 'B' sind für den Zwecke dieses Threads einfach nur wilkürlich
> gewählte Namen. Du kannst also das A und B der UND-Verknüpfung auch
> einfach C und D nennen. Das sollte Deine Frage ein wenig vereinfachen.
>
>
>  C und D
>  C D Out
>  0 0 0
>  0 1 0
>  1 0 0
>  1 1 1
>
>  A oder B
>  A B Out
>  0 0 0
>  0 1 1
>  1 0 1
>  1 1 1
>
> Voilà, schon ist das Problem keines mehr.
>
> Wieviele Adressleitungen braucht die LUT jetzt? Und wieviele
> Ausgangsleitungen?

Hm, ich versuchs jetzt mal alleine zu lösen.

Naja ich habe 4 Eingangsleitungen zum LUT: A,B,C und D.

Wenn folgendes anliegt:
ABCD
0000 --> Out = 0
0101 --> Out = x? hier haben wir ein problem, weil hier gibt es ja 2 
verschiedene outputs. 1 vom OR und 0 vom AND, also braucht man 2 
verschiedene Outputs.

0101 --> Out_or=1, Out_and=0


Aber man sagt doch, man kann bei 16 verschiedenen Eingängen 16 
verschieden Outputs haben: Wie kann man bitte 16 verschiede 
Truth_Tables(xor, or, and, nand, nor etc.) da reinbringen? Wie kann sich 
das ausgehen?

Brauch ich dann auch 16 Outputs?

Naja und wenn A,B vom and und A,B vom or gleich sind dann folgendes:
ABCD
0000
0100
1000
1100

Würde dann ja reichen? CD sagen wir einfach soll immer = 0 sein.

: Bearbeitet durch User
von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb im Beitrag #3672749:
>>> Wenn b0000, b0001, b0010 am Input anliegt, dann Output = 0, wenn
>>> Input=b0011, dann ist der Output = 1. --> Das repräsenteirt nun ein AND,
>>> richtig?
>> Fast. Siehe oben.
> Hmm, wo oben? In deinem letzten Beitrag? Dass die anderen 16-4 = 12
> verschiedenen Inputs auch irgendwas definieren müssen?

Welche Inputs?
Nein. Oben in dem selben Beitrag, in dem das Wort "oben" steht.
Also der Text: "Naja. Nicht ganz irrelevant. Die Eingänge sind ja 
physisch vorhanden.
Irgendwas musst Du für diese Eingänge festlegen. Entweder sind sie
konstant 0. Oder Du definierst auch für die restlichen Kombinationen die
Ausgangswerte."

>> Nehmen wir aber an, das es eben nicht dieselben As und Bs sind, wie Du
>> es in Deiner Frage voraussetzt.
>> ...
>> Voilà, schon ist das Problem keines mehr.
>>
>> Wieviele Adressleitungen braucht die LUT jetzt? Und wieviele
>> Ausgangsleitungen?
> ...
> Naja ich habe 4 Eingangsleitungen zum LUT: A,B,C und D.
>
> Wenn folgendes anliegt:
> ABCD
> 0000 --> Out = 0
> 0101 --> Out = x? hier haben wir ein problem, weil hier gibt es ja 2
> verschiedene outputs. 1 vom OR und 0 vom AND, also braucht man 2
> verschiedene Outputs.
> 0101 --> Out_or=1, Out_and=0

Genau. Wenn Vater nach München fahren will und gleichzeitig Mutter nach 
Frankfurt, braucht man zwei Autos.

> Aber man sagt doch, man kann bei 16 verschiedenen Eingängen 16
> verschieden Outputs haben: Wie kann man bitte 16 verschiede
> Truth_Tables(xor, or, and, nand, nor etc.) da reinbringen? Wie kann sich
> das ausgehen?
>
> Brauch ich dann auch 16 Outputs?

Ich sehe nicht, dass irgendwer geschrieben hat: "man kann bei 16 
verschiedenen Eingängen 16"

Es wurde gesagt, das es bei zwei Input, 16 verschiedene Möglichkeiten 
der Ausgabe bei den jeweils 4 verschiedenen Möglichkeiten des Inputs 
gibt.

> verschieden Outputs haben:
> Naja und wenn A,B vom and und A,B vom or gleich sind dann folgendes:
> ABCD
> 0000
> 0100
> 1000
> 1100
>
> Würde dann ja reichen? CD sagen wir einfach soll immer = 0 sein.

Nein. Die Frage bezog sich darauf, das Du gleichzeitig ein UND und ein 
ODER willst. Die Inputs für das UND sollten C und D sein (also paarweise 
von A und B verschieden) und die Inputs für das ODER sollten A und B 
sein.

Denke nochmal darüber nach.

Bei vier Inputs A bis D gibt es 16 Möglichkeiten

ABCD   C ODER D    A UND B
0000   0           0
0001   1           0
0010   1           0
0011   1           0
0100   0           0
0101   1           0
0110   1           0
0111   1           0
1000   0           0
1001   1           0
1010   1           0
1011   1           0
1100   0           1
1101   1           1
1110   1           1
1111   1           1

Du musst immer sämtliche Möglichkeiten betrachten. Denn das RAM wertet 
auch immer alle Adressleitungen aus.

von Bitflüsterer (Gast)


Lesenswert?

Ich glaube ich bin zu schnell für Dich vorgegangen.

Ich fasse noch mal zusammen und Du sagst mir wo es noch hakt, OK?

1. Logische Verknüpfungen UND, ODER, XOR usw. lassen sich als Inhalt 
eines Speichers auffassen.

2. Nimmt man logische Verknüpfungen mit zwei Eingängen, so gibt es 
vier (2^<Anzahl Eingänge> = 2^2) verschiedene Kombinationen für die 
Eingangswerte.

3. Nimmt man die log. Verkn. von Punkt 2. mit einem Ausgang, so gibt 
es 16 (2^(2^<Anzahl Eingänge>) = 2^2^2verschiedene Verknüpfungen der 
zwei Eingangswerte.
Siehe meine Auflistung unter: 
Beitrag "Re: Was ist FPGA?"

Lies auch nochmal in Deinen Notizen zur Kombinatorik nach. Das ist 
Basiswissen für das Thema.

4. Will man zwei verschiedene log. Verkn. gleichzeitig realisieren, 
braucht man zwei Ausgänge (drei bei drei etc.)

5. Werden in einer Anwendung zwei verschiedene Informationen benutzt, 
dann müssen es physisch auch zwei verschiedene Eingänge sein. Umgekehrt: 
wird ein und dieselbe Information in zwei verschiedenen log. 
Verknüpfungen verwendet, benötigt man dennoch nur einen Eingang.

6. Alle Inputs einer kombinatorischen Logik, egal ob sie durch Gatter 
oder durch RAM realisiert werden, müssen bedacht und kodiert werden.

Wenn Du bei einem dieser Punkte unsicher bist, dann nenne ihn. Zuerst 
den, mit der niedrigsten Nummer, denn sie bauen aufeinander auf. 
Kombinatorik muss sitzen. Boolsche Logik muss sitzen. Sonst ist alles 
weiter sinnlos.

von F. K. (crack)


Lesenswert?

Danke!

Erstmal zu den ersten drei Punkten:

Bitflüsterer schrieb:
> 1. Logische Verknüpfungen UND, ODER, XOR usw. lassen sich als Inhalt
> eines Speichers auffassen.
Man schreibt dessen Wahrheitstabellen sozusagen in den Speicher, 
richtig?

> 2. Nimmt man logische Verknüpfungen mit zwei Eingängen, so gibt es
> vier (2^<Anzahl Eingänge> = 2^2) verschiedene Kombinationen für die
> Eingangswerte.
Ja ist klar. 00,01,10,11 sind 4 verschiedene Eingangswerte bei 2 
Eingangsleitungen.
Wir haben einen LUT mit 2 Eingängen hier, richtig?

> 3. Nimmt man die log. Verkn. von Punkt 2. mit einem Ausgang, so gibt
> es 16 (2^(2^<Anzahl Eingänge>) = 2^2^2verschiedene Verknüpfungen der
> zwei Eingangswerte.

Also wir haben den LUT mit zwei Eingängen und einen Ausgang jetzt. Das 
verstehe ich überhaput nicht. Wie kommst du auf: 2^(2^<Anzahl Eingänge> 
?
Man macht einen Ausgang dazu und auf einmal rechnet man so wie du es 
geschrieben hast. Warum? Das habe ich noch nie so gehört^^.

von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb:
> Danke!
>
> Erstmal zu den ersten drei Punkten:
>
> Bitflüsterer schrieb:
>> 1. Logische Verknüpfungen UND, ODER, XOR usw. lassen sich als Inhalt
>> eines Speichers auffassen.
> Man schreibt dessen Wahrheitstabellen sozusagen in den Speicher,
> richtig?

Richtig.

>> 2. Nimmt man logische Verknüpfungen mit zwei Eingängen, so gibt es
>> vier (2^<Anzahl Eingänge> = 2^2) verschiedene Kombinationen für die
>> Eingangswerte.
> Ja ist klar. 00,01,10,11 sind 4 verschiedene Eingangswerte bei 2
> Eingangsleitungen.
> Wir haben einen LUT mit 2 Eingängen hier, richtig?

Das nehmen wir hier mal an um das Thema zu erklären. In Wirklichkeit 
(d.h. in realen FPGAs) sind mehr Eingänge üblich.

>> 3. Nimmt man die log. Verkn. von Punkt 2. mit einem Ausgang, so gibt
>> es 16 (2^(2^<Anzahl Eingänge>) = 2^2^2verschiedene Verknüpfungen der
>> zwei Eingangswerte.
>
> Also wir haben den LUT mit zwei Eingängen und einen Ausgang jetzt. Das
> verstehe ich überhaput nicht. Wie kommst du auf: 2^(2^<Anzahl Eingänge>
> ?
> Man macht einen Ausgang dazu und auf einmal rechnet man so wie du es
> geschrieben hast. Warum? Das habe ich noch nie so gehört^^.

OK. Ich mache noch einmal eine andere Tabelle um das deutlich zu machen. 
Im wesentlichen handelt es sich um die Tabellen im Beitrag 
Beitrag "Re: Was ist FPGA?" nur das sie jetzt 
nebeneinander geschrieben sind.

Ich habe zwei Input X und Y. Die Spalten rechts daneben zeigen, welche 
Ausgangswerte möglich sind. Sie sind mit den Hexadezimalziffern 
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f durchnummeriert.

XY 0 1 2 3 4 5 6 7 8 9 a b c d e f
----------------------------------
00 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
01 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
10 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
11 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Nimm einmal die Spalten 4 und e
Dann siehst Du das für die beiden Spalten bei gleichen Eingangswerten 
unterschiedliche Ausgangswerte da sind.

XY 4 e
00 0 1
01 1 1
10 0 1
11 0 0

Einige der Zuordnungen von Eingangs- zu Ausgangswerten haben besondere 
Namen. Z.B. die Spalte 1 ist das UND, die Spalte 6 das XOR.
Manche aber haben keinen eigenen Namen. Wenn man sie benennen will, muss 
man sie ein wenig umschreiben. Z.B. Spalte 3 als "Identität X".

Soweit klar?

von F. K. (crack)


Lesenswert?

Hmmmm, ich verstehe noch nicht, warum dass man 00, 01, 10 und 11 als 
"Eingang" hernimmt und dann mit denen eine "Wahrheitstabelle" macht. 
Warum macht man das?

Also so wie z.b.:
X3,X2,X1 Y
0  0  0  0
0  0  1  1
0  1  0  0
0  1  1  0
1  0  0  0
1  0  1  1
1  1  0  1
1  1  1  0

Nur halt das man bei den Ausgängen(bei unserem Bsp) diese 0101010 und 
00110011 und 00001111 "dings" macht.

Das ist mein Problem. Verstehst du was ich meine?

von Bitflüsterer (Gast)


Lesenswert?

> Das ist mein Problem. Verstehst du was ich meine?

Ich bin nicht ganz sicher, ob ich Dich recht verstehe.

Zunächst ist die Wahrheitstabelle ein Hilfsmittel, wie eine Bauzeichnung 
oder ein Kassenbuch. Die Zeichnung ist nicht das Haus und das Kassenbuch 
ist nicht die Geldsummen die darin stehen. Es "repräsentiert", das Haus, 
die fliessenden Geldsummen und in unserem Thema, die logischen 
Verknüpfungen.

Das brauchen wir, um uns darüber unterhalten zu können, um es 
manipulieren zu können. Und wir können es in andere Repräsentationen 
umwandeln; z.b. Gatterschaltungen. Und schliesslich in ein wirkliches 
Haus; eine reale Schaltung.

Es gibt aber noch eine weitere Abstraktionsebene. Wir beschreiben damit 
ein Verhalten "insgesamt"; betrachten eine ganze Reihe von Möglichkeiten 
gleichzeitig.

Nimm ein UND-Gatter. Die Wahrheitstabelle beschreibt dann, so wie der 
Begriff "UND-Gatter" in "einem Aufwasch" alle nur möglichen Eingangs- 
und Ausgangswerte. Wir wissen, das ein Eingang nicht gleichzeitig 1 
und 0 sein kann. Aber mit der Nennung des Namens bzw. dem Aufschreiben 
der Wahrheitstabelle wissen wir, dass, wenn wir etwa '00' an die 
Eingänge legen, immer und zu jedem beliebigen Zeitpunkt und egal was 
vorher war eine 0 am Ausgang erscheinen wird. (Solange Strom da ist).

In diesem Thread, in meinen Beiträgen, habe ich die Wahrheitstabelle(n) 
benutzt um die Möglichkeiten zu beschreiben und sie abzählbar zu 
machen. Denn Deine Frage war in diesem Beitrag 
Beitrag "Re: Was ist FPGA?" wie ich auf die 16 
Möglichkeiten komme. Und das hast Du gefragt, nachdem ich hier 
Beitrag "Re: Was ist FPGA?" und hier 
Beitrag "Re: Was ist FPGA?" erklärt habe, das 
LUTs nicht als "Weichen" zu betrachten sind, wie Du hier 
Beitrag "Re: Was ist FPGA?" gemeint hast, 
sondern das sie die logische Funktion realisieren. Dabei habe ich 
gesagt, das es einfacher ist die logische Funktion in LUTs zu 
realisieren, anstatt sie als Gatter aufzubauen.

Der Witz ist ja, dass der Hersteller des FPGAs nicht vorher wissen kann, 
welche logische Funktion Du als Anwender später, nachdem das Ding über 
den Ladentisch gegangen ist, dann tatsächlich haben willst.
Daraus folgt das der Hersteller des FPGAs das so bauen muss, das es 
nachher möglichst alle_ _möglichen logischen Verknüpfungen realisieren 
können muss (oder jedenfalls soviele verschiedene wie möglich).

Um aber überhaupt eine Aussage darüber machen zu könne ob alle 
Möglichkeiten auch tatsächlich realisierbar sind, muss man erstmal 
wissen welche und wieviele Möglichkeiten es eigentlich gibt.

Um nochmal zum Anfang zu kommen: Wahrheitstabellen dienen dazu die 
Funktion, die Logik eines Systems zu beschreiben. Dazu kann man auch 
andere Mittel verwenden (Gatter-Schaltpläne, etc.) und sie werden auch 
verwendet. Sie dienen auch dazu, ein System in bestimmten Richtungen zu 
verändern oder zu optimieren (z.B. Karnaugh-Diagramm zur Vereinfachung 
von Schaltungen).


In dem ich also diese große tabelle mit den 16 Möglichkeiten aufstelle 
betrachte ich alle Möglichkeiten aller Kombinationen von zwei 
Eingangswerten und einem Ausgangswert gleichzeitig. Dann kann ich sie 
abzählen und dazu verwenden eine allgemeine Gleichung für mehr Eingangs- 
und Ausgangswerte aufzustellen.

von F. K. (crack)


Lesenswert?

Hm ok, ich denke ich habs.

D.h. wir haben 16 Verschiedene Wahrheitstabellen. Wir haben 16 
Verschiedene Funkionen(and, or, xor, etc.).

Also so listet man auf, welche Funktionen möglich sind richtig?

Und nun nimmt man eine Wahrheitstabelle raus und schreibt sie in ein 
LUT, richtig?

von heute unangemeldet (Gast)


Lesenswert?

F. K. schrieb:
> D.h. wir haben 16 Verschiedene Wahrheitstabellen.

Bei einer LUT mit 4 Eingängen besteht die Wahrheitstabelle
aus 16 Werten. Es gibt also 2^16 mögliche Wahrheitstabellen.

von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb:
> Hm ok, ich denke ich habs.
>
> D.h. wir haben 16 Verschiedene Wahrheitstabellen. Wir haben 16
> Verschiedene Funkionen(and, or, xor, etc.).
>
> Also so listet man auf, welche Funktionen möglich sind richtig?

Im allgemeinen tut man das nicht. Nur wenn man mit dem Thema anfängt und 
sich die Grundlagen aneignet. Und in diesem konkreten Fall, um 
klarzustellen wie man auf 16 Möglichkeiten kommt.

> Und nun nimmt man eine Wahrheitstabelle raus und schreibt sie in ein
> LUT, richtig?

Das tut die Software in die man eine Hardwarebeschreibung eingibt. "Man" 
selbst tut das nicht (es gibt ein paar Ausnahmen, aber die sind für den 
Anfang unwichtig).

von F. K. (crack)


Lesenswert?

Ja, z.B. mit der Programmiersprache VHDL schreibt man diese 
"Wahrheitstabellen" und die Software, wo man VHDL programmieren kann, 
kann man dann auch diese Tabellen auf die Hardware spielen.

Richtig?


Nochmal zum UND-LUT und ODER-LUT zurück:
Es gibt hier also 16 verschiedene Eingangssignale ABCD:

ABCD   C ODER D    A UND B
0000   0           0
0001   1           0
0010   1           0
0011   1           0
0100   0           0
0101   1           0
0110   1           0
0111   1           0
1000   0           0
1001   1           0
1010   1           0
1011   1           0
1100   0           1
1101   1           1
1110   1           1
1111   1           1

Naja hier haben wir uns die Wahrheitstabellen für ODER und für UND 
"rausgesucht"(also man sucht ja nicht raus, sondern man weiß ja schon 
wie ein UND aussieht, also schreibt man die Tabelle einfach auf). Es 
gibt ja hier 2^16 Wahrheitstabellen. AB sind die Eingänge für UND und CD 
sind die Einänge für ODER. --> Eingangswerte von OR und AND sind 
verschieden.

Also braucht man ein LUT mit 4 Eingängen und 2 Outputs. Die oben 
geschriebene Tabelle, muss man z.b. mit VHDL veranschaulichen.

Richtig?

Und jetzt soll das Eingangssignal das ankommt in OR rein und in AND 
rein.
Also hat man:

AB A OR B  A AND B
00   1        0
01   1        0
10   1        0
11   0        1

Also hier wieder Wahrheitstabellen "gesucht" und mittels VHDL 
veranschaulicht man diese dann.

Man braucht ein LUT mit 2 Eingängen und auch 2 Ausgängen. Aber gibt es 
Fälle wo es mehrere log. Funktionen in einen LUT gibt und doch nur ein 
OUT?, richtig?

Ist das möglich?

: Bearbeitet durch User
von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb:
> Ja, z.B. mit der Programmiersprache VHDL schreibt man diese
> "Wahrheitstabellen" und die Software, wo man VHDL programmieren kann,
> kann man dann auch diese Tabellen auf die Hardware spielen.
>
> Richtig?

Nicht eigentlich. Die Antwort habe ich schon gegeben.
Es ist zwar "möglich" eine Wahrheitstabelle in VHDL zu schreiben, aber 
überlicherweise tut man das nicht. Für ein einführendes Referat ist das 
irrelevant. In VHDL sagt man eher "A and B" und bei der Synthese wird 
daraus der Inhalt der LUT.

>
> Nochmal zum UND-LUT und ODER-LUT zurück:
> Es gibt hier also 16 verschiedene Eingangssignale ABCD:
>
> ABCD   C ODER D    A UND B
> 0000   0           0
> 0001   1           0
> 0010   1           0
> 0011   1           0
> 0100   0           0
> 0101   1           0
> 0110   1           0
> 0111   1           0
> 1000   0           0
> 1001   1           0
> 1010   1           0
> 1011   1           0
> 1100   0           1
> 1101   1           1
> 1110   1           1
> 1111   1           1
>
> Naja hier haben wir uns die Wahrheitstabellen für ODER und für UND
> "rausgesucht"(also man sucht ja nicht raus, sondern man weiß ja schon
> wie ein UND aussieht, also schreibt man die Tabelle einfach auf). Es
> gibt ja hier 2^16 Wahrheitstabellen. AB sind die Eingänge für UND und CD
> sind die Einänge für ODER. --> Eingangswerte von OR und AND sind
> verschieden.
>
> Also braucht man ein LUT mit 4 Eingängen und 2 Outputs. Die oben
> geschriebene Tabelle, muss man z.b. mit VHDL veranschaulichen.
>
> Richtig?
Bis auf die Phrase "mit VHDL veranschaulichen" ist es ansonsten richtig.
"Veranschaulichen" tut man, um einen Sachverhalt visuell fassbar zu 
machen.
In VHDL beschreibt man eine Hardware um ein FPGA zu konfigurieren. Für 
den kundigen Betrachter ist eine VHDL-Beschreibung zwar anschaulich, 
aber das ist nicht der Zweck von VHDL.

> Und jetzt soll das Eingangssignal das ankommt in OR rein und in AND
> rein.
> Also hat man:
>
> AB A OR B  A AND B
> 00   1        0
> 01   1        0
> 10   1        0
> 11   0        1

Kleiner Flüchtigkeitsfehler, nehme ich an:

 AB A OR B  A AND B
 00   0        0
 01   1        0
 10   1        0
 11   1        1

> Also hier wieder Wahrheitstabellen "gesucht" und mittels VHDL
> veranschaulicht man diese dann.

Nein. Man "sucht" keine Wahrheitstabelle. Man schreibt einfach "A AND B" 
in VHDL.

> Man braucht ein LUT mit 2 Eingängen und auch 2 Ausgängen. Aber gibt es
> Fälle wo es mehrere log. Funktionen in einen LUT gibt und doch nur ein
> OUT?, richtig?
>
> Ist das möglich?

Es gibt keine grundsätzliche Festlegung wieviele Eingänge oder Ausgänge 
eine LUT hat.
Den anderen Teil der Frage kannst Du Dir mit Blick auf die Tabelle der 
16 Möglichkeiten selbst beantworten. (Hinweis: Welche Funktion ist dort 
nicht enthalten?).

----

Darf ich mal fragen auf was für eine Schule Du gehst und mit welchem 
Ausbildungsziel?

von Christian R. (supachris)


Lesenswert?

LUTs über die wir hier reden, haben immer nur einen Ausgang. Für deine 
Beispiel-Funktionen braucht man also 2 LUTs. Und man schreibt auch in 
VHDL diese Tabellen nicht auf, sondern schreibt einfach:
1
x <= A and B;
 oder halt
1
y = C or D;
.

Der Mapper mapt dann diese beiden kmbinatorischen Verknüpfungen auf 2 
LUTs.

Eine LUT mit 2 Ausgängen kann man natürlich aus RAM zusammen bauen, aber 
im FPGA haben die LUTs vor den FlipFlops immer nur einen Ausgang.

von Bitflüsterer (Gast)


Lesenswert?

Jedenfalls steht in den Papieren von Xilinx usw. genau wie eine LUT 
aussieht.

von Peter B. (funkheld)


Lesenswert?

He...he..
---------------------------
Programmiersprache VHDL
--------------------------

Als Alter habe ich schon gelernt das es keine Programmiersprache ist , 
dann  wäre es VHPL..... he..he..

Gruss

von F. K. (crack)


Lesenswert?

Danke Leute!

Naja Bitflüsterer: Die Tabelle zeigt ja nur, dass das LUT 16 
verschiedene 'Funktionen' machen kann, aber ob das das gleichzeitig geht 
mit nur 2 inputs, weiß ich nicht.

Geht das? Ich denke nicht, da braucht man dann mehrere LUTs.


uC.net schreibt ja folgendes:
<<<<<Ein FPGA besteht, ähnlich wie ein CPLD, aus vielen Logikelementen, 
hauptsächlich FlipFlops (FF) und davor gelagerten kombinatorischen 
Logikschaltungen. Diese sind entweder Verknüpfungen verschiedener 
Logikgatter (Actel) oder sogenannten LUTs (Look-Up-Table), die über 
elektronische "Schalter" entsprechend der vom Entwickler gewünschten 
Funktion miteinander verknüpft werden können.>>>>

Also ein FPGA besteht aus Logikelmenten. Also zuerst kommt eine 
Logikschaltung und dann folgt ein FlipFlop, um den Output zu speichern.

So eine Logikschaltung kann durch LUT's oder durch Verknüpfungen 
verschiedener Logikgatter dargestellt werden. Zweiteres ist doch die 
physische Methode, also mit Transistoren und aufwendig etc., richtig?

"....,die über elektronische "Schalter" entsprechend der vom Entwickler 
gewünschten Funktion miteinander verknüpft werden können."

Ich verstehe gar nicht, was der Satz hier aussagen soll. Welche Schalter 
kommen hier vor?

Sind das solche Schalter: 
http://commons.wikimedia.org/wiki/File:Switch_box.svg ?

--------------------
Ich gehe auf eine HTL(Leond.) man hat die Matura beim Abschluss.

: Bearbeitet durch User
von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb:
> Danke Leute!
>
> Naja Bitflüsterer: Die Tabelle zeigt ja nur, dass das LUT 16
> verschiedene 'Funktionen' machen kann, aber ob das das gleichzeitig geht
> mit nur 2 inputs, weiß ich nicht.
>
> Geht das? Ich denke nicht, da braucht man dann mehrere LUTs.

Das mag so sein oder nicht. Aber was ist die Begründung für die Antwort?

Es geht mir darum, dass man ja mit Faktenwissen allein nichts anfangen 
kann. Man muss auch die Gründe kennen.

In diesem Fall ist der Grund trivial, ihn zu formulieren aber nicht.

Wenn jede Spalte eine Funktion beschreibt, wie kann dann eine Spalte 
gleichermaßen mehrere Funktionen beschreiben? Eben. Das geht nicht. 
Ergo, kann keine LUT, die ja nur eine physische Form der 
Wahrheitstabelle ist, auch nicht gleichzeitig mehrere Funktionen 
erfüllen.

Siehst Du was ich meine?

> uC.net schreibt ja folgendes:
> <<<<<Ein FPGA besteht, ähnlich wie ein CPLD, aus vielen Logikelementen,
> hauptsächlich FlipFlops (FF) und davor gelagerten kombinatorischen
> Logikschaltungen. Diese sind entweder Verknüpfungen verschiedener
> Logikgatter (Actel) oder sogenannten LUTs (Look-Up-Table), die über
> elektronische "Schalter" entsprechend der vom Entwickler gewünschten
> Funktion miteinander verknüpft werden können.>>>>
>
> Also ein FPGA besteht aus Logikelmenten. Also zuerst kommt eine
> Logikschaltung und dann folgt ein FlipFlop, um den Output zu speichern.
>
> So eine Logikschaltung kann durch LUT's oder durch Verknüpfungen
> verschiedener Logikgatter dargestellt werden. Zweiteres ist doch die
> physische Methode, also mit Transistoren und aufwendig etc., richtig?

Beides wird physisch realisiert. Wie auch sonst? Was nicht real 
existiert kann in der Realität keine Wirkung entfalten.

> "....,die über elektronische "Schalter" entsprechend der vom Entwickler
> gewünschten Funktion miteinander verknüpft werden können."
>
> Ich verstehe gar nicht, was der Satz hier aussagen soll. Welche Schalter
> kommen hier vor?

In einem FPGA gibt es viele LUTs. Es ist nicht etwa so, das ein FPGA 
einfach nur eine große LUT ist. Vielmehr hast Du ein Raster von LUTs die 
untereinander verbunden werden können. Damit aber die gesamte Funktion 
flexibel ist, müssen auch diese Verbindungen flexibel sein; man sagt 
"konfigurierbar" sein. Das machen eben diese Schalter.

> Sind das solche Schalter:
> http://commons.wikimedia.org/wiki/File:Switch_box.svg ?

Dem Funktion nach ja, aber real nicht.

Lies mal die Doku von z.B. Xilinx ganz in Ruhe. Und erwarte nicht, dass 
Du das alles in ein paar Tagen verstehst. Das ist nichts was man mal 
schnell in zwei, drei Tagen kapiert.

>
> --------------------
> Ich gehe auf eine HTL(Leond.) man hat die Matura beim Abluss.

Ah. Danke.

von F. K. (crack)


Lesenswert?

Hm ok danke.

Aber da steht doch: "Diese sind entweder Verknüpfungen verschiedener 
Logikgatter oder sog. LUTs..."

Wir haben die ganze Zeit von LUTs gesprochen, was ist nun das andere 
hier? Ich dacht die Logic Blocks bestehen einfach aus LUTs? Die LUT 
selbst ist ein SRAM.
Ist dann "Verknüpfungen verschiedener Logikgatter" dass aufwendige?


Und durch diese Schaltmatrix werden die LOGIC-Blocks untereinander 
verbunden und die I/O-Pins, richtig?

: Bearbeitet durch User
von Bitflüsterer (Gast)


Lesenswert?

F. K. schrieb:
> Hm ok danke.
>
> Aber da steht doch: "Diese sind entweder Verknüpfungen verschiedener
> Logikgatter oder sog. LUTs..."
>
> Wir haben die ganze Zeit von LUTs gesprochen, was ist nun das andere
> hier? Ich dacht die Logic Blocks bestehen einfach aus LUTs? Die LUT
> selbst ist ein SRAM.
> Ist dann "Verknüpfungen verschiedener Logikgatter" dass aufwendige?

Die Logic Blocks müssen nicht notwendigerweise aus LUTs aufgebaut sein. 
Man kann das auch mit der selben Flexibilität mit Gattern machen. In 
diesem Beitrag 
Beitrag "Re: Was ist FPGA?" 
wurde auch ein Typ genannt bei dem das so ist (ich kann das aus eigener 
Kenntnis nicht bestätigen aber es gibt keine Grund das anzuzweifeln). 
Machbar ist es aber auf jeden Fall. Ich habe Dich ja auch dazu 
aufgefordert 
(Beitrag "Re: Was ist FPGA?") 
das einmal selbst zu versuchen. Das war kein Witz oder Versuch Dich 
hochzunehmen. Es geht durchaus.
In der Funktion ist das (im wesentlichen) gleichwertig. Im 
Herstellungsprozess nicht. Schau Dir mal die Datenblätter von Xilinx und 
dem genannten Typ an. Dann wird es klarer.

> Und durch diese Schaltmatrix werden die LOGIC-Blocks untereinander
> verbunden und die I/O-Pins, richtig?

Richtig.

von Bitflüsterer (Gast)


Lesenswert?

Lies Dir auch noch einmal Deinen eigenen Beitrag 
Beitrag "Re: Was ist FPGA?" und den FPGA-Artikel 
durch. Ein bisschen musst Du auch selbst das Hirn einschalten und 
Textverständnis nachfüllen. ;-)

Also, viel Erfolg beim Referat.

von Fpgakuechle K. (Gast)


Lesenswert?

Christian R. schrieb:
> LUTs über die wir hier reden, haben immer nur einen Ausgang.
>
> Eine LUT mit 2 Ausgängen kann man natürlich aus RAM zusammen bauen, aber
> im FPGA haben die LUTs vor den FlipFlops immer nur einen Ausgang.

Nö, der technische Fortschritt hat uns bei der 7er serie von Xilinx 
LUT's mit zwei Ausgängen beschert:
http://www.xilinx.com/support/documentation/data_sheets/ds180_7Series_Overview.pdf 
S. 6

MfG,

von berndl (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> Christian R. schrieb:
>> LUTs über die wir hier reden, haben immer nur einen Ausgang.
>>
>> Eine LUT mit 2 Ausgängen kann man natürlich aus RAM zusammen bauen, aber
>> im FPGA haben die LUTs vor den FlipFlops immer nur einen Ausgang.
>
> Nö, der technische Fortschritt hat uns bei der 7er serie von Xilinx
> LUT's mit zwei Ausgängen beschert:
> 
http://www.xilinx.com/support/documentation/data_sheets/ds180_7Series_Overview.pdf
> S. 6
>
> MfG,

Gibt's auch schon beim Spartan6, der mit den 6bit LUTs. Waere ja auch 
doof, wenn man fuer 0815-Logik soviele Resourcen verschwenden wuerde...

(Spartan6: 6bit LUT, also SRAM mit 64bit, hat aber 2 FFs am Ausgang und 
kann auch in 2x5bit LUT, also quasi 2x32bit SRAM partitioniert werden)

von Fpgakuechle K. (Gast)


Lesenswert?

berndl schrieb:
> Fpga Kuechle schrieb:
>> Christian R. schrieb:
>>> LUTs über die wir hier reden, haben immer nur einen Ausgang.
>>>
>>> Eine LUT mit 2 Ausgängen kann man natürlich aus RAM zusammen bauen, aber
>>> im FPGA haben die LUTs vor den FlipFlops immer nur einen Ausgang.
>>
>> Nö, der technische Fortschritt hat uns bei der 7er serie von Xilinx
>> LUT's mit zwei Ausgängen beschert:
>>
> 
http://www.xilinx.com/support/documentation/data_sheets/ds180_7Series_Overview.pdf
>> S. 6
>
> Gibt's auch schon beim Spartan6, der mit den 6bit LUTs. Waere ja auch
> doof, wenn man fuer 0815-Logik soviele Resourcen verschwenden wuerde...

Stimmt, das geht auch schon beim technologischen Vorgänger Virtex-5
http://www.xilinx.com/support/documentation/data_sheets/ds100.pdf S.7
 Isse also schon seit mindestens 8 Jahre Stand der Technik.

MfG,

von Christian R. (supachris)


Lesenswert?

Hmmm stimmt, an die hab ich gar nicht gedacht. Jetzt ist er sicher noch 
mehr verwirrt. Die haben an diesen HTL aber auch immer Höhenflüge, von 
da gibts oft solche Aufgaben hier im Forum, die die Kompetenz von 
Abiturienten eigentlich übersteigen.

von Fpgakuechle K. (Gast)


Lesenswert?

Christian R. schrieb:
> Die haben an diesen HTL aber auch immer Höhenflüge, von
> da gibts oft solche Aufgaben hier im Forum, die die Kompetenz von
> Abiturienten eigentlich übersteigen.

Ja, selbst die Sendung mit der Maus könnte FPGA's nicht erklären. Die 
beste Erklärung für nicht Dipl-Ings die ich mal gefunden hab war in der 
Spektrum der Wissenschaft:
http://www.spektrum.de/alias/dachzeile/wandlungsfaehige-mikrochips/824047

Und damit auch nicht fürs die Berufsaubildung sondern für Studierende 
anderer Fächer.

MfG,

von Christian R. (supachris)


Lesenswert?

HTL ist ja meines Wissens nur Gymnasium mit etwas Projektarbeiten und 
technischem Zusatz. Allerdings tauchen hier oft Aufgaben von HTL 
Schülern auf, die nicht für 17 jährige geeignet sind.

von Christoph Z. (christophz)


Lesenswert?

Fpga Kuechle schrieb:
> Ja, selbst die Sendung mit der Maus könnte FPGA's nicht erklären. Die
> beste Erklärung für nicht Dipl-Ings die ich mal gefunden hab war in der
> Spektrum der Wissenschaft:

Habe das vor Jahren auch mal versucht. Mein Ansatz war, dass ich 
Mikrocontroller mit Playmobil und FPGAs mit Lego verglichen habe. :-)

Ob es genutzt hat und die wenigen Zuhörer was davon kapiert haben, weiss 
ich leider nicht.

von Uwe (Gast)


Lesenswert?

Wenn man früher mit 16 in der Ausbildung Schaltungen aus Gattergräbern 
gebastelt hat und die Leitungen mit Silberdraht gezogen hat hat man 
schon ein viel besseres verständnis von FPGAs gehabt. Zu der Zeit waren 
GALs verbreitet und CPLDs kamen in höherwertigen produkten vor, FPGAs 
waren mehr im Wissenschaftlichen Bereich vertreten.
Am besten kann man FPGAs verstehen wenn man sich mit Digitalen 
Schaltungen beschäftigt. Am besten man bastelt sich auf Papier mal nen 
kleinen Mikroprozessor zusammen. Wenn man versucht dann den Datenfluß 
und Ablaufkontrolle hinzubasteln lernt man ziemlich schnell und landet 
fast von selbst in einer art RTL ähnlichen Denkweise, vorher sollten 
natürlich grundlagen wie Multiplexer, Adressdekoder usw. mit einfachen 
LED Schaltungen gebaut und verstanden werden.

von F. K. (crack)


Lesenswert?

Ok leute. Ich habe jetzt einiges über FPGAs zusammengeschrieben.

Nun fehlt mir noch:
- DSPs vs FPGAs
- ASIC vs FPGA
- Programmierung/Konfiguration bei FPGAs

Z.B. was soll ich zum FPGAs zum Vergleich zu DSPs schreiben? Man kann 
doch mit dem FPGA mehrer DSPs Parallel bauen.

Man findet schwer irgendwas von diese Sachen, vllt kann mir wer da eine 
kurze Hilfe geben, was ich da schreiben könnte.

: Bearbeitet durch User
von Bronco (Gast)


Lesenswert?

Noch ein Tip zum Verständnis einer LUT:
Stell Dir mal vor, Du wolltest einen 8x8-Multiplizierer in Hardware 
zusammenlöten, also mit zwei 8Bit-Zahlen rein und mit einer 16Bit-Zahl 
raus.
Ein ganz einfache Möglichkeit wäre es, ein 8Bit-64k-EPROM (8Bit 
Datenbus, 16Bit Adressbus) zu nehmen. Das Lowbyte der Adresse ist der 
eine Faktor, das Highbyte ist der andere Faktor.
Jetzt lässt Du Dir von Deinem leistungsstarkten PC alle 65536 möglichen 
Kombinationen ausrechnen und schreibst sie ins EPROM hinein.
Fertig ist Dein Multiplizierer!

Mit dem gleichen EPROM kannst Du aber auch einen Addierer bauen, indem 
Du eine entsprechende Tabelle hineinprogrammierst. In diesem Fall sind 
zwar die meisten Adressen im EPROM ungenutzt (weil Du ja nur 512 
Kombinationen brauchst), aber Du kannst mit dem gleichen Baustein zwei 
unterschiedliche Rechenarten realisieren.

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.