Forum: FPGA, VHDL & Co. Array beim DE! mit VHDL , wo kommen die Daten eigentlich rein?


von Peter B. (funkheld)


Lesenswert?

Hallo, guten Tag.
Wenn ich so einen Speicherbereich anlege für meinem DE1 mit VHDL, wo
werden eigentlich die Daten im DE1 gespeichert?
SRAM, SDRAM oder Flash ?

Danke.
Gruss

----------------------------------
signal sram8_32768 : mem8(32768 downto 0);
---------------------------------

: Bearbeitet durch User
von Christian R. (supachris)


Lesenswert?

Wenn du mit VHDL ein Array erzeugst und dann daraus einen Speicher 
baust, also ein Array von Arrays, dann ist das immer intern im FPGA. 
Jedes Bit braucht dann ein FlipFlop. Was genau mem8 bei dir hier oben 
für ein Datentyp ist, weiß ich nicht.

von Peter B. (funkheld)


Lesenswert?

Ich möchte das als Byte.

Was heißt bitte "intern im FPGA"?
Irgendwo muß doch der Speicherbereich geklaut werden.
Wann weiß ich denn das dieser Speicher im FPGA erschöpft ist bzw von wo 
kann ich den Verbrauch runterrechnen?

Danke.
Gruss

von Christian R. (supachris)


Lesenswert?

Intern heißt intern. Ein FPGA ist kein Microcontroller. Wenn du ein 
Array mit 32768 * 8 Bit anlegst und verschaltest, wird der Synthesizer 
erst mal 262144 FlipFlops dafür nehmen müssen. Es gibt je nach 
Hersteller verschiedene Sprachkonstrukte, sowas auf den BRAM abbilden zu 
lassen, bei Xilinx muss dafür die Leseadresse getaktet werden. Ist bei 
Altera sicherlich auch so. Dann wird der BRAM des FPGA (falls vorhanden) 
genutzt. Die Auslastung siehst du in den Tools nach der Synthese bzw. 
nach dem Routing.
Denk immer dran. Mit VHDL beschreibst du lediglich einen Schaltplan in 
Textform. Nicht mehr und nicht weniger. Wenn du den SRAM oder SDRAM oder 
Flash benutzen willst, brauchst du dafür einen Controller.
http://www.lothar-miller.de/s9y/categories/20-RAMFIFO

: Bearbeitet durch User
von Peter B. (funkheld)


Lesenswert?

Jup danke.

Andere Denkweise....

Danke.
Gruss

von Lattice User (Gast)


Lesenswert?

Peter Bierbach schrieb:
>
> Andere Denkweise....
>

Und deswegen weissen Lothar und andere immier wieder darauf hin, dass 
VHDL keine Programmiersprache ist. Dass man damit Dateien erzeugt mit 
denen man dann einen FPGA bzw CPLD "programmiert" spielt dabei keine 
Rolle.
Es ist jederzeit möglich einen Synthesizer zu bauen basierend auf 74er 
Bausteinen einen Schaltplan aus der VHDL Beschreibung erstellt, auch im 
Eagle,Altium etc Format. (Vielleicht hat sich das ja schon jemand 
angetan)


Das Handbuch um Cyclone II gibt es hier:

www.altera.com/literature/hb/cyc2/cyc2_cii5v1.pdf‎

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


Lesenswert?

Lattice User schrieb:
> Es ist jederzeit möglich einen Synthesizer zu bauen basierend auf 74er
> Bausteinen einen Schaltplan aus der VHDL Beschreibung erstellt
Auf jeden Fall besser als andersrum:
Beitrag "kruder Fehler bei FPGA-Programmierung (ISE WEBpack-Schematic)"

von T.U.Darmstadt (Gast)


Lesenswert?

Ich möchte hier keinesfalls eine Grundsatzdiskussion entfachen, aber 
angesichts der Unbedarftheit von Neuforennutzer Bierbach muss ich doch 
etwas einwerfen:

Christian R. schrieb:
> Denk immer dran. Mit VHDL beschreibst du lediglich einen Schaltplan in
> Textform. Nicht mehr und nicht weniger.
Das stimmt so nicht, wenn Du genauer nachdenkst. Einige VHDL-Befehle 
becheiben zwar Hardwarestrukuren, einige aber auch Softwarestukturen, 
also die Funktion einer Hardware. Und es ist wirklich die Funktion, ohne 
genaue Vorgaben. Das RAM ist doch das Beste Beispiel: Je nach Grösse 
werden es am Ende ein ROM-Tabellen, also ein LUT-GRAB, ein FF-Array oder 
eben ein echtes BlockRAM. Beschrieben wurde es nur als Kombinatorik mit 
einem Takt, fertig.


Lattice User schrieb:
> Und deswegen weissen Lothar und andere immier wieder darauf hin, dass
> VHDL keine Programmiersprache ist.
Wofür kein Anlass besteht, wenn man sich von der Vorstellung 
verabschiedet, dass "Programmieren" unbedingt etwas mit realen Prozessen 
zu tun haben muss, die auf realen Controllern laufen. Wir sind längst 
viel weiter und programmieren virtuelle Prozesse auf virtuellen 
Maschinen.

> Dass man damit Dateien erzeugt mit
> denen man dann einen FPGA bzw CPLD "programmiert" spielt dabei keine
> Rolle.
Das ist richtig, aber kein Wiederspruch zum Programmieren und damit kein 
Anlass, es nicht so zu nennen.

Die Programmierung, die der VHDL-Entwickler vornimmt, bezieht sich 
nämlich nicht (oder nicht allein) auf den FPGA, sondern auf einen 
Software. VHDL ist ein Sript, das eine Software steuert, nämlich die 
Synthesesoftware.

Wenn man so denkt, dann wird auch einem Neuling klar, dass nur deshalb, 
weil man in diesem Script solche Sachen wie Schleifen und Spreicher = 
Variablen benutzt, noch lange keine Speicher im FPGA entstehen müssen 
und schon gar keine Schleifen, die dann hinterher ausgeführt werden 
müssen.

von Bitflüsterer (Gast)


Lesenswert?


von Christian R. (supachris)


Lesenswert?

Thomas Ulrich schrieb:
> Einige VHDL-Befehle
> becheiben zwar Hardwarestrukuren

Genau, einige wenige. Vielleicht 5% von VHDL. Und eben nur diese einige 
wenige lassen sich synthetisieren. Ich bleibe dabei, VHDL ist 
texturierter Schaltplan. Klar kann man da vieles eleganter machen als 
mit Schaltplänen, aber es ist was grundsätzlich anderes als eine 
Programmiersprache in der man den sequenziellen Ablauf durch das 
sequenzielle Aufschreiben der Befehle erreicht. Du hast die Antwort ja 
selber gegeben: ROM, RAM, LUT usw kann entstehen, das sind aber alles 
Hardware-Elemente, keine Software. Die Abkürzung HDL ist da 
ausnahmsweise mal präzise passend.

von T.U.Darmstadt (Gast)


Lesenswert?

Christian R. schrieb:
> Genau, einige wenige. Vielleicht 5% von VHDL. Und eben nur diese einige
> wenige lassen sich synthetisieren.
Was für ein VHDL verwendest Du ?????
Und wenn es so wäre, dann wären ja 95% Software(?)

Wieviel sich synthestisieren lässt ist auch nicht der Aufhänger, wie man 
das, womit man es beschreibt, nennen soll. Das, was Du beschreibst, ist 
eine Software (VHDL), die in eine Software (Synthese) hineingegeben 
wird, die praktisch ein Parser ist. Du programmierst / kommandierst also 
eine Software. Und dabei ist es egal, ob diese Software dann ein 
Programmierfile rauswirf, einen C-Code, eine Hardware oder eine 
Mechanik.

> Ich bleibe dabei, VHDL ist texturierter Schaltplan.
Nein, es ist die Funktion des Schaltplans. Es ist eine Anweisungskette 
an einen virtuellen Schaltplandesigner. Ein Schaltplan wird nur 
beschrieben, wenn Du echte Logikgatter, UND, OR und soweiter 
ausdrücklich hinschreibst. Das ist aber vorbei. Heute wird eine Funktion 
beschrieben und diese dann von dem Tool in einen Schaltplan umgesetzt. 
Du programmierst die Funktion der Schaltung. Nicht die Schaltung. Beim 
Schaltplan "programmierst", malst, definierst Du tatsächlich die 
Verschaltung. Die Funktion wird nicht direkt beschrieben und ist nur 
dadurch vorhanden, dass die Funktion der Chips bekannt ist. Wohlgemerkt, 
ich hebe nicht darauf ab, dass EDA heute am PC passiert, also Softdaten 
als Gerber produziert werden etc, sondern auf das, was rauskommt: Eine 
Funktionsbeschreibung. Keine Strukturbeschreibung.

Eine Beschreibung wie: "wait on rising_edge" ist definitiv  eine 
Funktion. Und dies, obwohl sie synthetisierbar sit. Ob diese dann zu FFs 
führt oder nicht, hängt davon ab, wie das noch zusammengefasst wird. 
Genaugenommen, weiss Du nicht, wie die Schaltung aussieht, die Du 
beschreibst. Je nach LUT-grösse und Resourcen sieht die vollständig 
anders aus.

> Programmiersprache in der man den sequenziellen Ablauf durch das
> sequenzielle Aufschreiben der Befehle erreicht.
1. Du engst wieder ein, dass Programmiersprachen sequenzielle Befehle 
sind / zu einem sequentiellen Ablauf führen. Das hat nichts miteinander 
zu tun. Es gibt sequenzielle Software, die sich auf HW bezieht, z.B. 
Anweisung für Dehmaschinen und umgekehrt auch nicht-sequenzielle 
Programmiersprachen, die sich rein auf Software beziehen, wie C++.

2. Auch wenn es sequentiell / nicht sequentiell abgearbeitet wird, 
widerspricht dies nicht der Vorstellung der Hardwarebeschreibung, denn 
faktisch wird VHDL sequentiell abgearbeitet und zwar von einer Software. 
Diese aber interpretiert wie bei C++ die einzelnen Strukturen parallel 
und simuliert sie auch so. Das ist ja gerade der Grund, warum 
objektorientierter C++ Entwurf und VHDL so eng miteinander 
zusammenhängen.

Bei der Synthese läuft die per VHDL programmierte Synthesesoftware daher 
quasiparallel ab und erzeugt die vorgeschriebenen Strukturen gemäss den 
Anweisungen. Was aber sind diese Anweisungsketten anderes, als ein 
Programm?

VHDL steht auf derselben Stufe wie C++. Es hat aber eben auch die 
Strukturkomponenten der Hardware, also ein DSP Element oder ein 
ausdrücklich instanziiertes BRAM. Die werden bei der Synthese eben 1:1 
an die tieferen Werkzeuge übergeben.

"Hardwarebeschreibung" und "Programmierung" sind keine Gegensätze. Mit 
VHDL wird die Funktion einer Hardware beschrieben. Wie sie aussieht, 
weiss man nicht so genau. Das ist u.a. von den Constraints, der 
Resourcenverteilung und dem FPGA-Typ abhängig. Und:

Es ist von der Softwareversion des Herstellertools abhängig!

von Christoph Z. (christophz)


Lesenswert?

Thomas Ulrich schrieb:
> Christian R. schrieb:
>> Genau, einige wenige. Vielleicht 5% von VHDL. Und eben nur diese einige
>> wenige lassen sich synthetisieren.
> Was für ein VHDL verwendest Du ?????
> Und wenn es so wäre, dann wären ja 95% Software(?)

Ja, genau. Diese 95% sind nur nutzbar in einer Softwareumgebung nähmlich 
dem Simulator, haben also ganz direkt nichts mit FPGA oder ASIC 
Entwicklung zu tun.

> Wieviel sich synthestisieren lässt ist auch nicht der Aufhänger, wie man
> das, womit man es beschreibt, nennen soll. Das, was Du beschreibst, ist
> eine Software (VHDL), die in eine Software (Synthese) hineingegeben
> wird, die praktisch ein Parser ist. Du programmierst / kommandierst also
> eine Software. Und dabei ist es egal, ob diese Software dann ein
> Programmierfile rauswirf, einen C-Code, eine Hardware oder eine
> Mechanik.

Von Standpunkt der Theoretischen Informatik (Als Fachgebiet der 
Mathematik) ist es egal, was hinten herauskommt, richtig.

In der Praxis unterscheidet sich aber die Wahl der Tools/Sprache, das 
Entwicklungsvorgehen und der strukturelle Aufbau der Beschreibung 
massiv, je nach gewünschtem Endergebnis.

Wir reden hier von Hardwarebeschreibung weil das gewünschte Ergebnis 
(FPGA Programmierfile, ASIC Floorplan) und der übliche Prozess am 
Schluss eine Hardware ist.

Ob ich jetzt dazwischen 20 verschiedene Softwaretools habe, die mir 
meinen Source Code interpretiert, verarbeitet, optimiert und umwandelt 
ist egal.

Thomas Ulrich schrieb:
> Wir sind längst
> viel weiter und programmieren virtuelle Prozesse auf virtuellen
> Maschinen.

Ja, eigentlich sind wir vom Denken und der Theorie her viel weiter.Ein 
paar Leute hier verstehen auch, was damit gemeint ist.

Und jetzt erkläre mal in einfachen Worten einem Neuling der gerade 
erfolgreich ein paar kleine AVR Programme geschrieben hat und 
erfolgreich auf einem FPGA ein paar LEDs blinken lassen konnte was du 
damit sagen willst.

Thomas Ulrich schrieb:
> "Hardwarebeschreibung" und "Programmierung" sind keine Gegensätze. Mit
> VHDL wird die Funktion einer Hardware beschrieben. Wie sie aussieht,
> weiss man nicht so genau. Das ist u.a. von den Constraints, der
> Resourcenverteilung und dem FPGA-Typ abhängig.

Sehr richtig.

Ich mache mal den gleichen Abschnitt für C++:
Mit C++ wir die Funktion einer Software beschrieben. Wie sie aussieht, 
weiss man nicht so genau. Das ist u.a. vom Compiler, der 
Prozessorarchitektur und dem Betriebssystem abhängig.

von schlechtes Beispiel (Gast)


Lesenswert?

Christoph Z. schrieb:
> Wir reden hier von Hardwarebeschreibung weil das gewünschte Ergebnis
> (FPGA Programmierfile, ASIC Floorplan) und der übliche Prozess am
> Schluss eine Hardware ist.

Ein FPGA-Programmierfile ist aber eine Software und dein (Floor)-PLAN 
ganz besonders. Das sind beides theoretische weiche Dinge, die man 
duplizieren, archivieren und mehrfach anwenden kann. Eindeutig Software.

Ich sehe das auch so, dass VHDL eine Sprache ist, mit der die 
Erzeugersoftware eine Konfigurationssoftware erzeugt. Die Hardware ist 
einzig der FPGA. Es ist indirekt eine Form der Hardwareentwicklung durch 
Programmierung. Wo ist das Problem?

von noch ein schlechtes Beispiel (Gast)


Lesenswert?

Christoph Z. schrieb:
> Mit C++ wir die Funktion einer Software beschrieben.
Nein, es wird die Funktion eines Systems beschrieben. Das ist ja der 
Unterschied zum alten C wo das noch untergeordnet vorkam.  Es werden 
Objekte beschrieben, so, als wären sie real existent. Und zusätzlich 
wird das Verhalten von Objekten durch z.B. Methoden beschrieben.

Und genau das macht VHDL auch. Es gibt Beschreibungen von Strukturen und 
Beschreibungen von Verhalten, ohne näher auf Strukturen. Welche 
tatsächlichen Strukturen das später werden, sucht sich der Compiler aus. 
Das ist sogar viel offener, als im C/C++. Eigentlich ist VHDL noch 
abstrakter.

>Ja, genau. Diese 95% sind nur nutzbar in einer Softwareumgebung nämlich
dem Simulator,
Nein, sie sind eben auch in der Synthese nutzbar. Das Meiste, was mit 
synthesefähigem VHDL gemacht wird, ist sogar Verhaltensbeschreibung. Es 
sind umgekehrt 5%, die nur in der Simulation verwendet werden können. 
95% der Codemasse wird später zur Hardware, aber nicht dadurch, dass sie 
konkret definiert wurde, sondern dadurch dass die Funktion definiert 
wurde, die gebraucht wird.

Das meiste in VHDL sagt "baue mir was, was so und so funktioniert und 
stelle sicher, dass das Timing passt".

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


Lesenswert?

schlechtes Beispiel schrieb:
> Ich sehe das auch so, dass VHDL eine Sprache ist, mit der die
> Erzeugersoftware eine Konfigurationssoftware erzeugt
Also doch VHPL, oder wie?

Man kann natürlich zu einer VHDL Beschreibung auch mal "Code" sagen, 
aber es bleibt dabei: ich muss vorher wissen, ob der Synthesizer etwas 
auf die verfügbare Hardware abbilden kann. Und dazu mache ich mir vorher 
ein "Bild" meiner Hardware und beschreibe das dann mit der 
Beschreibungssprache VHDL.

von lulu (Gast)


Lesenswert?

Lothar Miller schrieb:
> Man kann natürlich zu einer VHDL Beschreibung auch mal "Code" sagen,
> aber es bleibt dabei: ich muss vorher wissen, ob der Synthesizer etwas
> auf die verfügbare Hardware abbilden kann. Und dazu mache ich mir vorher
> ein "Bild" meiner Hardware und beschreibe das dann mit der
> Beschreibungssprache VHDL.

sehe ich genauso und das ist kein Vergleich mit einer Hochsprache für 
einen uC/PC/etc..

in VHDL bedeutet nunmal, dass jede Signalzuweisung in einer 
rising_edge(clock) if-Anweisung in FlipFlops resultiert, und zwar in 
genauso viele FF, wie das Signal bzw. Vektor breit ist. Hier ist gar 
nichts virtuell etc. Das ist in jedem FPGA gleich.

Ein Komparator sind XNOR. Etc. in FPGAs eben LUTs.

Bei jeder Zeile VHDL was ich hinschreibe, habe ich im Hinterkopf, was 
der Synthesizer grundsätzlich versucht zu machen. Wie dann nun die 
boolesche Gleichung dazu aussieht ist eine Detailfrage.

Die Kunst mit FPGAs zu Arbeiten ist es eben, dass man sich in die 
Hardware hineinversetzt und in LUTs und FFs denkt. Solange das man nicht 
macht, hat man keine Chance einen FPGA gut zu beschreiben.

Spezielle Hardcores wie PLL, BlockRAMs, Transceiver, I/O Logik dienen 
meistens nur der Performance. Jeder Speicher muss nicht in BlockRAMs 
rein, sie können auch in FF abgebildet werden. Aber das Verhalten ist 
absolut identisch, sofern die Beschreibung dafür identisch ist.

Mein Word zum Wochenende.

Ich freue mich schon auf Woche 3 oder 4 mit Hr. Bierbach - langsam finde 
ich es sehr amüsant, wie wenig Ehrgeiz jmd hat bzw. wie 
beratungsresistent manche Leute sind. Nichts für ungut.

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


Lesenswert?

lulu schrieb:
> in VHDL bedeutet nunmal, dass jede Signalzuweisung in einer
> rising_edge(clock) if-Anweisung in FlipFlops resultiert, und zwar in
> genauso viele FF, wie das Signal bzw. Vektor breit ist. Hier ist gar
> nichts virtuell
Noch viel extremer ist 1 komplizierte if-Abfrage, die ja z.B. für ein 32 
Bit Wort u.U. 32 mal in Hardware (LUTs) gegossen wird. Und eben nicht 
nur 1 einziges Mal, wie das bei sequenzieller Software der Fall ist.

von Weltbester FPGA Pongo (Gast)


Lesenswert?

Lothar Miller schrieb:
> Noch viel extremer ist 1 komplizierte if-Abfrage, die ja z.B. für ein 32
> Bit Wort u.U. 32 mal in Hardware (LUTs) gegossen wird. Und eben /nicht/
> nur 1 einziges Mal, wie das bei sequenzieller Software der Fall ist.
Ich bezweifle hier aber ernsthaft, dass irgendjemand wirklich "vor 
Augen" hat, wie das aussieht, wenn er die IF-THENs zusammenbaut. Ich 
schon mal nicht :-)

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


Lesenswert?

