Forum: FPGA, VHDL & Co. RTL Viewer: Verstehe Schaltplan/Logikplan nicht! Was bedeutet dieses Symbol?


von töre (Gast)


Angehängte Dateien:

Lesenswert?

Guten Tag,

ich habe einen Code für einen 4x1 Multiplexer geschrieben und mit 
Quartus kompilieren lassen:
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.std_logic_unsigned.all;
4
5
entity MUX4X1 is 
6
    port(   S: in bit_vector (1 downto 0);
7
        E: in bit_vector (3 downto 0);
8
        Y: out bit);
9
end MUX4X1;
10
11
architecture Verhalten of MUX4X1 is
12
begin
13
      with S select --Auswahlsignal
14
      Y <= E(0) when "00",
15
         E(1) when "01",
16
         E(2) when "10",
17
         E(3) when "11";
18
end VERHALTEN;

Auch die Simulation hat funktioniert. Jetzt wollte ich mir den 
Schaltplan/Logikplan mit dem RTL Viewer in Quartus anschauen und bekam 
das Bild aus dem Anhang. Dazu bräuchte ich nun eine Erklärung:

1) Für was steht dieser Kasten? Sind FPGAs nicht immer nur aus 
D-Flip-Flops aufgebaut? Soll es dann ein D-Flip-Flop darstellen?
2) Wenn ja, ich kann doch nicht nur mit einem D-Flipflop einen 
Multiplexer aufbauen.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

Du hast einen Multiplexer beschrieben und Du hast einen bekommen. Wo 
liegt das Problem? Das Bild zeigt einen 4 zu 1 Multiplexer.

von töre (Gast)


Angehängte Dateien:

Lesenswert?

Mir ist gerade selber aufgefallen, wie dämlich die Frage war, der Kasten 
selbst stellt einen Multiplexer dar. Ich habe hier aber nochmal ein 
Beispiel, bei welchem ich nun nicht weiß, was die trapezförmigen Kästen 
darstellen sollen.

Und noch eine allgemeine Frage: Welche logischen Bauteile sind in einem 
FPGA vorhanden?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Die erste Frage ist in der Tat ähnlich dämlich wie Deine ursprüngliche, 
denn es handelt sich auch bei diesen Trapezen im Multiplexer, nämlich 
2:1. Bei zweien handelt es sich um "normale" Multiplexer, bei einem um 
einen mit invertierenden Eingängen.

FPGAs enthalten als Grundstrukturen Look-Up-Tables, D-Register und ggf. 
noch ein paar Multiplexer. Die Multiplexer, die Du in Deinem 
RTL-Schaltplan siehst, werden aber im FPGA höchstwahrscheinlich in Form 
von LUTs realisiert.

Und dann gibt es auch noch fertige Blöcke für Sonderfunktionen wie z.B. 
Block RAMs, SERDES, Takterzeugung, Multiplizierer, usw..

: Bearbeitet durch User
von töre (Gast)


Lesenswert?

Andreas S. schrieb:
> es handelt sich auch bei diesen Trapezen im Multiplexer, nämlich
> 2:1. Bei zweien handelt es sich um "normale" Multiplexer, bei einem um
> einen mit invertierenden Eingängen.

ok. Mich hat hier die Bezeichnung Y~X etwas verunsichert, wüsste nicht 
wofür das stehen soll.

Andreas S. schrieb:
> werden aber im FPGA höchstwahrscheinlich in Form
> von LUTs realisiert.

Wie kann man eine Schaltung aus LUTs zusammenbauen? Dachte, dass es sich 
dabei nur um Wahrheitstabellen handelt

von mhm (Gast)


Lesenswert?

töre schrieb:
> Mir ist gerade selber aufgefallen, wie dämlich die Frage war, der Kasten
> selbst stellt einen Multiplexer dar. Ich habe hier aber nochmal ein
> Beispiel, bei welchem ich nun nicht weiß, was die trapezförmigen Kästen
> darstellen sollen.
In diesem Bild sind die trapezförmigen Kästen wieder das gleiche: 
Multiplexer. Eben 2:1, daher genügt 1 Bit um den Eingang anzuwählen.

> Und noch eine allgemeine Frage: Welche logischen Bauteile sind in einem
> FPGA vorhanden?
Ein FPGA ist zum Großteil nicht direkt aus 'logischen Bauteilen' 
aufgebaut, wie du sie dir vorstellst (also and, or, nor, xor, usw.). 
Stattdessen wird die Logik in einem FPGA mit Hilfe von LUTs (Look up 
tables) gebildet. Diese haben mehrere Eingänge (meist zwischen 4 und 6) 
und einen Ausgang. Damit können dann arbiträre Logikfunktionen 
dargestellt werden. Zusammen mit FlipFlops (und eventuell anderem Kram 
wie zum Beispiel Addierer) bilden solche LUTs (i.d.R. zwei davon) dann 
einen Logikblock. Bei Altera werden diese ALM (adaptive logic module) 
und bei Xilinx CLB (configurable logic block) genannt. Nach diesen 
Akronymen einfach mal googlen und lesen...

von mhm (Gast)


Lesenswert?

Jetzt hat sich meine vorherige Antwort mit der von  Andreas Schweigstill 
überschnitten...

töre schrieb:
> Andreas S. schrieb:
>> werden aber im FPGA höchstwahrscheinlich in Form
>> von LUTs realisiert.
>
> Wie kann man eine Schaltung aus LUTs zusammenbauen? Dachte, dass es sich
> dabei nur um Wahrheitstabellen handelt

Genau, mit LUTs kannst du Wahrheitstabellen in Hardware implementieren. 
Und mit Hilfe von Wahrheitstabellen kannst du deine Logikfunktionen 
beschreiben. Also kannst du damit eine logische Schaltung aufbauen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

töre schrieb:
> Wie kann man eine Schaltung aus LUTs zusammenbauen? Dachte, dass es sich
> dabei nur um Wahrheitstabellen handelt

Jede nicht rückgekoppelte, kombinatorische Schaltung lässt sich als LUT 
realisieren! Deren Verhalten lässt sich schließlich als Wahrheitstabelle 
beschreiben. Der einzige Nachteil von LUTs besteht darin, dass ihre 
Größe exponentiell mit der Zahl der Eingänge wächst und daher in FPGAs 
nur bis ca. sechs Eingänge praktikabel ist.

: Bearbeitet durch User
von Vancouver (Gast)


Lesenswert?

>...was die trapezförmigen Kästen
> darstellen sollen.

Multiplexer, 2:1 in diesem Fall.

>
> Und noch eine allgemeine Frage: Welche logischen Bauteile sind in einem
> FPGA vorhanden?

Hauptsächlich D-FFs und Lookup-Tables (LUTs). In die kannst Du jede 
beliebige kombinatorische Funktion reinprogrammieren, z.B. ein 
AND-Gatter oder Vergleicher.
Das Schematic, das Du gepostet hast, zeigt nicht die tatsächlich 
verwendeten FPGA-Ressoucen, sondern eine abstraktere, aber leichter 
verständliche Darstellung mit Vergleichern, Multiplexern usw. Das ist 
die Register-Transfer-Ebene (RTL). Diese wird bei der Implementierung in 
FFs und LUTs transformiert.
Die tatsächliche Implementierung im FPGA kanst Du Dir auch irgendwo 
anschauen (keine Ahnung wo, ich kenne nur die Xilinx-Tools), aber das 
ist quasi der Maschinencode des FPGA, könnte man sagen. Nennt sich auch 
Technologiebene.  Es ist etwas mühevoll, darin Dein Design 
wiederzufinden, und im Allgemeinen auch nicht notwenig (aber manchmal 
eben doch).

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Vancouver schrieb:
> ist quasi der Maschinencode des FPGA, könnte man sagen.

Das wäre dann eher der "Assemblercode des FPGA". Der Maschinencode 
entspräche dem Konfigurationsbitmuster der einzelnen Blöcke, das gesamte 
Programm dem Bitstream.

Beinhalten die gebrächlichen Entwicklungsumgebungen wie 
ISE/Vivado/Quartus eigentlich auch Werkzeuge, mit denen man sich das 
Konfigurationsbitmuster einer LUT oder eines sonstige Blockes ansehen 
kann?

von töre (Gast)


Lesenswert?

Vancouver schrieb:
> Die tatsächliche Implementierung im FPGA kanst Du Dir auch irgendwo
> anschauen

Aso ok, habe gedacht dass dies mit dem RTL Viewer direkt funktionieren 
würde. Weiß jemand anderes, wo ich bei Quartus die genaue Verdahtung 
nachschauen kann. Würde mich mal interessieren, wie so ein einfacher 
Multiplexer in einem FPGA dann später aussieht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

töre schrieb:
> Würde mich mal interessieren, wie so ein einfacher Multiplexer in einem
> FPGA dann später aussieht.
Du wirst nur ein paar LUTs sehen...

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.