Hallo, ich bin totaler VHDL Neuling. Ich habe bisher nur einen Zähler pogrammiert, den man mit zwei Tasten sagen kann in welche Richtung er zählen soll. Deshalb meine Fragen: 1. Wie kann man in VHDL eine Tastenentprellung programmieren? 2. Gibt es sowas wie Funktionen in C? Ich möchte an Prozesse Variablen (keine Signale übergeben). 3.Ich bin noch auf der Suche nach guten Tutorials. Danke für eure Hilfe.
Fang erstmal mit drittens an, dann wirst du 1. leicht selbst hinbekommen und sehen, dass das mit 2. (so einfach) nichts wird, weil du mit deinen Programmen echte Hardware beschreibst, die ist nicht so variabel. Mein Tipp zum Einstieg: ISBN: 3827370477
Danke für deine Antwort. > und sehen, dass das mit 2. (so einfach) nichts wird, weil du mit deinen > Programmen echte Hardware beschreibst, die ist nicht so variabel. Es gibt doch "shared" Variablen. Sind die nicht synthetisierbar?
> Es gibt doch "shared" Variablen. Sind die nicht synthetisierbar? Wahrscheinlich nicht in dem Sinne, den Du Dir vorstellst. Möglicherweise hilft Dir da die Zwei-Prozess-Methode eher weiter: http://www.gaisler.com/doc/vhdl2proc.pdf http://www-md.e-technik.uni-rostock.de/lehre/vlsi_i/vhdlf.ppt Duke
Jedem Prozess innerhalb einer entitty stehen automatisch alle Signal der anderen Prozesse (lesend) zur Verfügung. Du musst da nix übergeben. Nur schreiben darfst du die Signale nur in einem Prozess.
> 2. Gibt es sowas wie Funktionen in C? > Ich möchte an Prozesse Variablen (keine Signale übergeben). Vergiss zuallererst die "C"-Denkweise, damit wirst du bei der Hardwarebeschreibung (es ist keine Hardwareprogrammierung) sehr bald Schiffbruch erleiden. Was du funktionell am ehesten mit C-Funktionen vergleichen kannst, sind Packages, die eine definierte (Entity) Schnittstelle haben, und in einem Hauptmodul eingebunden werden. Prozeduren und Funktionen in VHDL haben funktionell mit C-Funktionen nichts zu tun. Du kannst schon versuchen, diese Syntaxelemente so zu verwenden, aber dann kommst du recht schnell an die Grenzen dieser Konstrukte.
>(es ist keine Hardwareprogrammierung)
Jeden Neuling diese Aussage an den Kopf zu werfen, halte ich für
kontraproduktiv, da man als dieser Neuling das Ganze weder verstehen
kann noch verstehen muss, bevor man einsteigt. Es werden Zeilen in einen
Editor geschrieben, und nach diesen Zeilen macht dann irgendein Ding
das, was ich in diesen Zeilen geschrieben habe. Das ist, Korrektheit hin
oder her, programmieren. Es gibt genug Beiträge hier, wo schon darüber
geredet wird, aber dem Anfänger hilft es wie gesagt überhaupt nicht.
Spezieller Dank geht an Duke Scarring für die Links. > Vergiss zuallererst die "C"-Denkweise.. Werde ich machen. Man versucht nun mal am Anfang Parallelen zu bereits bekannten Dingen zu finden. > Prozeduren und Funktionen in VHDL haben funktionell mit C-Funktionen > nichts zu tun. Habe ich auch schon festgestellt.
> aber dem Anfänger hilft es wie gesagt überhaupt nicht. Gut, jedem Häfele sein Deckele ;-) Was ich damit klarstellen möchte, ist, dass es auch jedem Anfänger klar ist, dass er eben nicht irgendwas programmiert, sondern mit FFs und Logik eine Schaltung aufbaut. Und die Denkweise dazu ist eine komplett andere, als beim Programmieren in z.B. C oder Assembler. > Es werden Zeilen in einen Editor geschrieben, und nach diesen Zeilen > macht dann irgendein Ding das, was ich in diesen Zeilen geschrieben habe. Dann programmierst du deine Texte in einer Textverarbeitung? Denn auch da "werden Zeilen in einen Editor geschrieben, und nach diesen Zeilen macht dann irgendein Ding das, was ich in diesen Zeilen geschrieben habe".
Hi Lo, ich denke nicht, das Herr Miller "jemanden etwas an den Kopf wirft". Seine Aussage ist der Dreh- und Angelpunkt zum Verständnis von Hardwarebeschreibungssprachen. Signalzuweisungen laufen in der Schaltung parallel(!) ab (jetzt lasse ich mal die Beschreibung von Testbenchen oder Verhaltensmodellen aussen vor). Ein (C-)Programm wird hingegen sequentiell abgearbeitet. wenn in einem process z.B: folgendes steht: X <= 4; Y <= X; wunder sich die meisten Neulinge über den Wert, der in Y steht (der natürlich alles andere als 4 sein kann, je nach der letzten Zuweisung). und das Y <= X; X <= 4; auch noch das selbe ist grenzt dann schon Hexerei. Ich denke Hardwarebeschreibung und Programmierung ist wie Äpfel mit Birnen zu vergleichen. Aber andernfalls kann man viele Methoden aus der Softwareentwicklung auch auf Hardwareentwicklung anwenden. HW und SW ergänzen sich gegenseitig und oft muß man lange abwägen, welche Teile man als HW und welche man als SW realisiert. Beides hat seine Vor- und Nachteile. Aber vielleicht sehe ich das auch vollkommen falsch... Der Besucher
> Signalzuweisungen laufen in der Schaltung > parallel(!) ab (jetzt lasse ich mal die Beschreibung von Testbenchen > oder Verhaltensmodellen aussen vor). Ein (C-)Programm wird hingegen > sequentiell abgearbeitet. Das bereitet mir kein Kopfzerbrechen. Ich habe auch schon in der "sequentiellen Programmierung" mit parallelen Prozessen gearbeitet. In VHDL sind ja auch sequentielle Abläufe möglich.
> Ich habe auch schon in der "sequentiellen Programmierung" mit > parallelen Prozessen gearbeitet. Irrtum. Das sind nur scheinbar parallele Abläufe. Denn wenn da nur 1 CPU ist, kann die auch nur 1 Berechnung/Transfer gleichzeitig machen. > In VHDL sind ja auch sequentielle Abläufe möglich. Ja, indem die anderen Zustände (die ja in der Hardware tatsächlich gleichzeitig da sind) einfach nicht aktiviert werden. So ist z.B. in einer SM immer nur 1 Zustand aktiv, und es wird sequentiell in einen anderen Zustand weitergeschaltet.
>Dann programmierst du deine Texte in einer Textverarbeitung? >Denn auch da "werden Zeilen in einen Editor geschrieben, und nach diesen >Zeilen macht dann irgendein Ding das, was ich in diesen Zeilen >geschrieben habe". Komisch, ich hab bei meiner Textverarbeitung gerade geschrieben "gib mir 10000 €!", es kam keine Fehlermeldung, aber ich hab trotzdem kein Geld bekommen. Brauche ich einen anderen Compiler? Oder hinkt dein Vergleich doch etwas arg? ;) >Signalzuweisungen laufen in der Schaltung parallel(!) ab Das ist wichtig und richtig, aber dem Anfänger nutzt dafür der oben bemängelte Satz nichts. Woher soll der denn wissen, wie Hardware genau funktioniert und was sie kann und was nicht? Ich will ja seine Aussage nicht verteufeln, ich fand es zu meiner Anfangszeit jedenfalls immer sinnlos, diesen Satz gesagt zu bekommen, weil er mich nicht weitergebracht hat.
@peterchen: schau mal hier: http://www.itiv.uni-karlsruhe.de/opencms/opencms/de/study/vhdl/ Das sollte für den ersten Einstieg erstmal reichen. Der Besucher
also ich empfand es bei meinem einstieg als sehr hilfreich vorher die sicht der elektronik gekannt zu haben. so hatte ich viel schneller eine gewisse vorstellung was ich da eigentlich im fpga erzeuge.
> Signalzuweisungen laufen in der Schaltung parallel(!) ab > Das ist wichtig und richtig, aber dem Anfänger nutzt dafür der oben > bemängelte Satz nichts. Woher soll der denn wissen, wie Hardware genau > funktioniert und was sie kann und was nicht? > Ich will ja seine Aussage nicht verteufeln, ich fand es zu meiner > Anfangszeit jedenfalls immer sinnlos, diesen Satz gesagt zu bekommen, > weil er mich nicht weitergebracht hat. Also, weder stören mich solche Aussagen, noch bringen sie mich irgendwie weiter. Mir ist schon klar, daß mein CPLD im Grunde nicht viel mehr kann, als würde ich einen Haufen Logik-ICs von Hand zusammenlöten. Nur, bis zu welchem Grad Abstraktion möglich ist und VHDL-Compiler und Synthesetool Kleinkram abnehmen können, muß ich noch rausfinden. Lasst euch daher nicht von den dummen Grundlagenfragen ärgern, die einer stellt, der sich erst seit zwei Tagen damit beschäftigt.
@Nephilime: Ich kannte zuerst auch die wichtigen Konstrukte der Digitalelektronik, sowie Entwurfs- und Optimierungsmethoden bevor ich nur eine Zeile HDL geschrieben habe. Aber mit VHDL und FPGAs ist der Einstieg unbestritten viel schneller und einfacher möglich und man bekommt auch Resultate zum "anfassen". Nur verlernen viele, nach halbwegs optimale Lösungen zu suchen. Nur wenn nicht alles ins FPGA "passt" wird dann optimiert. Der Besucher
> Komisch, ich hab bei meiner Textverarbeitung gerade geschrieben "gib mir > 10000 €!" > ... aber ich hab trotzdem kein Geld bekommen. Ja, da hast du offenbar nicht unterstützte Syntaxelemente verwendet ;-)
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.