KR20160068690A - 송신 스트림에서 에러 정정 코드들을 전송하는 방법 및 송신 스트림으로부터 데이터 스트림을 추출하는 방법 - Google Patents

송신 스트림에서 에러 정정 코드들을 전송하는 방법 및 송신 스트림으로부터 데이터 스트림을 추출하는 방법 Download PDF

Info

Publication number
KR20160068690A
KR20160068690A KR1020150172542A KR20150172542A KR20160068690A KR 20160068690 A KR20160068690 A KR 20160068690A KR 1020150172542 A KR1020150172542 A KR 1020150172542A KR 20150172542 A KR20150172542 A KR 20150172542A KR 20160068690 A KR20160068690 A KR 20160068690A
Authority
KR
South Korea
Prior art keywords
eccs
processor
symbols
stream
data
Prior art date
Application number
KR1020150172542A
Other languages
English (en)
Other versions
KR102510034B1 (ko
Inventor
데일 에프. 스톨리츠카
Original Assignee
삼성디스플레이 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성디스플레이 주식회사 filed Critical 삼성디스플레이 주식회사
Publication of KR20160068690A publication Critical patent/KR20160068690A/ko
Application granted granted Critical
Publication of KR102510034B1 publication Critical patent/KR102510034B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0084Formats for payload data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • H04L1/0043Realisations of complexity reduction techniques, e.g. use of look-up tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/47Error detection, forward error correction or error protection, not provided for in groups H03M13/01 - H03M13/37
    • H03M13/51Constant weight codes; n-out-of-m codes; Berger codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0064Concatenated codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/009Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location arrangements specific to transmitters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0091Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location arrangements specific to receivers, e.g. format detection
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Error Detection And Correction (AREA)

Abstract

송신 스트림에서 에러 정정 코드(error correction code; ECC)들을 전송하는 방법으로서, 데이터 소스로부터의 데이터 스트림을 데이터 심볼(data symbol)들로 인코딩하는 단계와, 상기 데이터 심볼들로부터 제 1 ECC들을 생성하는 단계와, 상기 제 1 ECC들을 제 1 에러 정정 코드(ECC) 심볼들로 인코딩하는 단계와, 상기 데이터 심볼들 및 상기 제 1 ECC 심볼들을 상기 송신 스트림으로 병합(merging)하는 단계로서, 상기 제 1 ECC 심볼들은 상기 데이터 심볼들 이전에 상기 송신 스트림으로 병합되는, 상기 병합하는 단계와, 상기 병합된 송신 스트림을 통신 링크를 통해 싱크 디바이스(sink device)로 송신하는 단계로서, 상기 제 1 ECC 심볼들은 상기 데이터 심볼들 이전에 송신되는, 상기 송신하는 단계를 포함하는, 방법이 제공된다.

Description

송신 스트림에서 에러 정정 코드들을 전송하는 방법 및 송신 스트림으로부터 데이터 스트림을 추출하는 방법{METHOD OF TRANSPORTING ERROR CORRECTION CODES IN TRANSMISSION STREAM AMD METHOD FOR EXTRACTING DATA STREAM FROM TRANSMISSION STREAM}
본 발명의 실시예들의 양태들은 심볼 인코딩된 송신 스트림에서 에러 정정 코드들을 전송하는 방법에 관한 것이다.
고속 데이터 송신은 직렬 데이터 링크(예를 들어, 광섬유 케이블 링크와 같은, 한번에 하나의 비트)를 사용하여 구현될 수 있다. 데이터 스트림은 직렬화된 순서의 다수의 비트 그룹들(예를 들어, 8-비트 그룹들)("바이트들")로 구성될 수 있다. 8b/10b 인코딩을 이용하는 것과 같은, DC 밸런싱을 사용하여 송신 이전에 데이터 스트림("데이터 바이트들")을 인코딩할 수 있으며(예를 들어, 8-비트 바이트들이 10-비트 심볼들로 변환될 수 있음), 이에 따라 송신되는 0-비트들(즉, '0'의 이진값을 나타내는 비트들)의 수가 송신되는 1-비트들(즉, '1'의 이진값을 나타내는 비트들)의 수와 동일하게 되고(또는 실질적으로 동일하게 되며, 예를 들어 그로부터 한두 개 이하로 벗어나게 됨), 단 하나의 0 비트 또는 1 비트의 버스트도 존재하지 않게 된다(예를 들면, 5 이하의 연속 0-비트들 또는 1-비트들). 그 후에, 이 인코딩된 데이터 스트림이 예를 들어 대응하는 10b/8b 디코딩으로, 수신측 상에서 디코딩됨으로써, 본래의 데이터 스트림을 복구하게 된다. 이러한 기술들은, 예를 들어, DC 밸런싱, 클럭 복구, 및 위상 복구에 도움이 될 수 있으며, 예를 들어 수신 디바이스들이 송신된 인코딩 데이터의 송신율을 결정하는데 도움이 될 수 있다.
해밍 코드들, 리드-솔로몬 코드들, 또는 저-밀도 패리티-체크(Low-Density Parity-Check; LDPC) 코드들과 같은 포워드 에러 정정(Forward Error Correction; FEC) 코드들은, 에러 체킹 및 에러 정정용의 리던던트 비트들 또는 바이트들("패리티 비트들" 또는 "패리티 바이트들")을 제공함으로써 통신 신뢰성을 향상시키기 위해 데이터 송신들에서 사용될 수 있다. 이러한 패리티 비트들 또는 바이트들은 데이터 송신(데이터 비트들 또는 바이트들)을 수반하고, 수신기가 정정 데이터가 전송되었는지를 확인하는 것을 가능하게 하며, 심지어 그 송신에서 몇 가지의 에러들을 정정할 수 있는 능력을 수신기에게 허용할 수도 있다. 해밍 코드들은 비교적 간단하고 효율적이지만, 단지 몇 가지의 에러들(예를 들어, 소수의 비트들)만을 정정한다. 리드-솔로몬 및 LDPC 코드들은 해밍 코드들보다 더 계산 집약적이지만, 검출 또는 정정될 수 있는 상당히 많은 에러들을 제공한다(예를 들어, 전체 바이트들).
포워드 에러 정정은 DC 밸런싱(DC balancing)과 조합될 수도 있다. 예를 들어, 패리티 비트들 또는 바이트들이 포워드 에러 정정을 위한 데이터 스트림(데이터 바이트들)에 대해 생성될 수 있으며, 그 데이터 플러스 패리티 비트들 또는 바이트들이, 송신 이전에, DC 밸런싱을 통해 심볼들로 인코딩될 수도 있다. 그 다음, 수신기가 심볼들을 디코딩하고, 디코딩된 데이터 비트들 또는 바이트들 상의 디코딩된 패리티 비트들 또는 바이트들을 사용하여 에러 검출 및 정정을 수행하게 된다. 그러나, 이로 인해 데이터 송신시에 에러들이 도입되는 문제점이 발행한다. 예를 들어, 손상된 심볼이 상이한 바이트를 나타내는 비유효한 심볼 또는 유효한 심볼에 맵핑될 수 있으며, 이에 따라 송신시에 1-비트 에러와 같은 작은 것을 발생시킴으로써 수신 데이터 및 패리티에 있어서는 다수의 비트 에러들(예를 들면, 8개 개별 비트 에러들을 포함할 수 있는 전체 바이트)을 야기할 수도 있다. 이것은 해밍 코드들과 같은 저가의 FEC 알고리즘들에 대한 문제점들을 제공할 수 있거나, 또는 겨우 몇 비트 에러들이 아닌 일 이상의 바이트 에러들로부터 복구될 수 있는 능력을 제공하는 더욱 복잡한 FEC 알고리즘(예컨대, 리드-솔로몬 또는 LDPC)의 사용을 강제할 수 있으며, 이것은 인코더 및 디코더 복잡성을 야기한다.
이 배경 기술 부분에서 개시된 상기 내용은 본 발명의 배경에 대한 이해의 향상을 위한 것이며, 따라서, 이미 당업자에게 알려진 종래 기술을 형성하지 않는 정보를 포함할 수도 있다.
본 발명이 해결하고자 하는 과제는 심볼 인코딩된 송신 스트림에서 에러 정정 코드들을 전송하는 효율적인 방법을 제공하는 것이다.
본 발명의 실시예들의 양태들은 심볼 인코딩된 송신 스트림에서 에러 정정 코드(ECC)들을 송신하는 메모리-효율적인 방법에 관한 것이다.
본 발명의 실시예들의 양태들은, 데이터 스트림을 심볼들로 인코딩한 이후 및 심볼들로부터 데이터 스트림을 디코딩하기 이전에 포워드 에러 코드(FEC) 알고리즘 기능을 배치하고, 또한 FEC 알고리즘에 의해 생성된 에러 정정 코드(ECC)를 메인 데이터 스트림에 삽입하는 방법에 관한 것이다. 본 발명의 다른 실시예들은, 인코딩된 송신 스트림의 ECC를 생성하고, 인코딩된 송신 스트림에 앞서 ECC들을 전송하고, ECC들을 추출 및 버퍼링하고, 또한 상기 ECC들을 사용하여, 수신되는 송신 스트림에서의 비트 에러들을, 디코딩하기 이전에 정정하는 것(이하, "심볼-기반 에러 정정"이라 지칭함)에 관한 것이다. 에러 정정을 수행하면서, 인코딩된 송신 스트림 이전에 ECC들을 송신하는 것에 의해, 수신기에서의 버퍼가 ECC들만을 저장할 수가 있으며, 송신 스트림은 저장하지 않을 수 있다. 이로 인하여, 수신기에서의 버퍼 메모리의 크기가 감소되고, 결과적으로, 수신기의 크기 및 복잡성, 그리고 전체 시스템 비용이 감소된다.
추가의 실시예들은 고속 송신 스트림을 정정하는 비용 및 레이턴시를 감소시키는 것에 관한 것이다. 예를 들어, 몇몇 실시예들은 간단한 FEC 알고리즘(예를 들면, 1-비트 또는 2-비트 에러 정정 또는 검출을 가진 해밍 코드)으로, 인코딩된 송신 스트림을 정정할 수 있게 함으로써, 비용을 감소시키는 것에 관한 것이다. 따라서, 리드-솔로몬이나 LDPC와 같은 보다 복잡한 FEC 알고리즘들이 회피될 수 있으며, 이로 인해 동등한 인코딩/디코딩 솔루션의 복잡성(예를 들면, 논리 게이트 카운트)을 10배만큼 감소시킬 수 있다. 이것은 또한 수평 및 수직 페리티 검사(및 그것과 관련된 다량의 패킷 버퍼링)와 같은 고 레이턴시 솔루션들을 회피할 수 있게 한다.
본 발명의 몇몇 예시적인 실시예들에 따르면, 송신 스트림에서 에러 정정 코드(error correction code; ECC)들을 전송하는 방법으로서, 프로세서에 의해, 데이터 소스로부터의 데이터 스트림을 데이터 심볼(data symbol)들로 인코딩하는 단계; 상기 프로세서에 의해, 상기 데이터 심볼들로부터 제 1 ECC들을 생성하는 단계; 상기 프로세서에 의해, 상기 제 1 ECC들을 제 1 에러 정정 코드(ECC) 심볼들로 인코딩하는 단계; 상기 프로세서에 의해, 상기 데이터 심볼들 및 상기 제 1 ECC 심볼들을 상기 송신 스트림으로 병합(merging)하는 단계로서, 상기 제 1 ECC 심볼들은 상기 데이터 심볼들 이전에 상기 송신 스트림으로 병합되는, 상기 병합하는 단계; 및 상기 프로세서에 의해, 상기 병합된 송신 스트림을 통신 링크를 통해 싱크 디바이스(sink device)로 송신하는 단계로서, 상기 제 1 ECC 심볼들은 상기 데이터 심볼들 이전에 송신되는, 상기 송신하는 단계를 포함하는, 방법이 제공된다.
일 실시예에서, 상기 데이터 스트림을 데이터 심볼들로 인코딩하는 단계 및 상기 제 1 ECC들을 제 1 ECC 심볼들로 인코딩하는 단계는 동일한 인코딩 기술로 구성된다.
일 실시예에서, 상기 방법은, 상기 프로세서에 의해, 상기 제 1 ECC들로부터 제 2 ECC들을 생성하는 단계; 및 상기 프로세서에 의해, 상기 제 2 ECC들을 제 2 ECC 심볼들로 인코딩하는 단계를 더 포함하며, 상기 데이터 심볼들 및 상기 제 1 ECC 심볼들을 병합하는 것은, 상기 프로세서에 의해, 상기 제 2 ECC 심볼들을 상기 송신 스트림으로 병합하는 것을 포함한다.
일 실시예에서, 상기 제 1 ECC들을 인코딩하는 것은, 상기 프로세서에 의해, 상기 송신 스트림 내로, 상기 제 1 ECC 심볼들 이전에 제 1 제어 심볼을 삽입(inserting)하고, 또한 상기 제 1 ECC 심볼들과 상기 데이터 심볼들 사이에 제 2 제어 심볼을 삽입하는 것을 포함한다.
일 실시예에서, 상기 병합된 송신 스트림을 송신하는 것은, 상기 프로세서에 의해, 상기 병합된 송신 스트림을 직렬화하는 것; 및 상기 프로세서에 의해, 직렬 데이터 링크를 통하여 상기 직렬화된 송신 스트림을 상기 싱크 디바이스로 송신하는 것을 포함한다.
일 실시예에서, 상기 방법은 상기 프로세서에 의해, 데이터 스트림 버퍼에서 상기 데이터 심볼을 버퍼링하는 단계를 더 포함한다.
본 발명의 몇몇 예시적인 실시예들에 따르면, 전송 에러 정정 코드(ECC)들을 포함하는 송신 스트림으로부터 데이터 스트림을 추출해 내는 방법으로서, 싱크 디바이스의 프로세서에 의해, 통신 링크를 통해 소스 디바이스로부터 상기 송신 스트림을 수신하는 단계; 상기 프로세서에 의해, 상기 수신된 송신 스트림으로부터 에러 정정 코드(ECC) 심볼들을 추출해 내는 단계; 상기 프로세서에 의해, 상기 ECC 심볼들을 상기 제 1 ECC들로 디코딩하는 단계; 상기 프로세서에 의해, 상기 제 1 ECC들을 버퍼링하는 단계; 상기 프로세서에 의해, 상기 송신 스트림으로부터 데이터 심볼들을 추출해 내는 단계; 상기 프로세서에 의해, 상기 버퍼링된 제 1 ECC들을 가지고 상기 데이터 심볼들에서 에러들을 정정하는 단계; 및 상기 프로세서에 의해, 상기 싱크 디바이스에 의한 출력을 위하여, 상기 정정된 데이터 심볼들을 데이터 스트림으로 디코딩하는 단계를 포함하는, 방법이 제공된다.
일 실시예에서, 상기 ECC 심볼들을 상기 제 1 ECC들로 디코딩하는 단계 및 상기 정정된 데이터 심볼들을 데이터 스트림으로 디코딩하는 단계는 동일한 디코딩 기술로 구성된다.
일 실시예에서, 상기 제 1 ECC 심볼들을 디코딩하는 것은, 상기 프로세서에 의해, 상기 ECC 심볼들을 제 2 ECC들로 디코딩하는 것; 및 상기 프로세서에 의해, 상기 제 2 ECC들을 가지고 상기 제 1 ECC들에서 에러들을 정정하는 것을 포함하며, 상기 제 1 ECC들을 버퍼링하는 것은, 상기 프로세서에 의해, 상기 정정된 제 1 ECC들을 버퍼링하는 것을 포함하고, 또한 상기 데이터 심볼들에서 에러들을 정정하는 것은, 상기 프로세서에 의해, 상기 버퍼링되는 정정된 제 1 ECC들을 가지고 상기 데이터 심볼들에서 에러들을 정정하는 것을 포함한다.
일 실시예에서, 상기 ECC 심볼들을 추출해 내는 것은, 상기 프로세서에 의해, 상기 송신 스트림으로부터의 상기 데이터 심볼들과 제 1 ECC 심볼들 간의 제어 심볼을 식별하는 것을 포함한다.
일 실시예에서, 상기 송신 스트림을 수신하는 것은, 상기 프로세서에 의해, 직렬 데이터 링크를 통해 상기 소스 디바이스로부터 상기 송신 스트림을 수신하는 것; 및 상기 프로세서에 의해, 상기 수신된 송신 스트림을 역직렬화(de-serializing)하는 것을 포함한다.
본 발명의 몇몇 예시적인 실시예들에 따르면, 송신 스트림에서 에러 정정 코드(ECC)들을 전송하는 방법으로서, 소스 디바이스의 제 1 프로세서에 의해, 데이터 소스로부터의 데이터 스트림을 제 1 데이터 심볼들로 인코딩하는 단계; 상기 제 1 프로세서에 의해, 상기 제 1 데이터 심볼들로부터의 ECC들을 생성하는 단계; 상기 제 1 프로세서에 의해, 일 기준이 충족될 때까지 상기 소스 디바이스에서 상기 ECC들을 버퍼링하는 단계; 상기 제 1 프로세서에 의해, 상기 제 1 데이터 심볼들 및 상기 버퍼링된 ECC들을 상기 송신 스트림으로 병합하는 단계로서, 상기 버퍼링된 ECC들은 상기 제 1 데이터 심볼들 이전에 상기 송신 스트림으로 병합되는, 상기 병합하는 단계; 상기 제 1 프로세서에 의해, 상기 병합된 송신 스트림을 통신 링크를 통해 싱크 디바이스로 송신하는 단계로서, 상기 버퍼링된 ECC들은 상기 제 1 데이터 심볼들 이전에 송신되는, 상기 송신하는 단계; 상기 싱크 디바이스의 제 2 프로세서에 의해, 상기 소스 디바이스로부터 수신되는 송신 스트림을 수신하는 단계; 상기 제 2 프로세서에 의해, 상기 수신된 송신 스트림으로부터 상기 ECC들을 추출해 내는 단계; 상기 제 2 프로세서에 의해, 상기 싱크 디바이스에서 상기 ECC들을 버퍼링하는 단계; 상기 제 2 프로세서에 의해, 상기 수신된 송신 스트림으로부터 제 2 데이터 심볼들을 추출해 내는 단계; 상기 제 2 프로세서에 의해, 상기 싱크 디바이스에서 상기 버퍼링된 ECC들을 가지고 상기 제 2 데이터 심볼들에서의 에러들을 정정하는 단계; 및 상기 제 2 프로세서에 의해, 상기 싱크 디바이스에 의한 출력을 위해, 상기 정정된 제 2 데이터 심볼들을 정정된 데이터 스트림으로 디코딩하는 단계를 포함하는, 방법이 제공된다.
일 실시예에서, 상기 제 1 데이터 심볼들 및 상기 버퍼링된 ECC들을 병합하는 것은, 상기 제 1 프로세서에 의해, 제어 심볼들을 가지고 상기 소스 디바이스에서 상기 버퍼링된 ECC들을 프레이밍(framing)하는 것; 및 상기 제 1 프로세서에 의해, 상기 제 1 데이터 심볼들 및 상기 프레이밍된 ECC들을 상기 송신 스트림으로 병합하는 것을 포함한다.
일 실시예에서, 상기 버퍼링된 ECC들을 프레이밍하는 것은, 상기 제 1 프로세서에 의해, 상기 송신 스트림 내로, 상기 버퍼링된 ECC들 이전에 상기 제어 심볼들 중의 제 1 제어 심볼을 삽입하고, 또한 상기 버퍼링된 ECC들 이후에 상기 제어 심볼들 중의 제 2 제어 심볼을 삽입하는 것을 포함한다.
일 실시예에서, 상기 병합된 송신 스트림을 송신하는 것은, 상기 제 1 프로세서에 의해, 상기 병합된 송신 스트림을 직렬화하는 것; 및 상기 제 1 프로세서에 의해, 상기 직렬화된 송신 스트림을 직렬 데이터 링크를 통해 상기 싱크 디바이스로 송신하는 것을 포함한다.
일 실시예에서, 청구항 12의 방법은, 상기 제 1 프로세서에 의해, 데이터 스트림 버퍼에서 상기 제 1 데이터 심볼들을 버퍼링하는 단계를 더 포함한다.
일 실시예에서, 상기 기준은, 상기 ECC들이 미리 설정된 길이에 도달하는 것, 상기 ECC들이 충분한 DC 밸런스로 존재하지 않는 것, 및 상기 ECC들에서의 전환(transition)들의 수가 미리 설정된 값 미만으로 되는 것 중의 하나 이상을 포함한다.
일 실시예에서, 상기 수신된 송신 스트림으로부터 상기 ECC들을 추출해 내는 것은, 상기 제 2 프로세서에 의해, 상기 수신된 송신 스트림으로부터 프레이밍된 ECC들을 추출해 내는 것; 및 상기 제 2 프로세서에 의해, 상기 프레이밍된 ECC들 이전에 제 1 제어 심볼을 그리고 상기 상기 프레이밍된 ECC들 이후에 제 2 제어 심볼을 식별하여 제거함으로써, 상기 프레이밍된 ECC들을 상기 ECC들로 디프레이밍(deframing)하는 것을 포함한다.
본 발명의 몇몇 예시적인 실시예들에 따르면, 송신 스트림에서 에러 정정 코드(ECC)들을 전송하는 방법으로서, 심볼 인코더에 의해, 데이터 소스로부터의 데이터 스트림을 데이터 심볼들로 인코딩하는 단계; 에러 정정 코드(ECC) 인코더에 의해, 상기 데이터 심볼들로부터 제 1 ECC들을 생성하는 단계; 상기 심볼 인코더에 의해, 상기 제 1 ECC들을 제 1 에러 정정 코드(ECC) 심볼들로 인코딩하는 단계; 멀티플렉서에 의해, 상기 데이터 심볼들 및 상기 제 1 ECC 심볼들을 상기 송신 스트림으로 병합하는 단계로서, 상기 제 1 ECC 심볼들은 상기 데이터 심볼들 이전에 상기 송신 스트림으로 병합되는, 상기 병합하는 단계; 및 송신기에 의해, 상기 병합된 송신 스트림을 통신 링크를 통해 싱크 디바이스로 송신하는 단계로서, 상기 제 1 ECC 심볼들은 상기 데이터 심볼들 이전에 송신되는, 상기 송신하는 단계를 포함하는, 방법이 제공된다.
본 발명의 몇몇 예시적인 실시예들에 따르면, 전송 에러 정정 코드(ECC)들을 포함하는 송신 스트림으로부터 데이터 스트림을 추출해 내는 방법으로서, 수신기에 의해, 소스 디바이스로부터의 상기 송신 스트림을 통신 링크를 통해 수신하는 단계; 프로세서에 의해, 상기 수신된 송신 스트림으로부터 에러 정정 코드(ECC) 심볼들을 추출해 내는 단계; 심볼 디코더에 의해, 상기 ECC 심볼들을 제 1 ECC들로 디코딩하는 단계; 버퍼 메모리에 의해, 상기 제 1 ECC들을 버퍼링하는 단계; 상기 프로세서에 의해, 상기 송신 스트림으로부터 데이터 심볼들을 추출해 내는 단계; ECC 디코더에 의해, 상기 버퍼링된 제 1 ECC들을 가지고 상기 데이터 심볼들에서의 에러들을 정정하는 단계; 및 상기 심볼 디코더에 의해, 상기 싱크 디바이스에 의한 출력을 위해, 상기 정정된 데이터 심볼들을 데이터 스트림으로 디코딩하는 단계를 포함하는, 방법이 제공된다.
따라서, 본 발명의 실시예들은, 실질적으로 싱크 디바이스(수신기)의 메모리 요구 사항들, 크기, 복잡성, 및 데이터 송신 비용을 감소시키고, 소스 디바이스(송신기)의 복잡성 및 비용을 감소시키며, 또한 데이터 스트림이, 감소된 또는 최소의 레이턴시로 복구될 수 있게 하는, 심볼 인코딩된 송신 스트림에서 에러 정정 코드(ECC)들을 전송하는 방법 및 이를 이용한 장치를 제공한다.
본 발명의 실시예에 따르면 심볼 인코딩된 송신 스트림에서 에러 정정 코드들을 전송하는 효율적인 방법이 제공된다.
도 1은 본 발명의 몇몇 예시적인 실시예들에 따른 심볼 인코딩된 송신 스트림에서 ECC 코드들을 전송하기 위한 시스템을 도시하는 개략도이다.
도 2는 본 발명의 몇몇 예시적인 실시예들에 따른 심볼 인코딩된 송신 스트림에서 ECC 코드들을 송신하는 방법의 흐름도이다.
도 3은 도 2의 실시예들과 같은, 본 발명의 몇몇 예시적인 실시예들에 따른 송신 스트림 인코더의 블록도이다.
도 4는 본 발명의 몇몇 예시적인 실시예들에 따른 심볼 인코딩된 송신 스트림에서 ECC 코드들을 수신하는 방법의 흐름도이다.
도 5는 도 4의 실시예들과 같은, 본 발명의 몇몇 예시적인 실시예들에 따른 송신 스트림 디코더의 블록도이다.
도 6은 본 발명의 몇몇 예시적인 실시예들에 따른 심볼 인코딩된 송신 스트림에서 ECC들을 송신하는 방법의 흐름도이다.
도 7은 도 6의 실시예들과 같은, 본 발명의 몇몇 예시적인 실시예들에 따른 송신 스트림 인코더의 블록도이다.
도 8은 본 발명의 몇몇 예시적인 실시예들에 따른 심볼 인코딩된 송신 스트림에서 ECC들을 수신하는 방법의 흐름도이다.
도 9는 도 8의 실시예들과 같은, 본 발명의 몇몇 예시적인 실시예들에 따른 송신 스트림 디코더의 블록도이다.
본 발명의 예시적인 실시예들에 대하여 도면들을 참조하여 설명한다. 도면들에서 동일하거나 유사한 참조 부호들은 명세서 전체에 걸쳐 동일하거나 유사한 구성요소들을 나타낸다.
본 명세서에서 설명되는 본 발명의 실시예들에 따른 인코더들, 디코더들, 및/또는 임의의 다른 관련 장치들 또는 구성요소들은 임의의 적절한 하드웨어, 펌웨어(예를 들어, 주문형 반도체), 소프트웨어, 또는 소프트웨어, 펌웨어, 및 하드웨어의 적절한 조합을 이용하여 구현될 수있다. 예를 들어, 인코더들 및 디코더들의 각종 구성요소들은 하나의 집적 회로(IC) 칩 상에 또는 별개의 IC 칩 상에 형성될 수 있다. 또한, 인코더들 또는 디코더들의 각종 구성요소들은 가요성 인쇄 회로막, TCP(tape carrier package), PCB(printed circuit board) 상에 구현될 수 있으며, 또는 그 인코더들 또는 디코더들과 동일한 기판 상에 형성될 수도 있다.
또한, 인코더들 및 디코더들의 각종 구성요소들은, 하나 이상의 컴퓨팅 디바이스 내의 하나 이상의 프로세서들 상에서 실행되어, 컴퓨터 프로그램 명령들을 실행시키고, 본 명세서에서 설명되는 다양한 기능들을 수행하는 다른 시스템 구성요소들과 상호작용하는 프로세서 또는 쓰레드일 수 있다. 이 컴퓨터 프로그램 명령들은, 예를 들어, 랜덤 액세스 메모리(RAM)와 같은 표준 메모리 디바이스를 사용하는 컴퓨팅 디바이스에서 구현될 수 있는 메모리에 저장된다. 또한, 이 컴퓨터 프로그램 명령들은, 예를 들어, CD-ROM, 플래시 드라이브 등과 같은 다른 비일시적 컴퓨터 판독가능한 매체에 저장될 수도 있다. 또한, 당업자는 각종 컴퓨팅 디바이스들의 기능이 조합되거나 하나의 컴퓨팅 디바이스로 통합될 수도 있으며, 또는 특정 컴퓨팅 디바이스의 기능이 본 발명의 범위를 벗어나지 않는 범위 내에서 하나 이상의 다른 컴퓨팅 디바이스들에 걸쳐 분산될 수도 있다는 것을 인식해야 한다.
본 발명의 양태들은 두 개의 연결된 디바이스들(예를 들면, 소스인 디바이스 및 싱크인 디바이스) 간의, 소스로부터 디스플레이(예를 들면, 디스플레이포트 인터페이스 사용)로의 인코딩된 스트림과 같은, 임의의 인코딩된 스트림에 대해 적용될 수 있다.
도 1은 본 발명의 몇몇 예시적인 실시예들에 따른 심볼 인코딩된 송신 스트림에서 ECC 코드들을 전송하기 위한 시스템(10)을 도시하는 개략도이다.
시스템(10)은 데이터 소스(102)(예를 들어, CD, DVD, 블루-레이, 하드-드라이브, 휴대 전화, 또는 다른 데이터 소스), 수신(또는 싱크) 디바이스(200)(예를 들어, 표시 패널을 구동하기 위한 회로를 포함할 수 있는, 디스플레이 디바이스 또는 데이터 싱크를 갖는 다른 디바이스), 및 소스 디바이스(100)와 싱크 디바이스(200) 간의 데이터를 송신하기 위한 통신 링크(300)(예를 들어, 와이어, 동축 케이블, 이더넷 케이블 등과 같은 고속 직렬 데이터 링크)를 포함하거나 이에 연결되는 소스 디바이스(100)(예를 들어, DVD 드라이브)를 포함한다. 소스 디바이스(20) 및 싱크 디바이스(200)는 당업자들에게 명백한 바와 같은, 본 명세서에서 설명되는 방법들 및 본 명세서에서 도출되는 것들을 수행하기 위한 프로세서(예를 들어, 마이크로 프로세서 및 메모리, 하드 와이어드 회로들, 프로그래머블 로직 어레이들 등)를 각각 포함할 수 있다. 시스템(10)은, 데이터가 심볼들 내에 임베디드되고 또한 데이터 정정을 필요로 하는 임의의 실시간 통신 시스템을 구현하는데 이용될 수 있다. 예를 들어, 시스템(10)은 셋탑 박스와 TV 간의 통신, 휴대 전화나 노트북과 디스플레이 디바이스 간의 통신, 서버들 간의 통신 등을 가능하게 하는데 이용될 수 있다.
도 2는 본 발명의 몇몇 예시적인 실시예들에 따른 심볼 인코딩된 송신 스트림에서 ECC 코드들을 송신하는 방법의 흐름도(S100)이다. 본 명세서에서 개시되는 이것 및 다른 방법들은, 예를 들어, 마이크로 프로세서들과 같은 프로세서(또는 다른 컴퓨팅 디바이스), 또는 두 개 이상의 프로세서들에 의해 실행될 일련의 컴퓨터 명령들로서 구현될 수 있다. 프로세서(들)는, 컴퓨터 프로그램 명령들을 실행하여, 본 명세서에서 설명되는 다양한 기능들을 수행하기 위해 다른 시스템 구성 요소들과 상호작용할 수도 있다. 컴퓨터 프로그램 명령들은, 예를 들어, 랜덤 액세스 메모리(random access memory; RAM)와 같은 표준 메모리 디바이스를 사용하여 구현되는 메모리에 저장될 수 있다. 컴퓨터 프로그램 명령들은 또한 예를 들어, CD-ROM, 플래시 드라이브 등과 같은 다른 비-일시적 컴퓨터 판독 가능 매체에 저장될 수도 있다. 또한 방법들은, 당업자에게는 명백한 바와 같이, 하드웨어 회로들(예를 들어, 트랜지스터들, 커패시터들, 논리 게이트들, 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA)들 등), 또는 하드웨어 회로들, 소프트웨어, 및 펌웨어의 조합을 사용하여 구현될 수도 있다.
도 3은 도 2의 실시예들과 같은, 본 명세서의 몇몇 실시예들에 따른 소스 디바이스(예를 들어, 송신 스트림 인코더)(100)의 블록도이다. 도 5, 도 7, 및 도 9의 것들과 같은, 본 명세서에서 개시되는 이것 및 다른 로직 회로들은, 예를 들어, 당업자에게 공지된 바와 같은, 마이크로 프로세서 등의 적절한 프로세서, 또는 하드웨어, 소프트웨어(예를 들어, 메모리에 저장되며, 컴퓨터 또는 마이크로 프로세서 상에서 실행되는 컴퓨터 명령들), 및 펌웨어의 임의의 적절한 조합에 의해 실행되는, 하드웨어 회로들(예를 들어, AND/OR 게이트들, 멀티플렉서들, 증폭기들 등), FPGA들, 펌웨어, 또는 소프트웨어의 레이아웃으로서 구현될 수 있다.
도 2 내지 도 3을 참조하면, 프로세싱이 시작되며, 동작 S110에서는, 데이터 소스(102)에 의해 제공되는 데이터 스트림(103)이 제 1 멀터플렉서(104)에 의해 수신되어, 심볼 인코더로 포워딩(forwarding)된다. 그 후에, 심볼 인코더(106)는 데이터 스트림(103)을 심볼들(예를 들어, 데이터 심볼들)(105)로 인코딩한다. 데이터 스트림(103)은, 예를 들어 비디오 소스 디바이스와 같은 데이터 소스(102)로부터 디스플레이 디바이스와 같은 수신(또는 싱크) 디바이스(200)로 송신되는 8-비트 바이트의 데이터를 포함할 수 있다.
몇몇 예들에서, 이 데이터 바이트들은 디스플레이 디바이스의 표시 패널 상에 표시될 이미지 데이터(image data)를 나타낼 수 있다. 이러한 데이터 심볼 인코딩은 데이터 스트림(103)으로부터 한번에 데이터 바이트들(예를 들어, 각 패킷에서의 8 또는 64 바이트)의 세트들(또는 패킷들) 상에서 수행될 수 있다. 데이터 스트림(103)으로부터의 데이터 바이트들의 각 패킷은, 송신 스트림(115)에 나중에 부가되는 데이터 심볼들(105)의 대응 패킷으로 인코딩된다.
몇몇 예들에서는, 심볼 인코더(106)는 8/10 인코더(입력으로서 8-비트 바이트들, 출력으로서 10-비트 심볼들)일 수 있으며, 데이터 스트림(103)의 각 바이트가 데이터 심볼들(105) 중의 하나로 표시되도록 하는, 10-비트 심볼들인 데이터 심볼들(105)을 생성할 수 있다. 이러한 인코딩은, 예를 들어, (실질적으로 1-비트와 동일한 수의 0-비트를 갖는) DC-밸런싱된 스트림들을 생성하고, 클럭 복구 또는 위상 복구를 수행하며, 또한 직렬 비트 스트림에서의 충분히 조밀한 전환(예를 들어, 0-비트에서 1-비트로의 전환들 또는 그 반대의 경우)을 보장하기 위해 바람직할 수 있다.
그러나, 이러한 데이터 바이트/심볼 크기들, 패킷 크기들, 및 인코딩/디코딩 기술들은 단지 예들일 뿐이며, 본 발명은 이에 한정되지 않는다. 설명의 편의를 위해, 비록, 8 비트 데이터 바이트, 10 비트 심볼, 및 표준 8/10 인코딩과 10/8 디코딩이 가정될 것이지만, 당업자에게 명백한 바와 같이, 상이한 데이터 바이트/심볼 크기들 및 그들의 대응 인코딩/디코딩 알고리즘들이 본 발명의 유사한 실시예들의 일부가 될 수도 있다. 데이터 스트림(103)에 더하여, 제 1 멀티플렉서(104)는, 송신 이전에 인코딩되는 메타데이터 및 보조 데이터(예를 들어, 오디오)를 포함하는 다른 입력 데이터를 수신할 수도 있다. 설명을 더욱 용이하게 하기 위해, 보조 데이터는 일반 입력 데이터와 다르게 취급되지 않을 것이며, 메타데이터만이 이제 설명될 에러 정정 코드 비트들, 바이트들, 및 심볼들인 것으로 가정될 것이다.
동작 S120에서, 제 1 패킷 식별자(108)는 심볼 인코더(106)의 출력으로부터 심볼들(105)을 수신하여, 심볼들(105)이 데이터 심볼들인 것으로 결정한다. 그 후에, 제 1 패킷 식별자(108)는, 동작 S130에서 수행되는 프로세스들이 완료되는 이후까지의 임시 저장을 위해, 데이터 버퍼(예를 들어, 데이터 스트림 그룹 버퍼)(112)로 데이터 심볼들을 포워딩한다. 몇몇 예들에서, 데이터 버퍼(112)는 실리콘-계 트랜지스터들, 및/또는 이와 유사한 것들을 포함하는 반도체 메모리일 수 있다.
동작 S120에서는, 심볼들(105)이 데이터 심볼들인 것으로 결정한 이후에, 제 1 패킷 식별자(108)는 또한, 포워드 에러 정정(forward error correction; FEC) 알고리즘을 사용하여 제 1 에러 정정 코드(error correcting code; ECC)들(107)로 데이터 심볼들(105)을 인코딩하는 에러 정정 코드(ECC) 인코더(110)로 심볼들을 포워딩한다.
제 1 ECC(107)는 리던던시(redundancy)(또는 패리티(parity)) 비트들 또는 바이트들의 세트를 포함한다. 설명의 편의를 위해, (제 1 ECC들(107)과 같은) ECC들은 바이트들로 설명될 수 있다. 몇몇 예들에서, 해밍 코드(또는 당업자에게 알려진 임의의 다른 적절한 코드)는 데이터 심볼들(105)을 위한 리던던시(패리티) 비트들(제 1 ECC)(107)을 생성하는데 사용될 수 있다. 해밍 코드는, 예를 들어, 송신 스트림(115) 내의 심볼들의 세트(예를 들어, 그룹 또는 패킷)에서 다수의 비트 에러들을 검출하거나 단일 비트 에러를 정정하기에 충분하거나, 또는 심볼들의 세트에서 다수의 비트 에러들을 검출하고 단일 비트 에러를 정정하기에 충분하거나, 또는 심볼들에서 다수의 비트 에러들을 정정하는데 충분한 패리티 비트들을 가질 수 있다.
ECC 인코더(110)는, 데이터 심볼들(105)의 각 패킷에 대한 제 1 ECC 처리를 수행하여, 그 프로세스에서 대응하는 제 1 ECC 바이트들의 그룹(107)을 생성할 수 있다. 충분한 수의 데이터 패킷들(예를 들어, ECC 생성의 효율성을 향상시키는 데이터 패킷들의 수)이 인코딩될 때까지, ECC 버퍼(114)는 제 1 ECC 바이트들의 그룹들(107)을 버퍼링(buffering)(예를 들어, 저장)할 수 있다.
몇몇 실시예들에서, 제 1 ECC들(107)은 추가 처리없이도(예를 들어, 제 1 ECC들(107)에 대한 추가 ECC 프로세스를 수행함 없이) (동작 S130에서) 심볼 인코더(106)로 전달될 수 있다. 다른 실시예들에서는, 제 1 ECC들(107)이 제 2 ECC 인코더(116)에 의해 데이터처럼 더 취급되고 처리됨으로써, 차례로 바이트들로 어셈블된 후에 심볼 인코더(106)에 의해 심볼들(111)로 인코딩되는, 제 2 ECC들(108)을 생성할 수도 있다. 제 2 ECC 프로세스를 수행하는 것은, ECC 심볼들에서의 단순 송신 에러들이 다수의 에러들로 컴파운딩(compounding)하는 것을 방지한다(예를 들어, 비트 에러들이 바이트 에러들로 전환되는 것을 방지).
몇몇 예들에서, 제 2 ECC들(109)은 제 1 ECC 인코더(110)에게 다시 제 1 ECC들(107)을 공급함으로써 생성될 수 있다. 즉, 제 2 ECC 인코더(116)는 제 1 ECC 인코더(110)와 동일한 것일 수 있다. 당업자에게 명백한 바와 같이, 이 프로세는 상위 레벨들로 더 확장될 수 있다(즉, 제 1 ECC 인코더(110) 또는 다른 ECC 인코더들을 통해 더 많이 전달).
다른 예들에서는, 제 2(예를 들어, 더 높은 복잡성) ECC 인코더(116)가 제 1 ECC 인코더(110)의 것보다 높은 복잡성을 갖는 FEC 알고리즘을 적용할 수 있다. 예를 들어, 제 2 ECC 인코더는 리드-솔로몬(reed-solomon) 또는 저-밀도 패리티 체크(Low-Density Parity-Check; LDPC)와 같은 바이트-레벨 ECC 인코딩을 적용할 수 있다.
또한, 동작 S120에서, ECC 패킷 포맷터(118)는 (예를 들어, 메타데이터 패킷들에서) 바이트들의 그룹들로 ECC들(즉, 버퍼링된 제 1 ECC들(107) 또는 제 2 ECC들(109))을 어셈블하고, 그 패킷들을 제 1 멀티플렉서(104)로 포워딩한다.
동작 S130에서, 심볼 인코더(106)는, 제 1 멀티플렉서(104)로부터 어셈블된 ECC들(즉, 어셈블된 제 1 ECC들(107) 또는 제 2 ECC들(109))을 수신하여, 데이터 심볼들(105)과 동일한 인코딩 방식을 이용하여 송신 스트림(115)에서 데이터 심볼들(105)을 이후에 수반하는 ECC 심볼들(예를 들어, 패리티 심복들)(111)로, 이것들을 인코딩한다. 그 후에, 제 1 패킷 식별자(108)는 ECC 심볼들(111)이 ECC 패킷들인 것으로 결정하여, 버퍼링된 데이터 심볼들(105)과 병합하기 위해 제 2 멀티플렉서(결합기 또는 병합기)(120)로, 이것들을 포워딩한다(동작 S140).
동작 S140에서, 제 2 멀티플렉서(120)는 버퍼링된 데이터 심볼들(105)과 ECC 심볼들(111)을 병합하여, 송신 스트림(115)을 형성한다. 몇몇 실시예들에 따르면, 제 2 멀티플렉서(120)는, 버퍼링된 데이터 심볼들(105) 앞의 시간에 ECC 심볼들(111)을 배치함으로써, ECC 심볼들(111)이 버퍼링된 데이터 심볼들(105) 이전에 송신되도록 한다.
따라서, ECC(패리티) 심볼들의 그룹들(111)은 그들의 대응하는 데이터 심볼들의 패킷들(105)과 동일한 송신 스트림(115)에서 반송된다. 이 두 가지 타입의 심볼들은, 예를 들어, 심볼 스트림에서의 위치, 또는 메타데이터 식별자들 등에 기초하여 구별될 수가 있다. 몇몇 예들에서, 제 2 멀티플렉서(120)는 제어 코드들로 ECC 심볼들을 더 프레이밍(framing)할 수 있다.
동작 S150에서, 직렬화기(122)는 송신 스트림(115)을 직렬화하고, 송신기(124)는 수신 디바이스(200)로 그 직렬화된 송신 스트림을 송신한다. 몇몇 예들에서, 송신 스트림(115)은 수신 디바이스(200)로 설정 또는 미리 결정된 송신률(예를 들어, 고속 직렬 링크)로 한번에 하나의 비트로 전송될 수 있다. 몇몇 실시예들에서는, ECC 심볼들의 패킷들(111)이 먼저 전송되고, 그 다음에 그들의 대응하는 데이터 심볼들의 그룹들(105)이 전송될 수 있다. 제어 심볼들을 사용하여, 예를 들어, ECC 심볼들의 그룹들(111)로부터 데이터 심볼들의 패킷들을 분리할 수가 있다. 몇몇 예들에서, 송신기(124)는 통신 링크(300)를 통한 송신을 위해 디지털 비트들을 전자 신호(예를 들면, 차동 신호)로 변환하기 위한 (단일-종단 또는 차동 출력을 갖는) 디지털/아날로그 회로일 수 있다.
도 4는 본 발명의 몇몇 예시적인 실시예들에 따른 심볼 인코딩된 송신 스트림에서 ECC 코드들을 수신하는 방법의 흐름도(S200)이다. 도 5는 도 4의 실시예들과 같은, 본 발명의 몇몇 예시적인 실시예들에 따른 소스 디바이스(예를 들어, 송신 스트림 디코더)(200)의 블록도이다.
동작 S210에서, 수신기(202)는 소스 디바이스로부터 송신 스트림(115')을 수신하며, 여기서 ECC 심볼들은 대응하는 심볼들 이전에 전송(및 수신)된다. 그 후에, 역-직렬화기(204)가, 송신 스트림(115')을 구성하는 ECC 심볼들 및 (비추출된) 데이터 심볼들로, 그 수신된 송신 스트림(115')을 역-직렬화한다. 몇몇 예들에서, 수신기(202)는 통신 링크(300)를 통해 송신되는 전자 신호(예를 들어, 차동 신호)를 디지털 비트들로 변환하기 위한 (단일 또는 차동 입력을 갖는) 디지털/아날로그 회로일 수 있다.
동작 S220에서, 제 2 패킷 식별자(206)는 수신된 송신 스트림(115')으로부터 ECC 심볼들(111')을 식별 및 추출(예를 들어, 분리 또는 격리)하고, 이 식별된 ECC 심볼들(111')을 심볼 디코더(208)로 포워딩한다. 소스 디바이스(100)와 유사하게, ECC 심볼들(111')은, 예를 들어, 심볼 스트림에서의 위치, 또는 메타데이터 식별자들, 제어 코드들 등에 기초하여 식별될 수 있다. 따라서, 이 추출 프로세스는 실질적으로 소스 디바이스(100)에서 프로세스를 어셈블하는 스트림의 역이다.
동작 S230에서, 심볼 디코더(208)는 심볼 인코더(106)에 의해 사용되는 인코딩 알고리즘에 대응하는 알고리즘(예를 들어, 10/8 디코딩 알고리즘)을 사용하여 이 식별된 ECC 심볼들(111')을 디코딩함으로써, (전술한 제 1 ECC 및 제 2 ECC와 같은) 대응하는 ECC(패리티) 바이트들을 생성한다. 또한, 만약 존재한다면, 소스 디바이스(100)에서 제 1 ECC 바이트들(107)을 보호하기 위해 (예를 들어, 제 2 ECC 인코더(116)에 의해) 사용되는 제 2 ECC 기술에 따라, ECC 디코더(210)에 의해 대응하는 에러 정정이 디코딩된 ECC 바이트들에 대해 수행됨으로써, 정정된 제 1 ECC들을 생성할 수가 있다. 예를 들어, 리드-솔로몬을 사용하여 제 1 ECC 바이트들(107)을 보호하는 경우에는, ECC 디코더(210)가 리드-솔로몬 에러 정정 로직을 사용할 수 있다(예를 들어, 디코딩된 제 2 ECC는 디코딩된 제 1 ECC에서 에러들을 정정하는데 사용될 수 있음).
동작 S230에서, ECC 패킷 추출기(212)는 정정된 제 1 ECC들 내의 메타데이터 패킷들로부터 제 1 ECC들(107)을 추출하여, 내향(incoming) 송신 스트림(115')의 데이터 심볼들이 수신되거나 추출될때까지의 임시 저장을 위해, 이 추출된 제 1 ECC들(107)을 ECC 버퍼(214)로 포워딩한다. 몇몇 예들에서, ECC 버퍼(214)는 실리콘-계 트랜지스터들, 및/또는 이와 유사한 것들을 포함하는 반도체 메모리일 수 있다.
동작 S240에서, 제 2 패킷 식별자(206)는 수신된 송신 스트림(115')으로부터 데이터 심볼들(105')을 식별 및 추출(예를 들어, 분리 또는 격리)하고, 이 식별된 데이터 심볼들(105')을 제 1 ECC 디코더(216)로 포워딩한다.
동작 250에서, 제 1 ECC 디코더(216)는 디코딩 알로리즘을 사용하여, 버퍼링(및 정정)된 제 1 ECC들에 기초하여, 추출된 데이터 심볼들(105')에서 비트 에러들을 정정한다. 이 디코딩 알고리즘은, 대응하는 데이터 바이트들을 생성하기 위해, 제 1 ECC 인코더(110)에 의해 사용되는 인코딩 알고리즘(예를 들어, 해밍 알고리즘)에 대응할 수 있다. 송신 스트림(115')의 데이터 심볼들에 앞서는 ECC들의 추출은 디코딩 이전에 데이터 심볼들을 버퍼링할 필요성을 제거하게 되며, 이것은 수신기 디바이스(200)의 메모리 요구 조건들을 감소시키며, 싱크 디바이스(100)에서 보다 수신기(200)에서, (메모리가 덜 효율적으로 구현될 수 있기 때문에, 즉, 더 많은 비용이 들기 때문에) 더욱 효율적인 수신기-측 구현을 가능하게 한다.
동작 S260에서는, 정정된 데이터 심볼들(105')이 심볼 디코더(208)(또는 상이한 심볼 디코더)로 송신됨으로써, 이 정정된 데이터 심볼들(105')로부터 데이터 스트림(103)을 복구하게 된다. 심볼 디코더(208)에 의해 사용되는 디코딩 알고리즘은, 대응하는 데이터 스트림(103)을 생성하기 위해 심볼 인코더(106)에 의해 사용되는 인코딩 알고리즘에 대응한다(예를 들어, 10/8 디코딩 알고리즘).
전술한 바와 같이, 몇몇 실시예들에서, ECC는 데이터 심볼들에 유사한 심볼들로서 송신 스트림에서 반송되며, 이 ECC는 스트림 메타데이터 패킷들에서 임베디드되어, 송신 인코딩 기능(예를 들어, 데이터 심볼들을 생성하는데 사용되는 것과 동일한 송신 인코딩 기능)을 통해 전송됨으로써, 전체 송신 스트림을 통해 일관된 인코딩 및 디코딩을 유지한다.
도 6은 본 발명의 몇몇 예시적인 실시예들에 따른 심볼 인코딩된 송신 스트림에서 ECC들을 송신하는 방법의 흐름도 S101이다. 도 7은, 도 6의 실시예들과 같은, 본 발명의 몇몇 예시적인 실시예들에 따른 소스 디바이스(예를 들어, 송신 스트림 인코더)(100-1)의 블록도이다. 도 6 및 도 7의 실시예(들)의 일부는 전술한 도 2 및 도 3의 실시예(들)의 대응하는 부분들과 동일하거나 유사할 수 있다. 따라서, 이러한 부분들의 설명은 반복되지 않을 수도 있다.
도 6 및 도 7을 참조하면, 프로세싱이 시작되고, 동작 S111에서는, 데이터 소스(102)가 심볼 인코더(106)에 데이터 스트림(103)을 공급하여, 데이터 심볼들(105)로 인코딩된다. 몇몇 예들에서, 데이터 스트림(103)으로부터의 데이터 바이트들의 패킷들은, 심볼 인코더(106)와 같은 8/10 인코더를 사용하여 대응하는 데이터 심볼들의 패킷들(105)로 인코딩될 수 있다. 동작 S131에서 수행되는 프로세스들이 완료되는 이후까지, 심볼 인코더(106)는 임시 저장을 위해 데이터 버퍼(예를 들어, 데이터 스트림 그룹 버퍼)(112)로 데이터 심볼들(105)을 송신한다.
동작 S121에서, ECC 인코더(110)는 데이터 심볼들(105)을 인코딩하여, 데이터 심볼들(105)에 대한 ECC들(107)(예를 들어, 패리티 비트들 또는 바이트들)을 생성한다. 몇몇 예들에서는, 해밍 코드 알고리즘을 사용하여 데이터 심볼들(105)에 대한 ECC들(107)을 생성할 수가 있다. 데이터 심볼들(105)의 각 패킷은 대응하는 ECC들의 그룹(107)을 생성하는데 사용될 수 있다. 해밍 코드는, 예를 들어, 송신 스트림(133) 내의 심볼들 및 ECC들의 세트에서 다수의 비트 에러들을 검출하거나 단일 비트 에러를 정정하는데 충분하거나, 또는 심볼들 및 ECC들의 세트에서 다수의 비트 에러들을 검출하고 단일 비트 에러를 정정하는데 충분하거나, 또는 심볼들 및 ECC들에서 다수의 비트 에러들을 정정하는데 충분한 패리티 비트들을 가질 수 있다.
동작 S131에서는, 런(run) 길이 검출기(130)가 이 생성된 ECC들(107)을 버퍼링하고 평가한다. 예를 들어, 도 6 내지 도 7의 실시예들에서, (예를 들어, 도 2 내지 도 3를 참조하여 전술한 바와 같이) ECC 바이트들을 인코딩하는 몇몇 복잡성을 회피하기 위해, ECC들(107)은 인코딩을 거치치 않고 송신 스트림(133)에 부가될 수도 있다. 이로 인해, 예를 들어, 송신 스트림에서의 단일 비트 에러들이, 수신 ECC 바이트들에서 다수의 비트 에러들을 생성하는 것을 방지할 수가 있다. 그러나, 인코딩하지 않는 경우, ECC들(107)은, 송신 스트림(133)의 전송 프로토콜들을 만족시키는 적절한 형태가 되지 못할 될 수도 있다(예를 들어, ECC들(107)은, DC 밸런싱과 관련된 규칙들 또는 지침들에 어긋나거나, 또는 충분한 수의 0-비트와 1-비트 간의 전환들 또는 그 반대의 경우들을 갖지 못하게 될 수 있음).
따라서, 런 길이 검출기(130) 및 결정 블록(132)이 이 생성된 ECC들(107)을 측정할 수가 있고, ECC들(107)이 몇몇 설정 또는 미리 결정된 기준에 도달한 경우, 런 길이 검출기(130)는 ECC들(107)에 대한 추가 버퍼링을 중지할 수 있으며, 대신에 이 생성된 ECC들(107)을 제 2 멀티플렉서(120)로 전송할 수 있다. 설정 또는 미리 결정된 기준은, 특정 길이에 도달하는 것, 충분한 DC 밸런스로 존재하지 않는 것, 또는 추가적인 증가를 보장하기에 충분한 전환들을 갖지 않는 것(즉, ECC들에서의 전환들의 수가 미리 설정된 값 이하로 되는 것)을 포함할 수 있다. 몇몇 예들에서, 전술한 기준은 USB 3.1 등과 같은 통신 표준에 따라 설정될 수 있다. 몇몇 예들에서는, 프레이머(framer)(134)가 제어 심볼들로 ECC들(107)을 프레이밍함으로써, 프레이밍된 ECC들(131)을 생성할 수가 있으며, 나중에 이것은 그것의 대응하는 데이터 패킷들 이전에 멀티플렉서(120)에 의해서 송신 스트림(133) 내에 삽입된다(동작 S141).
동작 S141에서는, 제 2 멀티플렉서(120)가 버퍼링된 데이터 심볼들(105) 및 프레이밍된 ECC들(131)을 송신 스트림(133)으로 병합하며, 이것은 직렬화기(122)에 의해 직렬화되어, 송신기(124)에 의해, 동작 S151에서, 수신(또는 싱크) 디바이스(200-1)로 송신된다. 예를 들어, 송신 스트림(133)은, 직렬화기(122)를 거친 이후에 수신 디바이스(200-1)로, (예를 들어, 고속 직렬 링크를 통해) 설정 또는 미리 결정된 송신률로 한번에 하나의 비트로 전송될 수 있다. 몇몇 실시예들에서, 프레임 ECC들(131)은 대응하는 데이터 심볼들의 패킷들 이전에, 전송될 수 있다.
도 8은 본 발명의 몇몇 예시적인 실시예들에 따른 심볼 인코딩된 송신 스트림에서 수신하는 ECC들의 방법의 흐름도(S201)이다. 도 9는 도 8의 실시예들과 같은, 본 발명의 몇몇 예시적인 실시예들에 따른 수신 디바이스(예를 들어, 송신 스트림 디코더)(200-1)의 블록도이다. 도 8 및 도 9의 실시예(들)의 일부는 전술한 도 4 및 도 5의 실시예(들)의 대응하는 부분들과 동일하거나 유사할 수 있다. 따라서, 이러한 부분들은 반복되지 않을 수도 있다.
동작 S211에서는, 수신기(202)가 통신 링크(300)를 통해 소스 디바이스(100-1)로부터 송신 스트림(133')을 수신하고, 역-직렬화기(204)가 수신 디바이스(200-1)로 전송되는 송신 스트림(133)을 구성하는 (비추출된) 데이터 심볼들 및 ECC 바이트들로, 이 수신된 송신 스트림(133')을 역-직렬화한다.
동작 S221에서, 패킷 식별자(206)는 수신된 송신 스트림(133')으로부터 프레이밍된 ECC들(131')을 식별 및 추출하고, 프레임 제거를 위해 디-프레이머(234)로, 이 추출된 프레이밍된 ECC들(131')을 송신한다. ECC들(107)이, 런 길이 검출기(130)에 의해 프레이밍되고 송신 스트림(133)(예를 들어, ECC 바이트들을 식별하거나 프레이밍하는데 사용되는 제어 심볼들) 내에 프레이밍된 ECC들(131)로서 삽입되는 방식에 따르면, 동작 S231에서, 이 프레이밍된 ECC들(131')의 디-프레이밍은, 이러한 프로세스를 반대로 적용하여 데이터 스트림을 나타내는 데이터 심볼들(105')로부터 ECC들(107')을 분리해 낸다. 그 후에, ECC들(107')이 ECC 버퍼(214)에서 버퍼링된다.
동작 S241에서, 패킷 식별자(206)는 송신 스트림(133')의 수신된 데이터 심볼들(105')을 식별하여, 바이트 정정을 위해 제 1 ECC 디코더(216)로, 이것들을 포워딩한다.
동작 S251에서, 제 1 ECC 디코더(216)는 버퍼링된 ECC들(107')을 사용하여 데이터 스트림을 구성하는 정정된 데이터 심볼들(105)을 복구한다. 제 1 ECC 디코더(216)는, 소스 디바이스(100-1)에서 ECC들(107)을 생성하는데 사용되는 (예를 들어, 역방향의) FEC 알고리즘(예를 들어, 해밍 코드)에 대응하는 디코딩 알고리즘을 사용할 수 있다. 또한, 동일한 처리를 사용하여, 송신된 ECC 바이트들에서 비트 에러들을 동시에 정정할 수도 있다. 예를 들어, 해밍 코드는 동일한 ECC 처리의 부분으로서 데이터 심볼들(105') 및 이것들의 대응하는 (인코딩되지 않은) ECC 바이트들(107')에서 (송신) 에러들을 검출하여 정정할 수 있다.
동작 S261에서, 복구된(정정된) 데이터 심볼들(105)은, 심볼 인코더(110)에 의해 수행되는 인코딩을 푸는 심볼 디코더(208)에 의해 디코딩되어, 데이터 스트림(103)을 복구하게 되며, 이것은 그 후에 데이터 싱크(예를 들어, 디스플레이 디바이스와 같은 싱크 디바이스)에 공급될 수 있다. 예를 들어, 8/10 인코더가 데이터 심볼들(105)로 데이터 스트림(103)을 인코딩하기 위한 심볼 인코더(110)로서 사용되는 경우에는, 이 10/8 디코더는 수신된 송신 스트림에서 복구된(정정된) 데이터 심볼들(105)을 디코딩하는데 사용될 수도 있다.
본 발명의 실시예들에 따르면, 에러 정정을 수행하면서, 인코딩된 송신 스트림 이전에 ECC들을 송신함으로써, 수신기에서의 버퍼가 ECC들만을 저장할 수가 있으며, 송신 스트림은 저장하지 않을 수 있다. 이로 인하여, 수신기에서의 버퍼 메모리의 크기가 감소되고, 결과적으로, 수신기의 크기 및 복잡성, 그리고 전체 시스템 비용이 감소된다.
"제 1", "제 2", "제 3" 등이 본 명세서에 사용되어 다양한 구성요소들, 성분들, 영역들, 층들 및/또는 섹션들을 설명하고 있지만, 이러한 구성요소들, 성분들, 영역들, 층들 및/또는 섹션들이 이들 용어에 의해 한정되어서는 안된다는 것을 이해할 것이다. 이러한 용어들은 하나의 구성요소, 성분, 영역, 층 또는 섹션을 다른 구성요소, 성분, 영역, 층 또는 섹션과 구별하기 위해 사용된다. 따라서, 후술하는 제 1 구성요소, 성분, 영역, 층 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않는 범위 내에서, 제 2 구성요소, 성분, 영역, 층 또는 섹션을 지칭할 수도 있다.
본 명세서에서 사용되는 용어는 특정 실시예를 설명하기 위해 사용된 것으로, 본 발명의 개념을 한정하려는 의도가 아니다. 본 명세서에서 사용된 바와 같은, 명사의 단수 형태들은, 문맥이 달리 명시적으로 표시하지 않은 이상, 그 명사의 복수의 형태들도 포함하는 것으로 의도된다. 용어들 "포함한다", "포함하는", "구성된다", 및/또는 "구성되는"은, 본 명세서에서 사용되는 때에, 진술된 특징들, 정수들, 단계들, 동작들, 구성요소들, 및/또는 성분들의 존재를 명시하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 구성요소들, 성분들, 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다는 것이 또한 이해될 것이다. 본 명세서에서 사용되는 바와 같은, 용어 "및/또는"은 연관된 열거 항목들 중 하나 이상의 것들의 임의의 그리고 모든 조합들을 포함한다. 구성요소들의 리스트 앞에 올 때에, "적어도 하나"와 같은 표현들은 이 리스트의 전체 구성요소들을 수식하는 것이며, 이 리스트의 개별 구성요소들을 수식하는 것이 아니다. 또한, 본 발명인 개념의 실시예들을 기술할 때에 "할 수 있다"의 사용은 "본 발명인 개념의 하나 이상의 실시예들"을 지칭하는 것이다. 또한, 용어 "예시적인"은 예 또는 예시사항을 지칭하는 것으로 의도된다.
구성요소 또는 층이 다른 구성요소 또는 층 "위에" 있는, "연결되는", "결합되는", 또는 "인접해 있는" 것으로 지칭될 경우, 그 구성요소 또는 층은 다른 구성요소 또는 층 위에 직접 있거나, 연결되거나, 결합되거나, 인접해 있을 수 있는 것일 수 있으며, 또는 하나 이상의 중간에 개입하는 구성요소들 또는 층들이 존재할 수도 있다는 것이 이해될 것이다. 구성요소 또는 층이 다른 구성요소 또는 층 "바로 위에" 있는, "직접 연결되는", "직접 결합되는" 또는 "바로 인접해 있는" 것으로 지칭될 경우에는, 구성요소들 또는 층들 간에 개입된 것들이 존재하지 않는다.
본 명세서에서 사용되는 바와 같은, 용어들 "실질적으로", "약" 및 이와 유사한 용어들은 근사화의 용어들로서 사용되고, 정도의 용어들로서는 사용되지 않으며, 당업자에게 인식될 수 있는 측정된 또는 계산된 값들에서의 고유한 편차들을 감안하는 것으로 의도된다.
본 명세서에서 사용되는, 용어들 "사용한다", "사용하는", 및 "사용된"은 각기 용어들 "이용한다", "이용하는" 및 "이용된"과 동의어로서 고려될 수 있다.
본 발명이 특정한 예시적인 실시예와 관련하여 설명되었지만, 이 개시된 실시예들로 본 발명이 한정되는 것은 아니며, 반대로, 첨부된 청구항들의 사상 및 범위 그리고 그 균등물들 내에 포함되는 균등 범위들과 각종 변형들을 포함하는 것으로 의도된다는 것을 이해하여야 한다.

Claims (20)

  1. 송신 스트림에서 에러 정정 코드(error correction code; ECC)들을 전송하는 방법으로서,
    프로세서에 의해, 데이터 소스로부터의 데이터 스트림을 데이터 심볼(data symbol)들로 인코딩하는 단계;
    상기 프로세서에 의해, 상기 데이터 심볼들로부터 제 1 ECC들을 생성하는 단계;
    상기 프로세서에 의해, 상기 제 1 ECC들을 제 1 에러 정정 코드(ECC) 심볼들로 인코딩하는 단계;
    상기 프로세서에 의해, 상기 데이터 심볼들 및 상기 제 1 ECC 심볼들을 상기 송신 스트림으로 병합(merging)하는 단계로서, 상기 제 1 ECC 심볼들은 상기 데이터 심볼들 이전에 상기 송신 스트림으로 병합되는, 상기 병합하는 단계; 및
    상기 프로세서에 의해, 상기 병합된 송신 스트림을 통신 링크를 통해 싱크 디바이스(sink device)로 송신하는 단계로서, 상기 제 1 ECC 심볼들은 상기 데이터 심볼들 이전에 송신되는, 상기 송신하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 데이터 스트림을 데이터 심볼들로 인코딩하는 단계 및 상기 제 1 ECC들을 제 1 ECC 심볼들로 인코딩하는 단계는 동일한 인코딩 기술로 구성되는, 방법.
  3. 제 1 항에 있어서,
    상기 프로세서에 의해, 상기 제 1 ECC들로부터 제 2 ECC들을 생성하는 단계; 및
    상기 프로세서에 의해, 상기 제 2 ECC들을 제 2 ECC 심볼들로 인코딩하는 단계를 더 포함하며,
    상기 데이터 심볼들 및 상기 제 1 ECC 심볼들을 병합하는 것은, 상기 프로세서에 의해, 상기 제 2 ECC 심볼들을 상기 송신 스트림으로 병합하는 것을 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 제 1 ECC들을 인코딩하는 것은, 상기 프로세서에 의해, 상기 송신 스트림 내로, 상기 제 1 ECC 심볼들 이전에 제 1 제어 심볼을 삽입(inserting)하고, 또한 상기 제 1 ECC 심볼들과 상기 데이터 심볼들 사이에 제 2 제어 심볼을 삽입하는 것을 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 병합된 송신 스트림을 송신하는 것은,
    상기 프로세서에 의해, 상기 병합된 송신 스트림을 직렬화하는 것; 및
    상기 프로세서에 의해, 직렬 데이터 링크를 통하여 상기 직렬화된 송신 스트림을 상기 싱크 디바이스로 송신하는 것을 포함하는, 방법.
  6. 제 1 항에 있어서,
    상기 프로세서에 의해, 데이터 스트림 버퍼에서 상기 데이터 심볼을 버퍼링하는 단계를 더 포함하는, 방법.
  7. 전송 에러 정정 코드(ECC)들을 포함하는 송신 스트림으로부터 데이터 스트림을 추출해 내는 방법으로서,
    싱크 디바이스의 프로세서에 의해, 통신 링크를 통해 소스 디바이스로부터 상기 송신 스트림을 수신하는 단계;
    상기 프로세서에 의해, 상기 수신된 송신 스트림으로부터 에러 정정 코드(ECC) 심볼들을 추출해 내는 단계;
    상기 프로세서에 의해, 상기 ECC 심볼들을 상기 제 1 ECC들로 디코딩하는 단계;
    상기 프로세서에 의해, 상기 제 1 ECC들을 버퍼링하는 단계;
    상기 프로세서에 의해, 상기 송신 스트림으로부터 데이터 심볼들을 추출해 내는 단계;
    상기 프로세서에 의해, 상기 버퍼링된 제 1 ECC들을 가지고 상기 데이터 심볼들에서 에러들을 정정하는 단계; 및
    상기 프로세서에 의해, 상기 싱크 디바이스에 의한 출력을 위하여, 상기 정정된 데이터 심볼들을 데이터 스트림으로 디코딩하는 단계를 포함하는, 방법.
  8. 제 7 항에 있어서,
    상기 ECC 심볼들을 상기 제 1 ECC들로 디코딩하는 단계 및 상기 정정된 데이터 심볼들을 데이터 스트림으로 디코딩하는 단계는 동일한 디코딩 기술로 구성되는, 방법.
  9. 제 7 항에 있어서,
    상기 제 1 ECC 심볼들을 디코딩하는 것은,
    상기 프로세서에 의해, 상기 ECC 심볼들을 제 2 ECC들로 디코딩하는 것; 및
    상기 프로세서에 의해, 상기 제 2 ECC들을 가지고 상기 제 1 ECC들에서 에러들을 정정하는 것을 포함하며,
    상기 제 1 ECC들을 버퍼링하는 것은, 상기 프로세서에 의해, 상기 정정된 제 1 ECC들을 버퍼링하는 것을 포함하고, 또한
    상기 데이터 심볼들에서 에러들을 정정하는 것은, 상기 프로세서에 의해, 상기 버퍼링되는 정정된 제 1 ECC들을 가지고 상기 데이터 심볼들에서 에러들을 정정하는 것을 포함하는, 방법.
  10. 제 7 항에 있어서,
    상기 ECC 심볼들을 추출해 내는 것은, 상기 프로세서에 의해, 상기 송신 스트림으로부터의 상기 데이터 심볼들과 제 1 ECC 심볼들 간의 제어 심볼을 식별하는 것을 포함하는, 방법.
  11. 제 7 항에 있어서,
    상기 송신 스트림을 수신하는 것은,
    상기 프로세서에 의해, 직렬 데이터 링크를 통해 상기 소스 디바이스로부터 상기 송신 스트림을 수신하는 것; 및
    상기 프로세서에 의해, 상기 수신된 송신 스트림을 역직렬화(de-serializing)하는 것을 포함하는, 방법.
  12. 송신 스트림에서 에러 정정 코드(ECC)들을 전송하는 방법으로서,
    소스 디바이스의 제 1 프로세서에 의해, 데이터 소스로부터의 데이터 스트림을 제 1 데이터 심볼들로 인코딩하는 단계;
    상기 제 1 프로세서에 의해, 상기 제 1 데이터 심볼들로부터의 ECC들을 생성하는 단계;
    상기 제 1 프로세서에 의해, 일 기준이 충족될 때까지 상기 소스 디바이스에서 상기 ECC들을 버퍼링하는 단계;
    상기 제 1 프로세서에 의해, 상기 제 1 데이터 심볼들 및 상기 버퍼링된 ECC들을 상기 송신 스트림으로 병합하는 단계로서, 상기 버퍼링된 ECC들은 상기 제 1 데이터 심볼들 이전에 상기 송신 스트림으로 병합되는, 상기 병합하는 단계;
    상기 제 1 프로세서에 의해, 상기 병합된 송신 스트림을 통신 링크를 통해 싱크 디바이스로 송신하는 단계로서, 상기 버퍼링된 ECC들은 상기 제 1 데이터 심볼들 이전에 송신되는, 상기 송신하는 단계;
    상기 싱크 디바이스의 제 2 프로세서에 의해, 상기 소스 디바이스로부터 수신되는 송신 스트림을 수신하는 단계;
    상기 제 2 프로세서에 의해, 상기 수신된 송신 스트림으로부터 상기 ECC들을 추출해 내는 단계;
    상기 제 2 프로세서에 의해, 상기 싱크 디바이스에서 상기 ECC들을 버퍼링하는 단계;
    상기 제 2 프로세서에 의해, 상기 수신된 송신 스트림으로부터 제 2 데이터 심볼들을 추출해 내는 단계;
    상기 제 2 프로세서에 의해, 상기 싱크 디바이스에서 상기 버퍼링된 ECC들을 가지고 상기 제 2 데이터 심볼들에서의 에러들을 정정하는 단계; 및
    상기 제 2 프로세서에 의해, 상기 싱크 디바이스에 의한 출력을 위해, 상기 정정된 제 2 데이터 심볼들을 정정된 데이터 스트림으로 디코딩하는 단계를 포함하는, 방법.
  13. 제 12 항에 있어서,
    상기 제 1 데이터 심볼들 및 상기 버퍼링된 ECC들을 병합하는 것은,
    상기 제 1 프로세서에 의해, 제어 심볼들을 가지고 상기 소스 디바이스에서 상기 버퍼링된 ECC들을 프레이밍(framing)하는 것; 및
    상기 제 1 프로세서에 의해, 상기 제 1 데이터 심볼들 및 상기 프레이밍된 ECC들을 상기 송신 스트림으로 병합하는 것을 포함하는, 방법.
  14. 제 13 항에 있어서,
    상기 버퍼링된 ECC들을 프레이밍하는 것은, 상기 제 1 프로세서에 의해, 상기 송신 스트림 내로, 상기 버퍼링된 ECC들 이전에 상기 제어 심볼들 중의 제 1 제어 심볼을 삽입하고, 또한 상기 버퍼링된 ECC들 이후에 상기 제어 심볼들 중의 제 2 제어 심볼을 삽입하는 것을 포함하는, 방법.
  15. 제 12 항에 있어서,
    상기 병합된 송신 스트림을 송신하는 것은,
    상기 제 1 프로세서에 의해, 상기 병합된 송신 스트림을 직렬화하는 것; 및
    상기 제 1 프로세서에 의해, 상기 직렬화된 송신 스트림을 직렬 데이터 링크를 통해 상기 싱크 디바이스로 송신하는 것을 포함하는, 방법.
  16. 제 12 항에 있어서,
    상기 제 1 프로세서에 의해, 데이터 스트림 버퍼에서 상기 제 1 데이터 심볼들을 버퍼링하는 단계를 더 포함하는, 방법.
  17. 제 12 항에 있어서,
    상기 기준은, 상기 ECC들이 미리 설정된 길이에 도달하는 것, 상기 ECC들이 충분한 DC 밸런스로 존재하지 않는 것, 및 상기 ECC들에서의 전환(transition)들의 수가 미리 설정된 값 미만으로 되는 것 중의 하나 이상을 포함하는, 방법.
  18. 제 12 항에 있어서,
    상기 수신된 송신 스트림으로부터 상기 ECC들을 추출해 내는 것은,
    상기 제 2 프로세서에 의해, 상기 수신된 송신 스트림으로부터 프레이밍된 ECC들을 추출해 내는 것; 및
    상기 제 2 프로세서에 의해, 상기 프레이밍된 ECC들 이전에 제 1 제어 심볼을 그리고 상기 상기 프레이밍된 ECC들 이후에 제 2 제어 심볼을 식별하여 제거함으로써, 상기 프레이밍된 ECC들을 상기 ECC들로 디프레이밍(deframing)하는 것을 포함하는, 방법.
  19. 송신 스트림에서 에러 정정 코드(ECC)들을 전송하는 방법으로서,
    심볼 인코더에 의해, 데이터 소스로부터의 데이터 스트림을 데이터 심볼들로 인코딩하는 단계;
    에러 정정 코드(ECC) 인코더에 의해, 상기 데이터 심볼들로부터 제 1 ECC들을 생성하는 단계;
    상기 심볼 인코더에 의해, 상기 제 1 ECC들을 제 1 에러 정정 코드(ECC) 심볼들로 인코딩하는 단계;
    멀티플렉서에 의해, 상기 데이터 심볼들 및 상기 제 1 ECC 심볼들을 상기 송신 스트림으로 병합하는 단계로서, 상기 제 1 ECC 심볼들은 상기 데이터 심볼들 이전에 상기 송신 스트림으로 병합되는, 상기 병합하는 단계; 및
    송신기에 의해, 상기 병합된 송신 스트림을 통신 링크를 통해 싱크 디바이스로 송신하는 단계로서, 상기 제 1 ECC 심볼들은 상기 데이터 심볼들 이전에 송신되는, 상기 송신하는 단계를 포함하는, 방법.
  20. 전송 에러 정정 코드(ECC)들을 포함하는 송신 스트림으로부터 데이터 스트림을 추출해 내는 방법으로서,
    수신기에 의해, 소스 디바이스로부터의 상기 송신 스트림을 통신 링크를 통해 수신하는 단계;
    프로세서에 의해, 상기 수신된 송신 스트림으로부터 에러 정정 코드(ECC) 심볼들을 추출해 내는 단계;
    심볼 디코더에 의해, 상기 ECC 심볼들을 제 1 ECC들로 디코딩하는 단계;
    버퍼 메모리에 의해, 상기 제 1 ECC들을 버퍼링하는 단계;
    상기 프로세서에 의해, 상기 송신 스트림으로부터 데이터 심볼들을 추출해 내는 단계;
    ECC 디코더에 의해, 상기 버퍼링된 제 1 ECC들을 가지고 상기 데이터 심볼들에서의 에러들을 정정하는 단계; 및
    상기 심볼 디코더에 의해, 상기 싱크 디바이스에 의한 출력을 위해, 상기 정정된 데이터 심볼들을 데이터 스트림으로 디코딩하는 단계를 포함하는, 방법.
KR1020150172542A 2014-12-04 2015-12-04 송신 스트림에서 에러 정정 코드들을 전송하는 방법 및 송신 스트림으로부터 데이터 스트림을 추출하는 방법 KR102510034B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462087772P 2014-12-04 2014-12-04
US62/087,772 2014-12-04
US14/952,797 US10432353B2 (en) 2014-12-04 2015-11-25 Memory-efficient methods of transporting error correction codes in a symbol encoded transmission stream
US14/952,797 2015-11-25

Publications (2)

Publication Number Publication Date
KR20160068690A true KR20160068690A (ko) 2016-06-15
KR102510034B1 KR102510034B1 (ko) 2023-03-14

Family

ID=54838190

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150172542A KR102510034B1 (ko) 2014-12-04 2015-12-04 송신 스트림에서 에러 정정 코드들을 전송하는 방법 및 송신 스트림으로부터 데이터 스트림을 추출하는 방법

Country Status (5)

Country Link
US (1) US10432353B2 (ko)
EP (1) EP3029842B1 (ko)
KR (1) KR102510034B1 (ko)
CN (1) CN105721102B (ko)
TW (1) TWI689180B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190076589A (ko) * 2017-12-22 2019-07-02 한국외국어대학교 연구산학협력단 플래시 메모리 컨트롤러의 에러 정정 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108958961B (zh) * 2017-05-22 2021-11-30 上海宝存信息科技有限公司 数据储存装置以及数据错误管理方法
US10686557B2 (en) * 2017-10-26 2020-06-16 L3 Technologies Inc. Enhanced decoding of coded sequences with structured data
KR20200019046A (ko) * 2018-08-13 2020-02-21 에스케이하이닉스 주식회사 에러 정정 회로 및 이의 동작 방법
KR102645140B1 (ko) * 2018-12-06 2024-03-07 삼성전자주식회사 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5311521A (en) * 1990-01-12 1994-05-10 Boris Fitingof Method and apparatus for implementing post-modulation error correction coding scheme
KR20070104914A (ko) * 2005-01-19 2007-10-29 콸콤 인코포레이티드 코드화 전송을 위한 전력 절약 방법

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11328879A (ja) 1998-05-19 1999-11-30 Sony Corp 誤り訂正装置および光ディスク再生装置
US6182264B1 (en) * 1998-05-22 2001-01-30 Vlsi Technology, Inc. Smart dynamic selection of error correction methods for DECT based data services
US6662334B1 (en) 1999-02-25 2003-12-09 Adaptec, Inc. Method and device for performing error correction on ECC data sectors
US6505320B1 (en) 2000-03-09 2003-01-07 Cirrus Logic, Incorporated Multiple-rate channel ENDEC in a commuted read/write channel for disk storage systems
JP3668673B2 (ja) 2000-06-09 2005-07-06 株式会社日立コミュニケーションテクノロジー エラー訂正符号の構成方法、復号方法、伝送装置、ネットワーク
JP3902763B2 (ja) 2001-03-30 2007-04-11 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データビットストリームをデコード及び変換する方法及び装置並びに信号及びレコードキャリア
US7389463B2 (en) 2001-05-29 2008-06-17 Thomson Licensing Hierarchical block coding for a packet-based communications system
US20020199153A1 (en) * 2001-06-22 2002-12-26 Fall Thomas G. Sampling method for use with bursty communication channels
US6941412B2 (en) 2002-08-29 2005-09-06 Sandisk Corporation Symbol frequency leveling in a storage system
US7174485B2 (en) 2003-11-21 2007-02-06 Seagate Technology Llc Reverse error correction coding with run length limited constraint
JP4260688B2 (ja) 2004-06-09 2009-04-30 富士通株式会社 データ送信装置、データ送受信システム、データ送信装置の制御方法およびデータ送受信システムの制御方法
US7660245B1 (en) 2004-09-16 2010-02-09 Qualcomm Incorporated FEC architecture for streaming services including symbol-based operations and packet tagging
US7590920B2 (en) * 2005-08-05 2009-09-15 Hitachi Global Storage Technologies Netherlands, B.V. Reduced complexity error correction encoding techniques
US7774672B2 (en) 2006-07-07 2010-08-10 Scientific-Atlanta, Llc Requesting additional forward error correction
CN100558028C (zh) * 2006-08-11 2009-11-04 华为技术有限公司 一种实现纠错的方法及系统以及一种实现纠错的接入设备
US20080098282A1 (en) 2006-10-20 2008-04-24 Kuo-Lung Chien High speed error correcting system
CN101174839A (zh) * 2006-10-30 2008-05-07 富士通株式会社 编码装置、解码装置、编码/解码装置及记录/再现装置
CN101267210B (zh) 2007-03-12 2011-01-05 华为技术有限公司 数据编译码和收发方法及装置
KR101253187B1 (ko) 2007-04-05 2013-04-10 엘지전자 주식회사 디지털 방송 시스템 및 데이터 처리 방법
US20090019306A1 (en) * 2007-07-11 2009-01-15 Herbert Hum Protecting tag information in a multi-level cache hierarchy
US8230316B2 (en) 2008-01-25 2012-07-24 Nevion Usa, Inc. Forward error correction for burst and random packet loss for real-time multi-media communication
CN101729194B (zh) 2008-11-03 2013-02-13 华为技术有限公司 数据编码、数据解码的方法、装置和系统
US8347199B2 (en) * 2009-01-21 2013-01-01 Cisco Technology, Inc. Enhanced error detection in multilink serdes channels
US8576704B2 (en) 2009-04-15 2013-11-05 Panasonic Corporation Communication system, communication device, integrated circuit, and communication method
CN101877620B (zh) * 2009-04-30 2013-08-14 华为技术有限公司 前向纠错方法、装置和系统
CN101714971B (zh) 2009-12-22 2012-06-06 北京邮电大学 无源光网络通信方法及系统、光网络单元和光线路终端
KR101690661B1 (ko) 2010-07-07 2016-12-28 에스케이텔레콤 주식회사 오류 정정의 병렬 처리를 위한 방송 신호 부호화 및 복호화 방법, 이를 위한 방송 신호 송수신 장치 및 이를 위한 시스템
US8443269B2 (en) 2010-11-04 2013-05-14 Himax Media Solutions, Inc. System and method for handling forward error correction code blocks in a receiver
JP5250061B2 (ja) 2011-01-07 2013-07-31 株式会社エヌ・ティ・ティ・ドコモ 通信制御方法、移動通信システム及び移動端末装置
CN103152126B (zh) 2012-04-06 2015-04-22 中国科学技术大学 基于前向纠错保护编码的数据封装方法和装置
US10185621B2 (en) 2013-05-20 2019-01-22 ATI Technologies ULD Method and apparatus for providing a display stream embedded with non-display data
US9819362B2 (en) * 2015-03-27 2017-11-14 Intel Corporation Apparatus and method for detecting and mitigating bit-line opens in flash memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5311521A (en) * 1990-01-12 1994-05-10 Boris Fitingof Method and apparatus for implementing post-modulation error correction coding scheme
KR20070104914A (ko) * 2005-01-19 2007-10-29 콸콤 인코포레이티드 코드화 전송을 위한 전력 절약 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190076589A (ko) * 2017-12-22 2019-07-02 한국외국어대학교 연구산학협력단 플래시 메모리 컨트롤러의 에러 정정 방법

Also Published As

Publication number Publication date
TWI689180B (zh) 2020-03-21
KR102510034B1 (ko) 2023-03-14
EP3029842A1 (en) 2016-06-08
US10432353B2 (en) 2019-10-01
TW201631921A (zh) 2016-09-01
EP3029842B1 (en) 2019-06-26
CN105721102A (zh) 2016-06-29
CN105721102B (zh) 2020-11-17
US20160164631A1 (en) 2016-06-09

Similar Documents

Publication Publication Date Title
US10997016B2 (en) Method of encoding data
KR101367015B1 (ko) 집적회로 간의 점 대 점 통신을 위한 물리적 인터페이스에서의 에러 검출
KR102510034B1 (ko) 송신 스트림에서 에러 정정 코드들을 전송하는 방법 및 송신 스트림으로부터 데이터 스트림을 추출하는 방법
TWI671628B (zh) 在已編碼符號之傳輸流中輸送前向錯誤校正碼之方法
US11296722B2 (en) Integrated physical coding sublayer and forward error correction in networking applications
JP5233165B2 (ja) データ伝送装置
TWI285310B (en) Method and apparatus for iterative hard-decision forward error correction decoding
AU2014227460B2 (en) Maximal transition hamming codes
KR101874537B1 (ko) 극 부호의 병렬 복호화 방법 및 장치
KR101777349B1 (ko) 비디오 스트림 송수신 방법 및 장치
US20190115935A1 (en) Forward Error Correction and Asymmetric Encoding for Video Data Transmission Over Multimedia Link

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant