KR20080080517A - 저밀도 패리티 체크 코딩된 신호를 디코딩하기 위한 장치및 방법 - Google Patents

저밀도 패리티 체크 코딩된 신호를 디코딩하기 위한 장치및 방법 Download PDF

Info

Publication number
KR20080080517A
KR20080080517A KR1020087013179A KR20087013179A KR20080080517A KR 20080080517 A KR20080080517 A KR 20080080517A KR 1020087013179 A KR1020087013179 A KR 1020087013179A KR 20087013179 A KR20087013179 A KR 20087013179A KR 20080080517 A KR20080080517 A KR 20080080517A
Authority
KR
South Korea
Prior art keywords
data
memory
block
processor
error correction
Prior art date
Application number
KR1020087013179A
Other languages
English (en)
Other versions
KR101196917B1 (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 KR20080080517A publication Critical patent/KR20080080517A/ko
Application granted granted Critical
Publication of KR101196917B1 publication Critical patent/KR101196917B1/ko

Links

Images

Classifications

    • 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/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions
    • 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/11Error 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 using multiple parity bits
    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

본 개시된 실시예들은 수신기에서, 저밀도 패리티 체크 에러 정정을 이용하는 신호 등의 신호를 디코딩하기 위한 장치 및 방법에 관련된다. 본 장치는 링크 회로(100)를 포함한다. 링크 회로(100)는 제1 메모리(302), 제1 및 제2 처리 블럭(306, 308)을 포함할 수 있으며, 또한 처리 블럭들(306) 중 하나에 진입하기 전에 데이터를 시프트시키기 위한 제1 시프트 회로(305)와, 처리 블럭(306)에서 나온 후 제1 시프트에 대한 역방향으로 시프트시키기 위한 제2 시프트 회로(309)를 포함한다. 링크 회로(100)는 또한, 중간 저장을 위해 이용되고 제1 및 제2 처리 블럭들(306, 308)에 의해 공유되는 제2 메모리(312)를 포함할 수 있다. 방법(400)은 메모리로부터 데이터를 판독하는 단계(402), 처리 전에 데이터를 시프트시키는 단계(404), 데이터를 처리하는 단계(406), 및 그 후 데이터를 메모리에 도로 기입하기 전에 역방향 시프트시키는 단계(408)를 포함한다.
에러 정정, 통신 수신기, 저밀도 패리티 체크 코드, 순방향 시프트, 역방향 시프트

Description

저밀도 패리티 체크 코딩된 신호를 디코딩하기 위한 장치 및 방법{APPARATUS AND METHOD FOR DECODING LOW DENSITY PARITY CHECK CODED SIGNALS}
본 발명은 일반적으로 통신 수신기에 관한 것이다. 보다 구체적으로는, 본 발명은 저밀도 패리티 체크 코딩과 같은 방법들을 이용하여 시스템 내에서 에러 정정 신호를 처리하는 것에 관한 것이다.
본 섹션은, 이하에 설명 및/또는 주장되는 본 발명의 다양한 양태들에 관련될 수도 있는 다양한 기술 양태들을 독자에게 소개하기 위한 것이다. 본 발명의 다양한 양태들에 대한 보다 나은 이해를 촉진시키기 위해 배경 정보를 독자에게 제공하는 데에 있어서 본 설명은 도움이 될 것으로 여겨진다. 따라서, 이들 설명들은 이러한 면에서 읽혀져야 하며 종래 기술의 수용으로서 받아들이면 않됨을 알아야 한다.
대부분의 사람들이 알고 있는 바와 같이, 위성 텔레비전 시스템은 지난 수 년 동안 더욱 널리 보급되었다. 사실상, 1994년에 디지털 위성 텔레비전이 도입된 이후로, 1200만 이상의 미국 가정들이 위성 TV 가입자가 되었다. 이들 가입자들의 대부분은, 위성 접시가 비교적 용이하게 설치 및 연결되는 싱글-페밀리(single-family) 가정에 산다. 예를 들면, 이 위성 접시는 집의 지붕에 설치될 수 있다. 이러한 성장을 지속하기 위해, 고객은 종종 매년 서비스로부터 더 많은 것을 기대한다. 이에 따라 서비스 제공자들은 끊임없이, 레코딩, 멀티-룸(multi-room) 오퍼레이션, 및 대량 고품질의 콘텐트 등과 같은 새로운 특성들을 고려하고 있으며 이에 따라 업그레이드 작업을 행한다. 최근에는, 고화질 비디오 및 오디오 신호에 주목하고 있다.
고화질 신호는, 현재 위성 시스템에 제공되는 서비스들보다 더 큰 용량 또는 대역폭을 필요로 한다. 또한, 많은 고화질 서비스들이, 현재의 서비스에 추가적으로(현재의 서비스를 대체하는 것이 아님) 제공된다. 이들 새로운 서비스들을 제공하기 위해, 일부 서비스 제공자들은 자신의 시스템의 총 용량을 증가시키고 있다. 용량은, 이용가능한 트랜스폰더 또는 위성 채널의 수를 증가시키거나 사용되는 위성의 수를 증가시키는 것을 비롯하여 다수의 방식으로 증가될 수 있다. 위성 시스템에 대한 가장 큰 변화는 실제 통신 시스템 사양의 변화와 관련된다.
최근의 기술 진보로 인해, 위성 서비스 제공자들이, 통상 MPEG-4로 알려진 MPEG에 의해 생성되는 것과 같은 새로운 디코딩 알고리즘을 이용하는 것을 비롯한 다수의 방식으로 시스템 사양을 변경함으로써 용량을 증가시키는 것을 고려할 수 있게 되었다. 또한, DVB(digital video broadcast)(DVB-S2로 알려져 있음)에 대해 생성된 규격에서 찾을 수 있는, 8PSK(eight level phase shift keying)와 같은 보다 진보된 변조 포맷을 이용하는 것이 가능하다. DVB-S2 규격에서는 또한, 시스템 전체 용량을 더욱 증가시킬 수 있게 해주는, 저밀도 패리티 체크(LDPC : low density parity check) 코딩으로 알려진 새로운 에러 정정 시스템을 제공한다. 이 들 변화들이 통신 시스템에서의 용량을 증가시킬 수는 있지만, 이들은 또한 신호를 수신하는 데에 있어 동작 마진을 변경시키고 수신기 설계를 변경하게 만든다.
거의 모든 통신 시스템, 특히 전술한 위성 시스템과 같은 디지털 시스템들은 수신기 성능을 향상시키기 위해 소정의 형태의 에러 정정 방법을 이용한다. 이들 스킴은, 송신기와 수신기 중 하나, 또는 이들 양쪽 모두에서 수행되어야 하는 매우 복잡한 기능들을 포함할 수 있다. 전술한 바와 같이, 이러한 널리 퍼지고 있는 스킴중 하나가 LDPC 코딩이다.
LDPC 코딩은 데이터 스트림의 큰 세그먼트 내의 작은 섹션에 대해 패리티 비트들을 생성하고 이들 패리티 비트들을 데이터 스트림에 첨가하는 에러 정정 방법이다. 작업되는 데이터 스트림 세그먼트는 꽤 클 수 있으며(예를 들면, 64,800 비트), 패리티 비트들은 훨씬 더 작은 섹션들에 대해 생성될 수 있다(예를 들면, 하나의 그룹 내에서 3비트).
이 처리는 데이터 스트림의 세그먼트들에 대해 수행되지만, 데이터 스트림의 입력은 여전히 연속적이다. 입력되는 데이터 스트림은 통상적으로 디지털 형태의 비디오 또는 오디오 신호이며, 이에 따라 이 처리는 제한된 시간 내에 완료되어야 한다. 데이터 스트림 세그먼트의 처리에 할당되는 시간은 통상적으로 LDPC 프레임 시간으로 칭해진다. 또한, 패리티 그룹들이 중복될 수도 있는데, 여기서 하나의 비트는 두 개 이상의 패리티 그룹의 멤버일 수 있으며 이에 따라 데이터 비트의 패리티를 담당하는 두 개 이상의 패리티 비트를 가질 수도 있다. 이들 그룹들 및 패리티 비트들을 할당하는 방법은, 디코더, 특히 디코더에 대한 제어기가 패리티 체 크 프로세스를 적절하게 관리할 수 있도록 통상적으로 공지되어 있으며 사전결정된다.
LDPC 디코딩은 여러 개의 처리 복잡도 계층을 가질 수 있다. 첫 번째로, 매우 단순한 패리티 오퍼레이션이, 첨가된 패리티 비트들을 현재 포함하는 데이터 스트림에 대해 수행될 수 있다. 이 단순한 패리티 오퍼레이션은, 패리티 그룹의 패리티 및 관련 패리티 비트에 기초하는 전형적인 패리티 체크를 단순히 수행하는 것을 포함한다. 에러가 발견될 경우, 패리티 그룹 체크의 결과에 기초하여 에러가 정정될 수 있다. 그러나, 에러인 비트가 정확히 무엇인지 여전히 확정될 수 없을 수 있기 때문에 일부 에러들은 정정될 수 없는 채로 남아 있을 수 있다. 또한 에러 정정의 수행을 위해, 둘 이상의 패리티 그루핑에 동일한 데이터 비트가 종종 이용된다.
단순한 패리티 및 다중 그룹 패리티 양쪽 모두를 이용함에도 불구하고, 모든 에러들이 여전히 명확하게 정정되지 않을 수 있다. 또한, 패리티 그루핑의 속성으로 인해, 각 비트는 그 값에 대한 정보를 본질적일 뿐만 아니라 비본질적으로도 포함한다. 데이터 비트에 대한 본질적인 정보는, 실제 비트 값의 면에서 특징지워질 수 있으며, 패리티 정보를 이용하여 패리티 체크 오퍼레이션을 수행함으로써 얻어지는 지식을 포함한다. 비본질적인 정보는, 데이터 스트림 내의 다른 데이터 비트들(예를 들면, 처리 중인 현재 데이터 비트에 인접하는 데이터 비트들, 또는 패리티 그루핑 내의 다른 비트들)의 값에 기초하여, 그 비트의 값에 대해 결정될 수 있는 정보를 포함한다. 본질적인 정보 및 비본질적인 정보 양쪽 모두를 이용하는 것 은, 최종 정정 비트 값을 확인하기 위해 반복적인 프로세스에서 이들 양쪽 정보 요소들을 이용하는 것을 포함하는 보다 복잡한 정정 알고리즘을 필요로 한다.
LDPC 코딩을 위한 디코더는, 수신 데이터에서 에러를 제거하기 위해 수신 데이터에 대한 일련의 반복 처리를 수행한다. 이들 반복 처리는 두 가지 주요 단계들로 구성되어 있다. 그 첫 번째 단계는, 데이터가 메모리로부터 판독되어 소정의 알고리즘 오퍼레이션이 수행되는 체크 노드 계산이다. 그 후 그 결과는 메모리에 도로 기입된다. 이 첫 번째 오퍼레이션을 수행하는 회로는 체크 노드 처리 유닛(CPU)이다. 두 번째 단계는, 다른 데이터가 메모리로부터 판독되어 추가적인 산술 오퍼레이션이 수행되는 비트 노드 계산이다. 그 결과는 다시 메모리로 기입된다. 이 오퍼레이션을 수행하는 회로는 비트 노드 처리 유닛(BPU)으로 칭해진다. 이들 처리 유닛들 각각은, 처리 전력과, 중간(intermediate) 결과를 저장하기 위한 대규모의 로컬 레지스터 메모리 저장장치 양쪽 모두를 필요로 하는 복잡한 계산을 수행한다. 또한, 하나의 CPU 오퍼레이션의 결과는 다음의 BPU 오퍼레이션에 이용되며(그 반대도 마찬가지로 성립됨), 이에 따라 각각의 프로세서가 동일한 데이터 스트림 세그먼트에 대해 동작하며 한번에 오직 하나의 처리 블럭만이 동작할 수 있다.
LDPC 코드는, 이들 계산들 중 많은 계산들이, 입력되는 긴 데이터 스트림 세그먼트에 대해 병렬로 행해질 수 있도록 구성된다. 이러한 구현예 중 현재의 하나의 구현예는, 64,800 비트의 길이를 갖는 비트 스트림 세그먼트를 처리하는 360개의 병렬 계산 블럭 유닛들로 구성된다. 전술한 바와 같이, 이러한 유형의 알고리 즘을 이용하는 LDPC 디코더는 그 처리를 여러 번 반복할 것이 요구된다. 전형적으로, 디코더는, 입력되는 데이터에 대한 최종 에러 정정된 값들을 결정하기 위해 50번 이상 이들 처리를 반복한다. 전술한 바와 같이, CPU 오퍼레이션 및 BPU 오퍼레이션은 동시에 수행될 수 없는데, 그 이유는 BPU 오퍼레이션이, 이전의 CPU 오퍼레이션 동안에 행해진 변화들에 따라 달라질 수 있기 때문이다(그 반대 경우도 성립됨).
360개의 블럭들 각각은 서로 동일하거나 유사한 비트 연결을 갖고 있다. 이러한 유사성으로 인해 360개의 병렬 계산 유닛들을 수용할 수 있는 디코더 아키텍처가 허용되는 것이다. 데이터를 디코딩하기 위해, 계산 유닛들에 대한 360 피스(pieces)의 데이터를 획득하는 것을 담당하는 회로 블럭이 존재한다. 각 단계에서, 이 데이터는 메모리 내의 서로 다른 로케이션 세트로부터 나온다.
이러한 LDPC 코드들의 효율은 전술한 에러 정정 방법들을 능가할 수도 있지만, LDPC 코드에 필요한 디코더는 기존의 시스템보다 훨씬 크며 또한 그 처리 경로를 여러 번 반복할 것을 필요로 한다. 주어진 시간 프레임, 즉 LDPC 프레임 시간 내에 처리 경로를 통해 행해질 수 있는 반복 횟수에 의해 에러 정정 성능이 결정되고 제한된다. 메모리 할당 및 메모리 액세스 처리를 비롯한 구조적 제약 사항은 디코더의 성능에 전반적인 제한을 가할 수 있다.
LDPC 프레임 시간 내에 수행될 수 있는 반복 횟수를 증가시킴으로써 직접적으로 디코더 성능이 개선될 수 있다. 따라서, LDPC 프레임 시간 동안 수행될 수 있는 반복 횟수를 증가시키는 회로 아키텍처 및 방법이 요망된다. 마찬가지로, 사 이즈 및 전력 양쪽 모두를 감소시키고 또한 디코더 성능을 개선시키기 위해 디코더를 구성할 때, 메모리 등의 자원을 효율적으로 이용할 수 있는 것이 바람직하다.
<발명의 요약>
본 발명은 통신 수신기에서의 에러 정정 시스템에 대한 것이며, 또한 저밀도 패리티 체크 에러 정정 시스템과 같은 에러 정정 시스템을 동작시키기 위한 효율적인 장치 및 방법에 대한 것이다.
본 발명의 장치는 처리될 데이터를 저장하기 위한 메인 메모리, 두 개의 프로세서들 중 어떤 것이 데이터를 수신할 지를 선택하기 위한 스위치, 데이터에 대한 제1 처리를 수행하기 위한 제1 프로세서, 데이터에 대한 제2 처리를 수행하고 데이터의 재순서화를 용이하게 하기 위한 순방향 시프트 및 역방향 시프트 오퍼레이션을 행하는 제2 프로세서, 및 스위칭, 시프팅, 및 메모리 판독 및 기입 기능을 제어하기 위한 제어기를 포함한다.
본 발명의 방법은, 제1 메모리로부터 초기 구성의 데이터를 판독하는 단계, 데이터의 구성을 변경하는 단계, 변경된 데이터를 처리하는 단계, 데이터를 초기 구성으로 돌려놓는 단계, 및 데이터를 메인 메모리에 저장하는 단계를 포함한다.
본 발명의 이점들은 이하의 상세한 설명을 읽고 도면을 참조하면 명확하게 될 것이다.
도 1은 본 발명의 링크 회로의 블럭도이다.
도 2는 본 발명의 일 양태의 블럭도이다.
도 3은 본 발명의 다른 양태의 블럭도이다.
도 4는 본 발명의 일 양태의 예시적인 방법의 플로우차트이다.
본 발명의 특징들 및 이점들은, 예로서 주어지는 이하의 설명으로부터 보다 명확하게 될 수 있다.
본 발명의 하나 이상의 특정 실시예들에 대해 이하 설명하기로 한다. 이들 실시예들에 대한 간결한 설명을 제공하기 위해, 실제 구현예의 모든 특성들이 본 명세서에서 설명되는 것은 아니다. 이러한 임의의 실제 구현예의 전개시에, 임의의 엔지니어링 또는 설계 프로젝트에서처럼, 예를 들어 구현예들간에 서로 다를 수 있는 시스템 관련 제약사항들 및 비지니스 관련 제약 사항들에 부합하여 개발자들의 특정 목적들을 달성하기 위해 수많은 구현-특정 결정들이 행해져야 함을 알아야 한다. 또한, 이러한 개발 노력은 복잡할 수도 있으며 시간 소모적일 수도 있지만, 그럼에도 불구하고 이는 당업자에게 있어서는 본 개시물의 이점을 갖는 설계, 제조 및 제작을 책임지는 루틴일 수 있음을 알아야 한다.
이하에서는 위성 신호들을 수신하는 데에 이용되는 회로에 대해 설명한다. 다른 유형의 신호를 수신하는 데에 이용되는 다른 시스템들(이 시스템들에서는, 신호 입력은 소정의 다른 수단에 의해 제공될 수도 있음)은 매우 유사한 구조들을 포함할 수 있다. 본 기술 분야에 통상의 지식을 가진 자라면, 본원에서 설명되는 회로의 실시예는 단지 하나의 유망한 실시예일 뿐임을 알 것이다. 그러한 것으로서, 다른 실시예들에서는 이 회로의 구성 요소가 재배열되거나 삭제될 수도 있으며, 혹은 추가적인 구성 요소들이 추가될 수도 있다. 예를 들면, 개시되는 회로들은, 약간의 변경에 의해, 케이블 네트워크로부터 전달되는 바와 같은 비위성(non-satellite) 비디오 및 오디오 서비스들에 사용하도록 구성될 수 있다.
이제 도 1을 참조하면, 본 발명의 예시적인 링크 회로(100)가 도시되어 있다. 회로의 입력에서, A/D 변환기(102)가 주파수 트랜슬레이터(104)에 연결되어 있다. NCO(numerically controlled oscillator)(106)와 같은 발진기도 또한 주파수 트랜슬레이터(104)에 연결되어 있다. 주파수 트랜슬레이터(104)의 출력은 안티-알리아스 필터(anti-alias filter)(108)에 연결되어 있으며, 안티-알리아스 필터(108)는 AGC(automatic gain control) 증폭기 블럭(110)에 연결되어 있다. AGC 증폭기 블럭(110)의 출력은 데시메이터(decimator) 블럭(112)에 연결되어 있으며 이 데시메이터 블럭(112)은 심볼 타이밍 복구 블럭(114)에 연결되어 있다. 심볼 타이밍 복구 블럭(114)은 반송파 트래킹 루프(116)에 연결되어 있으며 최종적으로 이 반송파 트래킹 루프 블럭(116)은 에러 정정 블럭(118)에 연결되어 있다. 링크 프로세서(220)가 NCO(106), AGC 증폭기 블럭(110), 반송파 트래킹 루프(116), 및 링크 메모리(122)에 연결되어 있다. 명확하게 하기 위해, 일부 연결들 및 블럭들을 생략할 수도 있지만, 당업자라면 이들 생략들을 인식할 수 있어야 한다. 이들 블럭들 각각의 동작은 이하 더욱 상세히 설명하기로 한다.
링크 회로(100)는, 튜너(도시하지 않음)로부터 전송된 하나 이상의 베이스밴드 신호를 디지털 신호로 변환하기 위한 A/D 변환기(102)를 포함한다. A/D 변환 기(102)로부터의 디지털 신호는 하나 이상의 베이스밴드 신호들의 일련의 샘플들을 나타내며, 여기서 각 샘플은 예를 들어 10 비트의 데이터 워드를 포함한다. 바람직한 실시예에서는 하나 이상의 베이스밴드 신호를, A/D 변환기(102)로의 입력으로서 이용함을 주지하는 것이 중요하다. 그러나, 다른 실시예에서는, 튜너에 의해 A/D 변환기(102)로의 입력으로서 제공되는 신호(들)는 베이스밴드 근처의 주파수에 위치될 수도 있으며, 혹은 소정의 다른 중간 주파수(IF)에 위치될 수도 있다.
상기 일련의 샘플들을 생성하기 위해 클럭 신호(도시하지 않음)가 또한 A/D 변환기에 연결된다. 이 클럭 신호는 크리스털 등의 다른 소스로부터 발생될 수도 있으며/있거나 링크 프로세서(120)에 의해 또한 제어될 수도 있다. 일 실시예에서, 링크 프로세서(120)는 입력되는 수신 신호의 적절한 처리에 필요한 클럭 레이트를 결정할 수 있다. 다른 실시예에서, A/D 변환기(102)에서의 샘플링은 고정된 레이트로 행해질 수도 있으며, 샘플링된 신호를 적절한 샘플링 레이트로 데시메이팅(decimating)하는 것과 같은 처리가 나중 블럭들에서 행해질 수도 있다.
A/D 변환기(102)로부터의 디지털 신호는 주파수 혼합기 또는 주파수 트랜슬레이터(104)로 제공된다. 주파수 트랜슬레이터(104)는 또한 NCO(106)로부터 제공되는 입력 신호도 수신한다. NCO(106) 및 주파수 트랜슬레이터(104)는, 입력되는 신호의 반송파 주파수에 따라 입력되는 디지털 신호를 시프팅할 수 있으며, 이에 의해 주파수 시프트된 디지털 신호가 생성된다. NCO(106)는 일반적으로 프로그램가능한 주파수 디지털 신호원이다. NCO(106)의 디지털 주파수를 프로그래밍하기 위한 제어가 링크 프로세서(120)에 의해 행해질 수 있다. 일부 실시예들에서, 제 어는 또한, 반송파 트래킹 루프(116)(후술함)에 의해, 링크 프로세서(120)와 결부되어, 혹은 이와는 개별적으로 결정될 수 있다. NCO(106)의 동작 범위는 그 주파수 오프셋 조정 범위에 의해 구체화될 수 있다. 이러한 범위는, 입력되는 디지털 신호의 심볼 레이트, 및/또는 A/D 변환기(102)가 입력되는 베이스밴드 신호를 처리하는 데에 이용하는 샘플링 레이트 등의 다수의 요소들을 이용하여 결정될 수 있다. 일 실시예에서, 주파수 트랜슬레이터 블럭(104) 및 NCO(106)는 반송파 트래킹 루프(116)에 의해 판정된 주파수 오프셋이, 링크 회로(100)에 위치된 회로 내에서 직접적으로 제거될 수 있게 해준다. 링크 회로(100) 내의 오프셋을 보정함으로써, 사용자에게 바람직하지 못한 추가의 시간 지연을 발생시킬 수도 있는, 튜너의 발생가능한 리튜닝(re-tuning)을 없앤다.
주파수 트랜슬레이터(104)로부터 출력되는 주파수 시프트된 디지털 신호는 안티-알리아스 필터(108)에 제공된다. 안티-알리아스 필터(108)는 통상적으로, 원하는 입력 신호는 본질적으로 변경하지 않은 채로 통과시키면서, 원하는 입력 신호와 연관되지 않은 신호 에너지는 제거하는 데에 이용되는 디지털 필터이다. 링크 회로(100)에서 복조를 위해 가능한 입력 신호의 심볼 레이트의 범위에 따라, 안티-알리아스 필터(108)는 하나 이상의 고정된 필터 또는 프로그램가능한 필터의 세트일 수 있다. 바람직한 실시예에서, 안티-알리아스 필터(108)는 그 통과 대역 주파수 응답 및/또는 기타 특성들을 변경하도록 프로그래밍될 수 있다. 다른 실시예에서는, 이 필터는 주파수 시프트된 입력 디지털 신호의 대역 통과 특성들을 매칭시키도록 프로그래밍될 수 있다. 이러한 통과 대역 특성들 중 하나는 신호 대역폭일 수 있다.
필터링된 디지털 신호는 AGC 증폭기 블럭(110)으로 전달된다. AGC 증폭기 블럭(110)은 이득 제어가능 디지털 신호 증폭기 및 신호 검출기를 포함한다. 신호 검출기는 존재하는 신호의 크기를 측정하는 데에 이용된다. 신호 검출기는 통상적으로 제곱 평균 전력과 같은, 신호의 총 전력을 소정의 기간에 대해 검출한다. 신호 검출기의 출력은, 증폭기의 출력이 일정한 레벨로 유지될 수 있도록 하는 방식으로 이득 제어가능 디지털 신호 증폭기에 대한 제어 신호로서 루프 내에 연결되어 있다. 또한, AGC 블럭(110) 내의 검출기는 입력되는 신호의 레벨 표시를 제공하는 데에 이용될 수 있다. 검출기의 하나의 출력, 즉 레벨 표시자 신호는 후속 처리를 위해 링크 프로세서(120)로 경로지정될 수 있다.
AGC 블럭(110)은 자신의 제어가능 디지털 신호 증폭기로부터 이득 보상된 신호를 출력하고 이득 보상된 신호를 데시메이터(112)에 제공한다. 데시메이터(112)는, 입력되는 신호의 샘플링 레이트와, 심볼 타이밍 복구 블럭(114)에 대해 요구되는 샘플 레이트를 비교한 것에 근거하여 이득 보상된 신호의 샘플들을 제거함으로써 효과적으로 샘플링 레이트를 감소시킨다.
심볼 타이밍 복구 블럭(114)은, 샘플링 위치를 최적화하고 입력 신호 내에서 송신된 데이터 심볼들을 최적으로 검출하기 위해, 입력되는 데시메이팅된 신호의 위상을 조정하는 제어 루프를 포함한다. 그러면, 심볼 타이밍 복구 블럭(114)의 출력은 반송파 트래킹 루프(116)를 포함하는 블럭에 연결된다. 반송파 트래킹 루프(116)는, 예상 반송파 주파수 또는 정확한 반송파 주파수에 대해 입력 신호의 위 상 및/또는 주파수를 결정 및/또는 정정할 수 있는 제어 루프를 포함한다. 반송파 트래킹 루프(116)는, 입력 신호 내의 데이터 심볼들의 실제 값들을 고려하지 않고 주파수 오프셋을 결정 및 보정할 수 있다.
심볼 타이밍 복구 블럭(114) 및 반송파 트래킹 루프(116)는, 당업자에게 공지된 바와 같이, 서로에 대해 및/또는 링크 회로(100) 내의 다른 블럭들에 동작가능하게 결합될 수 있음을 주지하는 것이 중요하다.
반송파 트래킹 루프(116)의 출력, 즉 복조된 신호는 에러 정정 블럭(118)으로 입력된다. 통상적으로, 에러 정정 블럭(118)은 실제 심볼 값들을 결정하기 위한 심볼 슬라이서 모듈을 포함할 수 있다. 에러 정정 블럭(118)은 또한, 데이터 및 에러 정정 비트들을 포함하는 비트들을 생성하는 데에 이용되는 심볼 대 비트 맵퍼 모듈(symbol to bit mapper module)을 포함할 수 있다. 또한, 에러 정정 블럭(218)은, 입력 신호 내의 데이터와 함께 송신된 에러 정정 정보를 이용하기 위한 모듈들을 포함한다. 당업자에게 알려진 바와 같이, 본원에 개시된 바와 같은 통신 시스템에 다수의 유형의 에러 정정 방법들이 채용될 수 있다. 일부 에러 정정 방법들은 리드-솔로몬(Reed-Solomon) 에러 정정, 트렐리스(trellis) 에러 정정, 또는 인터리빙을 포함할 수 있다. 또한, 터보 코드 에러 정정 및 LDPC 에러 정정으로 알려진 몇몇 더 새로운 유형의 방법들이 이용될 수도 있다. 당업자에게 알려진 바와 같이, 이들 에러 정정 방법들 중 어떠한 것이라도 개별적으로 이용될 수 있으며, 혹은 결합되어 함께 협업할 수도 있다.
이하에서는, LDPC 디코더로서 알려진 더 새로운 유형의 에러 정정 디코더의 양태에 대해 설명한다. 이러한 디코더는 위성 수신기에서 볼 수 있다. 본 발명은 LDPC 디코더에서 동작하는 것으로 설명되지만, 본 발명은 이 특정 디코더에만 제한되는 것도 아니며 위성 수신기 내의 LDPC 디코더로만 제한되는 것도 아니다.
이제 도 2를 참조하여, 본 발명의 하나의 LDPC 디코더 블럭(200)의 일부에 대해 설명한다. LDPC 디코더 블럭(200)은 도 1에 도시된 에러 정정 블럭(118) 내에 위치된다. 도 2는 통상적으로 많은 동일한 블럭들(예를 들면, 360 개의 동일 블럭들)을 포함하는 전체 LDPC 디코더 구조 내의 하나의 블럭 유닛만을 도시하고 있음을 주지해야 한다. 각 블럭은 데이터 세그먼트의 작은 섹션들에 대해 병렬로 동작하여 전체 데이터 세그먼트를 처리한다. 명확하게 하기 위해, 본 발명과 관련된 전체 구성 중 기능적 요소들만 예시되어 있다.
블럭 메모리(202)는 다른 외부 처리 블럭들(즉, 반송파 트래킹 루프 및/또는 인터리버)에 접속하기 위한 입력 및 출력 접속들 양쪽 모두를 포함한다. 블럭 메모리(202)는 또한 멀티플렉스 스위치, 즉 상위 멀티플렉서(204)에 연결된다. 상위 멀티플렉서(204)는 두 개의 출력을 가지는데, 그 중 하나는 CPU 블럭(206)에 연결되며 다른 하나는 BPU 블럭(208)에 연결된다. CPU 블럭(206) 및 BPU 블럭(208) 각각은 제2 멀티플렉스 스위치, 즉 하위 멀티플렉서(210)에 연결된다. 하위 멀티플렉서(210)는 CPU/BPU 레지스터 메모리(212)에 연결된다. CPU/BPU 레지스터 메모리(212)는 블럭 메모리(202)에 도로 연결된다. 제어기(214)가 블럭 메모리(202), 상위 멀티플렉서(204), 하위 멀티플렉서(210), CPU/BPU 레지스터 메모리(212) 및 제어기 메모리(216)에 연결된다.
블럭 메모리(202)는 RAM일 수 있다. 블럭 메모리(202)로의 초기 입력은, 예를 들면 반송파 트래킹 루프(116)로부터의 복조된 데이터를 포함하는 데이터 세그먼트일 수 있다. 데이터 세그먼트는, 데이터 비트들 뿐만 아니라, 예를 들면 LDPC 에러 정정에서 사용되는 에러 정정 비트들도 포함한다. 로컬 에러 정정이 완료되면, 블럭 메모리(202)의 출력은, LDPC 에러 정정과 관련된 에러 정정 비트들이 제거된, LDPC 에러 정정된 데이터 스트림을 나타내는 데이터 스트림 세그먼트를 포함할 수 있다. 블럭 메모리(202)의 출력은 다른 에러 정정 섹션에 연결될 수 있으며, 혹은 비디오, 오디오, 및/또는 데이터 디코더에 연결될 수도 있다.
블럭 메모리(202)는 또한, 요구된 데이터 세그먼트의 섹션을 상위 멀티플렉서(304)를 통해 CPU 블럭(206) 및 BPU 블럭(208)에 제공한다. 상위 멀티플렉서(204)는, 이 데이터 세그먼트의 섹션이 CPU 블럭(206)에 송신될지 또는 BPU 블럭(208)에 송신될지를 제어한다. CPU 블럭(206) 및 BPU 블럭(208)은 LDPC 데이터를 처리하고 에러 정정 알고리즘을 수행하기 위한 메인 프로세서들이다. 전술한 바와 같이, 이들 블럭들은 서로 개별적으로 동작하여 BPU 블럭(208)을 통한 하나의 처리 단계의 결과가 최종적으로 CPU 블럭(206)으로 입력되며, 그 반대의 경우도 성립된다. 또한, CPU 블럭(206) 및 BPU 블럭(208)에 의해 채용되는 실제 알고리즘에 관련된 설명은 본 발명의 범주 밖에 있으며 본 기술 분야에 통상의 지식을 가진 자에게 공지되어 있는 바이다.
하위 멀티플렉서(210)는 CPU 블럭(206) 또는 BPU 블럭(208)의 최종 처리된 출력을 취하며, 이들 중 어떤 출력이 최종적으로 블럭 메모리(202)에 보내지는 지 에 대해 제어한다. CPU 블럭(206) 및 BPU 블럭(208) 양쪽 모두는, 이들의 내부 알고리즘 처리 단계들 동안에 발생되는 중간 값들을 유지하기 위한, 한 세트의 레지스터 등의 소정의 로컬 메모리 저장장치를 필요로 할 수 있다. 일반적으로, 이 메모리는 블럭들(206, 208) 각각 내에 배치되어서 각 프로세서에 전용되는 복제(duplicate) 메모리 세트를 생성하게 될 것이다. 본 발명에서는, CPU/BPU 레지스터 메모리(212)는 멀티플렉스 스위치(210)의 외부에 배치될 수 있어서 CPU 블럭(206) 및 BPU 블럭(208)의 내부 처리를 위한 메모리가 CPU 블럭(206) 및 BPU 블럭(208) 양쪽 모두에 의해 공유될 수 있다. CPU/BPU 레지스터 메모리(212) 내의 메모리 공간을 공유함으로써, 보다 효율적으로 전체 메모리 공간을 활용할 수 있게 된다. 이러한 공유로 인해 또한 전체 소비 전력이 감소하고 동작 속도가 증가하게 될 수 있다. 하위 멀티플렉서(210)는, CPU/BPU 레지스터 메모리(212)와, 현재 활성 상태인 처리 블럭(206 또는 208) 간의 중간 데이터 값들의 흐름에 대한 양방향 제어 스위치로서 동작한다. 활성 상태의 처리 블럭, 즉 CPU 블럭(206) 또는 BPU 블럭(208)의 처리가 완료된 후, 하위 멀티플렉서(210)는 CPU/BPU 레지스터 메모리(212)를 통해 활성 상태의 처리 블럭의 최종 출력을 블럭 메모리(202)로 보낸다.
제어기(214)는 블럭 메모리(202) 및 CPU/BPU 레지스터 메모리(212) 양쪽 모두에 대한 액세스 제어를 제공한다. 제어기(212)는, 현재의 처리 사이클에서의 처리를 위해 입력 세그먼트의 어떤 비트들 또는 섹션들이 블럭 메모리(202)로부터 판독되어야 하는지를 결정하고/결정하거나 블럭 메모리(202) 내의 어떤 위치에 현재의 처리 사이클의 결과를 송신해야 하는지를 결정한다. CPU/BPU 레지스터 메모 리(212)는 또한 CPU 블럭(206) 및 BPU 블럭(208)으로부터 직접 액세스 제어 및 데이터를 수신한다. 또한, 제어기(214)는 현재의 처리 모드에 기초하여 상위 멀티플렉서(204) 및 하위 멀티플렉서(210)에 대한 제어를 제공한다.
제어기(214)는 제어기 메모리(216)를 이용하여, 데이터 스트림 요소들이 블럭 메모리(202)에서 위치되는 어레이 위치들을 저장한다. 어레이 위치들은, CPU 및 BPU 처리 단계들에서 사용되는 데이터 비트들, 패리티 비트들, 및 패리티 그룹들 간의 적절한 시퀀스 배열을 제공한다. 최종적으로, 모든 블럭들이 하나 이상의 클럭 신호들(도시하지 않음)을 이용하여 동작된다. 클럭 신호(들)는 블럭 유닛의 외부의 소스로부터 발생되거나 혹은 내부에서 발생될 수도 있다. 일실시예에서, 블럭 유닛(200)에 제공되며 BPU 블럭(208) 및 CPU 블럭(206)에 의해 이용되는 처리 클럭은, A/D 변환기(102)에 대한 클럭 주파수의 네 배로 생성되는 신호일 수 있다.
블럭 메모리(202), 제어기(212), 및 제어기 메모리(216)는 본 실시예에서 블럭 유닛의 일부로서 도시되어 있지만, 다른 실시예에서는 모든 블럭 유닛에 대해 집합적으로, 하나의 블럭 메모리, 하나의 제어기, 및 하나의 제어기 메모리를 포함할 수도 있다. 전술한 블럭들의 기능에 대한 설명은 변함이 없다. 또한, 여러 기능들이 블럭도에는 포함되어 있지 않지만 이는 당업계에 공지된 사항이다. 이러한 기능들에는 클럭 회로, 플래그 지시자, 파이프라인 레지스터, 및 예를 들어 블럭 유닛들 간의 정보의 상호 교환을 가능하게 해주는 그 밖의 제어 기능들이 포함될 수 있다.
통상적으로, CPU 및 BPU 기능들은 다소 독립적으로 동작된다. 본 발명은 일 부 회로들, 즉 CPU 및 BPU 계산 유닛들(206, 208)에 이용되는 레지스터 메모리들을 결합시켜서 회로를 절약하게 해준다. 특히, CPU 및 BPU 유닛들(206, 208)에 의해 행해지는 계산 동안, 일부 중간 결과들이 레지스터들에 저장된다. 본 발명은 멀티플렉서(210)를 이용하여, 양쪽 오퍼레이션들 간에 오직 하나의 레지스터 메모리(212)만이 필요하게 되도록 이들 레지스터들을 공유한다. 제어기(214)는 이러한 공유 프로세스를 관리하는 데에 이용된다.
CPU 블럭(206)은, BPU 블럭(208)에서와는 다른 방식으로 데이터가 처리될 것을 요구할 수도 있다. 일례에서, CPU 블럭(208)은, 데이터 경로 내의 개시 포인트에 대하여 데이터가 순환형으로 시프트될 것을 요구한다. 통상적으로, 이러한 시프트는 CPU 블럭(206)을 이용하여 달성되며 세 개의 개별적인 프로세스들을 필요로 한다. 첫 번째 프로세스는, 블럭 메모리(202)로부터 데이터 섹션을 읽어내고, CPU 블럭(208)에서 데이터를 시프트시키고, 그 후 새롭게 시프트된 데이터 섹션을 블럭 메모리(202)에 도로 송신하는 것을 포함한다. 두 번째 프로세스는, 이 새롭게 시프트된 데이터 섹션을 블럭 메모리(202)로부터 읽어내고, 이 새롭게 시프트된 데이터를 에러 정정 처리를 위해 CPU 블럭(308)에 송신하는 것을 포함한다. CPU 블럭 처리가 완료되면, 처리된 시프트된 데이터는 블럭 메모리(202)로 도로 송신된다. 최종적으로 세 번째 프로세스는, 처리된 시프트된 데이터를 블럭 메모리(202)로부터 읽어내고, 처리된 시프트된 데이터를 CPU 블럭(208)을 이용하여 뒤로 시프트시키고(즉, 첫 번째 시프트의 반대 방향으로 시프트시키고), 이 새롭게 시프트되지 않은 처리된 데이터를 블럭 메모리(202)에 도로 송신하는 것을 포함한다. 그 후, 블럭 메모리(202) 내의 데이터는 이제 BPU 블럭(208)을 이용하여 처리될 준비가 된 것이다. 상기의 세 가지 프로세스들은 가외의 클럭 사이클들을 이용하며 이에 따라 LDPC 프레임 시간 내에서 달성될 수 있는 반복 횟수를 제한하게 된다. 이하 기술하는 바와 같이, CPU 블럭(306)에 연속하는 시프트 동작들을 제공함으로써 시간 면에서 훨씬 더 높은 효율성이 달성될 수 있다.
이제 도 3을 참조하여, 본 발명의 하나의 LDPC 디코더 블럭(300)의 일부에 대해 설명한다. LDPC 디코더 블럭(300)은 도 1에 도시된 에러 정정 블럭(118) 내에 위치된다. 도 3은, 통상적으로 많은 동일 블럭들(예를 들면, 360개의 동일 블럭들)을 포함하는 전체 LDPC 디코더 구조 중 오직 하나의 블럭 유닛만을 도시하고 있음에 유의한다. 각 블럭은, 데이터 세그먼트의 작은 섹션들에 대해 병렬로 동작하여 전체 데이터 세그먼트를 처리한다. 명확하게 하기 위해, 전체 구성 중, 본 발명과 관련된 기능 요소들만을 예시한다.
블럭 메모리(302)는 다른 외부 처리 블럭들(즉, 반송파 트래킹 루프 및/또는 인터리버)에 접속하기 위한 입력 및 출력 접속들 양쪽 모두를 포함한다. 블럭 메모리(302)는 또한 멀티플렉스 스위치, 즉 상위 멀티플렉서(304)에 연결된다. 상위 멀티플렉서(304)는 두 개의 출력을 가지는데, 그 중 하나는 순방향 시프트 블럭(305)에 연결되며, 나머지 하나는 BPU 블럭(308)에 연결된다. 순방향 시프트 블럭(305)은 CPU 블럭(306)에 연결된다. CPU 블럭(306)은 역방향 시프트 블럭(309)에 연결되어, BPU 블럭(308)과 함께, 제2 멀티플렉스 스위치, 즉 하위 멀티플렉서(310)에 연결된다. 하위 멀티플렉서(310)는 CPU/BPU 레지스터 메모리 블럭(312) 에 연결된다. CPU/BPU 레지스터 메모리 블럭(312)은 블럭 메모리(302)에 도로 연결된다. 제어기(314)는, 블럭 메모리(302), 상위 멀티플렉서(304), 하위 멀티플렉서(310), 순방향 시프트 블럭(504), 역방향 시프트 블럭(508), 및 제어기 메모리(316)에 연결된다.
블럭 메모리(302)는 RAM일 수 있다. 블럭 메모리(302)로의 초기 입력은, 예를 들면 반송파 트래킹 루프(216)로부터의 복조된 데이터를 포함하는 데이터 세그먼트일 수 있다. 데이터 세그먼트는, 데이터 뿐만 아니라, 예를 들어 LDPC 에러 정정에서 사용되는 에러 정정 비트들도 포함한다. 로컬 에러 정정이 완료되면, 블럭 메모리(302)의 출력은, LDPC 에러 정정과 관련된 에러 정정 비트들이 제거된, LDPC 에러 정정된 데이터 스트림을 나타내는 데이터 스트림 세그먼트를 포함할 수 있다. 블럭 메모리(302)의 출력은 다른 에러 정정 섹션에 연결될 수 있으며, 혹은 비디오/오디오/데이터 디코더에 연결될 수도 있다.
블럭 메모리(302)는 또한, 요구된 데이터 세그먼트의 섹션들을 상위 멀티플렉서(304)를 통해 CPU 블럭(306) 및 BPU 블럭(308)에 제공한다. 상위 멀티플렉서(304)는, 데이터 세그먼트의 섹션이 CPU 블럭(306)에 송신될지 또는 BPU 블럭(308)에 송신될지를 제어한다. CPU 블럭(306) 및 BPU 블럭(308)은 LDPC 데이터를 처리하고 에러 정정 알고리즘을 수행하기 위한 메인 프로세서들이다. 전술한 바와 같이, 이들 블럭들은 독립적으로 또한 연속적으로 동작하여 BPU 프로세스의 결과가 최종적으로 CPU 블럭(306)으로 입력되며, 그 반대의 경우도 성립된다. CPU 및 BPU 블럭들 각각은 또한 데이터 스트림을 처리하는 데에 필요한 중간 오퍼 레이션 및 계산 결과를 저장하기 위한 로컬 메모리를 이용할 수 있다. 또한, CPU 블럭(306) 및 BPU 블럭(308)에 의해 채용되는 실제 알고리즘에 관련된 설명은 본 발명의 범주 밖에 있으며 본 기술 분야에 통상의 지식을 가진 자에게 공지되어 있는 바이다.
블럭 메모리(302)로부터 판독된 데이터는 우선 순방향 시프트 블럭(305)에서 시프트된 후 CPU 블럭(306)으로 송신된다. CPU 블럭(306)이 처리를 완료한 후, 다른 시프트, 즉 CPU 블럭(306)에 입력되기 전에 데이터에 행해지는 시프트에 대한 역방향 시프트가 역방향 시프트 블럭(309)에서 수행된다. 이 시프트 및 역방향 시프트 기능들로 인해 데이터가 그 적절한 방향으로 메모리에 도로 기입될 수 있어서 데이터가 BPU 블럭(308)에 의해 사용될 수 있게 된다. 최종적으로, 하위 멀티플렉서(310)는 BPU 블럭(308)의 출력과, CPU 블럭(306) 및 시프트 블럭들(305, 309)을 거쳐온 출력을 CPU/BPU 레지스터 메모리(312)로 보내고 이들을 다시 블럭 메모리(302)로 보내도록 경로지정한다. CPU/BPU 레지스터 메모리(312)는 멀티플렉스 스위치(310)의 외부에 위치되어서 CPU 블럭(306) 및 BPU 블럭(308)의 내부 처리를 위한 메모리가 CPU 블럭(306) 및 BPU 블럭(308) 양쪽 모두에 의해 공유될 수 있게 할 수 있다.
제어기(314)는 블럭 메모리(302) 및 CPU/BPU 레지스터 메모리(312) 양쪽 모두에 대한 액세스 제어를 제공한다. 제어기(314)는, 현재의 처리 사이클에서의 처리를 위해 입력 세그먼트의 어떤 비트들 또는 섹션들이 블럭 메모리(302)로부터 판독되어야 하는지를 결정하고/결정하거나 블럭 메모리(302) 내의 어떤 위치에 현재 의 처리 사이클의 결과를 송신해야 하는지를 결정한다. 또한, 제어기(314)는 현재의 처리 모드에 기초하여 상위 멀티플렉서(304) 및 하위 멀티플렉서(310)를 제어한다. 제어기(314)는 또한 순방향 시프트 블럭(305) 및 역방향 시프트 블럭(309)에 대한 제어 및 데이터 입력을 제공한다. 일 실시예에서, 제어기(314)는 CPU 처리 동안 역방향 시프트 블럭을 바이패스하기 위한 제어로서 역방향 블럭(309)에 대한 제어를 제공하여, CPU 블럭(306)이 중간 CPU 프로세스 동작 동안에 CPU/BPU 레지스터 메모리에 액세스할 수 있게 해준다.
제어기(314)는 제어기 메모리(316)를 이용하여, 데이터 스트림 요소들이 블럭 메모리(302)에서 위치되는 어레이 위치들을 저장한다. 어레이 위치들은, CPU 및 BPU 처리 단계들에서 사용되는 데이터 비트들, 패리티 비트들, 및 패리티 그룹들 간의 적절한 시퀀스 배열을 제공한다. 또한, 제어기 메모리(314)는 데이터 세그먼트 섹션들 각각에 대한 시프트 설정을 포함할 수 있다. 그러면, 이들 시프트 설정은 CPU 처리 경로 내에 위치된 시프트 블럭들(305, 309)을 프로그래밍하는 데에 이용된다. 최종적으로, 모든 블럭들이 하나 이상의 클럭 신호들(도시하지 않음)을 이용하여 동작된다. 클럭 신호(들)는 블럭 유닛의 외부의 소스로부터 발생되거나 혹은 내부에서 발생될 수도 있다. 일실시예에서, 블럭 유닛에 제공되며 BPU 블럭(308) 및 CPU 블럭(306)에 의해 이용되는 처리 클럭은, 도 1의 A/D 변환기(201)에 이용되는 클럭 주파수의 네 배로 생성되는 신호일 수 있다.
블럭 메모리(302), 제어기(314), 및 제어기 메모리(316)는 본 실시예에서 블럭 유닛의 일부로서 도시되어 있지만, 다른 실시예에서는 모든 블럭 유닛에 대해 집합적으로, 하나의 블럭 메모리, 하나의 제어기, 및 하나의 제어기 메모리를 포함할 수도 있다. 전술한 블럭들의 기능에 대한 설명은 변함이 없다. 또한, 여러 기능들이 블럭도에는 포함되어 있지 않지만 이는 당업계에 공지된 사항이다. 이러한 기능들에는 클럭 회로, 플래그 지시자, 파이프라인 레지스터, 및 예를 들어 블럭 유닛들 간의 정보의 상호 교환을 가능하게 해주는 그 밖의 제어 기능들이 포함될 수 있다.
전술한 바와 같이, LDPC 에러 정정 방법의 효율성은, 에러 정정 블럭이 데이터 세그먼트에 대해 수행할 수 있는 반복 횟수와 관련된다. 따라서, 처리에 이용할 수 있는 클럭 사이클의 수는 매우 중요하다. CPU 처리 경로내에서만 필요한 시프트 동작을 구현하기 위해 직렬 배열을 이용함으로써, 에러 정정 방법에서의 더 많은 횟수의 반복이 획득될 수 있다.
이제 도 4를 참조하면, 방법(400)을 나타내는 플로우차트가 도시되어 있다. 이 플로우차트는, 우선 CPU 경로를 통해 데이터를 처리하는 프로세스에 대해 설명하고, 이어서 도 3의 LDPC 블럭의 BPU 경로를 통해 데이터를 처리하는 프로세스에 대해 설명하고 있다. 다른 실시예에서, 이 프로세스는 BPU 경로에서 시작되어 CPU 경로에서 종료될 수도 있다. 또한 이 프로세스는, 원하는 성능 레벨을 달성하기 위해 필요한 횟수만큼의 반복 동안 계속되거나 혹은 처리를 위한 시간 프레임이 종료될 때까지 계속될 수 있다.
우선, 단계 402에서, 데이터 섹션이 블럭 메모리(302)로부터 판독된다. 그 후 이 데이터는 순방향 블럭(305)으로 전달될 수 있는데, 여기서 단계 404에서, 순 방향 시프트 블럭(305)이 데이터 섹션의 시프트를 수행한다. 바람직한 일 실시예에서의 시프트는 데이터 섹션의 순환형 시프트일 수 있다. 다음으로, 단계 406에서, CPU 블럭(306)에서의 계산이 수행된다. CPU 블럭(306)에서 계산이 완료되면, 처리된 데이터는, 단계 408에서 역방향 시프트 블럭(309)에서 역방향 시프트된다. 다음으로, 단계 410에서, 데이터가 블럭 메모리(302)에 도로 기입된다. 이 단계에서, 반복 사이클 동안의 CPU 처리가 완료된다.
다음으로, 단계 412에서, 데이터 섹션이 블럭 메모리(302)로부터 다시 판독된다. 이 데이터는 BPU 블럭(308)으로 전달되는데, 여기서 단계 414에서 BPU 블럭(308)이 이 데이터를 처리한다. 최종적으로, 단계 416에서, BPU 블럭(308)에서의 처리의 완료 후에, 데이터가 블럭 메모리(302)로 도로 기입된다. 이 시점에서, 이 처리를 통과한 하나의 완전한 반복 처리가 완료된다. 전술한 바와 같이, 이 처리는 디코더 출력의 성능을 개선시키기 위해 여러번 반복될 수 있다.
전술한 바와 같이, 도 4에 도시된 프로세스에서의 각 단계는 처리 클럭의 하나의 사이클을 나타내는 것이 아니다. 사실상, 도시하지는 않았지만 본 기술 분야에 공지되어 있는 파라이프라인 구조를 이용하여 동일한 클럭 사이클에 많은 단계들이 결합될 수 있다. 예를 들면, 한 세트의 데이터의 판독, 한 세트의 데이터의 시프팅, CPU 블럭에서의 한 세트의 데이터의 처리, 및 한 세트의 데이터의 역방향 시프팅 단계는, 각 데이터 세트가 서로 다르고 처리 시퀀스에서 연속적인 경우, 동일한 클럭 사이클에서 동시에 수행될 수 있다. 대부분의 경우에서, 메모리 판독 및 기입 동작은 서로 다른 클럭 사이클에서 발생될 필요가 있다.
본 처리 방법 및 아키텍처는 LDPC 디코더에서의 데이터 처리에 대한 효율적인 방안을 제공하여서, LDPC 프레임 시간 내에서 프로세스의 가장 효과적인 반복 횟수를 가능하게 해준다. 본 발명의 양태들에 대해 비록 개별적으로 기술하였지만, 본 양태들은 본 발명의 각 양태에 의해 제공되는 효과의 이점을 최대로 얻도록 결합될 수 있는 것이 가능하며 이러한 점은 예측되는 사항이다.
본 발명은 여러 변경들 및 대안적인 형태들을 수용할 수 있지만, 도면에서 예시를 위해 특정 실시예들이 도시되었으며 본원에서 상세히 설명될 것이다. 그러나, 본 발명은 개시된 특정 형태들에 국한되지 않음을 이해해야 한다. 오히려, 본 발명은 이하의 특허청구범위에 의해 정의되는 바와 같은, 본 발명의 정신 및 범주 내에 해당되는 모든 변경들, 등가물들 및 대체물들을 포함하는 것이다.

Claims (19)

  1. 에러 정정을 수행하기 위한 장치(300)로서,
    처리될 데이터를 저장하기 위한 제1 메모리(302);
    상기 제1 메모리에 결합되고 제1 및 제2 출력을 갖는 제1 스위치(304);
    상기 스위치의 상기 제1 출력에 결합된 제1 프로세서(308);
    상기 스위치의 상기 제2 출력에 결합된 제2 프로세서(306) ― 상기 제2 프로세서(308)는 순방향 시프트(305) 및 역방향 시프트(309) 동작을 행하여 상기 데이터의 재순서화를 용이하게 함 ―; 및
    상기 제1 스위치(304) 및 상기 제2 프로세서(308)에 결합되어 상기 제1 스위치(304)를 스위칭가능하게 제어하기 위한 제어기(314)
    를 포함하는 에러 정정 수행 장치.
  2. 제1항에 있어서,
    상기 제1 프로세서(308) 및 상기 제2 프로세서(306)에 스위칭가능하게 결합되며 상기 제1 메모리(302)에 결합된 출력을 갖는 제2 메모리(312)를 더 포함하며,
    상기 제2 메모리(312)는 상기 제1 프로세서(308) 및 상기 제2 프로세서(306)의 중간 결과(intermediate results)를 저장하는 에러 정정 수행 장치.
  3. 제2항에 있어서,
    상기 제2 메모리(312)는, 이용되는 메모리 공간의 감소를 위해 제공되는 것인 에러 정정 수행 장치.
  4. 제1항에 있어서,
    상기 장치(300)는 저밀도 패리티 체크 코드 에러 정정을 위해 이용되는 에러 정정 수행 장치.
  5. 제1항에 있어서,
    상기 제1 프로세서(308)는 비트 노드 처리를 위해 이용되는 에러 정정 수행 장치.
  6. 제1항에 있어서,
    상기 제2 프로세서(306)는 체크 노드 처리를 위해 이용되는 에러 정정 수행 장치.
  7. 제1항에 있어서,
    상기 제어기(314)에 결합되어 제어 및 액세스 정보를 저장하는 제3 메모리(316)를 더 포함하는 에러 정정 수행 장치.
  8. 제1항에 있어서,
    상기 장치(300)는 위성 수신기에서 DVB-S2 신호를 수신하기 위해 이용되는 에러 정정 수행 장치.
  9. 제1항에 있어서,
    상기 제어기(314)는 또한, 상기 제2 프로세서(306)의 상기 순방향 시프트(305) 동작 및 상기 역방향 시프트(309) 동작을 제어하는 에러 정정 수행 장치.
  10. 제1항에 있어서,
    상기 제1 메모리(302)는 RAM인 에러 정정 수행 장치.
  11. 제1항에 있어서,
    상기 제1 시프트(305) 및 상기 제2 시프트(309)는 상기 제2 프로세서(306)에 대해 외부에서 직렬로 결합되는 에러 정정 수행 장치.
  12. 제1항에 있어서,
    상기 제1 시프트(305) 및 상기 제2 시프트(309)는 시간 프레임 내에서의 프로세스 반복 횟수를 증가시키는 에러 정정 수행 장치.
  13. 에러 정정을 수행하기 위한 방법(400)으로서,
    제1 메모리로부터 데이터를 판독하는 단계(402) ― 상기 데이터는 초기 구성 으로 배열되어 있음―;
    상기 데이터의 구성을 변경하는 단계(404);
    제1 프로세스를 이용하여 상기 변경된 데이터를 처리하는 단계(406);
    상기 처리된 데이터를 상기 초기 구성으로 복귀시키는 단계(408); 및
    상기 처리된 데이터를 상기 제1 메모리에 기입하는 단계(410)
    를 포함하는 에러 정정 수행 방법.
  14. 제13항에 있어서,
    상기 처리된 데이터를 상기 제1 메모리로부터 판독하는 단계(412);
    상기 데이터를 제2 프로세스에서 재처리하는 단계(414); 및
    상기 재처리된 데이터를 상기 제1 메모리에 다시 기입하는 단계(416)
    를 더 포함하는 에러 정정 수행 방법.
  15. 제14항에 있어서,
    상기 제2 프로세스(414)는 비트 노드 프로세스인 에러 정정 수행 방법.
  16. 제13항에 있어서,
    상기 방법(400)은 LDPC 디코더에서 이용되는 에러 정정 수행 방법.
  17. 제13항에 있어서,
    상기 제1 프로세서(406)는 체크 노드 프로세스인 에러 정정 수행 방법.
  18. 제13항에 있어서,
    상기 변경 단계(404) 및 상기 복귀 단계(408)는 순방향 시프팅 및 역방향 시프팅을 각각 포함하는 에러 정정 수행 방법.
  19. 제1 메모리로부터 데이터를 판독하기 위한 수단(402) ― 상기 데이터는 초기 구성으로 배열되어 있음―;
    상기 데이터의 구성을 변경하기 위한 수단(404);
    제1 프로세스를 이용하여 상기 변경된 데이터를 처리하기 위한 수단(406);
    상기 제1 프로세스에 의해 처리된 데이터를 상기 초기 구성으로 복귀시키기 위한 수단(408); 및
    상기 처리된 데이터를 상기 제1 메모리에 기입하기 위한 수단(410)
    을 포함하는 장치.
KR1020087013179A 2005-12-01 2005-12-01 저밀도 패리티 체크 코딩된 신호를 디코딩하기 위한 장치및 방법 KR101196917B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2005/043586 WO2007064325A1 (en) 2005-12-01 2005-12-01 Apparatus and method for decoding low density parity check coded signals

Publications (2)

Publication Number Publication Date
KR20080080517A true KR20080080517A (ko) 2008-09-04
KR101196917B1 KR101196917B1 (ko) 2012-11-05

Family

ID=36088466

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087013179A KR101196917B1 (ko) 2005-12-01 2005-12-01 저밀도 패리티 체크 코딩된 신호를 디코딩하기 위한 장치및 방법

Country Status (7)

Country Link
US (1) US8819518B2 (ko)
EP (1) EP1958335A1 (ko)
JP (1) JP2009517970A (ko)
KR (1) KR101196917B1 (ko)
CN (1) CN101322319B (ko)
BR (1) BRPI0520713A2 (ko)
WO (1) WO2007064325A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8237870B2 (en) * 2007-09-28 2012-08-07 Intel Corporation Receiver system for multiple bandwidth television channels
US9008188B2 (en) * 2008-03-28 2015-04-14 Thomson Licensing, LLC Apparatus and method for decoding signals
USH2274H1 (en) 2009-01-30 2013-05-07 The United States Of America, As Represented By The Secretary Of The Navy Variable pulse width encoding for information transmission
CN104734810A (zh) * 2012-06-07 2015-06-24 飞天诚信科技股份有限公司 一种处理传输数据的方法和装置
US10389387B2 (en) * 2015-05-19 2019-08-20 Sony Semiconductor Solutions Corporation Coding device and coding method for a DVB-like LDPC code and a LDPC code in an ETRI format
CN105763203B (zh) * 2016-02-14 2020-04-24 广西大学 一种基于硬可靠度信息的多元ldpc码译码方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127664B2 (en) * 2000-09-18 2006-10-24 Lucent Technologies Inc. Reconfigurable architecture for decoding telecommunications signals
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
CN1185796C (zh) * 2002-11-15 2005-01-19 清华大学 改进的非规则低密度奇偶校验码纠错译码方法
WO2004077733A2 (en) * 2003-02-26 2004-09-10 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (ldpc) code operations using a multi-level permutation
JP4224777B2 (ja) 2003-05-13 2009-02-18 ソニー株式会社 復号方法および復号装置、並びにプログラム
JP4225163B2 (ja) 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
JP4285148B2 (ja) 2003-08-19 2009-06-24 ソニー株式会社 復号装置および復号方法、並びにプログラム
JP4282558B2 (ja) 2004-06-30 2009-06-24 株式会社東芝 低密度パリティチェック符号復号器及び方法
WO2006055086A1 (en) 2004-10-01 2006-05-26 Thomson Licensing A low density parity check (ldpc) decoder
US7760880B2 (en) * 2004-10-13 2010-07-20 Viasat, Inc. Decoder architecture system and method

Also Published As

Publication number Publication date
US20090103636A1 (en) 2009-04-23
EP1958335A1 (en) 2008-08-20
KR101196917B1 (ko) 2012-11-05
WO2007064325A1 (en) 2007-06-07
BRPI0520713A2 (pt) 2009-05-26
JP2009517970A (ja) 2009-04-30
US8819518B2 (en) 2014-08-26
CN101322319B (zh) 2012-11-28
CN101322319A (zh) 2008-12-10

Similar Documents

Publication Publication Date Title
US9172502B2 (en) Receiving apparatus and receiving method
EP2333961B1 (en) Variable-length cyclic shift device and method applicable for multi-standard LDPC coding and decoding
KR101196917B1 (ko) 저밀도 패리티 체크 코딩된 신호를 디코딩하기 위한 장치및 방법
CN101032084B (zh) 用于接收器的方法和设备
TWI419479B (zh) 接收設備、接收方法、程式及接收系統
EP1480366A2 (en) Error-correcting encoding apparatus
CN101521824A (zh) 在数据电视广播中的强壮信号传输
US20060156185A1 (en) Error correction coding across multiple channels in content distribution systems
BRPI0711499A2 (pt) equipamento entrelaçador e receptor para um sinal gerado pelo equipamento entrelaçador
US20080022345A1 (en) Demodulator and demodulation method
WO2007002381A2 (en) Multi-channel ldpc decoder architecture
KR100212833B1 (ko) 가변레이트 비터비 복호기
KR19980024216A (ko) 근사화된 비트메트릭을 이용한 데이터수신기
CN102437896B (zh) 一种比特交织及星座映射的方法及装置
KR101225594B1 (ko) 다수의 채널을 수신하기 위한 시스템 및 방법
CA2229720A1 (en) Apparatus for providing error correction data in a digital data transfer system
US20090197553A1 (en) Method and Apparatus for Determining Frequency Offset in a Receiver
JP5536155B2 (ja) 誤り訂正を実行する装置及び方法
JP3865743B2 (ja) デジタル放送受信装置、およびデジタル放送受信方法
EP1367732A2 (en) TTCM (Turbo trellis Coded Modulation) decoder design
JP3515519B2 (ja) データ受信装置
JPH11252189A (ja) デジタル信号復調装置および方法、並びに提供媒体
KR20080073308A (ko) 수신기에서의 주파수 오프셋을 판정하기 위한 방법 및 장치

Legal Events

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

Payment date: 20151002

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee