8b/10b 부호화

8b/10b encoding
파이버 채널
레이어 4프로토콜 매핑
LUN 마스킹
레이어 3공통 서비스
레이어 2네트워크
파이버 채널 패브릭
파이버 채널 존 분할
등록상태변경알림
레이어 1데이터 링크
파이버 채널8b/10b 부호화
레이어 0물리적.

통신에서 8b/10b는 8비트 워드를 10비트 심볼에 매핑하여 DC 밸런스와 경계된 불균형을 실현하는 동시에 적절한 클럭 회복을 가능하게 하는 충분한 상태 변화를 제공하는 라인 코드입니다.즉, 20비트 이상의 문자열에서1과 0의 카운트 차이는 2를 넘지 않으며, 1행에는 1 또는0이 5개까지 있는 것을 의미합니다.이를 통해 신호 [1]전송에 필요한 채널의 대역폭 하한에 대한 요구를 줄일 수 있습니다.

8b/10b 코드는 하드웨어 요건, DC 밸런스 등의 특정 파라미터에 초점을 맞춘 다양한 방법으로 구현할 수 있습니다.1개의 실장은 K에 의해 설계되었다.DAT 디지털 오디오 [2]레코더용 Odaka.Kees Schouhamer IminkDCC 오디오 [3]레코더용 8b/10b 코드를 설계했습니다.IBM의 구현은 1983년 Al Widmer와 Peter Franaszek[4][5]의해 설명되었습니다.

IBM의 실장

스킴명이 나타내듯이, 8비트의 데이터는 기호 또는 문자라고 불리는 10비트 엔티티로 송신됩니다.하위 5비트의 데이터는 6비트 그룹(5b/6b 부분)으로 인코딩되고 상위 3비트는 4비트 그룹(3b/4b 부분)으로 인코딩됩니다.이러한 코드 그룹은 회선상에서 전송되는 10비트 기호를 형성하기 위해 서로 연결되어 있습니다.데이터 기호는 종종 D.x.y라고 불리며, 여기서 x의 범위는 0~31을 넘고 y는 0-7을 넘습니다.또한 8b/10b 인코딩을 사용하는 표준에서는 데이터 기호 대신 전송할 수 있는 최대 12개의 특수 기호(또는 제어 문자)를 정의합니다.이들은 종종 프레임 시작, 프레임 종료, 링크 아이돌, 건너뛰기 및 유사한 링크레벨 조건을 나타내기 위해 사용됩니다.10비트 기호의 정렬을 정의하려면 이들 중 하나(즉, "쉼표" 기호)를 사용해야 합니다.이들은 K.x.y라고 불리며 D.x.y 기호와는 다른 인코딩을 가지고 있습니다.

8b/10b 부호화는 10비트 기호를 사용하여 8비트 워드를 부호화하기 때문에 가능한 1024(10비트10, 2) 기호 중 일부를 제외하여 연속되는5개의 등비트의 런렝스 제한을 부여하고 제로 카운트와 1의 차이를 2개 이하로 할 수 있습니다.가능한 256개의 8비트 워드 중 일부는 두 가지 방법으로 인코딩할 수 있습니다.이러한 대체 인코딩을 사용하면 시리얼 데이터 스트림에서 장기 DC 밸런스를 실현할 수 있습니다.이를 통해 데이터 스트림을 하이패스 특성을 가진 채널을 통해 전송할 수 있습니다. 예를 들어 이더넷의 트랜스커플링 비쉴드 트위스트 페어 또는 자동 게인 제어를 사용하는 광수신기 등이 있습니다.

부호화 테이블

다음 표에서는 각 입력 바이트에 대해 A가 최하위 비트이고 H가 최하위 비트입니다.출력은 ij라는 두 개의 추가 비트를 얻습니다.비트는, a, b, c, d, e, i, f, g, h, 및 j 로 송신됩니다.즉, 5b/6b 코드 뒤에 3b/4b 코드가 이어집니다.이것에 의해, 콤마 기호내의 특수 비트시퀀스의 일의성이 보증됩니다.

