Forum: FPGA, VHDL & Co. Was ist ein "OR DOT" Gatter (8b/10b Code)


von Christoph (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Bin gerade daran eine serielle simplex Verbindung in einem FPGA zu 
realisieren. Durch verschiedene enge Anforderungen (vor allem Latenz) 
und andere Gründe darf ich das Rad "neu erfinden" und kann keine IP 
Cores etc. nehmen.

Für die Leitungscodierung möchte ich den vielfach verwendeten 8b/10b 
Code einsetzen. Dazu habe ich auch das original Patent von IBM 
durchgelesen. Alles ist da drin schön detailliert beschrieben inkl. 
Schemas für eine Implementation ohne Tabellen.


Nun mein Problem: Was ist ein "OR DOT" Gatter?
Angehängt ist ein Ausschnitt aus dem Patent mit einem Schemateil der 
mein Problem verdeutlicht.

Gatter "E" bezeichnet ein Exclusive-Or Gatter (Abschnitt 12, Zeile 65).

Quelle:
U.S. Patent 4,486,739 Veröffentlicht am 4. Dezember 1984
http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=4,486,739.PN.&OS=PN/4,486,739&RS=PN/4,486,739

Im Patent ist zwar erwähnt nach welchen Regeln sie sich gehalten haben 
für die Schemas. Leider kann ich diese referenzierten Dokumente nicht 
finden, darum hoffe ich hier eine Antwort auf dieses Rätsel zu finden.

von Falk B. (falk)


Lesenswert?

@ Christoph (Gast)

>Bin gerade daran eine serielle simplex Verbindung in einem FPGA zu
>realisieren. Durch verschiedene enge Anforderungen (vor allem Latenz)
>und andere Gründe darf ich das Rad "neu erfinden" und kann keine IP
>Cores etc. nehmen.

Wirklich?

>durchgelesen. Alles ist da drin schön detailliert beschrieben inkl.
>Schemas für eine Implementation ohne Tabellen.

Was glaubst du dadurch zu gewinnen? Einen 8B10B Encoder packt man 
einfach als Tabelle in einem BRAM und fertig. Latenz 1 Takt. Wenn es 
rein kombinatorisch sein soll halt als Tabelle in Logik, wobei dabei 
dann die maximale Taktfrequenz leiden wird.

>Nun mein Problem: Was ist ein "OR DOT" Gatter?

Möglicherweise ein NOR.

>U.S. Patent 4,486,739 Veröffentlicht am 4. Dezember 1984

Von Standardsymbolen haben die Amis wohl auch noch niox gehört? Passt 
aber gut zu deinem Thema, das Rad neu zu erfinden.

von Michael (Gast)


Lesenswert?

Hallo Christoph,

könnte eine "OR DOT" evt. ein OR mit negativen Ausgang sein?

Gruß,
Michael

von J. (Gast)


Lesenswert?


von Christoph (Gast)


Lesenswert?

Falk Brunner schrieb:
> Möglicherweise ein NOR.

Dann würde ich nicht fragen :-)

Ich zweifle ja durchaus an meiner eigenen Frage, da ich davon 
ausgegangen bin, dass in meiner Ausbildung die Boolsche Logik 
vollständig behandelt wurde...

Im Schemaausschnitt sieht man ein NOR gleich rechts vom fraglichen "OR 
DOT"

von Christoph (Gast)


Lesenswert?

J. schrieb:
> http://www.rz.e-technik.fh-kiel.de/~dispert/digita...
>
> Punkt 9.2.5.1
>
> Hilft das weiter?

"9.2.5.1 Open-Collector-Verknüpfungen

Das oben beschriebene Problem kann durch Verwendung von TTL-Schaltungen 
mit Open-Collector-Ausgängen (Abb. 9.13) vermieden werden. Die 
Gatterausgänge werden in diesem Fall nicht über Transistoren mit der 
positiven Versorgungsspannung verbunden sondern über den gemeinsamen 
Pull-Up-Widerstand Rpu
[...]
Gemäß dieser "0"-Dominanz wird am Ausgang y durch die vorgenommene 
externe Verdrahtung eine logische Verknüpfung erzeugt, eine sogenannte 
"Phantomverknüpfung".

Dieses Verbindungsprinzip wird als Wired-Dot-Logik bezeichnet."


Ja, das hilft.
Kannte diese Bezeichnung noch nicht. Ich war sehr verwirrt, weil im 
Patent "wild" OR und Wired-OR Verknüpfungen gemischt werden (z. B. 
Figure 12), was ja für eine reine Funktionsbeschreibung in einem Patent 
eigentlich gar nicht nötig ist.

Gemäss Figure 3 aus dem Patent kann das ganze wirklich nur ein OR Gatter 
sein.

Danke für die schnellen Antworten!

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Christoph schrieb:
> Alles ist da drin schön detailliert beschrieben inkl.
> Schemas für eine Implementation ohne Tabellen.

Ich kann ich Falk im Prinzip anschließen, selbst wenn man das nicht in 
einem RAM haben möchte. Vor etwas über zehn Jahren habe ich im 
Zusammenhang mit einem 10G PCS einen 8b/10b Codec implementiert (ASIC). 
Die Tabellen habe ich der Literatur entnommen, per copy&paste sowie 
Rechteck-Funktionen im Emacs in eine recht lange case-Anweisung 
umgewandelt und synthetisiert. Fertig. War im Timing der 
handgeschriebenen Netzliste, die in der Firma von Generation zu 
Generation ehrfürchtig weitergegeben wurde, absolut ebenbürtig.

von SuperWilly (Gast)


Lesenswert?

>Durch verschiedene enge Anforderungen (vor allem Latenz)
>und andere Gründe darf ich das Rad "neu erfinden" und kann keine IP
>Cores etc. nehmen.

Nenn doch einfach mal diese "engen" Anforderungen.

VG, SuperWilly

von Christoph (Gast)


Lesenswert?

Das findet ihr wieder spannend. Kann ich ja verstehen :-)


Es sollen Sollwerte (8x16 bit) an verteilte Regler in 
parallelgeschalteten Leistungsmodulen übertragen werden (Grössenordnung 
6-8 Schaltschränke)

Zeit zwischen der Signalerfassung am analogen Eingang bis der DSP am 
entfernten Ende sie zur Verfügung hat ist weniger als 25 us. Für mich 
und mein Übertragungssystem bleibt davon etwa 12 us übrig (Rest für 
AD-Wandlung, DMA, Übergeordneter-Regler berechnen). Zukünftige Werte 
vorberechnen und in grösseren Blöcken schicken ist innerhalb eines 
Closed-Loop Reglers nicht möglich.

Netterweise soll das ganze einfach skalierbar sein, also wenn es geht 
Geräte verketten. Sonst hätte ich ein System mit einem zusätzlichen 
aktiven Sternverteiler in der Mitte gebaut, was vieles einfacher gemacht 
hätte.

Wie geschrieben, mein System ist nur Simplex, nur für die 
Reglersollwerte.
Alles andere geht über ein paralles echtzeit Ethernet System (Brav nach 
Standard, nix selber erfunden). Das wird dann schätzungsweise eine 
Zykluszeit von 150 us haben.


Ist auf alle Fälle spannende Arbeit!

von Falk B. (falk)


Lesenswert?

@ Christoph (Gast)

>und mein Übertragungssystem bleibt davon etwa 12 us übrig (Rest für

Und da ist nicht EIN Takt für einen 8B10B Dekoder in einer Tabelle/ROM 
übrig? Kaum zu glauben . . .

von Christoph (Gast)


Lesenswert?

Kaum zu glauben, dass meine Block-RAMs schon was anderes zu tun haben...

Habe auch noch eine Application Note gefunden für eine pipelined 
Implementation die kleine Tabellen mit Kombinatorik kombiniert. Scheint 
mir für FPGAs eine gut geeignete Struktur zu sein. Die benötigt dann 3 
Takte.
Bin gerade daran diese "ab zu tippen".

Bei der ursprünglichen Frage ging es mir darum, die Funktionalität im 
Patent sicher zu verstehen, da das Patent im Zweifelsfall ja die 
Referenz darstellt.

von HansDampf (Gast)


Lesenswert?

Es gibt von Lattice und Xilinx frei verfügbare Referenzdesigns für 
8b10b,
kein Hexenwerk. Also einfach mal runterladen, simulieren und fertig ist 
die Soße.

von Christoph (Gast)


Lesenswert?

Danke für den Hinweis.

Bei Lattice ist es das RD1012, hatte ich auch schon ausprobiert. Wird 
als Black-Box Design geliefert, ich kann das Ding also nur mit einer 
Timingsimulation simulieren, was mich etwas nervt.
Hatte mir einen Weg überlegt um für das Gesamtdesign darum herum zu 
kommen: In einem Dummy-Projekt nur das Refenzdesign implementieren und 
das resultierende Timing Modell dann in meiner Verhaltenssimulation per 
VHDL Configuration auszuwählen.

Habe das dann aber gelassen, da ich einen Encoder/Decoder brauche der 
einen Enable Eingang besitzt (damit ich nicht mit vielen Clock-Domains 
arbeiten muss, was ja sowieso nicht sauber wäre), was ich der Black-Box 
nicht beibringen kann.

Meine Idee im Moment ist, dass ich das Projekt von Opencores nehme als 
Modell für meine Testbench (Also meine Implementation gegen die von 
Opencores testen), damit ich eine vielleicht fehlerfreie 
"Golden-Reference" habe um so effizient meine eigenen Fehler zu finden.

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.