www.mikrocontroller.net

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


Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...), 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.

Autor: Falk Brunner (falk)
Datum:

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

MFG
Falk

Autor: Tropenhitze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tropenhitze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.