www.mikrocontroller.net

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


Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gastinformatiker (Gast)
Datum:

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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaust du bei OpenCores: 
http://www.opencores.org/projects.cgi/web/8b10b_en... da gibts 
das.

Autor: Bernd G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Xilinx Application Note XAPP 366

Autor: Joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.xilinx.com/support/documentation/ip_doc...

http://www.xilinx.com/support/documentation/ip_doc...

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

Gruß
Jochen

Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.)

Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernd G. (Firma: LWL flex SSI) (berndg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hast ein Beispiel-Code hierzu?

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

Autor: Joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/applic...

Autor: Stanko T. (newie)
Datum:

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

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Bernd G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. :-(

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Opencores 8b10b-Encoder/Decoder-Projekt:

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

Gruß,
SuperWilly

Autor: Joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht 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

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.