Ich schon. Und ich seh mir das gern auch mal im RTL Schaltplan an. Genau 
so wie ich mir bei einem Prozessor zwischendurch mal den 
Assembler-Output des Compilers ansehe...

von lulu (Gast)


Lesenswert?

ich halte es mir bei timing-kritischen Sachen immer vor Augen. Wie sonst 
hat man eine Chance ein Design auf Ressourcen oder Timing zu optimieren, 
wenn man nicht weiß, was aus seiner eigenen Beschreibung rauskommt?! 
Klar ist es am Anfang schwierig bei einer Hochsprachensyntax wie VHDL 
oder Verilog in Gatter zu denken.

Grundsätzlich ist es ja auch nicht schwer. Die ganzen Konstrukte 
resultieren in FF, MUX, Komparator etc. die Steuerung einer FSM ist 
meistens ein Konstrukt aus FF, Komparator und LUTs (zum generieren des 
nächsten State-Vektor), die Ausgangslogik einer FSM werden meist MUX 
oder kombinatorische Logik sein.

Aber genau das ist der Punkt wo sich die "Programmierung" von einem FPGA 
mit einem uC/CPU/etc. unterscheidet!

von Weltbester-FPGA-Pongo (Gast)


Lesenswert?

Lothar Miller schrieb:
> Ich schon. Und ich seh mir das gern auch mal im RTL Schaltplan an. Genau
> so wie ich mir bei einem Prozessor zwischendurch mal den
> Assembler-Output des Compilers ansehe...

Lothar, RTL ist doch auch nur eine andere, theoretische Darstellung, die 
nicht der Realität entspricht, weil es diese Schaltplanelemente so im 
FPGA nicht gibt. Schon mal ein "Oder" mit 7 Eingängen gesehen?

Sicher muss man wissen, dass man keine elendig langen IF-THENs verwendet 
sondern dazwischen enabled und registriert um mehr, als z.B. 200 MHz zu 
packen, aber LUTs vorausahnen? Das Timing voraussehen?

Das Eizige, was man sinnvollerweise tun kann, ist, das REGs 
bereitzustellen, enge constraints zu setzen und das timing automatisch 
prüfen zu lassen. Die für das Gelingen des timings nötige Verschiebung 
von LUTs in günstigere Positionen muss er selber packen. Eine derartig 
detailreiche Optimierung ist doch garnicht mehr zu bezahlen. Dann müsste 
ich auch ständig post route timing-Simulationen machen. Macht man schon 
lange nicht mehr.

Wenn es um die funktionellen Elemente im FPGA geht, sind das in erster 
Linie state machines, deren Verhalten schiefgehen kann und die deshalb 
simuliert werden müssen, ansonsten ist es das Verhalten zur Aussenwelt, 
weil von draussen ein bischen was anders kommt, als im Datenblatt 
erkennbar war. Der Rest ist schnöde Verschaltung von CoreGen Objekten 
und auf die habe ich eh keinen Einfluss. Was will ich da noch auf 
mikroskopischer Ebene optimieren indem ich es anders beschreibe?

Mit VHDL wird doch bei Power-Apps (und die brauchen das gute Timing 
wegen des Tempos) kaum noch was anderes beschrieben, als die Verknüpfung 
von CoreObjekten. Das ist freilich eine Schaltung, unbestritten. Aber 
eine, die am Gesamtdesign mengenmässig einige %te an LUTs ausmacht im 
Vergleich zu den grossen Broken, die aus den Cores kommen.

Wenn ich einen PLDA-PCIe einbaue, wo will ich da am timing was schrauben 
und LUTs nachgucken und was verbessern? Das geht alles per constraints, 
also das Setzen von Rahmenbedingungen.

Wir zweckentfremden aber das Thema. Wenn Peter das jetzt liest, kommt er 
bestimmt auf die Idee, auch mal mit constraints zu spielen und einen 
PCIe einzubauen.

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


Lesenswert?

Weltbester-FPGA-Pongo schrieb:
> weil es diese Schaltplanelemente so im FPGA nicht gibt. Schon mal ein
> "Oder" mit 7 Eingängen gesehen?
Es ist sehr wertvoll, wenn ich weiss, dass es so etwas nicht gibt.

Ich würde sagen: RTL ist wie Assembler, denn auch in Assembler die dann 
mit genauerem Nachsehen unterschiedlich aufwendig und komplex sind. Das 
letzte und hardwarenächste Hilfsmittel ist dann die Technology Schematic 
und der Floorplaner.

Weltbester-FPGA-Pongo schrieb:
> Mit VHDL wird doch bei Power-Apps (und die brauchen das gute Timing
> wegen des Tempos) kaum noch was anderes beschrieben, als die Verknüpfung
> von CoreObjekten. Das ist freilich eine Schaltung, unbestritten. Aber
> eine, die am Gesamtdesign mengenmässig einige %te an LUTs ausmacht im
> Vergleich zu den grossen Broken, die aus den Cores kommen.
Das ist auch eine andere Sicht der Hardware. Auf dieser 
Abtraktionsebene bewegen wir uns hier nicht...

von Gustl B. (-gb-)


Lesenswert?

Also ich hab das jetzt mal gelesen und sehe das so:

VHDL beschreibt eine Funktion. Und diese wird dann auf die verfügbare 
Hardware abgebildet. Die Hardware ändert sich natürlich nicht, das FPGA 
wird ja nicht umgebaut oder so, aber wie es sich verhalt das ändert sich 
und lässt sich beschreiben. Auch ist VHDL nicht eindeutig, oft kann man 
VHDL Beschreibungen mit unterschiedlichen Schaltungen umsetzen.

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


Lesenswert?

Gustl Buheitel schrieb:
> das FPGA wird ja nicht umgebaut oder so, aber wie es sich verhalt das
> ändert sich
Ich würde da gern mal das Stichwort ASIC in den Ring werfen... ;-)

von Gustl B. (-gb-)


Lesenswert?

Genau! ASIC und FPGA sind gleich, also beides Hardware die sich nicht 
ändert. Aber im FPGA kann man Schaltungen abbilden, das erlaubt diese 
Form der Hardware, so dass es von aussen so aussieht, als könnte man den 
Chip umbauen.

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Kann mir der Verantwortliche bitte die negative Bewertung erklären? Hier 
glaubt doch hoffentlich Niemand, dass in einem FPGA tatsächliche 
Hardware verändert wird, also im Sinne von physikalischen Veränderungen 
an dem Baustein?!

von FPGA-Analysator (Gast)


Lesenswert?

Gustl Buheitel schrieb:
> Genau! ASIC und FPGA sind gleich, also beides Hardware die sich nicht
> ändert.
In dem Punkt sind sie gleich, nur in diesem Punkt.

> Aber im FPGA kann man Schaltungen abbilden, das erlaubt diese
> Form der Hardware, so dass es von aussen so aussieht, als könnte man den
> Chip umbauen.
In dem Punkt sind sie vordergründig nicht gleich, richtig - genau 
genommen aber doch, da auch im ASIC Schaltungen abgebildet werden und 
zwar im semi custom Etnwurf mit Standwarzellen - dies eben zur 
Entwurfszeit.

FPGAs sind zur Laufeit programmierbar - ASICS sind zur Entwurfzeit.
FPGAS sind damit sogar ähnlicher den Mikrocomputern. Und doch ist es 
etwas anderes.

Und obendrein ist das wieder eine Untersheidung, die nicht eigentlich 
klarstellt, was dann eine Hardwareentwicklung ist. Denn auch ein 
Mikrocontroller ist "hart" und programmierbar. Es geht ja um die 
Benennung der Entwurfmethodik und nicht das Objekt auf das es sich 
irgendwann mal bezieht.

Wann ist etwas Hardwareentwicklung und wann ist es Softwareentwicklung.

von Gustl B. (-gb-)


Lesenswert?

Ja also für mich sind alle Chips da draussen unveränderliche Hardware. 
FPGAs haben aber die Eigenschaft, dass deren Hardware so aufgebaut ist, 
dass man dort Dinge speichern kann, die die Funktionsweise (von aussen 
betrachtet) verändern.

VHDL ist für mich natürlich Hardwarebeschreibung, klar. Man beschreibt 
die Funktionsweise einer Hardware. Diese wird dann übersetzt in eine 
Hardwareschaltung, die man auch physikalisch bauen könnte. Verwendet man 
dann ein FPGA wird diese Hardwareschaltung aber nicht physikalisch 
gebaut, sondern auf schon vorhandene Bauelemente abgebildet. Wenn man 
das dann in das FPGA lädt, dann wird das so konfiguriert, dass es sich 
so verhält wie man die Schaltung beschrieben hat.

Ein Mikrocontroller ist natürlich auch nur ein ASIC. Und programmierbar. 
Weil der hat ein ROM und da kann man Bits speichern. Also beim FPGA ist 
das meist SRAM das da geladen wird und dann bestimmt welche Funktion der 
Stein hat. Ich möchte beides aber nicht vergleichen, weil Programme im 
uC etwas ganz anderes sind als abgebildete Schaltungen im FPGA. Aber es 
sind alles irgendwie ASICs, physikalisch ändert sich da nix, ausser der 
Ladung an stellen wo Bits gespeichert sind. Wie es sich nach aussen hin 
verhält, das kann man mit VHDL beschreiben oder beim uC programmieren.

Aber angenommen man hat jetzt einen unbekannten Chip. Kann man da 
feststelen ob das ein FPGA, oder ein uC oder ein single-purpose-ASIC 
ist? Also ohne aufschleifen und so, sondern nur an Hand dessen was man 
an den Beinchen messen kann. Ich frage weil das was ein uC macht, kann 
man oft auch im FPGA machen und manchmal auch umgekehrt wenn es nicht zu 
schnell wird.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Des Kaiser neue Kleider . . .

von Falk B. (falk)


Lesenswert?

Oder doch judäische Volksfront?

von Bitflüsterer (Gast)


Lesenswert?

Die Volksfront von Judäa sagt dazu: Nodum in scirpo quaerere.

von Bryan (Gast)


Lesenswert?

>Die Volksfront von Judäa sagt dazu: Nodum in scirpo quaerere.

Die Juden konnten keine Lateinisch! Wenn, war das einer der Römer. 
Schwanzus Logus hätte gesagt: Schuss jetzt ihr Pösen!

