Wieder mal die alte Diskussion: Ist VHDL Entwicklung nun Softwareentwicklung oder Hardwareentwicklung? Da es faktisch beides darstellt, weil in einer Controllersoftware auch Timer und F-Teiler konfigurietrt werden und umgekehrt auch Hardware heute über Software (E-Schaltplan, EDIF, Bohrfiles) definiert wird , womit die Grenzen fliessend sind, präzisiert sich die Frage daruf, was der Schwerpunkt beim VHDL ist: Meine Meinung: VHDL (besonders algorithmische und ablauforientierte) sind meistens behavioral formuliert. Der Strukturanteil ist gering und damit ist es eher Softwareentwicklung.
Wie definierst du "Software"? Wikipedia definiert Software bspw. so: "Software [ˈsɒf(t)wɛː] wird umgangssprachlich synonym mit ausführbaren Computerprogrammen gebraucht. Die technische Definition umfasst dagegen jede Art von digitalen Daten als Software, die auf einer Hardware gespeichert sein können, […] Aus technischer Sicht bezeichnet Software alle nichtphysischen Funktionsbestandteile des Gerätes." Nach der technischen Definition ist die Konfiguration eines programmier- baren Logikbaustein eindeutig Software, unabhängig, ob sie in VHDL oder als Schaltplan entwickelt wurde, oder ob behavioral oder structural. Während die meisten Programmiersprachen für Computer (z.B. von Pascal und C) imperativ sind, sind Hardwarebeschreibungssprachen (z.B. VHDL und Verilog) datenflussorientiert. Es gibt aber auch datenflussorientierte Programmiersprachen für Computer, weswegen die Klassenzugehörigkeit der verwendeten Sprache kein Kriterium für die Zuordnung zu Hardware- oder Softwareentwicklung sein kann. Zu den meisten textuellen Sprachen gibt es grafische Äquivalente. Bei HDLs sind dies bspw. Schaltpläne, bei imperativen Programmiersprachen bspw. Flussdiagramme. Aber auch wenn der Schaltplan sehr nach Hardware aussieht, ist er eigentlich nur eine spezielle Form eines Datenflussdiagramms, wie es auch in der Computersoftwareentwicklung eingesetzt wird.
> Ist VHDL Entwicklung nun Softwareentwicklung oder Hardwareentwicklung? Es ist vom Grundsatz her das selbe, ob ich C, Basic oder sonstwas auf einer fertigen Statemachine (das ist ein Prozessor) programmiere. Lediglich die Syntax ist ein wenig anders. Aber das Resultat sind sequentiell abgearbeitete (bestenfalls durch einen Interrupt unterbrochene) Schrittfolgen. Dieses Verhalten ist zutiefst menschlich und leicht zu verstehen ;-) In einer mit VHDL beschriebenen Hardware existiert aber das gesamte "Programm" gleichzeitig. Auch mit einer reinen Verhaltensbeschreibung werden parallele (und damit bis in den ps-Bereich gleichzeitige) Prozesse erzeugt. Die Denk- und Vorgehensweise bei der Hardware- beschreibung unterscheidet sich (oder sollte es wenigstens) signifikant von der Rechnerprogrammierung. Man bekommt evtl. Fehler in einem Hardwaredesign leichter in den Griff, wenn man zwar Verhalten beschreibt, aber in FFs und LUTs denkt. Fazit: Ein FPGA-Entwickler mag per Definition ein Softwareentwickler sein, ohne das Denken eines Hardwareentwicklers wird er scheitern. > Der Strukturanteil ist gering und damit ist es eher Softwareentwicklung. Wäre für dich dann Strukturbeschreibung = Hardwareentwicklung und Verhaltensbeschreibung = Softwareentwicklung BTW: Lass die Finger weg von der Strukturbeschreibung. Es ist peinlich, dass auch heute noch in Lehrbüchern Halb- und Volladdierer aus Einzelgattern zusammengedrahtet werden.
> Lass die Finger weg von der Strukturbeschreibung. Das würde ich nicht so sagen. Was reine Strukturbeschreibungen auf tiefer Ebene angeht hast du natürlich recht, aber z.B. beschreibe ich ein Komplettsystem durchaus als Instanziierung einer Softcore-CPU und Peripherie und "verkabele" das ganze dann. > Es ist peinlich, dass auch heute noch in Lehrbüchern Halb- und > Volladdierer aus Einzelgattern zusammengedrahtet werden. Auch das nicht unbedingt. Ein Addierer, der aus HA und VA zusammengesetzt ist liefert das richtige Ergebnis und ist für einen Anfänger zu verstehen - und damit für die Lehre geeignet. Peinlich wird es erst, wenn die Lehrbücher den Eindruck erwecken, man würde Addierer heute noch so bauen oder auch nur in HDL so formulieren.
> und "verkabele" das ganze dann. ACK. Auf jeden Fall besser, als dafür Schematics zu verwenden. > Peinlich wird es erst, wenn die Lehrbücher den Eindruck erwecken, man > würde Addierer heute noch so bauen oder auch nur in HDL so formulieren. Richtig, so war es von mir gemeint. Das Problem ist: In einem Buch ist alles gleich. Man kann nicht am "Tonfall" erkennen, ob etwas wichtig ist, oder ob es reicht, wenn man es mal "gehört" hat. Wenn also einem Halb- und dem daraus aufgebauten Volladdierer z.B. 5 Seiten gewidmet werden, dann könnte man meinen, es wäre gleich wichtig, wie etwas anderes, dem der selbe Platz gewidmet wird (z.B. dem Einsynchronisieren oder dem korrekten Überschreiten von Taktdomänen).
Die Frage an sich ist schon falsch. VHDL ist eine Sprache die zur Modelierung von Abläufen dient. Wird daraus ein "Programm" für z.B.: einen FPGA syntetisiert dann kann man dies als Software bezeichnen. Wird ausgehend von der VHDL Beschreibung z.B.: ein ASIC erstellt dann ist dieser logischerweise der Hardware zuzuordnen. Eine Beschreibungsprache wie VHDL ist selbst weder Hard noch Software.
max wrote: > Eine Beschreibungsprache wie VHDL ist selbst weder Hard noch Software. Die Frage die von Oliver N. gestellt wurde, lautet: >> Ist VHDL-Entwicklung nun Softwareentwicklung oder Hardwareentwicklung? Siehe der 1. Satz im 1. Post ;-)
>Wird daraus ein "Programm" für z.B.: einen FPGA syntetisiert dann >kann man dies als Software bezeichnen. Es wird kein "Programm" für den FPGA erzeugt. VHDL ist das "Programm" für den Simulator und die Synthesesoftware - für letztere ist es sogar "nur" so einen Art Script. VHDL ist eindeutig eine Software, genau wie ein MATLBA-script oder ein LABVIEW File. Da gibt es nichts zu deuten. Das FPGA-image, das daraus erzeugt wird, ist eine Firmware, also auf dem Leven eines EPROM-image für einen Microcontroller. Beides immer noch Software. Der FPGA selbst ist die Hardware.
> Der FPGA selbst ist die Hardware. Dann müsste man also auch hier den Begriff hardwarenahe Programmierung einführen? Ein Begriff also, der bei Low-Level (z.B. Treiber-) Programmierung ja auch schon etabliert ist. Also ist FPGA-Entwicklung hardwarenahe Softwareentwicklung? Denn wenn ein uC oder ein IO-Baustein oder ein Grafikcontroller schon hardwarenah ist, was ist dann erst ein FPGA?
Nach meinem Empfinden ist das, was man mit VHDL und FPGAs macht eindeutig Programmieren. In VHDL beschreibe ich ein gewünschtes Verhalten genauso wie ich das in jeder anderen Programmiersprache tun würde - Natürlich ist die Syntax, Denkweise und die spätere Umsetzung beim kompilieren/synthetisieren eine völlig andere, aber der Grundgedanke ist derselbe. Da ich dabei einen Quellcode schreibe, der dann von einem Programm in das funktionstüchtige Werk umgesetzt wird und alles nur in verschiedenen Speicherbereichen existiert, handelt es sich für mich dabei auch um Software. Entwickele ich Hardware, entwerfe ich die zwar auch am PC, aber das Endergebnis ist immer ein physisch vorhandenes Etwas. Dazu gehören dann auch die detailgenaue Betrachtung des elektrischen Eigenschaften, Impedanzen, Widerstände, das alles beim FPGA in erster Linie keine Rolle spielt. Insofern halte ich einen FPGA erst einmal für nichts anderes als einen Mikrocontroller oder Prozessor - nur ist sein interner Aufbau und seine Arbeitsweise eine völlig andere. Bei allen handelt es sich aber um kleine schwarze (oder silberne) Kästchen, deren genaue Funktion ich nach meinen Wünschen festlegen kann. Ich würde sogar noch weiter gehen und sagen, jemand der mit Assembler auf Mikrocontrollern gearbeitet hat, hat es sehr viel einfacher auf programmierbare Logik zu wechseln, als z.B. ein reiner Java-Programmierer auf Assembler umzusteigen.
> Natürlich ist die Syntax, Denkweise und die spätere Umsetzung > beim kompilieren/synthetisieren eine völlig andere, aber der > Grundgedanke ist derselbe. Das Hauptproblem ist dabei eigentlich, dass dann gilt: FPGA-Entwicklung = Programmierung = Softwareentwicklung Und sich daraus als logischer Umkehr(kurz)schluss ergibt: Softwareentwickler = FPGA-Entwickler Und das kann nicht mehr stimmen :-/ Denn zumindest die (Java-, C#-, MSVCC-, Visual-Basic-) Softies, die ich kenne schütteln Angesichts der Strategie beim FPGA-Design nur ratlos die Köpfe. > Insofern halte ich einen FPGA erst einmal für nichts anderes als einen > Mikrocontroller oder Prozessor Diese Ansicht kann ich teilen. > nur ist sein interner Aufbau und seine Arbeitsweise eine völlig andere. Trotzdem soll der Vorgang, das Ding zum Funktionieren zu bringen, gleich heißen (Software-Entwicklung)?
> Das Hauptproblem ist dabei eigentlich, dass dann gilt: > FPGA-Entwicklung = Programmierung = Softwareentwicklung Ich meinte eher, dass Programmierung ein Oberbegriff für beides ist. > Trotzdem soll der Vorgang, das Ding zum Funktionieren zu bringen, gleich > heißen (Software-Entwicklung)? Nein, Programmierung.
>> Trotzdem soll der Vorgang, das Ding zum Funktionieren zu bringen, gleich >> heißen (Software-Entwicklung)? > Nein, Programmierung. Ja, das mit dem Programmieren ist soweit klar. Aber die originäre Frage lautete: >>>> Wieder mal die alte Diskussion: >>>> Ist VHDL Entwicklung nun Softwareentwicklung oder Hardwareentwicklung? Und mir scheint, die ist (noch) nicht beantwortet ;-)
VHDL-Programmierer gibt es nicht. ES gibt FPGA-Entwickler, ASIC-Designer etc.. Die bringen Hardware ans laufen in dem sie das Timing anpassen, für tichtig terminierte leitungen auf dm PCB sorgen, etc.. Ausnahme Verifikanten, die vornehmlich Quellcode analysieren, Modelle schreiben und simulieren - das sind die Softwerker aus der "VHDL-Abteilung". Einen gedankenexperiment, wer bekommt eher einen beispielsweise Homecomputer als FPGA-Nachbau ans laufen, ein Softwerker mit 20 Jahren erfahrung oder ein Hardwerker mit 20 Jahren Erfahrung.
Also ich votiere für Softwareentwicklung. Denn egal, welche Regeln und Paradigmen man für die Programmierung befolgt, egal, dass man mit einem if letztendlich bestimmte FlipFlop-Verschaltungen bewirkt, am Ende kommt was weiches raus, nämlich .vhd-Dateien, mcs-Dateien etc. Dass diese dann als Firmware auf einen Chip gespielt werden, ist dann egal. Alle PC-Software löst letztendlich auch irgendwelche hardwarenahen Befehle aus, die "im Chip", also der CPU irgendwas machen. Wenn ich aber Hardware entwickle, muss hinten auch Hardware rauskommen. Wenn ich bei Xilinx arbeite und den Spartan 4 mitentwickle, dann bin ich Hardwareentwickler. Aber das was aufs FPGA aufgespielt wird, ist meiner Meinung nach soft. Es ist ja auch soft, ich kann ja ganz verschiedene "Programme" aufspielen. Außerdem ist es ja auch nicht so, dass im FPGA beim Aufspielen der Firmware irgendwas hardwaretechnisches geändert wird, da werden ja keine neuen Leitungen gelötet oder irgendsowas. Es wird ja nur vorhandene Hardware konfiguriert.
Ist doch egal. Hauptsache, ich kann damit meine Brötchen verdienen.
<Also ich votiere für Softwareentwicklung. <Denn egal, welche Regeln und Paradigmen man für die Programmierung <befolgt, egal, dass man mit einem if letztendlich bestimmte <FlipFlop-Verschaltungen bewirkt, am Ende kommt was weiches raus, nämlich <.vhd-Dateien, mcs-Dateien etc. Mumpitz, da wäre ja auch die klassische Hardwareentwicklung wie Schaltungsentwurf, leiterplatten-design etc Softwareentwicklung. Schliesslich kommt da auch was weiches raus, Gerberdateien, Programmierfiles für den bestückautomaten, belichter etc, Zeichnungen im PDF-Format ....
>Also ist FPGA-Entwicklung hardwarenahe Softwareentwicklung? Wohl eher softwarenahe Hardwareentwicklung. VHDL ist eine Hardwarebeschreibungssprache. Synthesefähiger VHDL-Code ist ein Bauplan für eine digitale Schaltung, und nicht Software, die auf dem FPGA läuft. Klar ist die Konfigurationsdatei für einen FPGA Software, aber VHDL oder andere HDLs sind dehalb noch lange keine Programmiersprachen, die in irgendeiner Weise auf dem FPGA sequenziell abgearbeitet werden. Jemand, der keine Ahnung von digitalen Schaltungen hat, wird mit VHDL nicht viel Freude haben. Bei vielen Fragen hier im Forum sieht man ganz deutlich, dass die Fragesteller offensichtlich große Verständnisprobleme haben, sich ihren VHDL-Code als digitale Hardware vorzustellen.
Kurze Anmerkung: VHDL steht schlicht und einfach für Very Hight Speed Integrated Ciruit(das war das V :-) HARDWARE!!! Description Language. Also: VHDL ist eine Modellierungssprache für die Beschreibung von Hardware. Und KEINE Programmiersprache. Hier wird nichsts programmiert, was später irgendwo ausgeführt werden soll, sondern ein Modell beschrieben, welches mit einem geeigneten Simulator ausgeführt werden kann (also eine ausführbare Spezifikation für Hardware). Da VHDL ursrünglich eben nicht dafür konzipiert wurde Software zu beschreiben, wird für die Erstellung von ausführbaren Spezifikation gemischter HW/SW Systeme (z.B. SystemOnChip Modelle) ofmals auch SystemC benutzt. viele Grüße Mike
Xenu wrote: > VHDL ist eine Hardwarebeschreibungssprache. Synthesefähiger VHDL-Code > ist ein Bauplan für eine digitale Schaltung, und nicht Software, die auf > dem FPGA läuft. Fest steht, das heutzutage ein großer Teil des geschriebenen VHDL-Codes keine vorhandene Hardware beschreibt oder jemals in solche umgesetzt werden wird, sondern nur "soft" den Inhalt der RAM-Zellen eines FPGAs bestimmt. Nicht umsonst gibt es ja auch die Unterscheidung zwischen "soft" und "hard"-Prozessorkernen. > Klar ist die Konfigurationsdatei für einen FPGA > Software, aber VHDL oder andere HDLs sind dehalb noch lange keine > Programmiersprachen, die in irgendeiner Weise auf dem FPGA sequenziell > abgearbeitet werden. Ob sequentiell oder nicht hat ja mit der Frage "Hardware oder Software" nichts zu tun. Es gibt auch genügend nicht-sequentielle Programmiersprachen, z.B. deklarative wie Prolog.
>Mumpitz, da wäre ja auch die klassische Hardwareentwicklung wie >Schaltungsentwurf, leiterplatten-design etc Softwareentwicklung. >Schliesslich kommt da auch was weiches raus, Gerberdateien, >Programmierfiles für den bestückautomaten, belichter etc, Zeichnungen im >PDF-Format .... Drum schrieb ich auch "_am Ende_ kommt was weiches raus". Und am Ende einer Platinenentwicklung steht eine Platine.
am ende einer VHDL-Entwicklung kann aber auch ein ASIC rauskommen. also Hardware. in dem fall würd ich schon von einer hardwareentwicklung ausgehen. nur weil es auch für simulationen genutzt werden kann und auf nem FPGA genutzt wird ist es für mich noch keine wirkliche softwareenttwicklung. natürlich produziert man erstmal software, aber dann ist halt die frage, was ist mit dieser software machbar. bis zu einem gewissen schritt kann man durchaus parallelen zur softwarenetwicklung sehen. von entwicklungsstrategien mal abgesehen. sprich, man schreibt eine abstrakte beschreibung. lässt diese übersetzen und erhält sozusagen ein produkt. bei der softwareentwicklung ein code speziell für ein target, welches dann für eine gewisse zeit dieses verhalten annehmen kann. dies ist auch bei einem vhdl-design für fpgas richtig. aber bei der entwicklung in vhdl kann das ziel halt auch der asic sein und das ist dann ein unveränderliches stück hardware, was die beschriebene funktionalität annimmt. also für mich reine hardwareentwicklung. im endeffekt würd ich sagen ist eine entwicklung mit VHDL eher hardwareentwicklung als softwareentwicklung, auch wenn softwareentwicklung in dem sinne mit möglich ist.
<Fest steht, das heutzutage ein großer Teil des geschriebenen VHDL-Codes <keine vorhandene Hardware beschreibt oder jemals in solche umgesetzt <werden wird, sondern nur "soft" den Inhalt der RAM-Zellen eines FPGAs <bestimmt. Nicht umsonst gibt es ja auch die Unterscheidung zwischen <"soft" und "hard"-Prozessorkernen. Mumpitz, SRAM-basierende FPGA sind nur ein teil des Marktes. Und schon mal was von Hardcopy gehört? http://www.altera.com/literature/hb/hrd/hc_handbook.pdf Seite 2-1 Die verwechselst hier gehörig die Funktion und den Aufbau von SRAM. Silizummäßig mag der SRAM eines FPGA's gleich dem eines embedded processors sein, aber er funktioniert nicht als (daten|Programm-speicher) einer CPU sondern als Steuerelement eines Schalters. Nicht alles was in eine SRAM-Zelle geschrieben wird ist die Ablaufsteuerung einer CPU und ergo Software.
>Also: VHDL ist eine Modellierungssprache für die Beschreibung > von Hardware. Naja, mal langsam: Modelle sind immer Software! Sonst wäre ja die Erstellung von VHDL-AMS auch Mechanikentwicklung, oder bzw FEM-Modelle oder deren ERsaätze in C wären Autoentwicklung, nur weil das Modell später in ein crashbares Teil umgesetzt wird. Die formelle Erstellung von Scripten, Modellen, Abläufen und deren Beschreibungen sind Softwareentwicklung! VHDL-Code ist ein Modell! Es dient der ersatzweise Simulatin von Hardware - speist also eine Simulationssoftware - genau wie System-C. Dies sind alles Programmsprachen, Programmiersprachen oder Programmstruktursprachen. Hardwareentwicklung heisst, entweder Mechanik oder Elektronik zusammenzubauen, wobei hier speziell auch bei der Elektronik auf die Mechanik (Leiterplattengeometrie, Materialien, Löttechniken) abgehoben wird. Der Hardwareentwickler beherrscht diese umsetzungsrelevanten Dinge. Der Softwareentwickler erstellt davon unabhängige abstrakte Modelle und Abläufe, die dann in eine Hardware 8oder auch eine ganz andere!) einfliessen und genau das macht man bei VHDL-Code. Ach ja: Ein "load accu" Befehl in der Maschinensprache, setzt auch nur Registerzellen, die einen Multiplexer dazu bewegen, die Datenleitungen eines RAMS auf das Accu-Register zu legen und beim nächsten Clock einzulesen. Das ist nichts anderes, als per config stream eine LE-Zelle dazu zu bewegen, permament einen Pfad zu schalten. VHDL programmiert die LE-Zelle und die Interconncetions! Dass das statisch ist und meistens nicht reconfiguriert wird, ist unerheblich.
DI UV wrote: > <Fest steht, das heutzutage ein großer Teil des geschriebenen VHDL-Codes > <keine vorhandene Hardware beschreibt oder jemals in solche umgesetzt > <werden wird, sondern nur "soft" den Inhalt der RAM-Zellen eines FPGAs > <bestimmt. Nicht umsonst gibt es ja auch die Unterscheidung zwischen > <"soft" und "hard"-Prozessorkernen. > > Mumpitz, SRAM-basierende FPGA sind nur ein teil des Marktes. Was ich oben schrieb. > Und schon mal was von Hardcopy gehört? > > http://www.altera.com/literature/hb/hrd/hc_handbook.pdf Seite 2-1 Ja, von ASICS habe ich schon mal gehört. > Nicht alles was in eine SRAM-Zelle geschrieben wird ist die > Ablaufsteuerung einer CPU und ergo Software. Abgesehen davon dass das nur eine von vielen Definitionsmöglichkeiten ist, mal von der anderen Seite betrachtet: etwas das nicht physisch vorhanden ist, ist keine Hardware. Demnach wäre die Entwicklung einer FPGA-Konfiguration weder Software noch Hardware. Die Begriffe "Software" und "Hardware" sind hier einfach überstrapaziert, wie man FPGA-Entwicklung einordnet hängt von Details in der Definition dieser Begriffe ab, und das macht die ganze Diskussion irgendwie sinnlos.
Also wenn sich die Diskussion dadrum drehen würde, ob zuerst das Ei oder die Henne da war, würde ich für das Ei stimmen. Genauso kann man aber auch fragen ob Fernsehen Informationen bietet oder Massenverdummung. Oder ist Windows besser als Linux? Und welches Linux oder UNIX-Derivat ist da wieder am besten. Auch auf Windows anwendbar... Werden Sozialpädagogen gebraucht, oder verwalten sie sich nur selbst nach dem Studium? So viele Fragen und keine Antworten... Also ich habe zu allem meine Meinung, und jeder andere sicherlich auch. Nur stimmen sie oft nicht überein. Der Besucher
< Ok, FPGA-Programmierung ist Pilze. ;) Na, das ist auch keine neue Erkenntnis, schon mal was von Mushroom -managment gehört: a company's staff being treated like mushrooms: kept in the dark, covered with dung, and -- when grown big enough -- decapitated (http://en.wikipedia.org/wiki/Mushroom_management) zu deutsch: Mitarbeiter sind im Dunkeln zu halten und mit Sche*** zu füttern. Wenn sich ein helles Köpfchen zeigt -abschneiden. Das ist typisch für ne FPGA-Entwicklungsabteilung, besonders die wie Softwerker behandelt werden. MfG,
> Nach der technischen Definition ist die Konfiguration eines > programmierbaren Logikbaustein eindeutig Software, unabhängig > davon, ob sie in VHDL oder als Schaltplan entwickelt wurde, > oder ob behavioral oder structural. So ist es, siehe auch hier: Beitrag "Re: Lacher der Woche Ingenieur-Mangel in Deutschland eskaliert trotz Wirtschaftskrise" VHDL-Code ist Software. Mein Professor hielt sich aber auch für schlau und wollte mir was anders erzählen.
> Daher zum allerletzten mal: > > VHDL-Erstellung ist Softwareentwicklung! > > VHDL-Erstellung ist Softwareentwicklung! Ich zitiere mich selbst aus dem Beitrag "Re: VHDL - Software oder Hardware?"
1 | Das Hauptproblem ist dabei eigentlich, dass dann gilt: |
2 | FPGA-Entwicklung = Programmierung = Softwareentwicklung |
3 | Und sich daraus als logischer Umkehr(kurz)schluss ergibt: |
4 | Softwareentwickler = FPGA-Entwickler |
5 | |
6 | Und das kann nicht mehr stimmen :-/ |
7 | Denn zumindest die (Java-, C#-, MSVCC-, Visual-Basic-) Softies, |
8 | die ich kenne, schütteln Angesichts der Strategie beim |
9 | FPGA-Design nur ratlos die Köpfe. |
Und mancher Abteilungschef ist schon heftig auf die Nase gefallen, weil er meinte C=C, also kann ein C-Programmierer mit System-C Hardware beschreiben. Es ist etwas anderes, fertige und geprüfte Hardware (wie z.B. die SIO, Timer, SPI in einem uC) zu parametrisieren, oder sich seine Hardware selber zu beschreiben. > VHDL-Erstellung ist Softwareentwicklung! Und wenn es so wäre: Es ist trotzdem etwas grundlegend anderes, als wirkliche Software zu schreiben. Wenn ich vorher in Basic programmiert habe, kann ich ohne weiteres auf C umsteigen. Die Denkweise und die Syntaxelemente sind annähernd gleich. Wenn ich aber vorher in Basic programmiert habe und steige auf VHDL um, dann wird es hart, sehr hart. > Daher zum allerletzten mal: Wenns zum letzten Mal ist, dann können wir da noch mal drüber weg sehen ;-)
Der Name sagt es doch: Beschreibungssprache (Description language). Ist also dasselbe wie ein Stromlaufplan. Oder sieht hier irgendjemand einen Stromlaufplan als Software an? Bei Stromlaufplänen und VHDL-Skripten hat der normale hardwareferne C-Softwerker nicht die Spur eines Durchblicks. Na also.
>VHDL-Programmierer gibt es nicht. ES gibt FPGA-Entwickler, ASIC-Designer >etc.. Die bringen Hardware ans laufen in dem sie das Timing anpassen, Es gibt auch keine Software-Programmierer. Es gibt Software-Entwickler. Die Modelle von Software bauen, Abläufe, Sequenzdiagramme, Aktivitäsdiagramme und Zustandsautomaten DESIGNEN und das ganze dann schlussendlich Implementieren, simulieren und testen. Software-Programmierer sind die kleinen Boxen, die man an seinen Controller anschließt um das Programm in den Speicher des Controllers zu "flashen" / brennen . Für mich persönlich ist hardwarenahes Softwaredesign z.B. für einen Mikrocontroller sehr ähnlich der Beschreibung einer Hardware Schnittstelle in einem FPGA. Z.b. wenn ich einen I2C Treiber für einen Mikrocontroller schreibe, nimmt mir zwar die I2C Hardware im Controller schon so Dinge wie Timing, Flankensynchronisierung usw. ab. Aber die Auswertung, das Lesen der Register, das Setzen des ACK Bits und die ganze Statemachine, die den Signalverlauf auswertet wird auch hier in Software beschrieben. VHDL ist nochmal eine Stufe tiefer darunter. Hier wird eben das ganze BESCHRIEBEN, dass die I2C Hardware im Controller übernimmt. Was jedoch ein unfairer Vergleich ist: "Ein BASIC Programmierer kann kein VHDL programmieren" Wenn dieser BASIC Programmierer, ein echter Softwarentwickler ist, der sowohl Programme für PCs als auch für uCs entwickelt hat, dann wird er auch mit VHDL zurecht kommen. Wenn es aber ein "reiner" PC Software Entwickler ist(z.B. ein Java Programmierer, der total unabhängig von Hardware und Betriebssystem in seiner eigenen Welt programmiert) gebe ich dir Recht. Aber damit sagst du implizit, dass ein Hardwareentwickler auch gleich ein FPGA Entwickler ist. In meiner Firma kenne ich keinen Hardwareentwickler, der auch FPGAs programmieren kann (wir machen aber auch "nur" Leistungselektronik...) Just my 2 cents ;-)
Vielleicht mal als Einwurf: VHDL beschreibt die Schaltung, wie sie funktionieren soll (Entsprechung des Schaltplans). VHDL an sich ist eigenständig für nichts nutzbar. Es ist nur die Eingabesprache, die einer bestimmten Syntax genügen muss (wie ein Schaltplan - da sind auch bestimmte allgemeinverständliche Symbole vereinbart). Die formale Richtigkeit der Eingaben wird vom Editor kontrolliert. Die eigentliche Programmiersoftware beim Schaltkreisentwurf dürfte wohl im Synthesetool, Fitter, Simulator usw. beheimatet sein - also an Orten, die dem normalsterblichen Schaltkreisentwerfer gar nicht zugänglich sind. VHDL ist also eine Eingabemaske! Obwohl es einen ähnlichen Schreibstil wie Programmiersprachen hat, ist es keine.
Jetzt setzten aber einige Software mit Programmiersprache gleich, was nicht stimmt. VHDL ist im engeren Sinn sicher keine klassische Programmiersprache( von state machines und Ausgabezuweisungen in Variablen mal abgesehen, abgesehen, die genau so beschrieben werden, wie in C) dennoch ist es selbstredend eine Software. (Eine Netzliste EDIF oder eine Spice-Netzliste ist ja auch eine Software, sieht bezieht sich eben nur auf eine Hardware.) Dass man zum Erzeugen von FPGA-Schaltungen wie auch Mikrocontrollerschaltungen viel Hardwarewissen braucht, ist richtig, das heisst aber nicht, dass jeder Schritt, den man zum Ziel hin unternimmt, Hardwareenticklung nennen kann. Im Gegenteil: Es tritt heutzutage doch fast immer beides auf: Das Problem sehe ich darin, dass jahrelang Hardware ohne EDA gemacht wurde und sich dadurch einen quaisi Zusammenhang von Hardware<->ELektronik und Software<->Programm ergab. Das ist definitiv nicht mehr so! Die meiste Hardware wird heute über den Umweg der Software etnwickelt, also hat man immer beides: Begreifbare Hardware (Mechanik, Geometrie, Physik, Ströme etc...) und duplizierbare Software (Netzlisten, Sripte, Firmware, Loadware, EEProm Images!!!) Das gilt genau genommen sogar umgekehrt: Auch der Computersoftwareentwickler (den klassischen GUI-Entwickler vielleicht ausgenommen) braucht immer auch etwas Hardwarewissen, will er seine threads richtig aufsetzen.
> enn dieser BASIC Programmierer, ein echter Softwarentwickler ist, > der sowohl Programme für PCs als auch für uCs entwickelt hat, > dann wird er auch mit VHDL zurecht kommen. Darum geht es im Grunde nicht. OB die eine Programmiersprache ist wie die andere oder ob VHDL (k)eine Programmiersprache ist, ändert nichts an der Definition für Software. Boardentwickler und Schaltplanentwickler betreiben heute in einem gewissen Mass Softwareentwicklung, sei es über den Umweg von Schaltplaneingaben oder der Nutzung von Verliogmodellen. Nur vor der Zeit der EDA, als alles vno aufgemalt wurde und dann in Maskten geätz wurde (ASIC) oder ein LAyout geklabt wurde um dann die Platine zu ätzen, gabe es keine Software. Heute machen auch die ASIC Designer alles über Software. Mehr noch: Sie nutzen sogar Programme! In der Anfangszeit wurden ASICs dadurch entwickelt, dass man die Funktion zunächst in Pascal abgebildet hat und wenn man sich VHDL mal genau ansieht, dann erkennt man das alte Pascal!! Heute nutzt man zusätlzich noch System-C für die Trigger und die Modelle sowie inzwischen sogar als Quelle für den VHDL-Code -> Mentor Catapult
Was für einen Unterschied macht es, ob VHDL mehr Software oder Hardware ist? Ich habe schon Stellanzeigen gesehen für einen Hardwarentwickler mit VHDL Kenntnissen, aber auch Softwareentwickler mit VHDL Kenntnissen. Ebenso wie Stellenanzeigen wo Hardwareentwickler mit C/C++ Kenntnissen und Softwareentwickler mit Erfahrung im Design von digitalen Schaltungen gesucht werden... Rein per Definition ist vhDL eine Description Language, also eine beschreibende Sprache.
1 | Very High Speed Integrated Circuit Hardware Description Language (auch VHSIC Hardware Description Language), kurz VHDL, ist eine Hardwarebeschreibungssprache, vergleichbar mit einer Programmiersprache, mit der es einfach möglich ist, komplizierte digitale Systeme zu beschreiben. Darüber hinaus gibt es sprachliche Erweiterungen in Form von VHDL-AMS, mit der auch analoge Systeme beschrieben werden können. |
2 | [pre] |
3 | Quelle: Wikipedia |
4 | |
5 | [pre] |
6 | Das Ersetzen von Hardware durch Software rückt durch den Einsatz von programierbarer Logik auch für digitale Elektronik zusehends in den Fokus. Analog zur Programmierung eines Prozessors in C oder C++ ermöglicht die Hardwaresprache VHDL, komplexe Chip-Strukturen bzw. das gesamte Schaltungsdesign in Software zu beschreiben. VHDL erlaubt die einheitliche Beschreibung elektronischer Systeme über verschiedene Abstraktionsebenen hinweg. In Verbindung mit Synthesewerkzeugen können deutlich verkürzte Entwicklungszeiten und eine höhere Qualität der Entwicklungsergebnisse erreicht werden. Daher werden zunehmend dezidierte Peripheriebausteine, Glue-Logic und ASICs durch flexibel einsetzbare FPGAs und CPLDs ersetzt. Hierzu stehen vielfältige, bereits vorkonfigurierte VHDL IP-Cores zur Verfügung. |
Quelle: http://www.synertronixx.de/dienstleistungen/software/vhdl.htm
Ausserdem: Hardware kann heute nicht mehr (professionell) ohne Software entwickelt werden. Viele Hardwareentwickler können sich das nicht eingestehen, weil sie so eitel sind und ihre Disziplin für die Königsdisziplin halten, aber es ist so. Schaltpläne werden mit Softwaretools entworfen. Das Layout mit vielen Layern wird mittels CAD Software gemacht. Noch bevor eine Schaltung aufgebaut ist, wird das Übertragungsverhalten bereits mittels Simulationstools überprüft. Versionsstände werden mittels Versionsverwaltung Software gesichert und organisiert. Hardwareentwicklung ohne Software würde etwa x mal so lange dauern und y mal so viel kosten und hätte z mal mehr Fehler. Also es bliebe nur Back to the roots: Schaltpläne per Hand zeichnen, Platinelayout per Hand zeichnen und belichten/ätzen, alles zusammen löten: dann per analogem Oszilloskop das ganze debuggen und testen. Und dann das ganze Spiel wieder von vorne... Es ist sehr mühselig darüber zu diskutieren, ob jetzt VHDL mehr Hardware oder Software ist.. Auf jeden Fall ist es keine reine Hardware bzw. nicht mehr Hardware als ein HEX Binary, dass das Bitmuster in einem Mikrocontrollerspeicher beschreibt.
achso, nur weil wir jetzt SW zum HW entwickeln benutzen, sind wir SWerker? Nee, wir sind zwar weit von den Faehigkeiten moderner SW-Entwicklung entfernt (bei den Tools die wir benutzen), aber wir muessen uns doch noch Gedanken machen darueber, wie parititioniere ich einen Design, wie pipeline ich das um die Bandbreite (oder Latenz) zu erreichen. Und bitte schoen, jeder Pfad muss diese Cyclezeit erreichen. In SW kann ich sagen, ok, das ist komplex, darf also auch ein paar Cycle laenger dauern. In HW habe ich damit sofort ein Riesenproblem und muss mir Gedanken machen. Also nur weil wir einen Editor und Synthesetools nutzen sind wir noch lange keine SWerker! Just my 2 cents...
Das Thema Hardware/Software im Zusammenhang schlägt ja mittlerweile schon fast so hohe Wellen wie die Diskussion um Linux und Windows ;-) Ich habe es in einem anderen Thread zum gleichen Thema Beitrag "Ist FPGA programmierung eine Hardwareentwicklung oder Softwareentwicklung?" bereits geschrieben: Die Diskussion ist müßig, solange man sich nicht auf eine Definition der Bergiffe Hardware und Software einigt. Ich habe weiter oben in diesem Thread die "technische" Definition von Software aus dem Wikipedia zitiert: 1. Aus technischer Sicht bezeichnet Software alle nichtphysischen Funktionsbestandteile des Gerätes. Ich persönlich finde diese Definition nicht schlecht, weil sie zu einen relativ eindeutig ist, zum anderen auch die Namensgebung (hard=hart, soft=weich) gut widerspiegelt. Eine ebenfalls für mich akzeptable Definition wäre: 2. Software ist der Teil eines Geräts, der ohne mechanische Verformung oder Hinzufügen oder Abtragen von Material änderbar ist. Für die Erbsenzähler, die auch in der Befüllung einer Speicherzelle mit Elektronen ein Hinzufügen von Material sehen, könnte man noch ein Adjektiv wie "makroskopisch" hinzufügen ;-) Aus den Beiträgen in diesem und anderen Threads lese ich (teilweise zwischen den Zeilen) unterschiedliche Definitionen heraus, die ich in der nachfolgenden Liste zusammengefasst habe. Ich habe sie teilweise etwas erweitert und überspitzt formuliert, die jeweiligen Autoren mögen dies entschuldigen und nicht als Kritik ihrer Beiträge auffassen. Außerdem habe ich jeweils in Klammern meinen (teilweise subjektiven) Kommentar angefügt. 3. Software führt Prozesse sequentiell, Hardware führt sie parallel aus. (das war vielleicht früher so) 4. Hardware ist das, was mit dem Denken eines Hardwareentwicklers entwickelt wird. (selbstreferenzierende Definition, zudem schwammig) 5. Hardware ist das, was der Hardwareentwickler besser kann, Software das, was der Softwareentwickler besser kann. (dto.) 6. Die Syntax der zur Entwicklung eingesetzten Sprache legt fest, ob das Ergebnis der Entwicklung Hardware oder Software ist. (sehr schwammig) 7. Was in Java, C#, MSVCC oder Visual-Basic entwickelt worden ist, ist Software. (etwas präziser als die vorige Definition, vür eine eindeutige Definition müsste man aber alle formalen Sprachen klassifizieren) 8. Löten und vergleichbare Veränderungen, stehen für Hardware, eine Konfiguration für Software. (zielt in Richtung meiner obigen Definition mit der mechanischen Verformung) 9. FPGA-Designs sind Hardware, weil das H ind VHDL für "Hardware" steht. (zu speziell, außerdem könnte das H auch "high speed" heißen) 10. FPGA-Designs sind Software, weil das P in FPGA für "programmable" steht. (dto.) 11. Alles, was mit VHDL entwickelt wird, ist Hardware, da man mit VHDL auch ASICs entwickeln kann. (zu speziell, man kann mit VHDL auch Software im klassischen Sinne entwickeln) 12. Sind die Zellen eines SRAMs Steuerelemente eines Schalters, ist der gespeicherte Inhalt Hardware. (zu speziell, zudem: auch in einem Prozessor werden durch die Speichrinhalte letztendlich Schalter betätigt) 13. Die Konfiguration von SIO, Timer, SPI in einem uC ist Software, die Konfiguration von Slices und LUTs ist Hardware. (vielleicht, aber wie sieht es mit anderen Typen von Basic-Blocks aus?) 14. Hardware ist, wenn die Entwicklung grundlegend anders als Software- entwicklung ist. (Referenzieung des Gegenteils) 15. Was mit Beschreibungssprachen definiert wird, ist Hardware und keine Software. (es gibt auch Beschreibungssprachen für die Software- entwicklung, s. deklarative Programmierung) 16. Software ist das, was man mit Programmiersprachen entwickelt, VHDL ist aber keine. (Definition Programmiersprache?) 17. Softcores sind, wie der Name sagt, Software. (zu speziell) 18. Hardware ist, wenn die Fehler mit Logic-Analyzer und Oszi gesucht werden. (ich habe auch schon mehrfach Fehler in PC-Software mit dem Oszi gesucht ;-)) 19. Wenn jemand bei der Entwicklung auf die Nase fällt, ist es Hardware. (auch bei der Softwareentwicklung gibt es blutige Nasen) 20. Hardware ist das, wovon viele Professoren behaupten, dass es Hardware sei (... und sich damit fast schon auf geisteswissenschaftliches Niveau begeben ;-)) So, jetzt kann sich jeder eine der "Definitionen" heraussuchen oder seine eigene dazuschreiben. Wenn sich herausstellen sollte, dass mehr als 50% der Leute sich auf eine einheitliche Definition einigen können, haben wir eine fruchtbare Grundlage für eine weitere Diskussion des Ursprungsthemas geschaffen ;-) Wenn nicht, ist das auch nicht weiter schlimm. Dann hat eben jeder seine eigene Meinung darüber, was Hardware- und Softwareentwicklung ist, dem Bruttosozialprodukt wird das kaum schaden. Man sollte sich dann aber dessen bewusst sein, dass es sich um subjektive Meinungen handelt, mehr nicht.
wie waer's denn damit: 21: Software ist die Ausfuehrung eines Instruction-Set auf einer HW. Hardware ist die Implementierung eines solchen Instruction-Set. (Instruction-Set kann dabei auch durch State-Machines, HW-Bloecke, oder sonstiges ersetzt werden).
> Was für einen Unterschied macht es, ob VHDL mehr Software oder > Hardware ist? Zunächst keinen, bei näherer Betrachung aber eine risigen! Für den Bastler mag es Wurscht sein, aber sobald man industrielle Produkte herstellt und diese zulassungspflichtig sind, gibt es Dokumentationsforderungen. Dazu 2 Punkte im Bereich FPGA/PLD/EEPROM: Was dort reingeladen wird, ist Software und unterliegt den diesbezüglichen Anforderungen im Bezug auf Validierung. Auch in der FMEA-Betrachtung wird das so gehandhabt, weil man beim Beschreiben des EEPROMs und des FPGAs Fehler machen kann, beim FPGA schreibt meist noch ein Prozessor drauf, weswegen die drotigen Funktionen EINMAL speziell validiert werden muesse. Bei einem neuen VHDL-File muss die Validierung wiederholt werden! Sobald aber aus dem VHDL ein ASIC gemacht wurde (auch wenn es ein ALtera Hardcopy ist!) hat man eine Hardware! Die kommt dann wie fertig porgrammierte EEPROMS oder OTPs direkt vom Hersteller. Da muss nichts mehr valdiert werden. Es reicht die Funktionsprofung und die Wareneingangskontrolle. Hardware: Es muss jede Plattform gescheckt werden, die Funktion nur einmal im Prinzip Software: Es muss jede Änderung validiert werden, die Funktion einmal nach Prinzip. -------------------------------- Zum Hardwaerker: Es ist kein Widerspruch, Hardwareentwickler zu sein und (dazu) Software herzustellen. Es ist auch kein Widerspruch sich HW-Entwickler zu nennen und die Gehäusebauformen und die Geometrien festzulegen, thermische Berechungen zu machen, was physikalische, mechanische Handlungen sind. Eine Bohrung bleibt Mechanik, auch wenn sie von einem HW-Mann druchgeführt wurde. Ein VHDK-Code bleibt Software, egal er sie erstellt oder wo reinlädt.
> 21: Software ist die Ausfuehrung eines Instruction-Set auf einer HW. > Hardware ist die Implementierung eines solchen Instruction-Set. Was wäre dann eine OpCode-Erweiterung, wie sie bei diversen Prozessoren (z.B. 68k) über den Aufruf eines Illegal-OpCodes möglich war, in dessen Exception dann ein Workaround für einen Befehl oder auch ein neuer Befehl abgelegt war? Harte Software oder softe Hardware ;-) > VHDK-Code Schon wieder was Neues :-/
> Was wäre dann eine OpCode-Erweiterung, wie sie bei diversen Prozessoren >(z.B. 68k) über den Aufruf eines Illegal-OpCodes möglich war, Das ist eine Hardware, genauer ein ungewollter Konstrukt infolge zu geringer Übersicht der Entwickler. Da viele dieser Codes sinnvoll sind, hätte man sie gleich dokumentieren können. Es zu nutzen fordert natürlich Software. Wo ist das Verständnisproblem? Ihr regt euch alle unnötig auf! Wikipedia lesen, dort steht drin, was Hardware ist! Der Rest ist Software, z.B: auch Logistik! > sobald man industrielle Produkte herstellt > und diese zulassungspflichtig sind, gibt es Dokumentationsforderungen. Bei der Siemes gilt die VHDL-Entwicklung innerhalb der Entwicklung mit FPGAs ausdrücklich als Software! Abteilungen, die aber nur ein FPGA aufs Board setzen und verdrahten, ohne sich über die Funktion gedanken zu machen, arbeiten nur nach Hardwarerichtlinien. Klar, sie machen ja auch keine Software. Etwas anderes ist es, wenn solche Boards getestet werden: Die Prüfabteilungen, laden einen Dummycode ins FPGA um BS zu machen und Leitungen zu testen. Die machen Software, die sie auch dokumentieren und archivieren müssen.
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.