Forum: FPGA, VHDL & Co. Ist FPGA programmierung eine Hardwareentwicklung oder Softwareentwicklung?


von Kick B. (icekalt)


Lesenswert?

Dieser Frage bleibt immer in meinem Kopf. Eine soft-core processor(aus 
opnesource genommen) habe ich im altera cyclone 11 implementiert. Ich 
habe noch die VHDL code entwickelt um die Schnittstelle für die 
processor zu definieren. Meine dumme Frage, ist das was ich gemacht habe 
Hardwareentwicklung oder Softwareentwicklung?

von mr.chip (Gast)


Lesenswert?

Alles, was physisch realisiert wird, ist Hardware. Gilt für eine 
FPGA-Konfiguration also nicht. Also Software. Intuitiv stimmt das aber 
irgendwie nicht, deshalb spricht man vielleicht besser von sequentieller 
Programmierung (C, Assembler, ...) oder eben statischer Konfiguration 
(VHDL, Verilog, ...).

Man könnte es aber insofern als Hardware-Entwicklung durchgehen lassen, 
da die Methoden für FPGA-Programmierung und ASIC-Design ja über weite 
Strecken gleich sind - es wird in beiden Fällen die Verschaltung von 
Bauelementen definiert, nur wird diese untersschiedlich realisiert.

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


Lesenswert?

Die Diskussion war schon mal da:
Beitrag "VHDL - Software oder Hardware?"

Und die Frage wurde nicht allgemeingültig beantwortet ;-)

von Thomas R. (tinman) Benutzerseite


Lesenswert?

nicht um sonst spricht man von z.b. FPGA softcores, damit ist die frage 
beantwortet, es ist Softwareentwicklung.

In meinen augen sind FPGAs keine ASICs, daher keine hardwareentwicklung.

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


Lesenswert?

Bei FPGAs spricht man von IP-Cores.

> damit ist die frage beantwortet, es ist Softwareentwicklung.
Damit sind nach deiner Definition zumindest die Lehrinhalte an den 
Hochschulen irgendwie komplett falsch  :-o
Denn leider war keiner der Softies, der bisher bei uns aufgeschlagen ist 
(als Praktikant, Diplomant oder Bachele[rand]), in der Lage mit FPGAs 
etwas anzufangen.
Seine Kollegen aus der Hardware-Ecke können mit FPGAs schon eher was 
anfangen...

> In meinen augen sind FPGAs keine ASICs, daher keine hardwareentwicklung.
In meinen Augen ist "Hardware" auch das Programmieren eines 
aufwendigeren Bus-Interfaces (Busbreite, Wait-States, Arbiter, ...). Der 
Software-Entwickler kümmert sich nicht darum wie eine Variable gelesen 
und geschrieben wird. Sie hat sich aus seiner Sicht ganz einfach wie 
eine Variable zu verhalten.
Hardware ist z.B. auch das Ermitteln der Registereinstellungen eines 
Grafik-Controllers (Wiederholrate, Start, Ende, Sync...). Der 
Software-Entwickler erwartet ganz einfach, dass seine Pixel aus dem 
Speicher auf dem Bildschirm erscheinen.

von DirkP (Gast)


Lesenswert?

Bevor hier die heißen Diskussionen losgehen sollten wir uns doch erstmal 
auf das gleiche Level bringen und alle verfügbaren Informationen 
zusammentragen. Danach sollte erst eine Bewertung erfolgen.
Hier mal ein paar gemeinsamkeiten von VHDL und C(++/#),...

(1)
Beide sind Sprachen die ein Mensch benutzt um ein System im Verhalten zu 
beeinflussen.

(2)
Mittlerweile gibt es auch einige wenige Generatoren die aus C/Matlb-Code 
eine Netzliste erzeugen, wie es auch aus VHDL erzeugt wird. Natürlich 
ist das Ergebniss aufgrund des sequentiellen Grundgedankens bei C nur 
suboptimal.
Aber man kann mit C auch einen FPGA 'programmieren'. Nochmals nicht den 
Softcore der in den FPGA geladen wird, sondern den FPGA selbst!

(3)
Ob nun das Assembly aus C#, das binary aus C, die Netzliste aus VHDL, 
die ... einer SPS: Alle liegen in einer für das Zielsystem 
verständlichen Sprache vor und werden in einem Speicher für die 
Ausführung aufbewahrt.
PS.: Wer kennt noch den Vorgänger einer SPS? Glaube ich war 
Verbindungsgesteuerte-Programmierung. Da hat man die Relais fest 
miteinander verdrahtet. Die Schaltung konnte dann auch nur das Eine.

(4)
Ob nun C oder VHDL. Alle sind in der Lage physikalische Vorgänge zu 
beeinflussen. (Auch wenn es nur darum geht ein Pixel eines Displays zu 
erhellen, oder den Stromverbrauch zu erhöhen)

(5)
Das Ergebnis ist eine Mischung aus Sequentiellen Abläufen als auch 
paralleler Ausführung. Der C-Code wird zumeist auf wenigen 
Bearbeitungseinheiten ausgeführt (z.B. ALU's), die Tendenz geht aber 
klar zu mehreren Einheiten. Der VHDL-Code wird in Tausenden 
Bearbeitungseinheiten (LUT's) massiv parallel ausgeführt. Dennoch gibts 
auch hier eine kleine Tendenz zum sequentiellen Ablauf (z.B. Pipelines).

(6)
'Mittlerweile' gibt es Firmen (z.B. ARM) die keine Hardware herstellen. 
Die erstellen Ihre IP-Cores (z.B. ARM9) und lizensieren diese an andere.
ARM schreibt hauptsächlich in VHDL/Verilog, während der Lizenznehmer an 
diesem Teil nichts mehr verändert sondern nur noch in die passende 
Technologie mappt. [...]. Ob ich nun den Code in einen FPGA mappe oder 
direkt in einen ASIC. Es bleibt meines erachtens Software.

Aus meiner Sicht ist derjenige der in VHDL entwickelt nichts anderes als 
ein stinklangweiliger Softwareprogrammierer. Auch wenn die ganze Story 
sehr hardwarenah geschieht. Derjenige der dann vielleicht den 
entstandenen Chip auf die Wärmeverteilung auf dem Chip untersucht und 
dann ein Feedback an die Leute vom Mapping gibt, dass das der Core XYZ 
weiter weg vom Core ABC muss, darf sich von mir aus noch 
Hardwareentwickler benennen.

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


Lesenswert?

> Aus meiner Sicht ist derjenige der in VHDL entwickelt nichts anderes als
> ein stinklangweiliger Softwareprogrammierer.
Das ist aber schon sehr sehr global betrachtet...
Dann wäre einer, der Schaltpläne zeichnet bzw. ein Layouter ein Maler, 
weil er ja auch nur Linien malt  :-o

Vielleicht könnte man Hard- und Software-Entwickler anhand der 
Debug-Varianten unterscheiden.
Also z.B. Debugging mit Logik-Analyzer und Oszi = Hardware-Entwickler

von Guest (Gast)


Lesenswert?

Wer FPGA-Design als reine Softwareentwicklung betrachtet wird bei 
komplexeren Designs sehr schnell auf die Nase fallen. Man verfasst zwar 
so etwas wie "Code", sollte aber immer vor Augen haben was für 
Hardwarestrukturen daraus entstehen. Begriffe wie synchrones 
Schaltungsdesign, Signallaufzeit, Setup-/Holdtime etc... sind 
elementares Hardwarewissen und auch Grundlage beim FPGA-Design. Für das 
Design auf RTL-Ebene sind völlig andere Kenntnisse nötig als in der 
Softwarewelt. Die "Denke" ist eine andere. Wer VHDL-Code schreibt und in 
Software denkt wird nie optimale Ergebnisse erzielen.

von Karl (Gast)


Lesenswert?

[x] Hardware

VHDL: Very High Speed Integrated Circuit Hardware Description Language

Man programmiert ein FPGA nicht, man beschreibt die Funktion einer 
Schaltung. Ein FPGA emuliert diese Schaltung nur. Bei der BEschreibung 
tut man IMO gut daran, in Wahrheitstabellen und FFs zu denken. Dass man 
die Werte in den Tabellen sequentiell beschreiben kann ist einfach nur 
bequem, ändert aber nichts daran, dass man hinterher fest verdrahtete 
Logik produziert.

Nach der Argumentation einiger Leute wäre die Benutzung eines FPAAs auch 
nur Software. Analog-Software ;)

von Michael S. (msk) Benutzerseite


Lesenswert?

VHDL ist eine Hardwarebeschreibungssprache, keine Programmiersprache. 
Das Einzige, was an VHDL fälschlicherweise den Eindruck einer 
Programmiersprache erwecken könnte, ist eine mögliche verhaltenbasierte 
Beschreibung der Hardware.
Dieser Irrglauben, VHDL-"Programmierung" zu machen, ist leider weit 
verbreitet und zeigt, dass die Betreffenden eigentlich nie richtig 
gelernt oder verstanden haben, was sie da tun. Das sieht man dann auch 
an den Designs oder dem Glauben daran, so was auch vernünftig mit C 
machen zu können.

BTW: Hätte man bei uns in der mündlichen Prüfung für Schaltungstechnik 
und Systementwurf den Begriff "VHDL-Programmierung" in den Mund 
genommen, wäre man wahrscheinlich hochkant aus der Prüfung geflogen. ;)

von Michael S. (msk) Benutzerseite


Lesenswert?

DirkP schrieb:
> (2)
> Mittlerweile gibt es auch einige wenige Generatoren die aus C/Matlb-Code
> eine Netzliste erzeugen, wie es auch aus VHDL erzeugt wird. Natürlich
> ist das Ergebniss aufgrund des sequentiellen Grundgedankens bei C nur
> suboptimal.

Es ist suboptimal, weil bei solchen Aktionen das Runde in das Eckige 
gebracht werden soll. Mir rollen sich bei solchen Ansätzen immer die 
Fußnägel.
Aber die Toolhesteller freut es und die liefern natürlich gern 
irgendwelche Tools für Leute, die den Unterschied zwischen 
Hardwarebeschreibung und Softwareprogrammierung nicht verstanden haben. 
Die machen richtig viel Kohle damit.

> (4)
> Ob nun C oder VHDL. Alle sind in der Lage physikalische Vorgänge zu
> beeinflussen. (Auch wenn es nur darum geht ein Pixel eines Displays zu
> erhellen, oder den Stromverbrauch zu erhöhen)

Prima, nach der Logik ist jeder Designer von Analgoschaltungen auch ein 
Softwareprogrammierer. LOL

> (5)
> Das Ergebnis ist eine Mischung aus Sequentiellen Abläufen als auch
> paralleler Ausführung. Der C-Code wird zumeist auf wenigen
> Bearbeitungseinheiten ausgeführt (z.B. ALU's), die Tendenz geht aber
> klar zu mehreren Einheiten. Der VHDL-Code wird in Tausenden
> Bearbeitungseinheiten (LUT's) massiv parallel ausgeführt. Dennoch gibts
> auch hier eine kleine Tendenz zum sequentiellen Ablauf (z.B. Pipelines).

Der VHDL-Code wird überhaupt nicht "ausgeführt" wie Software! Der 
VHDL-Code konfiguriert (je nach Hardware) die im ASIC verbauten 
Schaltungen.
Allein diese Aussage zeigt, dass auch Du nicht wirklich verstanden hast, 
was man mit VHDL eigentlich tut.

von Michael S. (msk) Benutzerseite


Lesenswert?

Nur noch die Antwort zur eigentlichen Frage:

Kick Beer schrieb:
> Dieser Frage bleibt immer in meinem Kopf. Eine soft-core processor(aus
> opnesource genommen) habe ich im altera cyclone 11 implementiert. Ich
> habe noch die VHDL code entwickelt um die Schnittstelle für die
> processor zu definieren. Meine dumme Frage, ist das was ich gemacht habe
> Hardwareentwicklung oder Softwareentwicklung?

Hardwareentwicklung, ganz klar.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Michael S. schrieb:
> Der VHDL-Code wird überhaupt nicht "ausgeführt" wie Software! Der
> VHDL-Code konfiguriert (je nach Hardware) die im ASIC verbauten
> Schaltungen.
Und wenn mein VHDL Code Daten für ein Block-RAM enthält welches von 
einem Soft-Core ausgeführt wird? :P

Ist ein OTP uController Programmiert worden oder nur konfiguriert?

Dürfen FPGAs Daten aus einem externen Speicher ausführen ohne als uC 
beschimpft zu werden :)

von Michael S. (msk) Benutzerseite


Lesenswert?

Hier übrigens noch eine Buchempfehlung, die nicht nur die Zusammenhänge 
des Entwurfs digitaler Schaltungen sehr schön und ausführlich 
beschreibt, sondern auch dem Letzten klarmachen sollte, dass 
Hardwareentwurf und Softwareprogrammierung zwei verschiedene Dinge sind:

Klaus ten Hagen: "Abstrakte Modellierung digitaler Schaltungen", 
Springer-Verlag

Wenn dieses oder ähnliche Bücher von allen, die mit VHDL zu tun haben, 
gelesen und verstanden worden wäre, wären viele Designs nicht so 
grottig, wie sie es sind.

von Michael S. (msk) Benutzerseite


Lesenswert?

Läubi .. schrieb:
> Und wenn mein VHDL Code Daten für ein Block-RAM enthält welches von
> einem Soft-Core ausgeführt wird? :P

Die Antwort gibst Du Dir doch schon selbst: Das eine ist VHDL-Code, das 
andere sind die Daten.

von mac4ever (Gast)


Lesenswert?

@Läubi
Wie Michael bereits schrieb werden Daten aus einer externen Quelle 
verarbeitet. Die Verarbeitungseinheit ist allerdings eine 
VHDL-Beschreibung. Ohne diese Beschreibung macht das FPGA überhaupt 
nichts!
Zum Vergleich liegt bei einem uC das gesamte Programm ( Opcodes + Daten 
) im Speicher. Die Verarbeitungseinheit ist der uC selbst und dessen 
Verhalten kann nicht verändert werden. Oder ist ein uC jetzt auch nur 
ein Stück Software? ;)

von Thomas R. (tinman) Benutzerseite


Lesenswert?

Lothar Miller schrieb:

> Dann wäre einer, der Schaltpläne zeichnet bzw. ein Layouter ein Maler,
> weil er ja auch nur Linien malt  :-o
>


Entwickeln ist nicht zeichnen, zeichnen ist malen, also ein Maler :)


