spi -> Manchester -> spi als Experiment zum VHDL lernen

Gast #4656806
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ß
Moderator (Firma: Titel) Persönliche Seite #4656817
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
Gast #4657377
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.
Gast #4657512
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ß

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