Können wir sowohl ASIC als auch ein FPGA gleichzeitig an dieselben physischen Ausgangs-Ethernet-Ports anschließen? [geschlossen]

Ich mache eine Simulation meines Forschungsdesigns auf einem einzelnen FPGA, in dem ich zwei Schaltchips ASIC und ein FPGA simuliert habe. Ich meine, ich habe ein einzelnes FPGA simuliert, das als zwei Chips funktioniert, und sie so verbunden, dass sie den Datenverkehr auf die andere Seite übertragen können. Ich habe auch ihre logischen Ports mit einem "Arbiter" verbunden, der den Datenverkehr auf der Basis "First in First out" an die physischen Ausgangs-Ethernet-Ports weiterleitet. Da ich all dies auf einem einzelnen FPGA simuliere, habe ich die Logik, den Arbiter zu implementieren, der die wichtige Phase dieses Designs darstellt. Und in der Simulation läuft alles gut. Unten ist das simulierte Experiment. Ich möchte es jetzt in echtem ASIC und FPGA machen.

Ich möchte nur wissen, ob es in einem echten ASIC und FPGA möglich ist, beide an dieselben physischen Ausgangsports anzuschließen. Wenn ja, wo können wir dann die Ausgabewarteschlange implementieren, die die Pakete von ASIC und FPGA (nach der Verarbeitung) puffert und in FIFO-Reihenfolge an die Ausgabe-Eth-Ports freigibt. Denn hier haben wir nicht den "Arbiter", um den Verkehr, der von beiden Vermittlungschips kommt, auf irgendeiner Basis, zB FIFO, weiterzuleiten.

Zwei Möglichkeiten, über die ich nachgedacht habe, sind 1) Port Buffered Memory und 2) Shared Memory (SRAM, DRAM) könnten die Lösung sein. Oder eine andere bessere Idee, die Sie geben können. Danke

Die Frage, wie sie jetzt steht, ist ziemlich chaotisch. Ich verstehe Folgendes: Sie haben 2 Blöcke in Ihrer Hardware, die nebeneinander arbeiten, aber eine identische Ausgangsschnittstelle zur realen Welt haben. In der Simulation leiten Sie die beiden Ausgänge durch einen Arbiter, der die eventuelle Kommunikation mit den Ausgängen über Ethernet übernimmt. Dies funktioniert in der Simulation, aber jetzt möchten Sie zu einer tatsächlichen Implementierung gehen, aber den Schiedsrichter ausschalten? Die einzige Möglichkeit, wie ich sehe, dass der ASIC ins Spiel kommt, ist die Implementierung eines der beiden Blöcke, denke ich?
Ja, Sie haben das Szenario richtig verstanden, Sir. Tatsächlich kommt der Datenverkehr sowohl vom ASIC als auch vom FPGA. Wo kann ich also eine Warteschlange implementieren, die die Pakete, die an physische Eth-Ports gehen, puffert und im FIFO belässt. Würden sie sonst nicht am Ausgangsport kollidieren?
Im Simulator braucht man einen Schiedsrichter, warum denkst du, dass du im wirklichen Leben keinen brauchen würdest?
@immibis , ja, das würde ich brauchen, aber für Arbiter bedeutet, dass ich einen Speicher benötigen würde, in dem ich die Pakete puffern könnte, um sie in FIFO freizugeben. Wo könnte ich also diesen Speicher, Port-Puffer oder gemeinsam genutzten Puffer implementieren, wie ich oben erwähnt habe?
warum geschlossen? Ich denke, es ist ziemlich gut erklärt, aber die Leute können das Szenario nicht richtig verstehen. Sie brauchen ein Stück Kuchen im Mund.

Antworten (1)

Es gibt Möglichkeiten, dies zu tun, aber Sie würden schnell mit Tristate-Puffer und dergleichen herumspielen. Durch einfaches Zusammenstecken der Drähte werden mehrere Treiber auf Leitungen erstellt und Pins in kürzester Zeit gesprengt.

Eine schönere Lösung wäre, den ASIC-Ausgang durch das FPGA zu leiten und sowohl den Block, den Sie im FPGA hätten, als auch den Arbiter dort zu implementieren. Dann hat das FPGA den einzigen Ausgang zum Ethernet. Angenommen, Ihr Arbiter ist bereits synthetisierbar, ist dies eine kleine Änderung im Code. Dies erfordert jedoch wahrscheinlich eine Neugestaltung des restlichen Projekts, ziehen Sie also andere Lösungen in Betracht.

Hinweis: Diese Antwort geht davon aus, dass Ihr für die Simulation verwendeter Arbiter bereits in einem HDL geschrieben ist.