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.
@ 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.
Hallo Christoph, könnte eine "OR DOT" evt. ein OR mit negativen Ausgang sein? Gruß, Michael
http://www.rz.e-technik.fh-kiel.de/~dispert/digital/digital9/dig009_2.htm Punkt 9.2.5.1 Hilft das weiter?
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"
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!
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.
>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
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!
@ 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 . . .
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.