Eine Möglichkeit besteht darin, dass jede Karte über einen Anschluss mit Überbrückungsstiften verfügt, die zu einem Sockel führen, der an das Motherboard angeschlossen wird. Diese Überbrückungsstifte werden durch festverdrahtete Verbindungen auf der Hauptplatine miteinander verbunden, die für jede Sockelposition eindeutig sind. Auf diese Weise weiß jede Karte automatisch, an welchen Sockel sie angeschlossen ist, und Sie können herausfinden, wie der Master diese Informationen von den Karten sammeln kann. Wenn Sie nur wenige Steckplätze haben, ist dies wahrscheinlich der einfachste und zuverlässigste.
- -
Eine andere Möglichkeit besteht darin, Leitungen zu haben, die NUR zwischen benachbarten Karten verlaufen, damit die Karten telefonieren und sich selbst zählen können. Dies funktioniert jedoch nicht mit übersprungenen Steckplätzen. Diese Methode erfordert etwas, um den Count-In-Prozess zu starten, z. B. einen Master oder eine Karte, die "weiß", dass es sich um die erste Karte handelt (möglicherweise einen Jumper, der angeschlossen wird, wenn er in den ersten Steckplatz der Hauptplatine eingesteckt wird, oder nur einen Jumper, den Sie manuell verwenden Schließen Sie die Karte selbst an, wenn kein Motherboard vorhanden ist.
Sie müssen auch wissen, dass die letzte Karte die letzte Karte ist. Sie können entweder eine der beiden oben genannten Jumper-Methoden verwenden, aber Sie können auch nur Timeouts verwenden, um die letzte Karte zu bestimmen (dh wenn die aktuelle Karte versucht, mit der nächsten Karte zu kommunizieren und keine Antwort erhält und eine Zeitüberschreitung auftritt) kann davon ausgehen, dass es die letzte Karte ist).
Diese Methode funktioniert am besten, wenn Sie eine fortlaufende Folge von Karten mit einer sehr großen oder beliebigen Anzahl haben. Ich habe diese Methode in einem Projekt verwendet, damit ich so viele identische Leiterplatten stapeln kann (kein Motherboard, nur Board-to-Board-Anschlüsse, damit ich Leiterplatten kontinuierlich übereinander stapeln kann), wie ich möchte, und alle zählen sich selbst ein und wissen genau Bescheid wo sie im Stapel sind.
Diese Methode ist auch ein Kinderspiel, wenn Sie bereits eine dedizierte serielle Verbindung haben, die ausschließlich zwischen benachbarten Karten ausgeführt wird, da keine zusätzliche Hardware erforderlich ist.
- -
Eine weitere (theoretische) Möglichkeit besteht darin, zwei Signalleitungen vom Master zu verwenden, die beim Vorbeifahren in jede Buchse abfallen. Eine Leitung ist nicht verzögert, während die zweite Leitung eine Verzögerungsleitung zwischen dem Ablegen in jede Buchse aufweist. Der Master sendet gleichzeitig einen Impuls über beide Leitungen und jede Karte misst die Zeitdifferenz zwischen der verzögerten Leitung und der nicht verzögerten Leitung. Dies lässt es wissen, wie weit es unten ist, und lässt es daher wissen, in welcher Buchse es sich befindet. Von dort aus können Karten vordefinierte Zeitinformationen verwenden, um zu wissen, wo sie sich auf der Leitung befinden, oder sie können einfach weit unten herausplatzen Linie sind sie zum Master und der Master kann ihre tatsächliche Reihenfolge sortieren (wenn die Entfernungen oder Verzögerungen aus irgendeinem Grund ungewiss sind). Diese Methode benötigt wahrscheinlich die wenigsten Stifte am Sockel (nur zwei). Ich denke, das Hauptproblem besteht darin, eine geeignete Verzögerungsleitungskomponente zu finden. Sie möchten wahrscheinlich eine, die mindestens zehn Mikrosekunden beträgt.
Der Hauptvorteil dieser Methode besteht darin, dass Sie Sockets überspringen können und dennoch nur 2 zusätzliche Socket-Pins für eine sehr große Anzahl von Karten benötigen (begrenzt durch den akkumulierten Zeitfehler aufgrund der Variationen in den Verzögerungsblöcken, wenn Sie weiter und weiter in der Kette sind .
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab