mikrocontroller.net

Forum: FPGA, VHDL & Co. Ethernet CRC Prüfung - nur gültige Daten in ein FIFO


Autor: bati (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ein empfangener Ethernetframe soll byteweise in ein FIFO geschrieben 
werden und anschließend sofort abrufbar sein.
Jetzt habe ich aber das Problem, falls die CRC Prüfung - die ja 
notwendigerweise am Ende erfolgt - erfolglos war, dass ungültige Daten 
im FIFO stehen. Wie kann ich diese "ungültig" machen oder wieder 
entfernen. Wie wird soetwas implementiert? Ein temporärer Speicher 
kostet ja viele Taktzyklen und in einem FIFO komme ich ja auch nicht an 
die "hinteren" Bytes ran. Wie könnte man das umsetzen?

Vielen Dank im Voraus.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Direkt über den FIFO wird´s nicht gehn, das musst du vorher oder nachher 
machen. Wenn du es mit Pipelining machst, hast du nur am Anfang eine 
Latenzzeit, der Durchsatz bleibt gleich.

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kommt auf Deinen FIFO drauf an. Bei Lattice lassen sich die FIFOs mit 
IPExpress direkt mit einem Read-Pointer Reset generieren. Wenn dieser 
betättigt wird, wird der Lese-Pointer und die Füllstandszähler 
zurückgesetzt. Wenn Du dir selber einen Fifo bauen willst, kannste sowas 
einfügen.

Autor: bati (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem dabei ist ja, dass ich die FIFOs nicht einfach resetten 
kann, so dass auch die Daten verworfen werden. Habe sie mit dem Xilinx 
CoreGen erstellt. Wenn ich also ein zusätzlichen FIFO davor schalte, 
habe ich immer noch das Problem, dass ungültige Daten vorhanden sind. 
Ich glaube mit diesen FIFOs komme ich nicht weiter.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du immer nur ein Frame im FIFO speicherst, kannst du es doch nach 
fehlgeschlagenem CRC komplett löschen. Gibst du halt das Signal, dass 
was im FIFO ist, erst nach erfolgreichem CRC an die Logik dahinter 
weiter....

Autor: ijuz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach 2 fifos verwenden, eines fuer die Daten und eines fuer einen 
descriptor in dem laenge und ein crc_valid bit enthalten ist.
Die Daten koennen dann einfach in das fifo geshiftet werden und das 
raushiften beginnt erst wenn der descriptor vorliegt. Je nach valid bit 
fuer das naechste modul oder nach devnull.

@Mathi
Dafuer haben die lattice fifos kein register am output und ein komisches 
Interface. Aber ok, das sind natuerlich nur minimale Probleme gegenueber 
den anderen, wenn man sich auf lattice eingelassen hat.

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hast du mehrere "Pakete" in einem Fifo stehen, so musst du
dir eine Fifo-Logik überlegen, die in der Lage ist, die 
Schreibzeiger-Position (im Falle einer korrekten Prüfsumme) für die 
Leseseite frei zu geben
bzw. zu löschen (im Falle einer falschen Prüfsumme).
Ich empfehle dir, ein RAM-Template zu verwenden und dir die Zeiger-Logik 
drumherum zu bauen.
Erster Schritt: Eigene "normale" Fifo-Beschreibung überlegen (Xilinx 
bietet hier einige interessante Papers)
Zweiter Schritt: Schreibzeiger- Confirm/Clear Funktion einbauen.
Voraussetzung: 1 Takt

Bei Dual-Clock-Fifos gestaltet sich die Implementierung dieser 
Schreibzeiger-Funktion wesentlich schwieriger ...

Gruß,
SuperWilly

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.