Forum: FPGA, VHDL & Co. DE0Nano Board als Slave Programmieren (SPI)


von Joe91 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich wollte den de0 Nano als Slave testen. Ich habe den Master erstmal 
weggelassen und wollte den Slave mal nur zum laufen bringen. Hab mir 
überlegt vielleicht mit dem Frequenzgenerator eine Clock zu generieren 
und auf den sclk pin zu geben , den eigentlich der Master rüberschicken 
sollte. Den Miso Mosi habe ich erstmal nicht angerührt nur den PINS 
zugewiesen. Den Chip Select habe ich auf Ground gezogen damit er ständig 
aktiv ist. Nun wollte ich mir das alles mal im Signaltap anschauen. 
Jetzt zu meiner eigentlichen Frage: Ich muss doch den FPGA irgendwie mit 
einer Clock versorgen und der fehlt mir irgendwie. Sonst läuft ja 
garnichts hier. Wie suche ich mir genau die Clock aus ? Kann ich einfach 
den internen Clock vom Oszi im Datenblatt raussuchen und einfach den Pin 
in SignalTap angeben? Oder brauche ich ne PLL? Oder wie mache ich das 
damit irgendwas intern mal passiert? Ich habe das so verstaden, das man 
die PLL verwendet um Clocks bzw. Frequenzen zu teilen. Das heißt wenn 
ich jetzt wie auf meinem FPGA ein 50MHz oszi habe und ein 8MHz bräuchte 
dann verwende ich ne PLL oder wie versteht sich das?

Vielen Dank schonmal für jede Antwort

Gruß

Joe91

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


Lesenswert?

Joe91 schrieb:
> Wie suche ich mir genau die Clock aus ?
Das kannst nur du beantworten, denn es kommt auf das an, was in dem 
Kasten ist.

Aber so wie es aussieht braucht dieses Modul trotz der vielen 
Steuersignale keinen Systemtakt.

Mein Vorschlag: simuliere das Interface doch einfach erst mal. Es gibt 
fast nichts einfacheres, als einen SPI zu simulieren...

> Den Chip Select habe ich auf Ground gezogen damit er ständig aktiv ist.
Du weißt schon, dass der SlaveSelect (so heißt das beim SPI) auch zur 
Wortsynchronisation verwendet wird. Je nach Slave-Implementation siehst 
du erst an der steigenden Flanke des SS eine Reaktion.

von Gustl B. (-gb-)


Lesenswert?

Was willst Du eigentlich genau machen?

Joe91 schrieb:
> ich wollte den de0 Nano als Slave testen. Ich habe den Master erstmal
> weggelassen und wollte den Slave mal nur zum laufen bringen.

Du willst also das DE0 Nano als SPI Slave betreiben? Und wer soll denn 
dann was lesen/schreiben? Hat dieser SPI Slave irgendeine Art Inhalt, 
also Register mit Werten die man lesen/schreiben könnte?

Auf den DE0 Nano ist aber sogar schon schicke SPI Hardware drauf, der 
Beschleunigungssensor ADXL345 
http://www.analog.com/media/en/technical-documentation/data-sheets/ADXL345.pdf

Wenn der ähnlich funktioniert wie der ADXL362 auf den Nexys4 Board, dann 
ist das relativ schön einfach. Zur Konfiguration um den Standby zu 
verlassen muss man ein Register beschreiben hier vermutlich 0x2D und 
dann kann man in einem Burst 0x32 bis 0x37 lesen um alle drei 
Beschleunigungswerte zu erhalten.

von Joe91 (Gast)


Lesenswert?

Hallo zusammen!

Vielen Dank zunächst für jede einzelne Antwort! Also meine

Gustl B. schrieb:
> Du willst also das DE0 Nano als SPI Slave betreiben? Und wer soll denn
> dann was lesen/schreiben?

Genau, denn nano möchte ich als slave benutzen. Meine Aufgbe ist es von 
einem hercules microcontroller board per button eine led auf der fpga 
Seite anzusteuern mit SPI. Und meine Aufgabe ist es die fpga Seite zu 
konfigurieren.

Lothar M. schrieb:
> Du weißt schon, dass der SlaveSelect (so heißt das beim SPI) auch zur
> Wortsynchronisation verwendet wird. Je nach Slave-Implementation siehst
> du erst an der steigenden Flanke des SS eine Reaktion.

Daa habe ich nicht so ganz verstanden ? Der ist ja Active Low. Das heißt 
sobald er auf Ground gezogen wird geht es mit der Kommunikation los.

Wie übermitteln man denn genau diesen einen bit zum ansteuern einer LED 
? Könntet ihr mir da weiterhelfen?

Gruß

Joe91

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


Lesenswert?

Joe91 schrieb:
> Daa habe ich nicht so ganz verstanden ? Der ist ja Active Low. Das heißt
> sobald er auf Ground gezogen wird geht es mit der Kommunikation los.
Ja. Und eigneltich interessant ist das /Ende/: mit der steigenden Flanke 
werden die übertragenen Daten übernommen.

> Wie übermitteln man denn genau diesen einen bit zum ansteuern einer LED
> ?
Vorab: bitte nicht Plenken, ein Fragezeichen hat keine eigene Zeile 
verdient.
Wenn es nur eine einzelne LED ist, dann nimmt man nur eine einzelne 
Leitung, die die Information "on" und "off" überträgt. Dann hat man 
verglichen mit der SPI-Lösung 2..3 Leitungen eingespart...

> Könntet ihr mir da weiterhelfen?
Prinzipiell ist die Übertragunslänge eines SPI-Transfers nicht 
eingeschränkt. Das kann also von 1...n Bits gehen. Allerdings sind die 
meisten µC byteorienteirt, und deshalb wird mindestens 1 Bate 
übertragen.

Ich würde das zur Übung erstmal komplett asynchron so machen wie dort:
http://www.lothar-miller.de/s9y/archives/31-SPI-Slave-im-CPLD.html
(du brauchst natürlich nur den Empfang...)
Und dann als "richtiges" synchrones FPGA-Design mit einem richtigen Takt 
wie dort im Beitrag "Re: Erfahrung mit SPI Slave und Spartan 6 FPGA?"
(kleiner Tipp: den ganzen Thread ansehen und natürlich wieder nur die 
Empfangsrichtung implementieren)

: Bearbeitet durch Moderator
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.