Ich habe nicht lange genug und vor allem nicht tief genug mit FPGA zu 
tun gehabt um eine wirklich "mitsprechen dürfen", jedoch von dem was ich 
gesehen habe sind viele designs nix anderes als (jetzt kommt) einen 
fahrzeug aus lego bausteinen bauen, fahren wird es schon, nur hat mit 
fahrzeugbau nix zu tun.

Wenn ich einen softcore cpu in einem fpga implementiere, mit blockram, 
und stück 'daten' bin hardwaredesigner, wenn ich einen 'softcore cpu' 
auf einem z.b. PC mit 'stück ram' und daten verknüpfe (ein emulator) bin 
dann softwaredesigner, mache ich es nciht auf dem PC sondern in einem µC 
bin wieder hardwaredesigner ?

Was aber wenn ich jetzt eine z80 cpu emulation für microblaze entwickle 
(mit C++), und die emulierte cpu mit stück blockram und daten verbinde 
.. oh nein, was bin ich dann ? soft oder hardware designer ? oder soft 
sobald ich im c++ und hard sobald microblaze auf "externe" komponenten 
zugrieft, wie z.b. blockram

Natürlich ist das ein schlechtes beispiel, da weder FPGAs oder PCs dafür 
erfunden worden sind nur einen stück 'soft cpu' laufen zu lassen - das 
ist als ob man Calculator unter windows startet und sofort den computer 
als Calculator bezeichnet - denoch ein typischen beispiel um zu zeigen 
wie verwirrend sein kann die berufsbezeichnung (-gruppen zugehörigkeit) 
für einen "fpga designer" zu finden. Ich persönlich würde lieber vom 
FPGA Design / Designer sprechen.

Übrigens, ein hardware designer vom 'damals' der gerade die 5te etage an 
Relais am schweisen war, war der jetzt schweiser oder hardware designer 
? :) Falls ihm sein lerhrer gesagt hat 'du bist schweiser', dann war er 
auch einer, falls aber 'du bist hardware designer' dann war er hardware 
designer - so viel zum thema :

Lothar Miller schrieb:
> Damit sind nach deiner Definition zumindest die Lehrinhalte an den
> Hochschulen irgendwie komplett falsch  :-o
> Denn leider war keiner der Softies, der bisher bei uns aufgeschlagen ist
> (als Praktikant, Diplomant oder Bachele[rand]), in der Lage mit FPGAs
> etwas anzufangen.
> Seine Kollegen aus der Hardware-Ecke können mit FPGAs schon eher was
> anfangen...

von berndl (Gast)


Lesenswert?

nur mal 'n Beispiel aus meiner momentanen Praxis: Ich habe einen uC, der 
seriell Daten zu einem FPGA schaufelt und andere Daten zurueck bekommt. 
Die serielle Uebertragung ist mit CRC protected. Auf dem uC baue ich mir 
das Kommando zusammen, danach eine loop die die CRC berechnet, an das 
Paket anhaengt und dann zum FPGA abschickt.
Auf dem FPGA mache ich einen CRC-Update nach jedem Bit das ich empfange, 
wenn das Paket komplett eingetroffen ist, weiss ich, ob die CRC korrekt 
war oder falsch.

Also in beiden Faellen mache ich im Prinzip das Gleiche (den gleichen 
Algorithmus), aber ich mache es aus naheliegenden Gruenden 
unterschiedlich.

Also ich wuerde sagen, uC-seitig bin ich SWerker, FPGA-seitig bin ich 
HWerker...

von yalu (Gast)


Lesenswert?

Die Diskussion, ob FPGA-Design Hardware- oder Softwareentwicklung ist,
ähnelt der Diskussion, ob Angeln Sport ist oder nicht: Bevor man darüber
sinnvoll diskutieren kann, muss man sich auf eine genaue Definition des
Begriffs "Sport" bzw. der Begriffe "Hardware", "Software" und
"Entwicklung" einigen. Ohne genaue Definitionen ist der Übergang
zwischen Hardware- und Softwareentwicklung sehr fließend:

Ein klassischer Softwareentwickler wird in einem FPGA vielleicht, wie
von DirkP angedeutet, einen massiv parallelen Prozessor mit Tausenden
primitiver Verarbeitungseinheiten sehen, für den in speziell dafür
optimierten Programmiersprachen (nämlich HDLs) Software entwickelt wird.

Ein klassicher Hardwareentwickler sieht in dem FPGA eher eine Sammlung
Tausender von Logikbausteinen, aus denen auf eine neuartige Art und
Weise (nämlich ohne Verwendung von Lötzinn) eine elektronische Schaltung
zusammengebaut wird.

Trotz dieser beiden möglichen Sichtweisen hat es aber ein klassischer
Hardwareentwickler beim FPGA-Design deutlich leichter als ein
klassischer Softwareentwickler (s. auch Kommentar von Lothar Miller).
Das hängt aber auch damit zusammen, dass die dabei vorherrschenden
Sprachen (Verilog und VHDL) viel stärker den Hardware- als den
algorithmischen Aspekt betonen. Das könnte sich aber mit künftigen,
stärker abstrahierenden Sprachen und intelligenteren Compilern ändern.
Ansätze dafür gibt es ja schon.

Vielleicht sollte man analog zum Welle-Teilchen Dualismus einfach vom
Hardware-Software-Dualismus sprechen ;-)

So wie je nach Wellenlänge bzw. Teilchenimpuls der Wellen- oder der
Teilchencharakter stärker in Erscheinung tritt, verhält es sich auch mit
dem Hardware- und Softwarecharakter:
1
            ^        Hochsprachenprogrammierung         |
2
zunehmender |          Assemblerprogrammierung          | zunehmender
3
Software-   |            Mikroprogrammierung            | Hardware-
4
charakter   |                FPGA-Design                | charakter
5
            | Schaltungsentwicklung mit Logikbausteinen v

Gerade bei der Mikroprogrammierung sehe ich die Gewichtung
Hardware:Software bei etwa 1:1 und täte mir deswegen äußerst schwer, sie
in eine der beiden Schubladen einzuordnen. Geht es euch nicht so?

von berndl (Gast)


Lesenswert?

yalu (Gast) schrieb...

Nein, nein, und nochmals nein!

Ich bin nach wie vor ueberzeugt, dass die 'Denke' eine ganz andere ist. 
Wenn ich SW mache, dann geht es darum, in einem sequentiellen Prozess 
etwas moeglichst schnell zu erledigen. Wenn ich HW mache, dann geht es 
darum, mit der gegebenen Moeglichkeit Sachen parallel zu maechen etwas 
moeglichst effizient zu implementieren.

Natuerlich gibt es da Ueberschneidungen. Aber nochmal, die 'Denke' ist 
eine ganz andere...

Und ich hoffe, dass es viele gute HW-Entwickler gibt, damit die 
Tools-Schreiber keine Chance haben, das jemals aufzuholen. Und ja, die 
Tools sind heutzutage schon verdammt gut, fuer viele 0815-Bereiche sogar 
so gut, dass ein SWerker etwas funktionierendes in VHDL oder Verilog 
hinbekommt. Aber ein 'echter' HWerker kann das dann noch betraechtlich 
optimieren und damit Kosten sparen.

Bin immer noch der Meinung, dass hier eigentlich 2 Welten aufeinander 
treffen, auch wenn sie sich in den Aufgabenstellungen mehr und mehr 
ueberschneiden...

von Michael S. (msk) Benutzerseite


Lesenswert?

berndl schrieb:
> Natuerlich gibt es da Ueberschneidungen. Aber nochmal, die 'Denke' ist
> eine ganz andere...

Exakt. Mit VHDL beschreibt man eine digitale Schaltung. Das ist 
schon in der Bezeichnung "VHDL" unmissverständlich so enthalten. Ob 
diese digitale Schaltung nun nur simuliert wird oder nicht in Form von 
Gattern, sondern als LUTs in Hardware abgebildet wird, ist dabei völlig 
egal. Auch bei einem Entwurf analoger Schaltungen käme niemand auf die 
Idee, das als Programmierung zu bezeichnen, nur weil man Schaltungen mit 
Spice simuliert oder integrierte Schaltungen anstatt von einzelnen 
Bauteilen verwendet.

Weder digitale Schaltungen noch analoge Schaltungen sind Software, auch 
wenn Erstere durchaus Software im Speicher enthalten und ausführen 
können. Auch ist der Begriff "Softcore" nicht mit "Software" 
gleichzusetzen, genauso wie "Soft-Makros" nichts mit Software im 
eigentlichen Sinne zu tun haben.

Ehrlich gesagt wundert mich diese Diskussion hier in einem technischen 
Forum wie diesem. Eine solche Diskussion habe ich im universitären 
Umfeld bei entsprechenden Fachrichtungen niemals mitbekommen, dort würde 
man sich damit sofort disqualifizieren.

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


Lesenswert?

> Auch bei einem Entwurf analoger Schaltungen käme niemand auf die
> Idee, das als Programmierung zu bezeichnen
Doch, der Herstellervon von solchen Bausteinen:
Field Programmable Analog Arrays  FPAA   :-o

> Eine solche Diskussion habe ich im universitären Umfeld bei
> entsprechenden Fachrichtungen niemals mitbekommen, dort würde
> man sich damit sofort disqualifizieren.
Im Umkehrschluss heißt das für mich: es werden im universitären Umfeld 
viele Sachen einfach deshalb nicht diskutiert, weil man sich dabei 
blamieren könnte.

> Eine solche Diskussion habe ich im universitären Umfeld bei
> entsprechenden Fachrichtungen niemals mitbekommen, dort würde
> man sich damit sofort disqualifizieren.
Vielleicht hat einfach noch niemand die Frage gestellt?

von Michael S. (msk) Benutzerseite


Lesenswert?

Lothar Miller schrieb:
> Doch, der Herstellervon von solchen Bausteinen:
> Field Programmable Analog Arrays  FPAA   :-o

Programmierung im Sinne von Konfiguration/Brennen, nicht im Sinne von 
Softwareprogrammierung.

> Im Umkehrschluss heißt das für mich: es werden im universitären Umfeld
> viele Sachen einfach deshalb nicht diskutiert, weil man sich dabei
> blamieren könnte.

Nein, würde. Insbesondere dann, wenn man Vorlesungen zum 
Schaltungsentwurf besucht hat.

> Vielleicht hat einfach noch niemand die Frage gestellt?

Die Frage stellt sich nur insofern, dass Studenten typischerweise schon 
mal eine Programmiersprache wie C kennengelernt haben und denen dieser 
grundsätzliche Unterschied erstmal nahegebracht werden muss.

Aber warum stellen wir uns nicht einfach mal die Frage, ob der Entwurf 
analoger Schaltungen nicht auch nur Softwareprogrammierung ist? :D

von yalu (Gast)


Lesenswert?

berndl schrieb:

> Ich bin nach wie vor ueberzeugt, dass die 'Denke' eine ganz andere
> ist.

Da stimme ich dir zu, zumindest was die heute eingesetzten Methoden,
FPGA-Design und Computersoftwareentwicklung zu machen, betrifft.

> Wenn ich SW mache, dann geht es darum, in einem sequentiellen Prozess
> etwas moeglichst schnell zu erledigen.

Deswegen (wegen dem sequentiellen Prozess) habe ich oben das "heute"
hervorgehoben. Ich bin aber der Überzeugung, dass Computersoftware-
entwicklung und Hardwaredesign zukünftig sehr stark aufeinander zugehen
werden und damit die Unterschiede in den Vorgehensweisen mehr und mehr
verblassen werden.

> Natuerlich gibt es da Ueberschneidungen. Aber nochmal, die 'Denke' ist
> eine ganz andere...

Ähnlich stark unterschiedliche Denkweisen gibt es auch innerhalb der
reinen Softwareentwicklung. Vielleicht hast du schon einmal etwas von
deklarativer Programmierung gehört, wenn nicht:

  http://de.wikipedia.org/wiki/Deklarative_Programmierung

Sie unterscheidet sich von der imperativen Programmierung genauso stark,
wie diese von der VHDL-"Programmierung", erfordern also eine völlig
andere Denkweise. Bei dieser Form der Programmierung ist bspw. nichts,
aber auch gar nichts sequenziell¹, daher die Bezeichnung "deklarativ".

Wenn man zwischen FPGA-Design und Softwareentwicklung die von dir (und
anderen) vorgeschlagenen harte Trennung macht und die unterschiedliche
Denke als Grund dafür hernimmt, müsste man konsequenterweise zwischen
der imperativen und der deklarativen Programmierung eine genauso harte
Trennlinie ziehen und deswegen neben "Hardware" und "Software" einen
neuen Begriff einführen, vielleicht "Liquidware" oder "Fluidware"².

Noch schlimmer: Da die einzelnen Unterklassen der deklarativen
Programmierung (funktional, logisch usw.) untereinander ebenfalls völlig
verschieden in der Denke sind, müsste man für jede von ihnen einen
neuen "Ware"-Begriff erfinden.

Jetzt wirst du einwenden, dass solche Formen der Programmierung so
abstrakt sind und ganz am äußersten Ende des Hardware->Software-Strahls
liegen, dass sie in diesem Thread sowieso offtopic sind.

Weit gefehlt: Eine weitere Unterklasse der deklarativen Programmierung
ist nämlich die datenflussorientierte Programmierung, und die
bekanntesten Sprachen dieser Unterklasse sind ...


... VHDL und Verilog.


Womit sich der Kreis wieder schließt.

Es hat also bei Themen wie FPGA-Design und Mikroprogrammierung überhaupt
keinen Sinn und erst recht keinen Nutzen, sie in althergebrachte
Schubladenkonzepte zu zwängen, auch wenn das viele Professoren immer
wieder versuchen, um nicht ständig neue Schubladen basteln zu müssen.
Der Begriff "Software" stammt aus den späten 50er Jahren, da hat noch
keiner an HDLs gedacht. Die kamen erst 20 Jahre später.


PS: Ich wollte das einfach mal so in den Raum stellen ... :)

————————————————
¹) Die kompilierten Programme werden zwar auf Grund von Beschränkungen
der heute üblichen Prozessorarchitektur sequenziell ausgeführt, das hat
aber nichts mit der eigentlichen Softwareentwicklung zu tun.

²) Der Begriff "Vaporware" ist leider schon anderweitig belegt ;-)

von berndl (Gast)


Lesenswert?

also ich will hier garnix einwenden :o)

Punkt ist, es gibt ne Menge Dinge, die man in SW sehr gut loesen kann, 
vor allem wenn die Timing-Anforderungen beherschbar sind....

Und dann gibt es noch so sachen, wo jeder Versuch, das in SW zu loesen, 
von vornherein zum scheitern verurteilt ist, da HW halt eben viel 
schneller sein kann als SW...

Auch hier ein klares Statement: Wenn ich die Wahl zwischen einer SW und 
einer HW Loesung habe, dann wuerde ich auch zur SW tendieren, ist halt 
nunmal einfach flexibler. Aber es gibt (zum Glueck) noch 'ne Menge 
Ecken, wo SW einfach viel zu lahmarschig ist... Und das unabhaengig von 
Price/Performance...

von Analytiker (Gast)


Lesenswert?

> Ich bin nach wie vor ueberzeugt, dass die 'Denke' eine ganz andere ist.

Nein. Du bist nur gefangen in Deinem eigenem Denk-Käfig.


> Wenn ich SW mache, dann geht es darum, in einem sequentiellen
> Prozess etwas moeglichst schnell zu erledigen.

Es gibt auch noch ein Leben jenseits der Imperativen Programmierung...


> Wenn ich HW mache, dann geht es darum, mit der gegebenen Moeglichkeit
> Sachen parallel zu maechen etwas moeglichst effizient zu implementieren.

Nein. Weder Effizienz noch Parallelität unterscheiden zwischen Hardware 
und Software.


In der Realität ist es doch einfach:

Wer sich überlegt, welche Abblock-Kondensatoren wo an das FPGA 
angeschlossen werden, wer sich den Schaltplan überlegt, Layout 
entwickelt, EMV-Sachen berechnet etc. der macht in Hardware.

Wer irgendwelche Daten, Programme, Informationen erzeugt, die nachher in 
die Hardware geladen wird etc., macht in Software.

von Harald (Gast)


Lesenswert?

>Wer sich überlegt, welche Abblock-Kondensatoren wo an das FPGA
>angeschlossen werden, wer sich den Schaltplan überlegt, Layout
>entwickelt, EMV-Sachen berechnet etc. der macht in Hardware

Nein, der macht ein board! Das ist dasselbe, wie einen Prozzi und RAMS 
einzudesignen.

Die Schaltfunktion im FPGA wird aus Konfigurationen erzeugt, und Abläufe 
hinterlegt, Das ist Software.

Auch nach den Standards in den mir bekannten Firmen ist FPGA-Entwicklung 
eine Softwareentwicklung.

von Analytiker (Gast)


Lesenswert?

Ähm, und was hab ich nun anderes geschrieben???

von Michael S. (msk) Benutzerseite


Lesenswert?

Harald schrieb:
> Die Schaltfunktion im FPGA wird aus Konfigurationen erzeugt, und Abläufe
> hinterlegt, Das ist Software.
>
> Auch nach den Standards in den mir bekannten Firmen ist FPGA-Entwicklung
> eine Softwareentwicklung.

Sorry, aber das ist einfach nur Quark.

von Gast (Gast)


Lesenswert?

Jetzt wird mal wieder seitenlang darüber diskutiert wie etwas, von dem 
jeder eine etwas andere Definition hat, in ein Kategoriensystem 
eingepasst werden kann, das jeder wiederum etwas anders einteilt. Sinn?

von Der Besucher (Gast)


Lesenswert?

Eine Schaltung für ein FPGA zu "beschreiben" ist Hardwareentwicklung.
Ich definiere das jetzt einfach mal so, dann ist der Streit vorbei :)

Es gibt kein "Besser" und "Schlechter" zwischen Software und Hardware.
Nur gibt es manchmal optmimalere Lösungen.
Solange man etwas mit Software realisieren kann, was den Anforderungen 
genügt, sollte man das aus Kostengründen schon tun. Besonders, wenn es 
nicht nur beim Bastelprojekt bleiben soll.

Ich denke 10 Leute haben bei dem Thema 20 Meinungen...

Der Besucher

von D. I. (Gast)


Lesenswert?

Ich mache Hardware-Software-Co-Design, also könnt ihr alle 
zusammenpacken ;)

Spaß beiseite, ich denke wenn ich Schaltungen für ein FPGA beschreibe 
ist das einfach Hardwaredesign, das impliziert das "Schaltung 
beschreiben" doch schon. Am Ende kommt halt eine digitale Schaltung 
heraus die durch setzen der Switch-Matrix und LUT's entsteht, aber es 
bleibt eine Schaltung.
Intel wird seine Prozessoren auch nicht gleich in einem Rutsch erstellen 
sondern die Funktionalität erstmal auf mehreren FPGA's emulieren...

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.