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?
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.
Die Diskussion war schon mal da: Beitrag "VHDL - Software oder Hardware?" Und die Frage wurde nicht allgemeingültig beantwortet ;-)
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.
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.
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.
> 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
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.
[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 ;)
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. ;)
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.
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.
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 :)
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.
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.
@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? ;)
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...
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...
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?
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...
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.
> 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?
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
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 ;-)
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...
> 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.
>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.
Ähm, und was hab ich nun anderes geschrieben???
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.
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.