Diskussion:4B5B-Code

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 14 Jahren von Janka in Abschnitt Algorithmus
Zur Navigation springen Zur Suche springen

Habe festgestellt, dass wenn man in der Suche 4b5b als Suchbegriff angibt, die Suchmaschine den 4B5B-Code nicht direkt anzeigt! Hat sie Probleme mit Wörtern, die mit Ziffern anfangen? Ich denke es ist auf jeden Fall verbesserungsdürftig. I.S. -- 02:15, 6. Jan 2006 213.7.98.94

Fixed. --Uweschwoebel 02:37, 6. Jan 2006 (CET)

wie jetzt ?[Quelltext bearbeiten]

Hallo und Sorry,

aber das verstehe ich nicht..

Wie kommt man den von "0000" auf "11110" ? Kann mir da mal jemand auf die Sprünge helfen ?

Grüße Thomas


Algorithmus gesucht[Quelltext bearbeiten]

Schließe mich Thomas an: gibt es einen formalen Algorithmus zur Bildung des 4B5B-Code oder wurden die Paarungen einfach "festgelegt"? Mit freundlichen Grüßen

@Thomas: Das ist einfach definiert.

Man sollte noch ergänzen, dass ein weiteres Ziel ist, dass in dem 5 Bit Block maximal zwei aufeinanderfolgende Nullen vorkommen.

30.10.2007 Obstfliege

Synchronisieren?[Quelltext bearbeiten]

weiß jemand, wie man diese Datenflut synchronisiert? wenn man sich den Datenstrom anschaut, dann könnte z.B. 111101111011110 als 0;0;0 oder als ?;15;15;? interpretiert werden ... immerhin müssen ja die "richtigen" Quintetts in Quartets umgewandelt werden.

Gruß

Wenn du auf die Codons guckst, siehst du, dass es z.B. kein 11111 gibt, obwohl auch diese Kombination der Regel "Niemals mehr als 2 Nullen hintereinander" entspricht. Normalerweise wird jeder Datenblock mit einer Reihe von mindestens 5 Einsen (==Wechseln) begonnen, und es wird dann auf die erste Null synchronisiert. -- Janka 09:49, 14. Nov. 2007 (CET)Beantworten
Ein 11111 gibt es, das ist das IDLE-Steuersymbol (es gibt 6 Steuersymbole, ich führe die gleich mal auf) ... ein 11111 kann aber auch bei der Kombination 1 0 (also die Dezimalen Zahlen) vorkommen: 1 ^= 01001, 0 ^= 11110 => 0100111110 ... also das haut nicht so ganz hin.
Steuersignale gibt es (soweit ich weiß) folgende 6 Stück:
11111 ^= I ^= Idle
11000 ^= J ^= Start Stream 1
10001 ^= K ^= Start Stream 2
01101 ^= T ^= End Stream 1
00111 ^= R ^= End Stream 2
00100 ^= H ^= Receive Error
Somit kommt man inkl. Datensymbolen auf 22 Symbole, nur 10 Symbole (von den 32 möglichen) sind ungültig. Außerdem sind 3 Nullen hintereinander eine Seltenheit. Sogar vier Nullen treten auf, wenn z.B. "Start Stream 1" und "1" aufeinander folgen: 1100001001 ...
Stimmt. Der Ruhezustand ist also mehr als 8 Einsen hintereinander, das kommt im normalen Datenstrom nicht vor. Die Coderegel sagt außerdem "Maximal eine Null vorne, und zwei hinten." Damit sind also 3 aufeinander folgende Nullen durchaus noch gültig. Der Stream wird dann wohl gestartet mit Idle, Start Stream 1, Start Stream 2, danach Datencodons, dabei ist die Bildungsregel nie verletzt. Ende mit End Stream 1, End Stream 2, Idle. Auch dort passt die Bildungsregel. -- Janka 08:36, 16. Nov. 2007 (CET) (Außerdem: Signiere bitte deine Beiträge mit -- ~~~~)Beantworten
Noch eine wilde Spekulation: Wenn der Empfänger die Leitung bei den letzten beiden Bits von End Stream 2 kurzschließt, kann er dem Sender damit das "Receive Error" übermitteln. -- Janka 08:42, 16. Nov. 2007 (CET)Beantworten

Nur 5 weitere, nicht 6[Quelltext bearbeiten]

"Es gibt noch 6 weitere Codons (01100, 01101, 10001, 10110, 11001 und 11111)"... ich zähle nur 5. 10110 dient doch als Code für 1010 - kawk

Algorithmus[Quelltext bearbeiten]

Da hier danach gefragt wurde:

Ja, gibt es. Ich habe bei google ein Dokument gefunden, bei dem die Bildung in Palasm beschrieben wurde, außerdem gab es einen Decoder als Schaltplan mit Gattern. Ich habe das mal beides in vhdl umgeschrieben.

Encoder:


 entity enc_4b5b is
     Port ( d0 : in  STD_LOGIC;
          d1 : in  STD_LOGIC;
          d2 : in  STD_LOGIC;
          d3 : in  STD_LOGIC;
          q0 : out  STD_LOGIC;
          q1 : out  STD_LOGIC;
          q2 : out  STD_LOGIC;
          q3 : out  STD_LOGIC;
          q4 : out  STD_LOGIC);
 end enc_4b5b;
 architecture Behavioral of enc_4b5b is
 
 begin
       process(d0,d1,d2,d3)
       begin
       q4 <= d3 or (not d2 and d1) or (not d2 and not d0);
       q3 <= d2 or (not d3 and not d1);
       q2 <= d1 or (not d3 and not d2 and not d0);
       q1 <= (not d1 and not d0) or (d3 xor d2) or (d2 and not d1);
       q0 <= d0;
       end process;
 end Behavioral;


Decoder:


 entity dec_4b5b is
     Port ( d0 : in  STD_LOGIC;
          d1 : in  STD_LOGIC;
          d2 : in  STD_LOGIC;
          d3 : in  STD_LOGIC;
          d4 : in  STD_LOGIC;
          ctrl : out  STD_LOGIC;
          err : out  STD_LOGIC;
          q0 : out  STD_LOGIC;
          q1 : out  STD_LOGIC;
          q2 : out  STD_LOGIC;
          q3 : out  STD_LOGIC);
 end dec_4b5b;
 architecture Behavioral of dec_4b5b is
 begin
               err <= (not d2 and not d1 and not d0) or (not d3 and not d2);
 
               q3 <= (not d3 and d1) or (not d1 and d3 and d2) or (not d2 and d4);
               q2 <= (not d1 and d3 and d2) or (not d2 and d3 and d1) or (not d4 and d2);
               q1 <= (not d1 and d2 and d4) or (not d3 and d2 and d4) or (not d4 and d2);
               q0 <= d0;
               ctrl <= (d0 and d1 and d2 and d3 and d4)
                       or (not d0 and not d1 and not d2 and d3 and d4)
                       or (d4 and not d3 and not d2 and not d1 and d0)
                       or (not d4 and d3 and d2 and not d1 and d0)
                       or (d0 and d1 and d2 and not d3 and not d4);
 
 
 end Behavioral; (nicht signierter Beitrag von 194.231.77.181 (Diskussion | Beiträge) 16:44, 13. Aug. 2009 (CEST)) Beantworten
Das ist auch nur eine algorithmische Formulierung der Lookup-Tabellen und in der Form tatsächlich nur in VHDL sinnvoll. Eine CPU wäre mit zwei Lookup-Tabellen in jedem Fall schneller. -- Janka 21:02, 13. Aug. 2009 (CEST)Beantworten