Forum: FPGA, VHDL & Co. spi -> Manchester -> spi als Experiment zum VHDL lernen


von Friedrich F. (Gast)


Lesenswert?

Hallo,

ich versuche mich gerade in VHDL einzuarbeiten und habe mir dafür 
vorgenommen, ein SPI-Signal von einem Arduino in einen CPLD zu senden. 
Hier möchte ich das Signal manchestercodieren und über eine LED an eine 
Photodiode senden. Die Photodiode geht wieder an den CPLD zurück und 
wird dort nach SPI dekodiert und von einem zweiten Arduino ausgelesen. 
Die Datenrate ist zunächst unbedeutend.

Der Mikrocontrollerteil und der Analogteil ist leicht, der CPLD-Teil 
nicht. Ich habe mir die QuartusII IDE herunter geladen und habe hier ein 
kleines CPLD-Board mit einem MAXII vor mir.

Ich habe die lezten Tage im Internet nach einem leicht verständlichen 
Tutorial, einer Appnote oder einem gut dokumentierten Code in VHDL für 
einen solchen Encoder/Decoder gesucht. Leider war ich nicht sehr 
erfolgreich. Ich habe eine AppNote von Xilinx finden können (Xapp339). 
Der dort besprochene Kodierer/Dekodierer ist mir aber viel zu 
umfangreich und unverständlich. Anderer Code ist meist nicht 
dokumentiert oder beschränkt sich nicht auf den Manchesterteil.

Da ich das Denken in VHDL erst lernen muss, wäre mir ein einfaches, 
kurzes und gut dokumentiertes praktisches Beispiel sehr lieb. Die 
Theorie kommt danach.

Vielleicht hat einer von euch ja so ein Beispiel oder kennt eine Adresse 
dafür. Ich wäre sehr dankbar.

Mit freundlichem Gruß

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Friedrich F. schrieb:
> ich versuche mich gerade in VHDL einzuarbeiten und habe mir dafür
> vorgenommen, ein SPI-Signal von einem Arduino in einen CPLD zu senden.
Schritt 1 der Aufgabe: mach mal diesen Teil. Sende Daten zum MAX und 
zeige sie dort an.
Lies die Stellung von Schaltern ein und gib sie an den uC zurück.

Das mit dem Manschester-Code ist mehr Aufwand, wobei das Senden noch 
einfach ist, weil dort ja nur ein serieller Sender aufgebaut und die 
Ausgabedaten mit einem Takt ver-xodert werden müssen.

Der Empfänger ist deutlich aufwändiger, weil dabei je erst mal der Takt 
zurückgewonnen und ein Resync eingebaut werden muss. Hier mal ein RC-5 
Empfänger, dieses Protokoll ist ja auch Manchester codiert:
http://www.lothar-miller.de/s9y/categories/50-RC-5

von Analog OPA (Gast)


Lesenswert?

Friedrich F. schrieb:
> Theorie kommt danach.

Bin ja sicher kein CPLD-Experte aber diese Einstellung ist eigentlich 
überall die Falsche! Man sollte erst wissen, was man tun muss, was man 
tun will und dann beginnen, es zu tun.

Ich werfe auch nicht 100 Bauteile auf die Platine und verlöte sie um 
dann zu verstehen, was da wohl passieren könnte.

von Friedrich F. (Gast)


Lesenswert?

Hallo Analog Opa,

da hat du ja auch Recht mit. Aber es lernt sich motivierter am konkreten 
Beispiel und es festigt sich besser.

Ich habe hier vor mir einige recht dicke Bücher und Skripte zum Thema 
VHDL, zahlreiche Appnotes zum MAX, dem Cyclone, der Quartus-Overfläche 
und habe auch schon viel gelesen. Aber was bringt der Abstrakte Begriff, 
das abstrakte Konstrukt wenn der Ansatz fehlt?

Ich weiß was eine Entity, eine Architecture oder ein concurrent 
Statement ist. Weiß, dass ein deutlicher Unterschied zwischen dem MAX 
und dem Cyclone, nicht nur in der Flüchtigkeit des Speichers liegt. 
Ebenso habe ich bereits einige Erfahrung im Bereich Elektronik und 
Programmieren.

Aber es fehlt die konkrete, gut erklärte Anleitung, wie man diese 
Fragmente für dieses Problem zusammen bekommt. Wie man es denken muss. 
Daher: lernen am Beispiel.

Mit freundlichem Gruß

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Das sind aber zwei Dinge: VHDL und FPGA lernen und dann Digitales 
lernen. Vielleicht tut es einfach mal ein Digitalkurs an der Uni oder 
der VHS?
Könntest Du die Schaltung auflöten? Dann ist der Schritt zum FPGA schon 
halb getan.

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
Noch kein Account? Hier anmelden.