Guten Tag,
ich bin aktuell in einer Entscheidungsphase für ein größeres
Gesamtprojekt, wo mehrere (teils wiederverwertbare) Schaltungsanteile
mit teureren Komponenten, wie PLL's, Mischern, ADC, DAC, etc. dranhängen
sollen. Eine erste Implementierung stelle ich mir so vor, dass
insbesonders von den teureren Schaltungsanteilen einzelne Blöcke
aufgebaut werden, so dass diese separat getestet werden können und nicht
im Fehlerfall einer "Baugruppe" alles nichtig ist. Die große Nebenfrage,
die sich mir hier stellt ist: Wie empfindlich sind die gängigen Busse- /
Interfaces? Die mechanisch einfachste Art und Weise in meinem Kopf ist
mit Stiftleisten und Flachbandkabeln zu arbeiten, so dass die Steuerung
(aktuell vorerst als Mikrocontroller geplant, wird in weiterer Iteration
auf FPGA hinauslaufen) mit dein einzelnen Baugruppen verbunden werden
kann.
Gibt es hierzu Erfahrungswerte? Einkopplungen in sensible
Schaltungsteile kann ich weitestgehend ausschließen durch geplante
Schirmungen, jedoch kenne ich mich nicht so wirklich auf der digitalen
Schiene aus und bin mir unschlüssig, wie robust die Kommunikation ist.
Besten Dank ;)
Ich erwarte keine großen Schäden durch Bus-Tests, sondern eher, dass es
Probleme mit dem Bus geben könnte. Der jeweilige Bus hängt dann von der
Baugruppe ab, da die Steuerung zentral erfolgen soll.
Leitungslängen sind unter 20cm, Flachbandleitung ist angedacht. Aufgrund
von Schirmung der analogen Schaltungsteile und HF erwarte ich dadurch
kaum Rückwirkungen darauf..
Also für die Anforderungen taugen all diese Buse würde ich sagen. Das
ist noch keine Herausforderung.
Bedenke aber dass die alle nach einem Master/Slave konzept arbeiten und
darum für modulare Gesichten, nicht optimal flexibel.
Wenn du kannst, nimm CAN. Dann brauchst du dir auch nicht mehr im
Entferntesten gedanken über Robustheit machen.
Also, wie bereits beschrieben die "Zentrale" versorgt die Baugruppen in
unmittelbarer Nähe mit Steuerung / liest Daten aus, CAN wäre nice to
have, ist aber bei der Baugruppenplanung nicht direkt möglich. Ich denke
ich versuche es einfach mal, wenn die einzelnen Platinen da sind und
bestückt sind werde ich es sehen ;)
Wolfgang schrieb:> Es gibt TWI, aber das ist IMHO bis auf die Bezeichnung dasselbe wie I²C.
Ach, ich glaube, da muss man sich noch keine Sorgen drum machen...
Unser TE hats halt wohl noch nicht so mit Bus Systemen.
Aber das wird noch kommen!
Ich finde eher solche Sätze befremdlich:
> Ich denke> ich versuche es einfach mal, wenn die einzelnen Platinen da sind und> bestückt sind werde ich es sehen ;)
Eigentlich kenne ich es nur anders rum.
Erst Bus fest legen, dann Platinen machen.
Aber bis jetzt ist ja noch die Frage ungeklärt:
> Welcher Datendurchsatz wird benötigt?
Das treibt mich zu der Annahme, dass der Punkt deutlich unterschätzt
wird.
Marcel schrieb:> PLL's, Mischern, ADC, DAC, etc. dranhängen
Denn das lässt böses ahnen.......
Bei SPI werden die Slaves in der Regel durch separate Steuerleitungen
selektiert.
Bei I²C dienen dazu Adressen, die auf den beiden Signal-Leitungen
seriell übertragen werden.
Bei 20cm Flachkabel zuzüglich den Leitungen auf den Platinen kommt man
schon in den Bereich, wo man über Signal-Flanken, Echos und
Wellenwiderstände nachdenken muss. Bei I²C haben die Chip Hersteller das
schon durch analoge und/oder digitale Filter in den IC's erledigt. Bei
SPI muss man selber was machen.
I²C ist auf jeden Fall einfacher zu handhaben. Aber vielleicht zu
langsam.
Arduino F. schrieb:> Eigentlich kenne ich es nur anders rum.> Erst Bus fest legen, dann Platinen machen.
Ja, da hast du recht, ich habe den Bus bereits festgelegt, teils I2C,
teils SPI, jeweils bedingt durch die Peripherie der Baugruppe, da dort
keine separate Schnittstelle liegt, sondern die Ansteuerung unmittelbar
von der Zentrale, meist direkt auf IC's gehen soll.
Der Datendurchsatz ist nur an einer Stelle kritisch und das aber auch
erst, wenn gezeigt ist, dass der Analogteil so funktionieren kann. Wenn
das der Fall ist, dann ist lediglich die Analog-Digital-Wandlung im
worst-case suboptimal und zu überarbeiten. Die meisten "Baugruppen" sind
anderweitig kritisch (und teuer).
Wenn es um eine spätere Miniaturisierung der Sache gehen soll, dann ist
natürlich eine gründlichere Überlegung zu Schnittstellen, ggf. einer
hierarchischen Peripherie, optimales Routing zu denken, zum jetzigen
Zeitpunkt muss es nicht zwangsweise schnell arbeiten und auch keine
Algorithmen durchführen. Aktuell ist nur Kommunikation mit einem
Computer, der die Algorithmen dann ausführt, sowie Steuerung
verschiedener Komponenten hierfür relevant. Später soll ggf. die
Berechnung in einem FPGA Platz finden. Ich habe angefangen mich mit VHDL
zu beschäftigen, habe aber was VHDL angeht die ein oder andere
kompetente Person in meinem Netzwerk ;)