전송되는 0 및 1비트 수에 대한 스트림에 대한 잔류 효과는 실행 시차(RD)로 유지되며 슬루 효과는 다음 기호에 대한 인코딩 선택으로 균형을 유지합니다.

5b/6b 코드는 페어링된 시차 코드이며, 3b/4b 코드도 페어링된 코드입니다.각 6비트 또는 4비트 코드 워드는 0과 1의 동일한 수(제로의 차이)를 가지거나 한 쌍의 형태로 제공되며, 한 쌍의 코드 워드는 1보다 2개 많은 제로(4개의 제로와 2개의 1, 또는 3개의 제로와 1개의 제로)를 가집니다.0이 아닌 시차(-1에서 0을 뺀 카운트, 즉 -2 또는 +2)를 가진 6비트 또는 4비트 코드를 사용하는 경우 실행 시차를 전환하는 것은 양의 시차 인코딩 또는 음의 시차 인코딩이어야 합니다.즉, 제로 이외의 시차 코드가 번갈아 표시됩니다.

러닝 시차

8b/10b 부호화는 DC 프리입니다.즉, 송신된1과 0의 장기 비율은 정확하게 50%입니다.이를 위해 전송된 1개 수와 전송된 0개 수의 차이는 항상 ±2로 제한되며 각 기호의 끝에는 +1 또는 -1이 됩니다.이 차이를 실행 시차(RD)라고 합니다.

이 방식에서는 +1과 -1의 실행 시 시차를 위해 2개의 상태만 필요합니다.-1부터 [6]시작해요.

1과 0의 수가 동일하지 않은 각 5b/6b 및 3b/4b 코드에 대해 전송에 사용할 수 있는 비트패턴이 2개 더 있습니다.하나는 2개의 "1" 비트가 더 있고, 다른 하나는 모든 비트가 반전되어 2개가 더 있습니다.신호의 현재 실행 시차에 따라 부호화 엔진은 2개의 가능한6비트 시퀀스 또는 4비트 시퀀스 중 어느 것을 소정의 데이터에 송신할지를 선택합니다.6비트 또는 4비트코드의 1과 0의 수가 같으면 서브블록 D.07(00111)과 D.x.3(011)을 제외하고 차이가 변하지 않기 때문에 선택할 수 없습니다.어느 경우든 차이는 변하지 않지만 D.07이 000111일 때 RD가 양이면 음수 111000이 사용됩니다.마찬가지로 D.x.3이 양수일 때 RD가 0011이고 음수일 경우 1100이 사용됩니다.이는 아래 표에 정확하게 나타나 있지만 각각 2개의 인코딩이 가능한 1과 0의 수가 동일한 2개의 서브블록이기 때문에 추가로 언급할 필요가 있습니다.

실행 시차 규칙
이전의
RD
격차
암호어
격차
선택된
다음 분.
RD
−1 0 0 −1
−1 ±2 +2 +1
+1 0 0 +1
+1 ±2 −2 −1

5b/6b 코드(codedei)

입력 RD = -1 RD = +1 입력 RD = -1 RD = +1
코드 EDCBA a b c d ei 코드 EDCBA a b c d ei
D.00 00000 100111 011000 D.16 10000 011011 100100
D.01 00001 011101 100010 D.17 10001 100011
D.02 00010 101101 010010 D.18 10010 010011
D.03 00011 110001 D.19 10011 110010
D.04 00100 110101 001010 D.20 10100 001011
D.05 00101 101001 D.21 10101 101010
D.06 00110 011001 D.22 10110 011010
D.07 00111 111000 000111 D.23 » 10111 111010 000101 K.23.7 기호에도 사용됩니다.
D.08 01000 111001 000110 D.24 11000 110011 001100
D.09 01001 100101 D.25 11001 100110
D.10 01010 010101 D.26 11010 010110
D.11 01011 110100 D.27 » 11011 110110 001001 K.27.7 기호에도 사용됩니다.
D.12 01100 001101 D.28 11100 001110
D.13 01101 101100 D.29 » 11101 101110 010001 K.29.7 기호에도 사용됩니다.
D.14 01110 011100 D.30 » 11110 011110 100001 K.30.7 기호에도 사용됩니다.
D.15 01111 010111 101000 D.31 11111 101011 010100
사용하지 않음 111100 000011 K.28 » 11100 001111 11000000 K.28.x 기호 전용

§는 K.x.7의 5b/6b 코드에도 사용됩니다.

§ K.28.y의 5b/6b 코드 전용으로 사용

3b/4b 코드(fghj)

입력 RD = -1 RD = +1 입력 RD = -1 RD = +1
코드 HGF fg h j 코드 HGF fg h j
D.x.0 000 1011 0100 K.x.0 000 1011 0100
D.x.1 001 1001 K.x.1 » 001 0110 1001
D.x.2 010 0101 K.x.2 010 1010 0101
D.x.3 011 1100 0011 K.x.3 011 1100 0011
D.x.4 100 1101 0010 K.x.4 100 1101 0010
D.x.5 101 1010 K.x.5 » 101 0101 1010
D.x.6 110 0110 K.x.6 110 1001 0110
D.x.P7 » 111 1110 0001 K.x.7 » 111 0111
D.x.A7 » 0111 1000

§ D.x.7의 경우 앞의 5b/6b 코드와 조합하여5회 연속 0 또는1초의 실행을 피하기 위해 프라이머리(D.x.P7) 또는 대체(D.x.A7) 인코딩 중 하나를 선택해야 합니다.
정확히 5개의 동일한 비트의 시퀀스가 동기 문제의 콤마 기호로 사용됩니다.
D.x.A7만 사용

  • RD = -1: x = 17, 18 및 20일 때
  • RD = +1: x = 11, 13 및 14일 때.

x = 23, x = 27, x = 29 x = 30의 경우 제어 기호 K.x.7에 사용되는 3b/4b 코드 부분은 D.x의 코드 부분과 동일합니다.답 7.
기타 D.x.A7 코드는 콤마 시퀀스가 잘못 정렬될 수 있으므로 사용할 수 없습니다.

5개의 0 또는1의 비트시퀀스를 포함하는 콤마 기호를 생성하는 것은 K.28.1, K.28.5 및 K.28.7뿐입니다.
기호의 형식은 110000 01xx 또는 0011 10xx입니다.

제어 기호

8b/10b 내의 제어 기호는 유효한 비트 시퀀스(6개 이하의 1 또는 0)이지만 대응하는 8b 데이터 바이트를 가지지 않는 10b 기호입니다.저레벨 제어 기능에 사용됩니다.예를 들어 파이버 채널에서는 K28.5가 루프 조정, 단어 채우기, 링크 리셋 등의 기능을 수행하는 4바이트 시퀀스('오더 세트'라고 불린다)의 선두에 사용됩니다.

5b/6b 및 3b/4b 테이블에 따라 다음 12개의 제어 기호를 전송할 수 있습니다.

제어 기호
입력 RD = -1 RD = +1
기호. DEC 16진수 HGF EDCBA abcdei fghj abcdei fghj
K.28.0 28 1C 000 11100 001111 0100 110000 1011
K.28.1 » 60 3C 001 11100 001111 1001 1100000110
K.28.2 92 5C 010 11100 001111 0101 110000 1010
K.28.3 124 7C 011 11100 001111 0011 110000 1100
K.28.4 156 9C 100 11100 001111 0010 110000 1101
K.28.5 » 188 BC 101 11100 001111 1010 1100000101
K.28.6 220 직류 110 11100 001111 0110 110000 1001
K.28.7 » 252 FC 111 11100 001111 1000 110000 0111
K.23.7 247 F7 111 10111 111010 1000 000101 0111
K.27.7 251 FB 111 11011 110110 1000 001001 0111
K.29.7 253 FD 111 11101 101110 1000 010001 0111
K.30.7 254 FE 111 11110 011110 1000 100001 0111

∙ 제어 기호 중 K.28.1, K.28.5, K.28.7은 "쉼표 기호"이다.콤마 기호는 동기화에 사용됩니다(비트 스트림 내에서 8b/10b 코드의 정렬을 찾습니다.K.28.7을 사용하지 않으면 표준 코드 조합 내의 어떤 비트 위치에서도 고유한 쉼표 시퀀스 001110 또는 11000001을 찾을 수 없습니다.

② 실제 코딩에서 K.28.7이 허용되는 경우, §에서 제안하는 것보다 더 복잡한 동기화 패턴의 정의를 사용해야 합니다. K.28.7과 여러 다른 코드와의 조합이 두 코드와 겹치는 잘못된 정렬 콤마 기호를 형성하기 때문입니다.복수의 K.28.7 코드의 시퀀스는, 검출할 수 없는 잘못 정렬된 콤마 기호의 원인이 되기 때문에, 어떠한 경우에도 허가되지 않습니다.

K.28.7은 데이터 스트림의 단일 비트 오류로 인해 발생할 수 없는 유일한 쉼표 기호입니다.

D31.1 인코딩 예시

D31.1 (실행 중인 시차 케이스 모두)
입력 RD = -1 RD = +1
코드 DEC 16진수 HGF EDCBA abcdei fghj abcdei fghj
D31.1 63 3층 001 11111 101011 1001 010100 1001

8b/10b를 사용하는 테크놀로지

위에서 언급한 IBM 특허가 만료된 후, 이 계획은 더욱 인기를 끌었고 여러 통신 기술의 DC 프리 라인 코드로 선택되었습니다.

8b/10b 인코딩이 응용 프로그램을 찾는 영역은 다음과 같습니다.

파이버 채널(4GFC 및 8GFC 모델만)

FC-0 규격은 파이버 채널[8] 시스템에서 사용하는 인코딩 방식(8b/10b 또는 64b/66b)을 정의합니다.고속 모델에서는 일반적으로 64b/66b를 사용하여 대역폭 효율을 최적화합니다(대역폭 오버헤드는 8b/10b에서는 20%, 64b/66b 시스템에서는 약 3%(~2/66)이기 때문입니다.따라서 4GFC 및 8GFC의 경우 8b/10b 인코딩이 사용되며 10GFC 및 16GFC의 경우 64b/[9]66b 인코딩이 사용됩니다.파이버 채널 FC1 데이터 링크레이어는 신호의 8b/10b 부호화와 디코딩을 담당합니다.

파이버 채널 8b/10b 코딩 방식은 다른 통신 시스템에서도 사용됩니다.데이터는 각 입력 8비트 값에 대해 2개의 가능한 10비트 출력 값 중 하나를 생성하는 알고리즘을 사용하여 확장됩니다.각 8비트 입력값은 홀수 차이가 있는 10비트 출력값 또는 짝수 차이가 있는 출력값에 매핑할 수 있습니다.이 매핑은 보통 파이버채널 링크를 통해 전송하기 위해 병렬 입력 데이터가 시리얼 출력 스트림으로 변환될 때 수행됩니다.홀수/짝수 선택은 1과 0 사이의 장기 제로 차이가 유지되도록 이루어집니다.이것은, 「DC밸런싱」이라고 불리는 경우가 많습니다.

8비트에서 10비트로의 변환 방식에서는 가능한 1024개의 출력 값 중 512개만 사용합니다.나머지 512개의 미사용 출력 값 중 대부분은 1이 너무 많거나 0이 너무 많으므로 허용되지 않습니다.따라서 최소 12개의 특수 비데이터 문자를 사용할 수 있는 예비 10비트 홀수+짝수 코딩 쌍이 남아 있습니다.

256개의 데이터 값을 나타내는 코드를 데이터(D) 코드라고 합니다.12개의 특수 비데이터 문자를 나타내는 코드를 컨트롤(K) 코드라고 합니다.

모든 코드는 3개의 8진수 값을 기술하는 것으로 설명할 수 있습니다.이는 "Dxx.x" 또는 "Kxx.x" 명명 규칙을 사용하여 수행됩니다.

예:

입력 데이터 비트: ABCDEFGH
데이터 분할: ABC DEFGH
데이터 교환: DEFGH ABC

이제 이 비트들은 쌍을 이루는 방식으로 10진수로 변환됩니다.

데이터 입력

C3 (HEX) = 11000011 = 110 00011 = 00011 110 = 3 6

E8B/10B = D03.6

디지털 오디오

부호화 스킴 8b/10b는 디지털 오디오 스토리지 애플리케이션, 즉 많이 사용되고 있다.

오디오 CDCD-ROM 에는, 다른 관련의 스킴이 사용됩니다.

대체 수단

8b/10b는 부호화 방식이지 특정 코드가 아닙니다.많은 응용 프로그램이 같은 코드를 사용하지만 호환되지 않는 구현이 있습니다. 예를 들어 Transition Minimized Differential Signaling은 8비트를 10비트로 확장하지만 완전히 다른 방법을 사용합니다.

64b/66b 인코딩은 10기가비트 이더넷의 10GBASE-R Physical Media Dependent(PMD; 물리 미디어 의존) 인터페이스용으로 도입된 것으로, 8b/10b 인코딩의 대체 수단으로서 부호화된 데이터의 64비트당 오버헤드가 2비트입니다.이 방식은 8b/10b 부호화와는 크게 다른 설계로 DC 밸런스, 쇼트런 길이 및 트랜지션 밀도를 명시적으로 보증하지 않습니다(이러한 기능은 스크램블링에 의해 통계적으로 실현됩니다).64b/66b 인코딩은 PCI Express 3.0 USB 3.1의 128b/130b 및 128b/132b 인코딩으로 확장되어 각 [10]표준의 이전 버전에서 8b/10b 인코딩을 대체했습니다.

레퍼런스

  1. ^ Kees Schouhamer Immink (March 1997). "Performance Assessment of DC-Free Multimode Codes". IEEE Transactions on Communications. 45 (3): 293–299. doi:10.1109/26.558690. The dc-balanced or dc-free codes, as they are often called, have a long history and their application is certainly not confined to recording practice.
  2. ^ 미국 특허 4,456,905 바이너리 데이터 인코딩 방법 및 장치, 1984년 10월
  3. ^ 미국 특허 4,620,311 정보 전송 방법, 본 방법에 사용하는 부호화 장치 및 본 방법에 사용하는 복호화 장치, 1986년 6월
  4. ^ Al X. Widmer, Peter A. Franaszek (1983). "A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code". IBM Journal of Research and Development. 27 (5): 440–451. doi:10.1147/rd.275.0440.
  5. ^ 미국 특허 4,486,739 바이트 지향 DC 균형(0,4) 8B/10B 분할 블록 전송 코드, 1984년 12월.
  6. ^ Thatcher, Jonathan (April 1, 1996). "Thoughts on Gigabit Ethernet Physical". IBM. Retrieved August 17, 2008.
  7. ^ "Physical Layer Specifications". Mipi.org. MIPI Alliance. Retrieved April 20, 2014.
  8. ^ 파이버 채널프레임 및 시그널링 - 3 (FC-FS-3) Rev 1.1 섹션 5.2.1 및 5.3.1 [1]
  9. ^ 파이버 채널 물리 인터페이스-5(FC-PI-5) REV 6.10 섹션 5.7 [2]
  10. ^ Mahesh Wagh (August 6, 2011). "PCIe 3.0 Encoding & PHY Logical" (PDF). pcisig.com. Retrieved June 5, 2015.

외부 링크