Forum: Mikrocontroller und Digitale Elektronik SPI Slave 16 E/A mit Schieberegistern


von Manuel (Gast)


Lesenswert?

Hi,
ich hänge an folgender Aufgabenstellung fest: Als Studienarbeit soll ich 
einen Laborversuch zum Thema FPGA/SOPC entwickeln. Hierfür soll es auch 
eine Platine geben, auf der verschiedene SPI-Slaves vom NIOS-Prozessor 
mit einem selbst geschriebenen SPI-Master (funktioniert mittlerweile) 
komunizieren. Unter anderem soll dort ein aus ICs (Scheiberegister etc) 
aufgebauter SPI-Slave vorhanden sein der 16 digitale Eingänge und 16 
digitale Ausgänge einließt/ansteuert. Der Slave soll möglichst 
gleichzeitig Daten an MISO einlesen und an MOSI ausgeben. Die üblichen 
Port-Extension Lösungen, mit 74HC595 und 74HC165 scheinen das ja nicht 
zu erfüllen (siehe hier: 
http://www.mikrocontroller.net/attachment/1483/SPI_74HC595.pdf), da zum 
Betrieb unterschiedliche Modes  (CPHA 1 und 0, also nicht einfach mit 
einem Inverter zu lösen) erforderlich sind.

Mein Problem ist folgendes: Ich brauche eine "saubere" Lösung, da am Bus 
ja mehrere Teilnehmer hängen, also Tri-State für die MISO Leitung, es 
darf nichts passieren, wenn andere Slaves in Betrieb etc. und ich nicht 
unbedingt demostrieren will wie man am besten puscht (bzw damit beim 
Prof nicht durch komme).

Hat jemand sowas schon realisiert oder sich entsprechend Gedanken 
gemacht? Wäre super wenn jemand entsprechende Tipps hätte.

von Falk B. (falk)


Lesenswert?

Wos ist das Problem? Man kann einen Soliden SPI-Slave entweder aus 
TTL-Gattern oder einem CPLD zusammenbauen.

MFG
Falk

von Tropenhitze (Gast)


Lesenswert?

>Ich brauche eine "saubere" Lösung,

Eine ganz "saubere" Lösung wäre, einen AVR mit vielen Pins zu nehmen und 
über der/die/das eingebaute SPI anzusprechen.

von Manuel (Gast)


Lesenswert?

eine solide Lösung heist in dem Fall: Glue Logic für den Lerneffekt. 
Hardwaresynthese sollen die Leute ja lernen. Mit 74HC595 und 74HC165 
scheint diese mit wenig zusätzlichem Schaltungsaufwand nicht machbar zu 
sein leider. Ich hatte halt gehofft, das jemand eine schöne, 
nachvollziehbare Realisierung mit 3-4 Ics oder einen nützlichen Tipp 
dahin wüsste, die auch Studenten, die sich nicht so gerne mit Elektronik 
beschäftigen, einen leichten Erfolg ermöglichen, in dem sie die 
Schaltung schnell verstehen. Wenn ich 10 ICs und Flipflops drauche, um 
die Phase vom SPI zu schieben ist das wenigstens diaktisch nicht ideal. 
Kompliziert aufbauen können in dem fall wohl viele, für den Zweck 
optimal hab ich leider noch nichts. Wenn also jemand was weis bin ich 
froh um alle Tipps.

von bensch (Gast)


Lesenswert?

> Die üblichen
Port-Extension Lösungen, mit 74HC595 und 74HC165 scheinen das ja nicht
zu erfüllen (siehe hier:

Dann mach ich was falsch.....

Bei mir funktioniert's jedenfalls. Mal dir mal das Timing selbst auf.

von Tropenhitze (Gast)


Lesenswert?

>Dann mach ich was falsch.....

Mit Sicherheit nicht, aber anders :-)

Meine Favoriten für solche Probleme waren immer 4094+4021. Dabei wurde 
der Strobe für 4094 und 4021 als ein Signal ausgegeben, wodurch erst der 
4094 gefüttert wurde und nach dem Strobe der 4021 eingelesen wurde. Die 
Daten des 4021 kommen daher immer eine Phase später.

Wenn man das Ausgeben+Einlesen aber zyklisch macht, dürfte es nicht 
stören.
Bei SPI, wenn ich es verstanden habe, sind die Daten, die eingelesen 
werden sollen, schon im entsprechenden Register und werden unverzögert 
ausgegeben.

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.