von Peter B. (funkheld)


Lesenswert?

Au...man , ist das schön : Hier ist auch ein Kindergarten !
Dann ist ja das "Soll" welches von der Bundesregierung gefordert wurde 
bald erfüllt.

Macht weiter so...

Gruss

von Carsten H. (Gast)


Lesenswert?

Das sagt der Richtige!
Beitrag "FPGA reagiert nicht auf Programm, nur Rauschen auf Pins"

Entschuldigung, aber das musste mal sein!

von berndl (Gast)


Lesenswert?

Weltbester FPGA Pongo schrieb im Beitrag #3631514:
> Ich bezweifle hier aber ernsthaft, dass irgendjemand wirklich "vor
> Augen" hat, wie das aussieht, wenn er die IF-THENs zusammenbaut.

Hallo! Also wenn ich ein if irgendwas in VHDL hinschreibe, dann habe ich 
schon so ein paar Sachen im Hinterkopf:
1.) Ist in irgendwas fliegende Logik oder sind das FF-Ausgaenge
2.) 4/6 Eingaenge kann ich ohne Kosten in einer LUT abbilden, bei mehr 
wird's eine 2. LUT und die braucht auch noch evlt. (je nach Architektur) 
Verdrahtung (und die ist im FPGA richtig teuer!)

Man sollte schon eine Vorstellung haben, wie das was man da so 
gedankenlos hinschreibt auch auf HW gemappt werden kann

von berndl (Gast)


Lesenswert?

Bitflüsterer schrieb:
> Die Volksfront von Judäa sagt dazu: Nodum in scirpo quaerere.

Vlt. eher "Romanum eunt domus"...

von Christoph Z. (christophz)


Lesenswert?

Gustl Buheitel schrieb:
> Aber angenommen man hat jetzt einen unbekannten Chip. Kann man da
> feststelen ob das ein FPGA, oder ein uC oder ein single-purpose-ASIC
> ist? Also ohne aufschleifen und so, sondern nur an Hand dessen was man
> an den Beinchen messen kann. Ich frage weil das was ein uC macht, kann
> man oft auch im FPGA machen und manchmal auch umgekehrt wenn es nicht zu
> schnell wird.

So generell würde ich sagen, das kann man durch Messungen an den Pins 
aussen nicht herausfinden.
Wie du ja richtig schreibtst, wenn dir jemand ein Pflichtenheft in die 
Hand drückt kannst du das oft mit allen drei Bausteinen lösen.

Meistens kannst du die Antwort ganz ohne Messungen finden: Herausfinden 
was das Gerät alles kann, herausfinden was das Geräte gekostet hat (am 
besten in der Herstellung und nicht für den Endkunden), abschätzen wie 
viele dieser Geräte pro Jahr gebaut werden, abschätzen mit welchen 
Bauelementen diese Produktionskosten erreicht werden können. Die Lösung 
mit den tiefsten Kosten ist warscheinlich die, die du im Gerät auch 
findest.

: Bearbeitet durch User
von Duke Scarring (Gast)


Lesenswert?

Lattice User schrieb:
> Es ist jederzeit möglich einen Synthesizer zu bauen basierend auf 74er
> Bausteinen einen Schaltplan aus der VHDL Beschreibung erstellt, auch im
> Eagle,Altium etc Format. (Vielleicht hat sich das ja schon jemand
> angetan)
Umgekehrt.
Ich habe einen Schaltplan genommen und statt dem einem D100D [1] 
folgenden Code verwendet:
1
entity d100d is
2
    port (
3
      a : in  std_ulogic;
4
      b : in  std_ulogic;
5
      y : out std_ulogic
6
    );
7
end entity;
8
9
architecture behave of d100d is
10
begin
11
   y <= not( a and b);
12
end architecture;

Thomas Ulrich schrieb:
>> Ich bleibe dabei, VHDL ist texturierter Schaltplan.
> Nein, es ist die Funktion des Schaltplans.
Streitet Euch nicht, Ihr habt beide Recht. VHDL kann verschiedene 
Aspekte des Y-Diagramm abbilden [2].

Duke

[1] 
http://www-user.tu-chemnitz.de/~heha/bastelecke/Konsumg%C3%BCter-Bastelei/DDR-Halbleiter/d100
[2] http://de.wikipedia.org/wiki/Y-Diagramm

von Gustl B. (-gb-)


Lesenswert?

Nein, ich lasse mich keineswegs vom Streiten abbringen.

VHDL beschreibt die Funktion eines Schaltplanes und die Netzliste, also 
das was dann da rausfällt, das ist der Schaltplan. Nach dem P&R wird 
daraus dann wieder etwas das den Schaltplan auf real verfügbare Hardware 
abbildet.

Wenn ich mit VHDL etwas beschreibe, irgendwelche 74er Steine oder so, 
dann wird das am Ende in LUTs abgebildet und in FFs. Also in Hardware 
die ich garnicht gemeint habe, aber die die Funktion besitzt.

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

Immer wieder erheiternd, die Diskussion um das "Programmieren" rund um 
FPGAs. Ich habe zu dem Thema schon soviel geschrieben, in Foren gepostet 
sowie hier im Wiki und auf Wikipedia eingetragen, dass man meinen 
sollte, es sei langsam klar :-)

Trotzdem scheint es immer noch welche zu geben, die den Umfang und 
Mächtigkeit von VHDL sowie die Komplexität des FPGA-Themas unterschätzen 
und nur Teilbereiche sehen. Die (meist alten) Hardwareleute sehen es 
nach wie vor oft nur als Schaltungsentwicklung und sehen immer wieder 
ein Schaltplantool vor Augen, während die (meist jungen) Softwareleute 
die Prozesse sehen und in virtuellen Landschaften denken. Beide 
Sichtweisen sind irgenwo richtig aber unvollständig. Auch hier in der 
Dikussion sieht man das wieder prächtig:

Gustl Buheitel schrieb:
> VHDL beschreibt die Funktion eines Schaltplanes und die Netzliste, also
> das was dann da rausfällt, das ist der Schaltplan.
Ja, funktionelles VHDL ist eine (reine) Funktionsbeschreibung ohne 
direkte Vorgaben für die Schaltung. Es gibt in VHDL aber auch Stuktur- 
und Objektanweisungen und die sind "hart". Und: Es gibt praktisch kein 
VHDL-Projekt in dem nicht beides massig vorkommt.

berndl schrieb:
> Hallo! Also wenn ich ein if irgendwas in VHDL hinschreibe, dann habe ich
> schon so ein paar Sachen im Hinterkopf:
> 1.) Ist in irgendwas fliegende Logik oder sind das FF-Ausgaenge
> 2.) 4/6 Eingaenge kann ich ohne Kosten in einer LUT abbilden, bei mehr
> wird's eine 2. LUT und die braucht auch noch evlt. (je nach Architektur)
> Verdrahtung (und die ist im FPGA richtig teuer!)

Das ist alles schon irgendwie richtig, aber wer bedenkt denn bitte die 
genaue LUT-Verwendung und wie will man darauf im Detail reagieren? Es 
ist doch im Gegenteil so, dass man VHDL verwendet, um es mal auf völlig 
andere Strukturen übertragen zu können, Thema ASIC wurde ja genannt.

Ausserdem: Spätestens wenn man solche Synthese-Anweisungen wie "Register 
Balancing" und "Multiplexer Extraction" verwendet, geht jeder 
Zusammenhang zwischen scheinbar beschriebener und tatsächlich erzeugter 
Hardware komlett verloren. Kombinatorische Logik aus einer Zeitebene 
vor einer FF-Bank wird dann teilweise mit der hinter der FF-Bank 
verheiratet und zusammengekürzt. Umgekehrt werden Register eingefügt, um 
das funktionelle Timing zu halten, damit die Rechnungen noch stimmen. 
Das weiteren werden Register eingefügt und Parallelzweige aufgemacht, um 
das logische Timing zu halten und die Frequenzanforderung zu packen. Und 
das alles macht die Synthese meist sehr effektiv und zuverlässig. Gerade 
deshalb sollte man sich dort, wo es nicht absolut unbedingt angezeigt 
ist, von der Vorstellung verabschieden, die Hardware eines FPGAs bis ins 
letzte Detail ansehen zu wollen, um dann das optimale VHDL dafür 
schreiben zu können. Das ist lange vorbei. LUTs oder CLBs aussuchen und 
verplanen haben wir vor 20 Jahren gemacht.

Lothar Miller schrieb:
> Und ich seh mir das gern auch mal im RTL Schaltplan an.
Freilich ist es interessant, sich das (z.b. im FPGA Editor) mal 
anzusehen, aber die Ergebnisse wären auch nur dort steuerbar, bzw mit 
den entsprechenden constraints. Mit VHDL lässt sich da prkatisch nichts 
machen, es sei denn, jemand setzt jede LUT und FF-location einzeln :-)

Wir entfernen uns aber zu weit vom Thema. Peter Bierbach wollte ja 
wissen, wie die Daten in seinen FPGA kommen. Soweit das noch nicht 
beantwortet worden ist:

Bei Altera beschreibt man am Besten kein RAM und hofft auf Erkennung 
desselben wie es bei Xilinx klappt,  sondern setzt es ausdrücklich als 
Funktionsblock rein und schließt es auf unterster Ebene im VHDL an. Die 
Daten für das RAM können während der Programmierung des FPGA schon 
defaultmässig eingesetzt werden. Dazu muss man ein binary file der Daten 
definieren und es in den Programmierdatenstrom einbinden lassen. Mit dem 
Altera Megazizzard kann man das bei der Erstellung des RAMs 
miterledigen.

von Roger S. (edge)


Lesenswert?

Jürgen Schuhmacher schrieb:
> Bei Altera beschreibt man am Besten kein RAM und hofft auf Erkennung
> desselben wie es bei Xilinx klappt

Inferred RAM funktioniert bei ALTERA genauso gut wie bei Xilinx.
Man kann durchaus portablen code schreiben welcher in beiden Welten ohne 
Anpassung dasselbe verhalten hat und die vorhandenen BRAM nutzt.

von J. S. (engineer) Benutzerseite


Lesenswert?

Also ich hatte da schon Fälle, wo ich kein BRAM bekommen habe sondern 
Register erzeugt wurden.
Ist aber eine Version so um 2006 gewesen.

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.