Hallo, ich bin VHDL- und Veriloganfänger. Jetzt suche ich nach einer Möglichkeit zur Objektorientierten Programmierung in diesen Programmiersprachen. Ich möchte nämlich das Differential einer Variable erzeugen. Dazu könnt6e ich zwar einen Prozess schreiben, der den Unterschied einer Variable von Taktzyklus zu Taktzyklus bildet, aber das müsste ich dann für jeder Variable dieser Art schreiben. Ich möchte das aber nur einmal allgemeingültig machen! Ich will dann nur noch die Variablen deklarieren, z. B. x, y, z und dann mit z. B. x.d1 den Anstieg von x haben und mit x.d2 den Anstieg von x.d1 usw. Wie kann man so etwas am elegantesten/professionellsten formulieren?
Wenn Du es so willst, ist VHDL ja eigentlich schon objektorientiert. Was Du machen musst ist ein "Differential-Modul" zu entickeln und dieses dann mehrfach instanziieren.
Ich glaube kaum, da0 unserer Freund versteht, was Du meinst :-) Ich fange mal so an, Stefan : C++ beschreibt Abläufe, die so verschachtelt und durch künstliches Multiplexen quasi parallelisiert werden, sodaß daraus virtuelle Struktruen senstehen, die wie selbständig agierende Systeme arbeiten. Diese müssen dann über events verkoppelt werden, um einen Ablsuf zu generieren, da der eigentliche Ablauf der durch den Befehlsinterpreter der CPU-Hardware realisiert wird und den man in klasssischen ASm und C Programmen findet, aufgelöst wurde. VHDL beschreibt dageben Abläufe aber auch Strukturen, die am Ende zunächst zu einer Hardware führen, die in einer bestimmten Weise funktioniert. Es gibt dazu rudimentäte Objekte, die man zu größeren komplexen Objekten zusammenfassen muss, wobei es anheim gestellt ist, wieviele davon real parallel existieren wie viele davon sequenziell benutzt werden. Diesen muss man dann künstliche Abläufe verpassen, damit sie das tun, was man will. In Deinem Fall musst Du also mindestens einmal eine Hardware bauen, die Differenzialquotienten rechnen kann. Diese hat sicher die Eingänge Y1,Y0 sowie X1,X0, den Ausgang "dydx" und Steuersignale für Takt, Rechenfehler etc. Diese Schaltung baust Du an jede Stelle ein, wo Du sie brauchts, oder du baust sie einmal und sorgst mit einem Schaltwerk dafür, daß Deine Restschaltung seuqneziell (genug) läuft, daß zu einem Zeitpunkt nur eine Diff benötigt wird. Dann kannst Du diese Recheneinheit mehrfach nutzen - must sie natürlich mehrfach verdrahten und Logistik darum bauen.
Hallo, für Objektorientierung Bedarf es sowohl Objekte als auch Vererbung, da VHDL nur Objekte unterstützt, ist es nur eine objektbasierende Sprache. Gegenwärtig ist es so, dass jede Ressource (Logik und Register) im FPGA an bestimmte Funktionen fest gebunden werden, d.h. wenn ein Teil der Elemente eines FPGAs einen Differenzierer bilden ist das immer so. Man kann keine Ressourcen mehrfach benutzen, wie in einem Prozessor. Das versucht man bei der partiellen Konfiguration, dazu sind die aktuellen Werkzeuge noch nicht effektiv in der Lage. Gegenwärtig hat man je nach Performance-Forderung mehrere Differenzierer oder nur einen und davor einen Multiplexer. Damit ist Beraters Beschreibung schon treffend. Es gab schon Ansätze zu einem objektbasierenden VHDL, jedoch haben die sich nicht durch gesetzt, da Vererbung der direkte Abbildung auf Hardware widerspricht. Durch Vererbung will man sich Freiheitsgrade schaffen. Bei der Abbildung von Algorithmen auf Hardware wie in einem FPGA, legt man sich aber auf Schnittstellen fest, Anzahl der Variablen und deren Wortbreite. Durch Vererbung führt man aber öffentliche Methoden ein und beeinflusst damit die Schnittstelle. Bye Tom
Ließe sich das Überladen von Funktionen / Procedures diesbezüglich mit objektorientierten Funktionen vergleichen ?
Das Überladen von Funktionen ist Polymorphie und gehört auch zur Objektorientierung. Diese braucht aber auch Vererbung und Kapselung. In meinem letzten Posting ist eine Fehler, es muss heißen: Es gab schon Ansätze zu einem objektorientierten VHDL, jedoch haben die sich nicht durch gesetzt, da Vererbung der direkte Abbildung auf Hardware widerspricht. Durch Vererbung will man sich Freiheitsgrade schaffen. Bei der Abbildung von Algorithmen auf Hardware wie in einem FPGA, legt man sich aber auf Schnittstellen fest, Anzahl der Variablen und deren Wortbreite. Durch Vererbung führt man aber öffentliche Methoden ein und beeinflusst damit die Schnittstelle. Bye Tom
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.