Forum: FPGA, VHDL & Co. 8Bit/10Bit Encoding Decoding


von New I. (newie)


Lesenswert?

Hallo zusammen,

bin grad dabei in die Materie der Codierug bzw. Decodierung von Daten 
nach dem 8Bit/10Bit Verfahren einzusteigen.

Hierfür möchte ich FPGA's oder CPLD's von Xilinx verwenden.
Kann mir jemand sagen mit welchen Bausteinen und wie sich die Codierund 
/ Decodierung abbilden lässt? Und wie viele Ressourcen hierfür benötigt 
werden?

MFG

von Gastinformatiker (Gast)


Lesenswert?

Die Bausteine sollte nichts anbieten, was hierfür spezifisch ist, damit 
sind alle gleich geeignet.

von Christian R. (supachris)


Lesenswert?

Schaust du bei OpenCores: 
http://www.opencores.org/projects.cgi/web/8b10b_encdec/overview da gibts 
das.

von Bernd G. (Gast)


Lesenswert?

Xilinx Application Note XAPP 366

von Joko (Gast)


Lesenswert?

http://www.xilinx.com/support/documentation/ip_documentation/encode_8b10b.pdf

http://www.xilinx.com/support/documentation/ip_documentation/decode_8b10b.pdf

oder anders: im kleisten Spartan3 (50er) ist Platz für
    4 Encoder + 4 Decoder + jede Menge zusätzlicher unbenutzter Logik

Gruß
Jochen

von New I. (newie)


Lesenswert?

Danke für euere Antwort.

Ich werde jetzt versuchen ein Programming File mit Encoder und Decoder 
für den Spartan3 (50er) zu erzeugen.

Trotzdem bleibt die Frage: Wieso taucht die Encoding/Decoding Funktion 
bei Spartan3A nicht auf? Was ist der Grund hierfür?

Ich werde euch berichten ob es geklappt hat!


gruss
Stanko

von Joko (Gast)


Lesenswert?

> Trotzdem bleibt die Frage: Wieso taucht die Encoding/Decoding Funktion
> bei Spartan3A nicht auf? Was ist der Grund hierfür?

weil die Jungs bei Xilinx, die für den CoreGen verantwortlich sind, mal 
wieder zu langsam sind...

Di A-Typen haben andere (bessere) BlockRams - Generierung
für 3E und mappen auf 3A sollte aber möglich sein...

Gruß
Jochen

P.S.
   CoreGen is eh' nen Sch... !!!
   Output von version N (z.b. ISE8.1) wird in N+1 (ISE9.1) unterstützt
   und ist in N+2 (ISE10.1) völlig unbekannt und muß neu generiert 
werden
   Wenn die Funktion nicht allzu schwierig ist (wie 8b/10b), dann
   mach's lieber selbst (hier: INIT-Werte for das BRAM bestimmen)
    - dauert anfangs länger
    - man muß 'denken'
    + man 'lernt was'
    + ist portabel (von ISE zu ISE  Spartan2 nach Spartan3 
       Xilinx nach Altera, Lattice, SiliconBlue etc.)

von New I. (newie)


Lesenswert?

>Wenn die Funktion nicht allzu schwierig ist (wie 8b/10b), dann
>mach's lieber selbst (hier: INIT-Werte for das BRAM bestimmen)

Sehr gerne, aber wie?
Hab mir den Aufbau der 8Bit/10Bit Codierung angeschaut, aber ohne 
Weiteres steig ich da nicht durch.

Hast ein Beispiel-Code hierzu?

von Joko (Gast)


Lesenswert?

> Hast ein Beispiel-Code hierzu?
nö - aber im Wesentlichen läuft es darauf hinaus, daß Du
das BlockRam als ROM verwendest:
Beispiel Encoder:
  Die 10 Adressleitungen ( D_IN + K_IN + DISP_IN)
     fürs 18 Bit breite ROM (16 Daten + 2 Patity)
  Zeigen den vorbestimmten Wert für D_OUT (10 Bit) + DISP_OUT (1 Bit)

  7 Bit werden weggeschmissen (-> hi 'Lothar Miller' :-))

  DISP_Out vom aktuellen Wert wird DISP_IN vom nächsten...

  Der Inhalt des ROMs ist Fleißarbeit (Excel ??)

Viel Erfolg
Jochen

von Bernd G. (Gast)


Lesenswert?

> Hast ein Beispiel-Code hierzu?

zur AppNote 366 kannst du dir doch den VHDL-Code herunterladen....

von Joko (Gast)


Lesenswert?

XAPP366 (v1.0) November 7, 2001 : Handheld Musical Instrument Tuner
???

xapp336: Design of a 16b/20b Encoder/Decoder Using a CoolRunner XPLA3 
CPLD

http://www.xilinx.com/support/documentation/application_notes/xapp336.pdf

von New I. (newie)


Lesenswert?

AppNote 336 gefällt mir besser :-)
Werde mich am WE hiermit beschäftigen!

von SuperWilly (Gast)


Lesenswert?

Hi,

habe 8b/10b Module von Xilinx vor einiger Zeit simuliert und 
festgestellt,
dass selbst die eigens mitgelieferte Testbench Fehler in den Modulen
detektiert. Aber kannst du ja gerne mal nachvollziehen, lad dir die 
HDL-Codes herunter und simuliere das mal.
Eine Nachfrage bei Xiilnx ergab, dass die entsprechende 
Core-verantwortliche Person nicht mehr verfügbar sei.

Gruß,
SuperWilly

von New I. (newie)


Lesenswert?

Hallo,

simuliern lässt sich der Core Generator für die 8B/10B Codierung, aber 
beim erzeugen vom Prog-File kommt die Fehlermeldung " ERROR:NgdBuild:604 
- logical block 'XLXI_3' with type 'Encoder_v1' could not be found."

Ist dass Problem damit zu erklären, dass ich mit ISE 9.1 arbeite und der 
8B/10B Encoder im Core-Generator die Versions-Nr.: 5.0 trägt?

Eigentlich dürfe die Abwärtskompabilität kein Problem darstellen.
Wie kann mann dieses Problem beheben?

von Bernd G. (Gast)


Lesenswert?

> XAPP366 (v1.0) November 7, 2001 : Handheld Musical Instrument Tuner
???

Sorry, wie konnte das nur passieren? Dabei kann ich gar kein Instrument 
außer der Trillerpfeife spielen. :-(

von SuperWilly (Gast)


Lesenswert?

Zum Opencores 8b10b-Encoder/Decoder-Projekt:

Es gibt keine Codierungsüberprüfung im Decoder, also
brotlose Kunst ...

Gruß,
SuperWilly

von Joko (Gast)


Lesenswert?

@Stanko

>Ist dass Problem damit zu erklären, dass ich mit ISE 9.1 arbeite
>und der 8B/10B Encoder im Core-Generator die Versions-Nr.: 5.0 trägt?

nö - der actuelle Encoder (bei ISE10.1) trägt immer noch die Version 5.0

Ich vermute daher - ohne daß ich mich damit näher befaßt hätte - daß
ngdbuild die vom CorGen erzeugte Netzlist nicht findet.
Sieh 'mal im .bld-file nach, ob die ngdbuild mit der Option -sd
aufgerufen wird, und wenn ja: ob direkt hinter -sd auch der Pfad zu
der/den Netzliste(n) von CoreGen steht


Gruß
Jochen

von New I. (newie)


Lesenswert?

Also ich habe die .bld Datei aufgemacht und sehe Folgendes:

C:\Xilinx91i\bin\nt\ngdbuild.exe -ise
C:/Alles_zum_8Bit_10Bit_code/Encoder/Encoder.ise -intstyle ise
-dd _ngo -nt timestamp -uc Schematic_of_Encoder.ucf -p xc3s1000-fg320-4
Schematic_of_Encoder.ngc Schematic_of_Encoder.ngd Reading NGO file


Die Option -nd zum Aufrufen der ngdbuild taucht nicht auf.

von Joko (Gast)


Lesenswert?

Was "steht" bei
"Implement Design - Translate - Properties"
  unter
"Macro Search Path" ?

Hoffentlich der Pfad zu "Encoder_v1.edn"

Wenn nicht, muß "Encoder_v1.edn" in Deinem aktuellen
Arbeitsverzeichnis stehen

von New I. (newie)


Lesenswert?

@ Joko

Es hat geklappt :) endlich, Danke!
Also für diesen Lösungsweg hätte ich ohne deine Hilfe ein paar Minuten 
länger gebraucht ;-)

@ Alle

Die Ursache für die Fehlermeldung war folgende:

Ich habe unter Accessories den CORE Generator gewählt und einen 
8B/10B-Core in das Verzeichnis X abgespeichert.
Danach habe ich ISE gestartet, ein neuse Projekt unter dem Verzeichnis Y 
angelegt und den erzeugten 8B/10B-Core aus dem Verzeichnis X als 
VDL-File-Kopie ins Projekt eingefügt.

Beim generieren des Codes kamm immer die Fehlermeldung 604 auf.

Und wie Joko schon richtig sagte, wies der Pfad unter (Implement Design 
- Translate - Properties) "Macro Search Path" auf das Verzeichnis Y.

Nun habe ich den Pfad auf das Verzeichnis X umgelenkt und es Funkt!
Kaum macht mann es richtig, schon funktoniert's!

Gruß
Stanko

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.