Zwei Fragen zu VHDL

Gast #1115744
Lesenswert?

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.
Gast #1115755
Lesenswert?

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
Gast #1115810
Lesenswert?

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?
Gast #1115905
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #1115925
Lesenswert?

> 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.
Gast #1115978
Lesenswert?

>(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.
Gast #1116005
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #1116008
Lesenswert?

> 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".
Gast #1116026
Lesenswert?

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
Gast #1116230
Lesenswert?

> 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.
Moderator (Firma: Titel) Persönliche Seite #1116303
Lesenswert?

> 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.
Gast #1116329
Lesenswert?

>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.
Gast #1116350
Lesenswert?

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.
Gast #1116358
Lesenswert?

> 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.
Gast #1116390
Lesenswert?

@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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren