KR100606159B1 - 데이터 디코딩을 위한 감소된 상태 디바이스 및 방법 - Google Patents

데이터 디코딩을 위한 감소된 상태 디바이스 및 방법 Download PDF

Info

Publication number
KR100606159B1
KR100606159B1 KR1019990047500A KR19990047500A KR100606159B1 KR 100606159 B1 KR100606159 B1 KR 100606159B1 KR 1019990047500 A KR1019990047500 A KR 1019990047500A KR 19990047500 A KR19990047500 A KR 19990047500A KR 100606159 B1 KR100606159 B1 KR 100606159B1
Authority
KR
South Korea
Prior art keywords
delete delete
states
winning
acps
state
Prior art date
Application number
KR1019990047500A
Other languages
English (en)
Other versions
KR20000047571A (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 KR20000047571A publication Critical patent/KR20000047571A/ko
Application granted granted Critical
Publication of KR100606159B1 publication Critical patent/KR100606159B1/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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Complex Calculations (AREA)
  • Error Detection And Correction (AREA)

Abstract

데이터를 디코딩하는 방법 및 디바이스를 개시한다. 상기 디바이스 및 방법은 인코딩된 데이터 각각에 대한 인코더의 모든 가능한 상태들로부터 특정한 현재 상태들을 선택하고, 선택된 현재 상태들에 대한 누적된 조건부 확률들(ACP들)을 발생하고, ACP를 임계값과 비교하고, 상기 비교 결과들에 기초하여 ACP들과 연관된 이전 상태들을 저장한다. 저장된 이전 상태들은 디코딩된 데이터를 발생하기 위하여 미리 결정된 방식에 따라 선택적으로 출력된다.
데이터 디코딩 디바이스, 조건부 확률, 현재 상태, 이전 상태, 컨벌루션 디코더

Description

데이터 디코딩을 위한 감소된 상태 디바이스 및 방법{Reduced-state device and method for decoding data}
도 1은 종래의 컨벌루션 인코더의 개략도.
도 2는 종래의 컨벌루션 디코더의 블럭도.
도 2a는 도 2의 종래의 디코더에서 사용되는 메모리 어레이의 예를 도시하는 도면.
도 3은 본 발명의 실시예에 따른 컨벌루션 디코더의 블럭도.
도 4는 도 3의 디코더의 상태 선택기의 블럭도.
도 5a 및 5b는 도 3의 디코더에서 제 1 메모리 유닛의 메모리 어레이들의 예를 도시하는 도면.
도 6은 도 3의 디코더의 임계값 추정기(estimator)의 블럭도.
도 7a 및 7b는 도 6에서 도시된 임계값 추정기의 카운터 어레이의 예들을 도시하는 도면.
도 8a는 도 3의 디코더에서 제 2 메모리 유닛의 제 1 메모리 어레이의 예를 도시하는 도면.
도 8b 및 8c는 2개의 상이한 시간들에서 도 3의 디코더 내에 있는 제 2 메모리 유닛의 제 2 메모리 어레이의 예들을 도시하는 도면.
* 도면의 주요 부분에 대한 부호의 설명 *
100 : 종래의 컨벌루션 인코더 200 : 종래의 컨벌루션 디코더
300 : 본 발명의 실시예에 따른 디코더 40 : 상태 카운터
46 : 상태 선택기 64: 임계값 추정기
58 : 최대 선택기 48: 모듈로 2 유닛
84 : 카운터 어레이
본 발명은 데이터를 디코딩하는 디바이스 및 방법에 관한 것이고, 특히, 인코더의 모든 가능한 상태들 중 특정한 상태들에 대한 누적된 조건부 확률들(ACP들)을 발생함으로써 데이터를 디코딩하는 감소된-상태의 디바이스 및 방법에 관한 것이다.
종래의 컨벌루션 인코더는 시프트 레지스터 및 복수의 가산기들을 사용하여 정보 비트들을 인코딩한다. 도 1은 종래의 2분의 1 속도의 컨벌루션 인코더의 개략도를 도시한다. 여기에 도시된 바와 같이, 종래의 컨벌루션 인코더(100)는 서로 직렬로 접속된 복수의 메모리 유닛들(M0 내지 M7)로 구성된 시프트 레지스터(11)와, 상기 시프트 레지스터(11)에 결합되고 제 1 및 제 2 계수들(C0 및 C1)을 발생하는 제 1 및 제 2 가산기들(10 및 12)을 포함한다. 메모리 유닛들(M0 내지 M7) 각각은 이미 저장되어 있는 비트를 다음 1-비트 메모리로 시프트하면서 비트 입력을 저장하기 위한 1 비트 메모리이다.
시프트 레지스터(11)에서 8개의 1 비트 메모리 유닛들(M0 내지 M7)이 있기 때문에, 시프트 레지스터(11)는 256개의 가능한 상태들을 갖는다(상태 0에서 상태 255까지). 용어 "상태(state)"는 소정 시간의 시프트 레지스터(11)의 내용을 포함한다. 시프트 레지스터(11)의 상태는 시프트 레지스터(11)의 이전 상태의 도착하는 정보 비트가(즉, 제 1 메모리 유닛(M0)에 입력될 비트) 0이면 짝수 상태이고, 시프트 레지스터(11)의 이전 상태의 도착하는 정보 비트가 1이면 홀수 상태이다.
삭제
도 1의 종래의 컨벌루션 인코더(100)의 동작은 다음과 같다. 인코딩될 정보 비트들은 한번에 제 1 메모리 유닛(M0)에 입력된다. 정보 비트들의 블럭은(예를 들어, 196 비트들) 통상적으로 한번에 처리된다. 인코더(100)에 대한 각 새로운 정보 비트 입력이 시프트 레지스터(11)의 제 1 메모리 유닛(M0)으로 푸시(push)되면, 제 1 메모리 유닛(M0)의 이전 내용은 제 2 메모리 유닛(M1)으로 시프트되고, 제 2 메모리 유닛(M1)의 이전 내용은 제 3 메모리 유닛(M2)으로 시프트되고, 제 3 메모리 유닛(M2)의 이전 내용은 제 4 메모리 유닛(M3)으로 시프트된다. 제어기(도시되지 않은)는 소정의 시간 간격으로 메모리 유닛들(M0-M7)의 비트들을 시프트하는 클럭 신호를 생성한다.
제 1 가산기(10)는 제 1 계수 C0을 발생하기 위하여, 시프트 레지스터(11)의 도착하는 정보 비트를 메모리 유닛들 (M0,M1,M2,M4,M6 및 M7) 내에 저장된 비트들과 가산한다. 제 2 가산기(12)는 제 2 계수(C1)를 발생하기 위하여 도착하는 정보 비트를 메모리 유닛들(M1,M2,M3 및 M7) 내에 저장된 비트들과 가산한다. 이 처리에 따라, 정보 데이터의 1비트는 인코더(100)에 입력되고, 한 쌍의 계수들(C0 및 C1)은 인코딩된 데이터로서 인코더(100)로부터 출력된다. 따라서, 인코더(100)는 1/2 처리 속도를 갖는다. 종래의 1/2 속도 컨벌루션 인코더(100)가 상술되었지만, 다른 처리 속도들(예를 들어, 1/3, 2/3 등등)을 갖는 인코더들이 당업계에서 또한 알려져 있다.
인코더(100)에 의해 발생된 제 1 계수 및 제 2 계수(C0 및 C1; 인코딩된 데이터)은 통신 채널들을 통하여 다른 인코더들/디코더들에 넘겨진다. 그러나, 이러한 처리 동안 인코딩된 데이터는 비트 손상되고 신뢰도가 떨어진다. 예를 들어, 인코딩된 데이터가 통신 채널들을 통과할 때, 특정 영("0") 비트들이 일("1")로 바뀌고, 또한 반대로 바뀌어서 손상된 계수들(CC0 및 CC1)은 인코딩된 데이터로서 전송되고 종래의 컨벌루션 디코더에 의해 디코딩된다.
손상된 계수들(CC0 및 CC1)을 디코딩하기 위하여, 종래의 컨벌루션 디코더는 인코더(100)의 시프트 레지스터(11)의 모든 가능한 상태들을 가정하고, 원래의 손상되지 않은 계수들(C0 및 C1)이 무엇인지 결정하려고 시도한다. 인코더(100)로부터 원래의 계수들(C0 및 C1)이 결정될 수 있다면, 정확한 입력 데이터(즉, 인코더(100)의 도착하는 정보 비트들)는 디코딩된 데이터로서 복구될 수 있다.
도 2는 손상된 계수들(CC0 및 CC1)과 같은 인코딩된 데이터를 디코딩하는 종래의 컨벌루션 디코더(200)의 블럭도를 도시한다. 디코더(200)는 도시된 것처럼 접속되는 상태 카운터(20)와, 이전 상태 위치기(22)와, 제 1 및 제 2 인코더들(24A 및 24B)과, 모듈로 2 유닛(26)과, 제 1 및 제 2 양자화기들(28A 및 28B)과, 제 1 및 제 2 가산기들(30A 및 30B)과, 최대 선택기(32)와, 메모리 유닛(34)과, 디코딩 유닛(36)을 포함한다.
상태 카운터(20)는 컨벌루션 인코더(100)에서 시프트 레지스터(11)의 모든 256개의 가능한 상태들을 포함하기 위하여, 손상된 계수들(CC0 및 CC1)의 각 쌍에 대해 상태 0에서 상태 255까지 카운트한다. 상태 카운터(20)에 의한 상태 카운트는 메모리 유닛(34)으로부터 발생되는 클럭 신호를 근거로 수행된다. 각 현재 상태 카운트값에 기초하여, 이전 상태 위치기(22)는 공지된 처리에 따라 2개의 가능한 이전 상태들을 결정한다(도 1에서 도시된 시프트 레지스터(11)의 메모리 유닛들(M0 내지 M7)의 2개의 가능한 내용들). 2개의 가능한 이전 상태들 중 하나는 제 1 인코더(24A)에 출력되고, 다른 가능한 이전 상태는 제 2 인코더(24B)에 출력된다.
모듈로 2 유닛(26)은 상태 카운터(20)로부터 상태 카운트값을 수신하고 각 상태 카운트값에 기초하여 0 또는 1을 발생한다. 디코더(200)에 의하여 복구되기 위하여 모듈로 2 유닛(26)으로부터 출력된 0 및 1은 가능한 정보 비트들(0 및 1)을 표현한다.
제 1 및 제 2 인코더들(24A 및 24B) 각각은 모듈로 2 유닛(26)으로부터 1 비트와, 이론적 계수들(TC0 및 TC1)을 발생하기 위하여 이전 상태 위치기(22)에 의해 결정되는 2개의 가능한 이전 상태들 중 하나를 수신한다. 제 1 및 제 2 인코더들(24A 및 24B)에 대한 각 입력에 대해, 제 1 인코더(24A)는 한 쌍의 이론적 계수들(TCO 및 TC1)을 발생하고, 제 2 인코더(24B)는 한 쌍의 제 2 이론적 계수들(TC0 및 TC1)을 발생한다. 이 처리는 256개의 가능한 상태들 각각에 대해 반복되어서 256쌍의 이론적 계수들(TC0 및 TC1)은 제 1 및 제 2 인코더들(24A 및 24B) 각각으로부터 순차적으로 출력된다.
제 1 및 제 2 양자화기들(28A 및 28B) 각각은 각각의 상태 카운트값에 대해 한 쌍의 이론적 계수들(TC0 및 TC1)을 수신하고, 인코딩된 데이터 비트들은(손상된 계수들(CC0 및 CC1)의 쌍들) 디코더(200)에 입력된다. 제 1 및 제 2 양자화기들(28A 및 28B) 각각은 손상되지 않은 계수들(C0 및 C1)이 디코더(200)에 입력된다는 것을 가정한 상태에서, 순차적으로 수신된 이론적인 계수들(TC0 및 TC1)의 쌍들에 기초하여 손상된 계수들(CC0 및 CC1)의 각 쌍의 조건부 확률을 결정하고, 다음에, 특정한 수의 레벨들(예를 들어, 32 또는 64 레벨들)로 조건부 확률들을 양자화한다. 제 1 및 제 2 양자화기들(28A 및 28B) 각각으로부터 출력된 양자화된 값들은, 입력된 손상된 계수들 (CC0) 및 (CC1)의 각 쌍이 이론적인 계수들(TC0 및 TC1)의 256개의 쌍들과 얼마나 매칭되는지 나타낸다. 따라서, 종래의 컨벌루션 디코더(100)는 인코더(100)의 전체 256개의 가능한 상태들을 위한 조건부 확률들을 결정함으로써 완전한 검색 알고리즘을 실행한다.
양자화된 값이 양자화기들(28A 및 28B)로부터 출력될 때마다, 제 1 및 제 2 가산기들(30A 및 30B) 각각은 갱신된 ACP들을 발생하도록 메모리 유닛(34) 내에 저장된 대응하는 누적된 양자화된 값(즉, ACP)과 현재 양자화된 값을 가산한다. 최대 선택기(32)는 소정의 시간에서 가산기들(30A 및 30B)로부터 2개의 ACP들을 수신하며, 2개의 ACP들을 서로 비교하고 2개의 ACP들 중 큰 ACP를 선택한다. 선택된 ACP는 이후, 위닝(winning) ACP라 칭해지고, 위닝 ACP를 야기하는 이전 상태는 이후, 위닝 이전 상태(PS)라 칭해진다. 위닝 ACP 및 PS 는 메모리 유닛(34)에 출력되고, 여기서 위닝 ACP는 현재 상태 카운트값에 대응하는 메모리 유닛(34)의 데이터 슬롯 내에 현재 저장된 ACP로 교체된다.
196개의 정보 비트들의 블럭이 인코더(100)에 의해서 한번에 처리된다면, 메모리 유닛(34)은 0부터 255까지 가능한 ACP들 및 196개의 정보 비트들 각각을 위한 대응하는 PS들을 저장하고, 최대 선택기(32)의 출력들을 사용하여 모든 256개의 ACP들을 갱신해야만 한다. 이 처리 및 디코딩 유닛(36)에 의한 처리를 수행하기 위하여, 메모리 유닛(34)은 위닝 ACP들을 저장하기 위한 다른 메모리 어레이들 외에 위닝 PS들을 저장하기 위한 256 ×196개의 메모리 어레이를 필요로 한다. 도 2a는 위닝 PS들을 저장하기 위한 메모리 유닛(34)의 256 ×196의 메모리 어레이(34a)의 예를 도시한다. 여기서 도시된 것과 같이, 메모리 유닛(34)의 메모리 어레이(34a)는 256개의 행들(RO 내지 R255)과 196개의 열들(C0 내지 C195)로 구성되어 있다. 각 행 수는 현재 상태의 값을 나타내고, 각 열 수는 196개의 정보 비트들에서 한 비트를 나타낸다. 각 정보 비트(즉, 각 열을 위한)를 위하여, 메모리 유닛(34)은 전체 256개의 가능한 상태들에 대응하는 PS들을 그것의 어레이(34a)에 저장한다. 예를 들어, 현재 상태가 0이라면(즉, R0), 196번째, 정보 비트는 디코더(200)에 의해 디코딩되며 이 특정한 현재 상태를 위한 위닝 PS들은 최대 선택기(200)에 의해 3으로 결정되었고, 다음에 3의 위닝 PS들은 어레이(34a)의 데이터 슬롯(R0,C195)에 저장된다.
일단 어레이(34a)에 모든 슬롯들이 채워지면, 디코딩 유닛(36)은 어레이(34a)를 사용하는 원래의 정보 비트들을 복구하기 시작한다. 디코딩 유닛(36)은 어레이(34a)의 슬롯(R0,C195)으로부터 3의 위닝 PS들을 먼저 검색한다. 위닝 PS가 3이기 때문에, 디코딩 유닛(36)은 다음 열(C194)의 행(R3)으로 가고, 그곳으로부터 1의 위닝 PS를 검색한다. 위닝 PS가 여기서 1이기 때문에, 디코딩 유닛(36)은 다음 열(C193)의 행(R1)으로 가고, 그곳으로부터 255의 위닝 PS를 검색한다. 위닝 PS가 이제 255이기 때문에, 디코딩 유닛(36)은 다음 열(C192)의 행(R255)으로 가고, 그곳으로부터 62의 위닝 PS를 검색한다. 이 처리는 마지막 열(C0)이 탐색될 때까지 반복된다. 이 복구 처리의 결과로써, 196개의 정수들이 디코딩 유닛(36)에 의해 순차적으로 수집된다. 196개의 정수들 각각이 홀수인지 짝수인지에 따라, 영(0)또는 일(1)의 비트가 원래의 196개의 정보 비트들을 나타내는 디코딩된 데이터로써 디코딩 유닛(36)으로부터 출력된다.
위에서 언급되었듯이, 종래의 디코더들은 인코더의 모든 가능한 상태들에 대한 PS들을 저장하기 위하여, 큰 메모리 어레이(예를 들어, 256 ×196)를 요구한다. 그러나, 종종, 디코더에서 그렇게 큰 메모리 어레이를 사용하는 것은 경제적으로 실행 불가능하다. 더욱이, 시간이 경과할 때, 한 데이터 블럭의 크기와 가능한 상태들의 수가 증가되는 경향이 있어서 훨씬 더 큰 메모리를 필요로 한다. 그러나, 큰 메모리가 시스템 내에서 사용될 수 있을지라도, 종래의 컨벌루션 디코더들에 의해 실행되는 완전한 검색 알고리즘은 ACP들이 인코더의 모든 가능한 상태들에 대해 계산되어야 하기 때문에 극단적으로 시간을 소비한다.
본 발명은 누적된 조건부 확률들(ACP들)과 연관된 위닝 이전 상태들(PS들)을 저장하기 위하여 ACP들이 적게 발생되기 때문에 작은 메모리를 사용하는 데이터를 디코딩하는 감소된-상태 방법 및 디바이스에 관한 것이다. 감소된 상태 디바이스 및 방법은 제어 신호를 기초로 하여, 각 인코딩된 데이터를 위한 인코더의 모든 가능한 상태들로부터 오직 특정한 현재 상태들을 선택하고 선택된 현재 상태에 대한 ACP들을 발생한다. 각 비선택된 현재 상태에 대해, 미리 결정된 양자화된 값(PQV)이 출력된다. ACP들 및 PQV는 임계값과 비교된다. ACP/PQV이 임계값 이상이면, 그러한 ACP/PQV과 연관된 PS는 제 1 메모리 어레이 내에 저장된다. 제 2 메모리 어레이는 위닝 PS가 저장되는 제 1 메모리 어레이의 위치 정보를 저장한다. 제 1 메모리 어레이의 각 열로부터, 여기에 저장된 값들 중 하나가 이전의 열들로부터 선택된 값을 기초로 하여 선택된다. 이 선택된 값들은 0또는 1 비트로 변환되고, 변환된 데이터 비트들은 디코딩된 데이터로써 출력된다. 따라서, 본 발명은 모든 가능한 상태들 중 특정한 상태들에 대한 ACP들만을 발생한다. 따라서, ACP들과 관련된 PS들을 저장하기 위하여 적은 메모리를 요구한다. 더욱이, 본 발명은 감소된 수의 상태들이 디코딩된 데이터를 발생하기 위하여 검색되기 때문에, 더 빠른 디코딩 처리를 제공한다.
본 발명은 이후에 주어진 상세한 설명과 첨부된 도면들로부터 보다 완전히 이해될 수 있으며, 이들은 단지 예에 의한 것이며, 참조 번호들은 다양한 도면들에서 대응하는 부분들을 표시한다.
다음의 상세한 서술은 디코더 및 본 발명에 따라 데이터를 디코딩하는 방법에 관한 것이다. 본 디바이스 및 방법에서, 디코더의 메모리 크기를 감소하고 디코더의 디코딩 속도를 증가시키기 위하여 인코딩 디바이스의 모든 가능한 상태들 중에서 특정 상태들(예를 들어, 가장 많이 발생할 상태들)만이 검색된다. 또한 본 발명의 방법은 컴퓨터들 및 컴퓨터 프로그램들 또는 유사한 것들을 사용하여 실현될 수 있다.
본 발명에 따라 디코더의 동작 및 구조는 도 3-8b를 참조하여 이후에 설명될 것이다. 이 예에서, 본 발명의 디코더는 예를 들어 도 1에서 도시된 시프트 레지스터(11)인 인코더의 8 비트(256개의 가능한 상태들) 시프트 레지스터로부터 출력된 인코딩된 데이터를(손상된 계수들(CC0 및 CC1)의 쌍들) 디코딩한다. 그러나, 본 디바이스 및 방법은 상이한 크기의 시프트 레지스터 또는 다른 유형의 인코더들을 사용하여 발생된 다른 인코딩된 데이터를 디코딩하기 위하여 사용될 수 있다.
도 3은 본 발명에 따라 디코더(300)의 블럭도를 도시한다. 여기에서 도시된 바와 같이, 디코더(300)는 상태 카운터(40)와, 이전 상태 위치기(42)와 상태 선택기(46)와 모듈로 2 유닛(48)과 복수의 인코더들(50A 및 50B)과 복수의 양자화기들(52A 및 52B)과 복수의 가산기들(54A 및 54B)과, 최대 선택기(58)와 제 1 메모리 유닛(60A)과 디코딩 유닛(68)을 포함한다. 상태 카운터(40)는 당업계에서 알려진 시프트 레지스터일 수 있고 이전 상태 위치기(42)와, 모듈로 2 유닛(48)과 복수의 인코더들(50A 및 50B)과 복수의 양자화기들(52A 및 52B)과 복수의 가산기들(54A 및 54B)과, 최대 선택기(58)는 도 1에서 도시된 것처럼 잘 알려져 있다.
상태 카운터(40)는 제 1 메모리 유닛(60A)으로부터 발생된 클럭 신호를 기초로 하여 가능한 상태 0부터 가능한 상태 255까지 카운트한다. 상태 카운터(40)는 시프트 레지스터 또는 당업계에서 알려진 카운터 디바이스들일 수 있다. 상태 카운터(40)가 이 예에서 256개의 가능한 상태들을 카운트함에도 불구하고, 가능한 상태들의 상이한 수는 인코더 등의 크기에 따라 카운트될 수 있다. 상태 카운터(40)는 모듈로 2 유닛(48)와 이전 상태 위치기(42) 모두로 각 상태 카운트값을 출력한다. 각 상태 카운트값에 있어서, 이전 상태 위치기(42)는 2개의 가능한 이전 상태들(PS1 및 PS2)을 결정한다. 현재 상태가 "N"이고 가능한 상태들의 총 수가 "M"이라면, 2개의 가능한 이전 상태들은 "N/2" 및 "(N+M)/2" 이다. 예를 들어, 상태 카운터(40)가 상태(4)로부터 상태(5)까지 시프트하고, 상태(5)를 출력한다. 현재 상태 카운트로써 이전 상태 위치기(42)는 현재 상태(상태 5)에 대응하는 2개의 가능한 이전 상태들이 "상태(2)"(2≒5/2) 및 "상태(130)"(130≒(5+256)/2)이라는 것을 결정한다. 이 예에서처럼, 세그먼트가 십진수를 초래한다면, 십진수는 우수리가 잘린다(round down).
이전 상태 위치기(42)는 다음에 2개의 가능한 이전 상태들 PS1 및 PS2(예를 들어, 상태 2 및 상태 130)을 각각 제 1 및 제 2 입력 라인들(70A 및 70B)을 통하여 상태 선택기(46)에 출력한다. 도 4는 상태 선택기(46)의 상세한 블럭도를 도시한다.
도 4에서 도시된 바와 같이, 상태 선택기(46)는 제 1 및 제 2 전송기들(73A 및 73B)과, 제 1 및 제 2 전송기들(73A 및 73B)에 각각 접속된 제 1 및 제 2 메모리들(75A 및 75B)을 포함한다. 제 1 및 제 2 전송기들(73A 및 73B)는 당업계에서 알려진 논리 게이트들로 구현될 수 있다. 제 1 및 제 2 메모리들(75A 및 75B)는 그들의 소정의 양자화된 값 (PQV)을 미리 저장한다. PQV는 제 1 메모리 유닛(60A)에 저장된 임의의 ACP들(256개의 상태들을 위해)와 상이할(바람직하게는 더 낮음) 수 있는 임의의 값일 수 있다. 이 예에서, 유닛(60A)에서 제 1 메모리에 저장된 모든 ACP들은 음수가 아닌 반면, PQV는 -1과 같은 음수이다. 그러나, 다른 수들은 본 발명에 따라 PQV로써 사용될 수 있다.
그 상태 선택기(46)는 제 1 및 제 2 입력 라인들(70A 및 70B)를 통하여 한 쌍의 가능한 이전 상태들 PS1 및 PS2(예를 들어, 상태 2 및 상태 130)를 수신한다. 제 1 메모리 유닛(60A)로부터 인에이블 신호 ENA 또는 디스에이블 신호 DIS는 접속부(71)를 통하여 상태 선택기(46)의 제 1 및 제 2 전송기(73A 및 73B) 모두에 동시에 인가된다.
제 1 전송기(73A)가 제 1 메모리 유닛(60A)로부터 인에이블 신호 ENA를 수신하면, 제 1 전송기(73A)는 제 1 가능한 이전 상태 PS1(예를 들어, 상태2)을 제 1 전송 라인(72A)을 통하여, 제 1 인코더(50A)로 전송한다. 유사하게, 제 2 전송기(73b)가 제 1 메모리 유닛(60A)으로부터 인에이블 신호 ENA를 수신할 때, 제 2 전송기(73b)는 제 2 가능한 이전 상태 PS2를 제 2 전송 라인(72b)을 통하여 제 2 인코더(50b)로 전송한다. 동시에, 제 1 및 제 2 전송기들(73A 및 73B)는 제 1 및 제 2 메모리들(75A 및 75B)를 디스에이블시킴으로써, 데이터가 메모리들(75A 및 75B)에서 출력되지 않도록 한다.
만약 제 1 전송기(73A)가 제 1 메모리 유닛(60A)로부터 디스에이블 신호 DIS를 수신한다면, 제 1 전송기(73A)는 제 1 전송 라인(72A)을 디스에이블하고 동시에 제 1 메모리(75A)에 미리 저장된 PQV를 제 1 접속 라인(74A)을 통하여 최대 선택기(58)에 출력하기 위하여 제 1 메모리(75A)를 인에이블한다. 동시에, 제 2 전송기 (73A)가 제 2 메모리 유닛(60b)로부터 디스에이블 신호(DIS)를 수신할 때, 제 2 전송기(73b)는 제 2 전송 라인(72b)를 디스에이블하고, 동시에 제 2 메모리(75b)에 미리 저장된 동일한 PQV를 제 2 접속 라인(74B)을 통하여 최대 선택기(58)에 출력하기 위하여 제 2 메모리(75b)를 인에이블한다.
따라서, 특정한 현재 상태에 대응하는 이전의 가능한 상태들 PS1 및 PS2의 쌍들은 상태 선택기(46)로부터 제 1 및 제 2 전송 라인들(72A 및 72B)를 통하여 각각 제 1 및 제 2 인코더들(50A 및 50B)로 전송된다. 비선택된 이전의 가능한 상태들 PS1 및 PS2는 상태 선택기(46)에 의해 버려지고, 대신에 메모리들(75A 및 75B)에 미리 저장된 PQV가 제 1 및 제 2 접속 라인들(74A 및 74B)를 통하여 최대 선택기(58)로 전송된다.
모듈로 2 유닛(48)는 상태 카운터(40)로부터 상태 카운트값들을 수신하고 각 상태 카운트값에 기초하여 다른 짝수 또는 홀수를(예를 들어, 0과 1) 발생한다. 예를 들어, 모듈로 2 유닛(48)는 짝수 상태 카운트값이 수신되면 0을 발생하고 홀수 상태 카운트값이 수신되면 1을 발생한다. 모듈로 2 유닛(48)로부터의 0과 1 출력은 디코더(300)에 의하여 복구되기 위한 가능한 정보 비트들(0과 1)을 나타낸다. 이 예에서, 현재 상태 카운트가 5라고 주어지면, 모듈로 2 유닛(48)는 인코더들(50A 및 50B)로 1을 발생한다.
제 1 인코더(50A)는 모듈로 2 유닛(48)로부터 비트를(예를 들어, 1), 상태 선택기 (46)로부터 제 1 가능한 이전 상태(PS1)(예를 들어, 상태 2)를 수신하고, 이들 입력들에 기초하여 이론적 계수들(TC0 및 TC1)의 제 1 쌍을 발생한다. 제 2 인코더(50B)는 모듈로 2 유닛(48)로부터 동일한 비트(즉, 1)와, 상태 선택기(46)로부터 제 2 이전 상태 PS2(예를 들어, 상태(130))를 수신하고, 이들 입력들에 기초하여 이론적인 계수들(TC0 및 TC1)의 제 2 쌍을 발생한다. 이 처리는 상태 선택기(46)에 의하여 가능한 이전 상태들의 각 쌍에 대해 반복된다.
제 1 양자화기(52A)는 이론적 계수들 TC0 및 TC1을 제 1 인코더(50A)로부터 수신하고, 인코딩된 데이터 비트들(예를 들어, 손상된 계수들(CC0 및 CC1))은 디코딩을 위해 디코더(300)로 외부에서 입력된다. 유사하게, 제 2 양자화기(52b)는 제 2 인코더(50b)로부터 이론적 계수들(TC0 및 TC1)을 수신하고, 손상된 계수들(CC0 및 CC1)과 손상된 계수들(CC0 및 CC1)을 수신한다. 제 1 및 제 2 양자화기들(52A 및 52B) 각각은 대응하는 인코더(50A 및 50B)로부터 발생되는 이론적인 계수들 TC0 및 TC1의 각 쌍들에 기초하여 손상된 계수들(CC0 및 CC1)의 각 쌍의 조건부 확률을 결정하고, 다음에 양자화된 값들을 발생하기 위하여 많은 소정의 32 레벨 또는 64 레벨들 등으로 각 조건부 확률들을 양자화한다. 예를 들어, 전체 256개의 가능한 상태들 중에 약 40 개의 상태들이 상태 선택기(46)(40개의 선택된 상태들에 대응하는 약 80개의 이전 상태들을 발생함)에 의하여 선택된다면, 각 양자화기(52A, 52B)는 손상된 계수들(CC0 및 CC1)의 각 쌍에 대한 40개의 선택된 상태들마다 80개의 양자화된 값들을 발생한다. 이들 양자화된 값들은 손상된 계수들(CC0 및 CC1)의 쌍이 이론적인 계수들 (TC0 및 TC1)의 각 쌍과 얼마나 잘 매칭되는지 나타낸다.
양자화된 값이 양자화기들(52A 및 52B) 각각으로부터 출력될 때마다, 제 1 및 제 2 가산기들(54A 및 54B) 각각은 제 1 메모리 유닛(60A)에 저장된 대응하는 누적된 양자화된 값(즉,ACP)과 현재의 양자화된 값을 가산한다.
제 1 메모리 유닛(60A)에 저장된 데이터는 도 5a 및 도 5b에서 더 이해될 것이고, 이 도면들은 본 발명에 따라 제 1 메모리 유닛(60A)의 메모리 어레이들의 예들을 도시한다. 여기서 도시된 바와 같이, 제 1 메모리 유닛(60A)는 인덱스(IN1)로 언급되는 데이터 영역(92)을 갖는 제 1 메모리 어레이(90)와, 인덱스(IN2)에 의해 언급되는 데이터 영역(95)을 갖는 제 2 메모리 어레이(93)를 포함한다. 인덱스들(IN1) 및 (IN2)의 인덱스 번호들은 현재 상태 카운트에 해당하여서 가능한 256개의(인덱스 0부터 인덱스 255까지) 상태를 나타낸다. 데이터 영역(92)에서, ACP와 인덱스 0부터 인덱스 255에 대응하는 이전 상태들 PS(ACP0,ACP1,ACP2 ,…,ACP255; PS0,PS1,PS2,…,PS255)의 한 쌍이 저장되고, PQV는 상태 선택기(46)에 의존하는 ACP대신에 저장된다. 제 2 메모리 어레이(93)는 그것의 데이터 영역(95)에 인덱스 번호에 따라 각 현재 상태에 대한 조건부 확률(CP0,CP1,CP2,…,CP255)을 저장한다. 이들 값들은 현재 상태의 ACP가 막 갱신된 경우에 가산기들(54A 및 54B)에 출력된다. 더욱이, 메모리 유닛(60A)는 어레이(90)에 저장된 데이터에 기초하여 상태 선택기(46)으로 인에이블 및 디스에이블 신호들 ENS 및 DIS를 출력하기 위하여 다른 회로들을 포함하다. 만약 PQV가 현재 상태의 카운트와 매칭하는 인덱스 번호에 대응하는 데이터 영역(92)에 저장되면, 디스에이블 신호(DIS)는 상태 선택기(46)에 출력된다. 그렇지 않다면, 메모리 유닛(60A)는 상태 선택기(46)으로 인에이블 신호(ENS)를 출력한다.
예를 들어, 현재 상태 카운터가 대응하는 이전 상태로써 상태(2)와 상태(130)를 발생하는 5이라면, 제 1 메모리 어레이(90)로부터 인덱스(2)(이전 상태가 2이기 때문에)에 대응하는 ACP2와 인덱스(130)(이전 상태가 130이기 때문에)에 대응하는 ACP130 는 제 1 및 제 2 가산기들(54A 및 54B) 각각에 출력된다. 제 1 및 제 2 가산기들(524A 및 54B)는 다음에 한 쌍의 새로운 ACP들의 한 쌍을 최대 선택기(58)에 출력한다. 최대 선택기(58)는 2개의 ACP들을 서로 비교하고, 위닝 ACP를 발생하기 위하여 2개의 ACP들 중 더 큰 것을 선택하고, 제 1 메모리 어레이(90)에서 인덱스(5)(현재 상태)하에 현재 저장된 ACP/PQV를 위닝 ACP로 교체한다. 만약 최대 선택기(58)가 현재 상태 카운터를 위해 상태 선택기(46)의 메모리들(75A 및 75B)에서 미리 저장된 PQV들를 수신한다면, 최대 선택기(58)는 PQV와 함께 인덱스(5)하에서 현재 저장되는 ACP/PQV를 갱신한다.
이 예에서, 고려되고 있는 256개의 가능한 상태들이 존재하기 때문에, 제 1 메모리 어레이(90)는 256 ×2의 어레이이고, 제 2 메모리 어레이(93)는 256 ×1의 어레이이다. 그러나 인코더에 의해 처리되는 인코더의 크기 및 블럭 데이터의 크기에 따라, 상이한 크기들을 갖는 메모리 어레이들은 제 1 메모리 유닛(60A)를 위해 사용될 수 있다. 모든 256개의 인덱스 번호들에 대응하는 데이터가 발생되고, 제 1 메모리 유닛(60A)에 의해 처리되면, 제 1 메모리 유닛(60A)는 손상된 계수들(CC0 및 CC1)의 다음 쌍에 대해 0부터 다시 카운트 처리를 시작하기 위하여 상태 카운터(40)에 제어 신호를 발생한다. 이 예에서, 한번에 처리되는 인코딩된 데이터의 블럭이 196개의 정보 비트들을 갖기 때문에 이것은 196번 동안 실행된다.
제 1 메모리 유닛(60)의 데이터 영역(92)에서 저장되는 모든 256개의 ACP들/PQV 데이터는 임계값 추정기(64)로 순차적으로 출력된다. 도 6은 도 3의 임계값 추정기의 상세한 블럭도를 도시한다. 도 6에서 도시된 바와 같이, 임계값 추정기(64)는 256개의 상태들에 대응하는 256개의 ACP들/PQV를 특정한 사전 설정 값들로 양자화하거나 디지털화하기 위하여 디지털화기(80)와, ACP들/PQV를 사용하는 누적된 값들을 발생하기 위하여 카운터 어레이(84)와, 임계값 설정 값(TSV) 입력에 기초하여 카운터 어레이(84)로부터 인덱스 번호를 액세스하고, 임계값(h)으로써 인덱스 번호를 출력하기 위하여 어레이 액세스 논리(AAL) 유닛(86)을 포함한다. AAL 유닛(86)는 당업계에서 알려진 논리 게이트들의 집합을 사용하여 실현된다.
임계값 추정기(64)의 디지털화기(80)는 제 1 메모리 유닛(60A)의 데이터 영역(92)로부터 데이터의 256개의 설정들을 수신하고, 이들 데이터를 소정의 수의레벨들로 양자화하고, 양자화된 값들을 카운터 어레이(84)에 출력한다. 카운터 어레이(84)는 도 7a 및 7b에서 도시된 것처럼 제 1 카운터 어레이(110)와 제 2 카운터 어레이(113)를 포함한다. 제 1 카운터 어레이(110)는 인덱스(IN3)의 인덱스 번호들에 대응하는 데이터를 저장하기 위하여 데이터 영역(112)을 포함한다. 유사하게, 제 1 카운터 어레이(113)는 인덱스(IN4)의 인덱스 번호들에 대응하는 데이터를 저장하기 위하여 데이터 영역(115)을 포함한다. 인덱스(IN3)및 (IN4)의 인덱스 번호들은 디지털화기(80)으로부터 가능한 양자화된 값들 출력의 범위에 해당한다. 예를 들어, 디지털화기(80)으로부터의 출력인 가능한 양자화된 값들이 80부터 100까지의 범위라면, 도 7a에서 도시된 바와 같이, 순차적으로 인덱스들(IN3) 및 (IN4)에서 인덱스 번호들은 0부터 100까지의 범위이다.
제 1 카운터 어레이(110)는 디지털화기(80)으로부터 256개의 양자화된 값들을 수신하고, 256개의 양자화된 값들에서 각 양자화된 값들이 몇 번 일어나는지 카운트한다. 예를 들어, 도 7a에서 도시된 바와 같이, "0"의 양자화 값 5가 존재하고, "1"의 양자화 값 2번이 존재하고, "2"의 양자화값 3이 존재하고, …,"97"의 양자화값 6이 존재하고, "98"의 양자화값이 0이고, "99"의 양자화값 3이 있고, "100"의 양자화값 1이 존재하면, 제 1 카운터 어레이(110)은 데이터 영역(112)에서 각각이 인덱스 번호들("0,1,2,…,97,98,99,100")에 대응하는 값들("5,2,3, …,6,0, 3,1")을 저장한다.
삭제
다음에 제 2 카운터 어레이(113)은 마지막 인덱스 번호, 즉, 인덱스(100)로부터 데이터 영역(112)에 저장되는 데이터를 액세스하고, 데이터 영역(115)에 데이터를 누적한다. 예를 들어, 제 2 카운터 어레이(113)는 인덱스(IN3)의 인덱스(100)에 대응하는 "1"의 값과 인덱스(99)에 대응하는 "4(=1+3)"의 값과, 인덱스(98)에 대응하는 "4"(=4+0)의 값과, 인덱스(97)에 대응하는 "10"(=4+6)의 값을 저장한다. 이 처리는 제 1 어레이(110)의 인덱스 0에 대응하는 데이터가 액세스될 때까지 계속된다. 이 처리를 완료하자마자 제 2 카운터 어레이(113)는, 이 예에서, 제 2 카운터 어레이(113)의 인덱스(96)와 인덱스(0)의 사이의 데이터 영역(115)에서 저장되는 "256"의 값을 가질 것이다.
AAL은 사용자 또는 외부의 소스로부터 TSV를 수신한다. 사용자는 AAL 유닛(86)으로 TSV의 입력값을 제어함으로서 제 2 메모리 유닛(60b)의 크기를 제어할 수 있다. AAL 유닛(86)는 TSV와 매칭되는 데이터를 위해 제 2 카운터 어레이(113)의 데이터 영역(115)를 검색한다. 만약 정확히 매칭되지 않는다면, AAL 유닛(86)는 TSV에 가장 가까운 데이터를 찾는다. 일단 데이터 매칭이 발견되면, AAL 유닛(86)는 매칭 데이터에 대응하는 인덱스 번호를 출력하고 비교기(62)에 임계값(h)으로서 이 인덱스 번호를 출력한다. 예를 들어, TSB=9이라면, 그것의 대응하는 데이터"10"이 TSV에 가장 가까이 매칭이기 때문에 AAL 유닛(86)는 어레이(113)으로부터 인덱스(97)을 선택한다. 결과로써, 이 예에서, h=97 는 비교기(62)에 출력이다.
임계값(h) 외에, 비교기(62)는 순차적으로 모든 256개의 인덱스 번호들을 위해 제 1 메모리 유닛의 데이터 영역(92)에서 저장되는 데이터(ACP 또는 PQV, PS)를 수신한다. 그러한 데이터가 순차적으로 수신되기 때문에, 비교기(62)는 수신된 ACP/PQV와 임계값 h를 비교한다. 수신된 ACP/PQV가 임계값(h)보다 크거나 동일하다면, ACP/PQV에 대응하는 PS는 제 2 메모리 유닛(60b)로 넘겨진다. 그렇지 않다면, 수신된 데이터는 폐기되고 다음 인덱스 번호에 대응하는 다음 데이터가 비교되고 유사하게 처리된다.
도 8a 및 8b는 본 발명에 따른 제 2 메모리 유닛(60b)의 메모리 어레이들의 예들을 도시한다. 여기에서 도시된 바와 같이, 제 2 메모리 유닛(60b)는 제 1 메모리 어레이(120)와 제 2 어레이(122)를 포함한다. 이 예에서, TSV와 196개의 정보 비트들은 한번에 디코딩된다는 것에 기초하여 제 1 메모리 어레이(120)는 예를 들어, 64 ×196의 크기를 갖고, 제 2 메모리 어레이(122)는 예로 256 ×2의 크기를 갖는다; 그러나, 다양한 크기들을 갖는 메모리 어레이들은 TSV 및/또는 다른 요소들, 즉 데이터 블럭 크기에 따라 사용될 수 있다. 제 1 메모리 어레이(120)의 각 열은 복구되기 위하여 196개의 정보 비트들의 하나를 나타낸다.
본 발명에 따라 제 2 메모리 유닛(60b)에서 데이터를 저장하는 방법의 예는 다음과 같다.
제 1 및 제 2 메모리 어레이들(120) 및 (122)는 그곳에 다른 데이터가 저장되기 전에 소정의 번호로, 예를 들어,-1인, 초기화된다. 즉, -1로 마크(mark)된 다른 데이터 슬롯은 그것이 비어있다는 것을 나타낸다. 비교기(62)의 비교 테스트에 넘겨진 ACP들에 대응하는 위닝 PS들은, 순차적으로 출력되고, 데이터 슬롯(R0, C0)으로 시작되는 제 1 메모리 어레이(120)에 행 방향으로 아래로 저장된다(예를 들어, 열C0에서 R1,R2,R3,…,R263). 각 위닝 PS는 특정한 현재 상태와 연관되고 어레이(120)는 한번에 한 열씩 처리되고, 한 열은 복구되는 한 정보 비트를 나타낸다. 즉, 한 열에 대한 모든 위닝 PS들이 일단 처리되면, 마지막 열(C195)이 처리될 때까지 다음 이웃하는 열에 대한 모든 위닝 PS들이 처리된다.
예를 들어, 어레이(120)의 열(C3)이 처리되고 있고, 비교기의 출력들은 현재 상태=12이고, 위닝 PS=6 이라는 것을 가정한다. 열(C3; 3=홀수)은 홀수 열이기 때문에, 제 2 메모리 어레이(122)의 제 2 열(CC1)은 검색된다. 그러나, 현재 처리되고 있는 제 1 어레이(120)의 열은 짝수이고, 다음에 제 2 메모리 어레이(122)의 제 1 열(CC0)은 처음으로 검색된다.
위닝 PS=6 이기 때문에, 열(CC1)의 행(RR6)이 위치되고, 그곳에 저장된 값이 액세스된다. 이 때, 제 2 어레이(122)의 인덱스 번호(즉, 행 번호)는 위닝 PS를 나타낸다. 슬롯에서(RR6, CC1), 3의 값이 저장된다. 이것은 제 1 어레이(120)에서 6의 위닝 PS를 저장해야 할 곳을 나타낸다. 열(RR6)에 저장된 값이 3이기 때문에, 6의 위닝 PS는 제 1 어레이(120)의 열(C3)의 행(R3; 3 = 어레이(192)에 저장되는 값)에 저장된다. 다음에, 슬롯(RR3,CC1)에서 저장되는 3의 값은 점유를 나타내기 위하여 -2로 변화되고(도, 8c에서 도시된 것처럼), 현재 상태=12이기 때문에, 열(CC0)에서 행(RR12)이 액세스된다. 즉, 이번에, 제 2 어레이(122)의 인덱스는 현재 상태 카운트를 나타낸다. 슬롯(RR12, CC0)에서, 3의 동일한 값이 저장된다.
모든 위닝 ACP들에 대해 위에서 논의된 것처럼 어레이(120)의 열(C3)을 처리한 후에, 다음 열(C4)이 처리된다. 열(C4)은 짝수 열이기 때문에 어레이(92)의 열(CC0)은 초기에 액세스된다. 비교기(62)가 현재 상태=24와 위닝 PS=12를 출력한다면, 그후에 슬롯에(RR12, CC0)에 저장되는 값이 액세스된다. 이번에, 제 2 어레이(122)의 인덱스는 위닝 PS를 나타낸다. 3의 값이 도 8c에서 도시된 것같이 슬롯(RR12, CC0)에 저장되기 때문에, 12의 위닝 PS는 제 1 어레이(120)의 열(C4)의 행(R3)에 저장된다. 다음에, 슬롯(RR12, CC0)에서 3의 값은 점유를 나타내며 -2로 변화되고, 다음의 열 처리를 위해 슬롯(RR24,CC1)에서 3의 값이 저장된다. 상기 서술된 처리는 제 1 어레이(120)의 마지막 열C195이 완전히 처리될 때까지 계속된다. 다음에 디코딩 유닛(68)는 원래의 정보 비트들을 복구하기 위하여 마지막 열에서 제 1 열(C195에서 C0까지)까지 제 1 어레이(120)에 저장되는 위닝 PS들을 액세스한다.
제 1 어레이(120)에 저장되는 데이터를 사용하는 디코딩된 정보 비트들을 발생하는 동작은 다음과 같다.
다른 데이터 블럭의 마지막 상태는 통상적으로 8개의 마지막 부분 비트들이 0으로 알려져 있기 때문에, 디코딩 유닛(68)는 0의 값에 대해 어레이(120)의 마지막 열(C195)을 검색한다. 0의 값이 행(R0)에서 발견되면, 0의 값은 정보 비트 위치 #195를 위해 선택된다. 다음에 디코딩 유닛(68)는 다음 왼쪽 열로 이동하고 그곳에, 즉, 슬롯에(R1,C194) 저장된 값을 판독한다. 디코딩 유닛(68)는 다음으로 이동하고, -1의 값이 검출되지 않는 한 유닛이 위치해있는 각 값을 판독한다. 이 예에서, 슬롯이 비워져 있음을 나타내는 -1의 값은 슬롯(R1, C194)에 위치된다. 다음에, 열(R195)은 다른 0이 발견될 때까지 행(R0)으로부터 행(R64)으로 검색된다. 이 처리에 의해 다른 0은 슬롯(R2, C195) 내에서 발견된다. 다음에 디코딩 유닛(68)는 다음 왼쪽 열로 이동하고 값들(128 및 64)을 열(C192)에서 -1일 위치할 때까지 판독한다. 다음에 열(C193)은 다른 64가 위치될 때까지 행 R0에서 R64까지 검색된다. 다른 64는 슬롯(R5,C193)에서 발견된다. 디코딩 유닛(68)는 -1이 위치할 때까지 다음으로 이동하고 값들(32) 및 (144)을 판독한다. 이 처리는 열(C0)로부터의 값이 판독될 때까지 계속된다.
따라서, 디코딩 유닛(68)는 196개의 정수들을 모으고, 정수가 홀수인지 또는 짝수인지에 따라 디코딩된 데이터로써 0 또는 1을 발생한다. 예를 들어, 정수가 홀수이면, 디코딩 유닛(68)는 1을 출력하고 정수가 짝수이면, 디코딩 유닛(68)는 0을 출력하여서, 196개의 정보 비트들은 디코딩된 데이터로써 디코딩 유닛(68)로부터의 출력이다. 이 예에서, 0,128,64,32,144…의 정수들은 어레이(120)에서 발견되기 때문에,0,0,0,0,…의 디코딩된 데이터는 디코딩된 데이터로써 디코딩 유닛(68)로부터의 출력이다.
본 디바이스 및 방법에 따르면, 디바이스 및 방법의 비용을 낮추고, 디바이스와 방법의 동작 속도를 증가시키기 위하여 더 작은 메모리들이 사용될 수 있고 감소된 상태 검색 알고리즘이 수행된다.
본 발명에 따르면, 본 디바이스 미 방법은 인코딩된 데이터 각각에 대해 인코더의 모든 가능한 상태들로부터 특정한 현재 상태들을 선택하고, 선택된 현재 상태들에 대해 누적된 조건부 확률들(ACP들)을 발생하고, 임계값과 ACP를 비교하고, 그 비교된 결과에 기초하여 ACP들과 관련된 이전 상태들을 저장한다. 따라서, 감소된 상태들이 디코딩된 데이터를 발생하기 위하여 검색되기 때문에, 적은 메모리로 더 빠른 디코딩 처리를 제공한다.

Claims (49)

  1. 인코딩된 데이터를 디코딩하는 디바이스에 있어서,
    인코딩된 데이터 각각에 대한 모든 가능한 상태들로부터 특정한 현재 상태들을 선택하고, 상기 선택된 현재 상태들에 대한 누적된 조건부 확률들(ACP들)을 발생하고, 상기 ACP들을 임계값과 비교하며, 비교 결과들에 기초하여 상기 ACP들과 연관된 이전 상태들(PS들)을 저장하는 처리 유닛; 및
    상기 저장된 이전 상태들에 기초하여 상기 인코딩된 데이터를 디코딩하는 디코딩 유닛을 포함하고,
    상기 선택된 특정한 현재 상태들은 보완적 현재 상태들의 쌍들에 기초하여 선택되지 않는, 디코딩 디바이스.
  2. 제 1 항에 있어서, 상기 처리 유닛은,
    제어 신호에 기초하여 상기 특정한 현재 상태들을 선택하고, 상기 선택된 현재 상태들 각각에 대한 2개의 이전 상태들을 전송하거나 또는 비선택된 현재 상태들 각각에 대한 미리 결정된 양자화된 값(PQV)을 전송하는 상태 선택기를 포함하는, 디코딩 디바이스.
  3. 제 2 항에 있어서,
    상기 처리 유닛은 상기 PQV를 상기 비선택된 현재 상태들 각각에 대한 임계값과 비교하고, 상기 비교 결과에 기초하여 상기 PQV를 버리는(discard), 디코딩 디바이스.
  4. 제 1 항에 있어서, 처리 유닛은,
    상기 인코딩된 데이터 및 계수 데이터 각각에 기초하여 상기 선택된 현재 상태들 각각에 대한 2개의 조건부 확률들을 발생하는 복수의 인코딩 유닛들;
    상기 선택된 현재 상태들 각각에 대한 새로운 ACP들의 쌍을 발생하기 위하여 대응하는 ACP와 상기 인코딩된 유닛들로부터 출력된 상기 조건부 확률들 각각을 더하는 복수의 가산기들; 및
    위닝(winning) ACP 및 연관된 위닝 PS를 발생하기 위해 상기 선택된 현재 상태들에 대한 상기 새로운 ACP들의 쌍 각각에서 2개의 ACP들을 비교하고, 상기 선택된 현재 상태들에 대한 상기 위닝 ACP들 및 상기 연관된 위닝 PS들을 출력하고, 비선택된 현재 상태들에 대한 미리 결정된 양자화된 값(PQV) 및 연관된 위닝 PS들을 출력하는 최대 선택기(maximum selector)를 포함하는, 디코딩 디바이스.
  5. 제 4 항에 있어서,
    상기 처리 유닛은 인덱스 번호에 각각 할당된 복수의 데이터 슬롯들을 갖는 메모리 어레이를 구비하는 제 1 메모리 유닛을 더 포함하고, 상기 인덱스 번호는 현재 상태값을 표현하고, 상기 위닝 ACP 또는 PQV, 및 상기 가능한 상태들 각각에 대한 연관된 위닝 PS는 상기 제 1 메모리 유닛의 메모리 어레이 내에 저장되는, 디코딩 디바이스.
  6. 제 5 항에 있어서, 상기 처리 유닛은,
    사용자 입력, 및 상기 메모리 어레이 내에 저장된 상기 위닝 ACP들 또는 상기 PQV에 기초하여, 상기 임계값을 발생하는 임계값 추정기(threshold estimator);
    상기 위닝 ACP들 또는 상기 PQV를 상기 임계값과 비교하고, 상기 비교 결과들에 기초하여 상기 위닝 ACP들과 연관된 상기 위닝 PS들을 출력하고, 상기 비교 결과들에 기초하여 다른 위닝 PS들을 버리는 비교기; 및
    상기 비교기의 출력들을 저장하는 제 2 메모리 유닛을 포함하는, 디코딩 디바이스.
  7. 제 6 항에 있어서,
    상기 비교기에서, 상기 제 1 메모리 유닛으로부터 출력된 상기 위닝 ACP가 상기 임계값 이상이면, 상기 비교기는 상기 위닝 ACP를 상기 제 2 메모리 유닛 내에 저장하고, 상기 위닝 ACP가 상기 임계값보다 작다면, 상기 비교기는 상기 위닝 ACP를 버리는, 디코딩 디바이스.
  8. 제 1 항에 있어서,
    상기 디코딩 유닛은 상기 인코딩된 데이터 각각에 대한 상기 저장된 PS들로부터 위닝 PS를 선택적으로 얻고, 상기 선택적으로 얻어진 위닝 PS들에 기초하여 0 또는 1을 발생하는, 디코딩 디바이스.
  9. 제 1 항에 있어서, 상기 처리 유닛은,
    현재 상태 카운트값을 발생하기 위하여 상기 모든 가능한 상태들을 순차적으로 카운트하는 상태 카운터; 및
    상기 ACP들을 발생하기 위해 현재 상태 카운트값 각각과 연관된 2개의 이전 상태들을 계산하는 이전 상태 위치기를 포함하는, 디코딩 디바이스.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 인코딩된 데이터를 디코딩하는 방법에 있어서,
    상기 인코딩된 데이터 각각에 대한 모든 가능한 상태들로부터 특정한 현재 상태들을 선택하고, 상기 선택된 현재 상태들에 대한 누적된 조건부 확률들(ACP들)을 발생하고, 상기 ACP들을 임계값과 비교하며, 비교 결과들에 기초하여 상기 ACP들과 연관된 이전 상태들(PS들)을 저장하는 단계; 및
    상기 저장된 이전 상태들에 기초하여 상기 인코딩된 데이터를 디코딩하는 디코딩 단계를 포함하고,
    상기 선택된 특정한 현재 상태들은 보완적 현재 상태들의 쌍들에 기초하여 선택되지 않는, 디코딩 방법.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
KR1019990047500A 1998-10-29 1999-10-29 데이터 디코딩을 위한 감소된 상태 디바이스 및 방법 KR100606159B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/181,811 US6408418B1 (en) 1998-10-29 1998-10-29 Reduced-state device and method for decoding data
US09/181,811 1998-10-29

Publications (2)

Publication Number Publication Date
KR20000047571A KR20000047571A (ko) 2000-07-25
KR100606159B1 true KR100606159B1 (ko) 2006-07-31

Family

ID=22665909

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990047500A KR100606159B1 (ko) 1998-10-29 1999-10-29 데이터 디코딩을 위한 감소된 상태 디바이스 및 방법

Country Status (8)

Country Link
US (1) US6408418B1 (ko)
EP (1) EP0998047A3 (ko)
JP (1) JP3309371B2 (ko)
KR (1) KR100606159B1 (ko)
CN (1) CN1253419A (ko)
AU (1) AU5597499A (ko)
BR (1) BR9904738A (ko)
CA (1) CA2281410A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6690750B1 (en) * 1999-12-23 2004-02-10 Texas Instruments Incorporated Flexible Viterbi decoder for wireless applications
US20030188143A1 (en) * 2002-03-28 2003-10-02 Intel Corporation 2N- way MAX/MIN instructions using N-stage 2- way MAX/MIN blocks
JP3651802B2 (ja) 2002-09-12 2005-05-25 株式会社東芝 半導体装置の製造方法
US9602243B2 (en) * 2014-08-26 2017-03-21 Electronics And Telecommunications Research Institute Low density parity check encoder, and low density parity check encoding method using the same

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5263033A (en) * 1990-06-22 1993-11-16 At&T Bell Laboratories Joint data and channel estimation using fast blind trellis search
DE4038251A1 (de) * 1990-11-30 1992-06-04 Philips Patentverwaltung Entzerrer fuer ein digitales uebertragungssystem
US5229767A (en) * 1991-09-05 1993-07-20 Motorola, Inc. Decoder for convolutionally encoded information
JP3120511B2 (ja) * 1991-11-21 2000-12-25 ソニー株式会社 ビタビ復号装置
US5390198A (en) * 1993-05-26 1995-02-14 The Boeing Company Soft decision viterbi decoder for M-ary convolutional codes
FI94810C (fi) * 1993-10-11 1995-10-25 Nokia Mobile Phones Ltd Menetelmä huonon GSM-puhekehyksen tunnistamiseksi
US5483236A (en) * 1993-12-20 1996-01-09 At&T Corp. Method and apparatus for a reduced iteration decoder
US5550870A (en) * 1994-03-02 1996-08-27 Lucent Technologies Inc. Viterbi processor
US5784392A (en) * 1995-06-26 1998-07-21 Nokia Mobile Phones Ltd. Viterbi decoder with l=2 best decoding paths
US5796757A (en) * 1995-09-15 1998-08-18 Nokia Mobile Phones Ltd. Methods and apparatus for performing rate determination with a variable rate viterbi decoder
US5905742A (en) * 1995-12-27 1999-05-18 Ericsson Inc. Method and apparauts for symbol decoding
US5991635A (en) * 1996-12-18 1999-11-23 Ericsson, Inc. Reduced power sleep modes for mobile telephones
US6081562A (en) * 1997-10-22 2000-06-27 Hitachi Ltd. Implementing reduced-state viterbi detectors
US5983180A (en) * 1997-10-23 1999-11-09 Softsound Limited Recognition of sequential data using finite state sequence models organized in a tree structure

Also Published As

Publication number Publication date
CN1253419A (zh) 2000-05-17
AU5597499A (en) 2000-05-04
JP3309371B2 (ja) 2002-07-29
BR9904738A (pt) 2000-09-12
CA2281410A1 (en) 2000-04-29
EP0998047A2 (en) 2000-05-03
JP2000151428A (ja) 2000-05-30
KR20000047571A (ko) 2000-07-25
EP0998047A3 (en) 2004-01-02
US6408418B1 (en) 2002-06-18

Similar Documents

Publication Publication Date Title
KR100702428B1 (ko) 데이터 압축 방법 및 회로
US5230003A (en) Decoding system for distinguishing different types of convolutionally-encoded signals
KR100648258B1 (ko) 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더
US4630032A (en) Apparatus for decoding error-correcting codes
EP3994799B1 (en) Iterative bit flip decoding based on symbol reliabilities
UA63024C2 (en) Turbo coder; method and device for interleaving data elements
JP3746092B2 (ja) データを算術デコーディングする方法
EP0658982B1 (en) System for bi-level symbol coding-decoding with saved storage and method for the same
JPS60180222A (ja) 符号誤り訂正装置
KR100606159B1 (ko) 데이터 디코딩을 위한 감소된 상태 디바이스 및 방법
KR100281321B1 (ko) 적응적인 산술 부호화 및 그 복호화 방법
EP1514356B1 (en) A method and a system for variable-length decoding, and a device for the localization of codewords
RU2608872C1 (ru) Способ кодирования и декодирования блокового кода с использованием алгоритма Витерби
US5329536A (en) Method and apparatus for sequentially decoding a digital stream encoded by a convolution type error-correcting code
KR101010784B1 (ko) 트렐리스 디코더를 위한 메모리 관리 알고리즘
KR100268831B1 (ko) 고속 처리 가변 길이 코덱 장치
CN110034847B (zh) 级联编码方法及装置
EP0677964A2 (en) HDTV Viterbi decoder
KR100462060B1 (ko) 유니버셜 가변 길이 코드 부호어 다중 추출 방법 및 그를위한 룩-업 테이블 구성 방법
KR100268832B1 (ko) 효율적 면적의 가변길이 코덱 장치
JP3737388B2 (ja) 最尤符号探索装置及び方法
KR0125125B1 (ko) 고속 가변길이부호 복호화 장치
Priya et al. Highly Compressed and Errorless Reconfigurable DAB/DAB+ Architecture
JPH0697749B2 (ja) 誤り訂正復号器
WO2003069866A1 (en) Traceback operation in viterbi decoding for rate-k/n convolutional codes

Legal Events

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

Payment date: 20130712

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140711

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150710

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160708

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee