Verwenden von Temac Core - XIilinx Virtex 5-Board

Ich beabsichtige, Datenpakete von meinem PC über ein Ethernet-Kabel an ein Virtex-5-Board zu senden. Ich habe drei Möglichkeiten gefunden, dies zu erreichen: 1. Verwenden Sie den Microblaze-Prozessorkern, indem Sie die EDK- und SDK-Tools verwenden. (Es wird jedoch viele Geräteressourcen verwenden) 2. Instanziieren Sie den Temac-Kern. 3. Erstellen Sie eine eigene LUT-basierte Implementierung, um die Pakete zu senden. (ressourcenschonend, aber erforderlich, um einen eigenen Block zu bauen)

Ich entscheide mich für den Temac Core-basierten Ansatz, konnte aber nicht viele Dokumentationen/Projekte in diesem Bereich finden. Ich habe einen Server auf meinem PC und verwende eine Socket-Verbindung, um Pakete über Ethernet zu senden. Woher weiß ich die MAC-Adresse des Boards? Und sobald der Temac-Kern instanziiert ist, wird die gesamte Datenverarbeitung von ihm durchgeführt? Ich beabsichtige, TCP/IP-Kommunikation zu verwenden, aber UDP/IP ist auch in Ordnung. Ich habe nicht viel Erfahrung im Umgang mit Xilinx-Kernen und liege vielleicht irgendwann falsch. Bitte helft!!!

Antworten (1)

Ich habe den TEMAC-Kern verwendet, der direkt in Logik instanziiert wurde, sodass ich Ihnen wahrscheinlich einige Gedanken und Antworten geben kann.

Dokumentation

Erstens stellt Xilinx eine ganze Reihe von Dokumenten für jeden seiner IP-Kerne bereit. Sie bewahren auch Dokumente für verschiedene Versionen des Kerns auf, also achten Sie darauf, das richtige Dokument auszuwählen. Eine Suche in den Support-Dokumenten von Xilinx ergab diese Sammlung von Dokumenten:

Xilinx TEMAC-Dokumentation

Das Hauptdokument, das Sie sich ansehen sollten, ist das Benutzerhandbuch. Es ist SEHR detailliert und sollte alles haben, was Sie brauchen, um den Kern in einem Projekt zu verwenden. Allerdings kann es ziemlich schwierig sein, die gewünschten Informationen durchzuarbeiten und zu verfeinern.

Ich basiere dies auf v4.5 des Kerns, ich denke, das ist die neueste direkte Instanziierungsversion (nicht AXI-Bus). Welche Kerne Sie verwenden können, hängt davon ab, wie aktuell Ihre ISE-Version ist, aber sie ändern sich nicht an den Grundlagen zwischen den Versionen.

Das Benutzerhandbuch für TEMAC v4.5 finden Sie unter http://www.xilinx.com/support/documentation/ip_documentation/tri_mode_eth_mac_ug138.pdf

Lizenz

Für die Verwendung des TEMAC-Kerns ist eine Lizenz erforderlich. Eine Evaluierungslizenz ist kostenlos und voll funktionsfähig, funktioniert aber nach einer Weile nicht mehr

Der Kern kann im Zielgerät für eine begrenzte Zeit getestet werden, bevor er abläuft (nicht mehr funktioniert). Zu diesem Zeitpunkt kann er durch Neukonfiguration des Geräts reaktiviert werden.

Auf dem Spartan-6-Gerät habe ich den Kern mit einem 50-MHz-Takt verwendet, der Kern funktionierte etwa 8 Stunden lang, aber es gibt keine Dokumentation darüber, wie genau das Timeout funktioniert.

Ich würde ein Angebot für eine Lizenz einholen, bevor Sie zu viel Arbeit mit dem Kern machen, es kostet ziemlich viel Geld!

Funktion

Es gibt ein Blockdiagramm des Kerns auf Seite 52 des Dokuments.

TEMAC-Architektur

Dies zeigt Ihnen, was der TEMAC im Ethernet-Jargon tut, aber im Grunde die Kernschnittstellen zwischen der Benutzerlogik und dem Ethernet-PHY (der die eigentlichen Leitungssignale ansteuert) auf Paket-für-Paket-Basis.

Der Schlüssel zu den meisten Ihrer Fragen ist, wie die "Client-Schnittstelle" funktioniert. Dies ist die Schnittstelle zu Ihrer Logik und ist gut beschrieben. Sehen Sie sich dieses Kapitel an, um zu sehen, wie die Ein- und Ausgabedaten der Schnittstelle aussehen.

Antworten

Um Ihre konkreten Fragen zu beantworten:

Woher weiß ich die MAC-Adresse des Boards?

Der TEMAC übernimmt die von Ihnen angegebene MAC-Adresse und verwendet diese, sodass Sie sie irgendwo angeben müssen. Viele Entwicklungsplatinen bieten einen MAC-Adressen-EEPROM-Chip, in dem eine eindeutige Adresse gespeichert ist, die Sie lesen und verwenden können. Wenn Sie auf dem Board selbst keine MAC-Adresse verfügbar haben, können Sie eine fest codieren, aber beachten Sie, dass dies gegen die Regeln verstößt und möglicherweise ein Problem verursachen könnte, wenn ein anderes Gerät in Ihrem Netzwerk diese Adresse hat. Eine ziemlich elegante Lösung besteht darin, ein altes Ethernet-Gerät zu finden, das Sie nicht mehr verwenden, und dessen Adresse einfach zum Testen zu verwenden.

Und sobald der Temac-Kern instanziiert ist, wird die gesamte Datenverarbeitung von ihm durchgeführt?

Nein nicht wirklich. Die Empfänger- und Senderschnittstellen arbeiten auf Ebene einzelner Ethernet-Pakete, sodass Ihre Logik einzelne Pakete bereitstellen muss. Dies ist Schicht 2 des OSI-Modells . Sie müssen eine andere Logik erstellen oder einen anderen Kern verwenden, um alle Protokolle höherer Ebene zu handhaben, die Sie verwenden möchten (z. B. TCP oder UDP).

Ich habe diesen Kern verwendet, um ein System zum Laufen zu bringen, einschließlich des Schreibens meiner eigenen Module für die Schnittstelle mit der Client-Schnittstelle, und beantworte gerne alle anderen Fragen. Leider gehört mein Code der Firma, für die ich arbeite, aber ich kann allgemein darüber sprechen.

Hey! Danke für die Antwort. Ich habe festgestellt, dass ein benutzerdefiniertes LUT-basiertes Design nicht verwendet werden kann, da die Ethernet-Kommunikation über einen PHY-Chip erfolgt. Also bleibe ich beim Temac Core hängen. Ich habe versucht, die mit dem v4.5 Temac Core bereitgestellten Beispieldesigns (insbesondere das Adresstauschmodul) auf einem Virtex-5-Board zu implementieren, aber ohne Erfolg. Muss ich bei diesem Beispieldesign auch noch etwas anpassen, oder sollte es einfach so funktionieren? Ich habe auch festgestellt, dass das Board nicht auf einen Ping von meinem PC reagiert (nur PC und Board sind im Netzwerk, daher gibt es keinen Adresskonflikt). Gehe ich irgendwo falsch?
Ich werde mir dieses Beispiel heute Abend ansehen und sehen, ob ich sehen kann, was möglicherweise fehlt, ein paar Fragen: - Ziehen Sie es vor, VHDL oder Verilog zu verwenden? - Lässt sich das Beispiel von alleine fehlerfrei bauen? - Wie überprüfen Sie, ob das Design funktioniert oder nicht funktioniert? Wireshark? Der Befehl "ping" verwendet ein High-Level-Protokoll zusätzlich zu Ethernet, daher funktioniert er mit diesem Beispiel nicht, da er immer noch in einfachen Ethernet-Paketen funktioniert (siehe Wikipedia ).
Ich verwende Verilog, und ja, das Beispieldesign wird ohne Fehler erstellt, und die Simulation gibt auch einige Wellenformen. Ja, ich verwende 'WireShark' auf der PC-Seite. Danke für die Antwort!