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.
Wos ist das Problem? Man kann einen Soliden SPI-Slave entweder aus TTL-Gattern oder einem CPLD zusammenbauen. MFG Falk
>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.
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.
> 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.
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.