KR100617822B1 - 터보 복호기를 위한 고속 입력 장치 및 방법 - Google Patents
터보 복호기를 위한 고속 입력 장치 및 방법 Download PDFInfo
- Publication number
- KR100617822B1 KR100617822B1 KR1020040059638A KR20040059638A KR100617822B1 KR 100617822 B1 KR100617822 B1 KR 100617822B1 KR 1020040059638 A KR1020040059638 A KR 1020040059638A KR 20040059638 A KR20040059638 A KR 20040059638A KR 100617822 B1 KR100617822 B1 KR 100617822B1
- Authority
- KR
- South Korea
- Prior art keywords
- symbols
- beta
- window
- metric
- input
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2957—Turbo codes and decoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/0175—Coupling arrangements; Interface arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Probability & Statistics with Applications (AREA)
- Error Detection And Correction (AREA)
Abstract
본 발명은 소정 개수의 시스테메틱 심볼과 패리티 심볼들을 포함하는 부호화된 패킷을 윈도우 단위(w)로 알파, 베타0 및 베타 1메트릭 블록들을 포함하는 터보 복호기에 입력하기 위한 고속 입력 버퍼 장치에 있어서, 상기 시스테메틱 심볼들 중 각각 짝수번째 심볼과 홀수번째 심볼을 각각 저장하며 상기 입력 심볼을 읽고 쓰는 동작을 번갈아가며 수행하는 2W사이즈의 SYSRAM과, 상기 부호화 패킷의 심볼들을 수신하여 한 윈도우 단위로 순환하여 저장하고, 상기 저장된 심볼들을 상기 알파 메트릭과 베타0,1메트릭 블록으로 출력하는 5개의 W사이즈인 단일포트 WINRAM으로 구성되는 버퍼부와, 상기 알파 메트릭 계산을 위한 심볼들의 출력 어드레스를 생성하여 상기 버퍼부로 제공하는 순방향 어드레스 생성기와, 상기 베타0 및 1메트릭 계산을 위한 심볼들의 출력 어드레스를 생성하여 상기 버퍼부로 제공하는 역방향 어드레스 생성기로 구성되어 개선된 고속의 윈도우 입력 버퍼를 터보 복호기에 제공함으로써 디코딩 수행 중에 소모 전류를 줄일 수 있는 효과가 있다. 또한, 본 발명은 고속의 윈도우 입력 버퍼에 플리플롭 대신 메모리를 사용함으로써 면적과 소모 전류를 감소시키는 효과가 있다.
Input Buffer, window, Turbo decoding
Description
도 1은 종래 기술에 따른 터보 복호기의 구성을 보여주는 도면.
도 2는 종래 기술에 따른 SISO 복호기에 의한 메트릭 연산 순서를 보여주는 도면.
도 3은 일반적인 프레임 모드 방식의 터보 복호기의 메트릭 연산 순서를 보여주는 도면.
도 4는 윈도우 모드 방식의 터보 복호기의 연산 순서를 보여주는 도면.
도 5는 종래 기술에 따른 고속의 윈도우 입력 버퍼를 입력단에 연결시킨 슬라이딩 윈도우 모드 방식의 SISO 복호기의 구성을 보여주는 도면.
도 6은 고속의 윈도우 입력 버퍼의 상세 구조를 보여주는 도면.
도 7은 면적 개선된 고속 윈도우 입력 버퍼의 상세구조를 보여주는 도면.
도 8은 본 발명의 바람직한 실시예에 따른 고속 윈도우 입력 버퍼의 구조를 보여주는 도면.
도 9a는 본 발명의 바람직한 실시예에 따른 입력 버퍼의 각 메모리별 데이터 흐름 및 제어 신호에 입력 시작점에 따른 타이밍도를 보여주는 도면.
도 9b는 본 발명의 바람직한 실시예에 따른 입력 버퍼의 각 메모리별 데이터 흐름 및 제어 신호에 입력 종료에 따른 타이밍도를 보여주는 도면.
도 10은 본 발명의 바람직한 실시예에 따른 심볼 쓰기 동작 및 알파 메트릭 심볼 읽기 절차를 보여주는 도면
도 11은 본 발명의 바람직한 실시예에 따른 베타0 메트릭 블록으로 입력값을 출력하는 동작을 보여주는 도면.
도 12는 본 발명의 바람직한 실시예에 따른 베타1 메트릭 블록으로의 입력값을 출력하는 동작을 보여주는 도면.
본 발명은 본 발명은 터보 복호기에 관한 것으로서, 특히 터보 복호기를 위한 고속 입력 장치 및 방법에 관한 것이다.
일반적으로 디지털 통신 시스템에서는 데이터 전송시 채널상에서 발생할 수 있는 오류를 효과적으로 정정하여 데이터 전송의 신뢰도를 높이기 위하여 순방향 오류정정(FEC: Forward Error Correction)부호가 널리 사용되고 있다. 이러한 순방향 오류 정정부호로 터보부호(Turbo code)가 있다. 터보부호는 길쌈 부호(convolution code)에 비해 데이터의 고속 전송시 오류 정정 능력이 뛰어나기 때문에, 제 3세대 이동 통신 시스템으로 주목받고 있는 동기 방식의 CDMA2000(Code Division multiple aceess 2000)시스템과 비동기 방식의 UMTS(Universal Mobile Telecommunication System)등에 모두 채택되었다. 두가지 방식 모두 고속의 패킷 데이터 통신을 가능하게 하므로 고속의 터보 복호기가 그 성능을 발휘하게 된다. CDMA 표준 규격인 1xEV-DV(Evolution Data and Voice)에서는 터보 복호기에 적용되는 코드 레이트(부호화율)가 매우 다양하게 지원되도록 규정되어 있다.
도 1은 종래 기술에 따른 터보 복호기의 구성을 보여주는 도면이다.
도시한 터보 복호기(200)는 시소 (SISO: Soft-In Soft-Out)방식의 구성 복호기로 구성된 예를 나타낸다. SISO 방식을 대신하여 상기 터보 복호기는 MAP(Maximum A Posteriori)방식 또는 RESOVA(Register Exchnge Soft Output Viterbi Algorithm)방식으로 구현될 수도 있다. 여기서, SISO 방식은 심볼에 대한 신뢰도를 가지고 확률을 구하는 방식이고, RESOVA 방식은 심볼이 거쳐가는 경로(Path)를 긴 부호어(codeword)라고 생각하고 부호어에 대한 확률을 구하는 방식이다.
도 1을 참조하면, 상기 터보 복호기(200)의 입력단으로는 메모리 버퍼(100)에 저장되어 있는 심볼(데이터 비트들)이 제공된다. 상기 메모리 버퍼(100)에는 디인터리빙이 완료된 비트들이 구조적 부호인 시스테메틱 부호(Systematic code)와, 비 구조적 부호인 패리티 부호들(Parity 1 code, parity 2 code)로 구분되어 저장한다. 상기 메모리 버퍼(100)로부터 상기 터보 복호기(200)로 시스템 부호의 비트들과, 패리티 부호들의 비트들이 동시에 제공된다. 상기 메모리 버퍼(100)로부터 구조적 부호와 비구조적 부호의 3개의 부호들이 모두 출력되기 때문에, 상기 메모리 버퍼(100)로부터 출력되는 부호들은 3개의 버스를 통해 상기 터보복호기(200)의 다중화기(MUX: Multiplexer)(210)으로 제공된다.
상기 터보 복호기(200)는 SISO 알고리즘이 적용되는 구성 복호기(220)(이하, SISO 복호기라 칭함)와, 인터리버(230)와, 디 인터리버(240)와, 출력 버퍼(Output buffer)(250)와, CRC(Cyclic Redundancy Code cheker) 검사기(260)로 구성된다.
상기 SISO 복호기(220)는 상기 다중화기 (210)의 출력을 입력하고, 후술될 도 2에 도시된 바와 같은 구성하에 SISO 복호화하여 출력한다. 상기 인터리버(230)은 상기 SISO 복호기(220)의 출력을 인터리빙한다. 상기 디인터리버(240)는 상기 SISO 복호기(220)의 출력을 디인터리빙한다. 상기 출력 버퍼(250)는 상기 디인터리버(240)에 의해 디인터리빙된 결과를 L1(Layer) 처리부(270)가 참조할 수 있도록 저장한다. 상기 CRC검사기(260)은 상기 디인터리버(240)에 의한 디인터리빙 결과에 대해 CRC 검사를 하고, 그 검사 결과를 상기 L1 계층 처리부(270)으로 제공한다.
SISO 복호기(220)는 복호화하는 과정에서 몇가지 메트릭들(metrics)을 연산하는 동작을 수행한다. 즉, SISO 복호기(220)의 복호화 동작 중에는 델타 메트릭(delta metic), 알파 메트릭(alpha metric), 베타 메트릭(beta metric), 및 LLR(Log Likelihood Ratio)의 값들이 계산된다.
여기서, 델타 메트릭(Delta metric)은 브렌치 메트릭(branch metric)이라고도 하며 부호화 트레일리스 구조의 한 상태에서 다른 상태로의 경로들에 대한 천이확률을 나타낸다. 상기 알파 메트릭은 순방향 상태 메트릭(forward state metric)이라고도 하며 이전 상태에서 현재 상태로의 누적 확률을 나타낸다. 상기 베타 메 트릭은 이후 상태에서 현재 상태로의 누적천이확률을 나타낸다. 상기 알파 메트릭과 베타 메트릭이 모두 구해지면, LLR의 값이 계산된다. LLR 값은 심볼에 대한 확률을 나타내는 것으로, '1'이 될 확률과 '0'이 될 확률의 비율을 로그 스케일(log scale)로 표현한 값이다.
일반적으로 프레임 모드 복호기에서는 LLR값을 계산하기 위해서 알파 메트릭, 베타 메트릭을 필요로 하므로 베타 메트릭을 모두 연산한 다음에 알파 메트릭을 연산하여 LLR 값을 차례대로 계산할 수 있다. 그러므로 베타 메트릭을 계산하는 동안의 지연시간이 발생한다.
도 2는 종래 기술에 따른 SISO 복호기에 의한 메트릭 연산 순서를 보여주는 도면으로, 도 2a와 도 2b로 구성된다. 상기 도 2a는 알파 메트릭을 연산하는 과정을 보여주고, 상기 도 2b는 베타 메트릭을 연산하는 과정을 보여준다.
도 2a 및 도 2b를 참조하면, 알파메트릭을 연산하는 동작과, 베타 메트릭을 연산하는 동작 사이에는 차이가 있음을 알 수 있다. k번째 상태의 알파 메트릭α 는 이전 값인 (k-1)번째 상태의 알파메트릭으로부터 계산되며, k번째 상태의 베타 메트릭β 는 나중값인 (k+1)번째 상태의 베타 메트릭으로부터 계산된다. 이와 같이 베타 메트릭을 연산하기 위해서는 수신된 신호를 역순으로 참조하여야 하기 때문에 전체 수신 신호의 길이만큼의 초기 지연이 발생하게 된다.
도 3은 일반적인 프레임 모드 방식의 터보 복호기의 메트릭 연산 순서를 보여주는 도면이다.
도 3을 참조하면, 프레임 모드 방식의 SISO 복호기는 베타 메트릭을 계산한 다음에 알파 메트릭을 계산하여 LLR 값을 계산한다. 한 프레임에 대한 베타 메트릭이 모두 계산된 이후에 알파 메트릭과 LLR(λ)값이 계산되기 때문에, 상기 프레임의 구간만큼의 초기 지연이 발생된다. 이와 같이 그러므로 베타 메트릭을 계산하는 동안의 지연시간이 발생하는데, 이러한 초기 지연을 줄이기 위해 제안된 것이 윈도우 모드의 방식이다.
상기한 문제점을 개선하기 위해서 슬라이딩 윈도우 모드가 적용되었는데 이것은 2개의 베타 메트릭 블록을 사용하여 연속적인 베타 메트릭 출력이 되도록 하는데 그 목적이 있다.
도 4는 윈도우 모드 방식의 터보 복호기의 연산 순서를 보여주는 도면이다.
도 4를 참조하면, 윈도우 모드 방식의 SISO복호기는 베타 메트릭 계산을 위해 수신된 신호를 소정 윈도우 크기로 분할한다. 상기 분할된 각 수신 신호에 대해 베타 메트릭을 계산하면 초기에 계산되는 값들은 정확하지 않은 확률을 가지지만, 나중에 갈수록 더 정확한 값들이 계산되어진다. 실제 LLR 값을 계산하는 데에는 이러한 정확한 값이 나오는 구간의 값을 사용한다. 하나의 윈도우가 정확한 구간의 값들을 연산하는 동안 다른 윈도우는 나머지 구간의 부정확한 값들을 연산하여 서로 맞물리게끔 구성된다. 이 때 계산의 편리성을 위해 부정확한 구간과 신뢰할 수 있는 구간의 크기는 같게 설정된다.
일 예로, 입력심볼 B에 대한 메트릭과 LLR을 계산하는 경우를 살펴본다.
먼저, 윈도우 구간동안 역순으로 베타 메트릭 1B(β1B)와 베타 메트릭 1A(β 1A)가 각각 계산되고, 상기 베타 메트릭 1A(β1A)가 계산되는 시점부터 역순으로 베타 메트릭 2C(β2c)와, 베타 메트릭 2B(β2B)가 각각 계산된다. 상기 베타 메트릭 2C(β2c)와 2B(β2B)중에 트레이스(trace)구간에서 구해진 부정확한 베타 메트릭 2C(β2c)는 버리고, 밸리드(valid)구간에서 구해진 정확한 베타 메트릭 2B(β2c)가 계산된 시점부터 동시에 알파 메트릭 βB 및 LLR λB가 계산되기 시작한다. 따라서, 상기 β1B 및 상기 β1A가 계산되는 윈도우 구간은 초기 지연이 된다.
도 5는 종래 기술에 따른 고속의 윈도우 입력 버퍼를 입력단에 연결시킨 슬라이딩 윈도우 모드 방식의 SISO 복호기의 구성을 보여주는 도면이다. 여기서, 베타 블록은 윈도우의 수에 따라 2개의 베타 메트릭 블록들로 구성된 것으로 나타내고 있다.
도 5를 참조하면, 고속의 윈도우 입력 버퍼(DEMUX: Demultiplexer)(204)는 미리 설정된 속도-예를 들어, 터보 복호기의 클럭(동작 주파수)의 3배 속도로 메모리 버퍼(100)에 저장되어 있는 데이터 비트들을 엑세스(access)하고, 제 1출력, 제 2 출력 및 제 3 출력을 제공한다. 3개의 델타 메트릭 블록(206a, b, c)은 상기 제 1출력, 제 2출력 및 제 3출력 각각에 대한 델타 메트릭들을 계산한다. 알파 메트릭 블록(208)은 델타 메트릭 블록(206a)에 의해 계산된 델타 메트릭을 입력하고, 해당하는 알파 메트릭을 계산한다. 베타 블록(212)은 한 윈도우의 정확한 구간에 대한 제 1 베타 메트릭을 계산하는 제 1 베타 메트릭 블록(212a)과, 상기 윈도우의 나머지 구간에 대한 제 2 베타 메트릭을 계산하는 제 2 베타 메트릭 블록(212b)과, 상기 블록들(212a, b)에 의한 계산 결과들을 다중화하는 다중화기(212c)를 포함한다.
LLR 블록(214)은 상기 알파 메트릭 블록(208)에 의해 계산된 알파 메트릭과 상기 다중화기 (212c)에 의한 다중화 결과를 입력하여 해당하는 LLR 값들을 계산하고, 상기 LLR 값들에 근거하여 심볼들을 결정한다. 상기 LLR 블록(214)으로부터 상기 결정된 심볼들은 이후 인터리빙/디인터리빙을 위해 도 1에 도시된 인터리버 및 디인터리버(230, 240)로 출력된다.
LLR을 계산하기 위한 상기 LLR블록(229)은 순방향 상태, 역방향 상태에 대한 천이 확률을 근거로 심볼에 대한 확률을 구한다. 이 때 LLR의 값이 양수일 경우 심볼'1', 음수일 경우 심볼'0'을 나타낸다.
고속의 복호를 위해서는 터보 복호기의 구조에 따라 그에 맞는 입력방식을 요구하게 된다. 터보 복호기의 속도가 느릴 경우 심볼을 여러번에 걸쳐 메모리에서 읽어 입력하는 방법이 있으나, 고속의 터보 복호기에 이러한 방법을 적용하는 것은 무리이다.
따라서, 고속의 터보 복호기의 동작 속도에 맞추어 다수개의 심볼을 복호기에 입력시킬 수 있도록 하는 메모리 버퍼의 설계가 요구된다.
따라서 상기한 바와 같이 동작되는 종래 기술의 문제점을 해결하기 위하여 창안된 본 발명의 목적은, 터보 복호기에서 패킷 데이터 트래픽에 대한 복호에 앞서 개선된 고속의 윈도우 입력 장치 및 방법을 제공하는 것이다.
상기한 바와 같은 목적을 달성하기 위하여 창안된 본 발명의 바람직한 실시예에 따른 장치는, 소정 개수의 시스테메틱 심볼과 패리티 심볼들을 포함하는 부호화된 패킷을 윈도우 단위(w)로 알파, 베타0 및 베타 1메트릭 블록들을 포함하는 터보 복호기에 입력하기 위한 고속 입력 버퍼 장치에 있어서,
상기 시스테메틱 심볼들 중 각각 짝수번째 심볼과 홀수번째 심볼을 각각 저장하고 상기 심볼들을 읽고 쓰는 동작을 번갈아가며 수행하는 2개의 2W사이즈의 SYSRAM과,
상기 부호화 패킷의 심볼들을 수신하여 하나의 윈도우 단위로 순환하여 저장하고, 상기 저장된 심볼들을 상기 알파 메트릭과 베타0및 베타1 메트릭 블록으로 출력하는 5개의 W사이즈인 단일포트 WINRAM으로 구성되는 버퍼부와,
상기 알파 메트릭을 계산하기 위하여 심볼들의 출력 어드레스를 생성하고 상기 버퍼부로 제공하는 순방향 어드레스 생성기와,
상기 베타0 및 베타1 메트릭 계산을 위한 심볼들의 출력 어드레스를 생성하여 상기 버퍼부로 제공하는 역방향 어드레스 생성기를 가지는 것을 특징으로 한다.
본 발명의 바람직한 실시예에 따른 방법은, 소정 개수의 시스테메틱 심볼과 패리티 심볼들을 포함하는 부호화된 패킷을 윈도우 단위(w)로 알파, 베타0 및 베타 1메트릭 블록을 포함하는 터보 복호기로 입력하는 방법에 있어서,
상기 부호화 패킷의 심볼들을 수신하여 한 윈도우 단위로 순환하여 저장하는 과정과,
2W만큼의 초기지연 이후, 2배의 윈도우 단위로 역정렬 된 심볼들을 읽어내어 상기 베타 0메트릭 계산을 위한 입력값으로 출력하는 과정과,
3W만큼의 초기 지연 이후, 2배의 윈도우 단위로 역정렬 된 심볼들을 읽어내어 상기 베타 1메트릭 계산을 위한 입력값으로 출력하는 과정과,
4W만큼의 초기지연 이후, 상기 입력 심볼들을 순차적으로 윈도우 단위 만큼씩 읽어내어 상기 알파 메트릭 계산을 위한 입력값으로 출력하는 과정을 포함하여 구성되는 것을 특징으로 한다.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대한 동작 원리를 상세히 설명한다. 도면상에 표시된 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 참조번호로 나타내었으며, 하기에서 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 6은 고속의 윈도우 입력 버퍼의 상세 구조를 보여주는 도면이다.
도 6을 참고하면, 윈도우 입력버퍼는 단방향 쉬프트 레지스터들과 (300,322,332,342), 양방향 쉬프트 레지스터들(324a,b, 334a,b, 344a,b)과, 멀티플렉서들(326a,b, 336a,b, 346a,b)로 구성된다.
윈도우 입력버퍼는 터보 복호기의 메모리 버퍼로부터 데이터 비트들을 입력받는다. 이때, 입력 데이터 비트들은 시스테메틱(이하'sys'라 칭함)비트와, 패리티 비트 0과 1을 나타내는 sb, sc와, 상기 sys 심볼과 익스트린직 인포메이션(extrinsic information)의 합인 sa이다. 상기 sa는 Wsa의 비트 리솔루션(bit resoultion)을 갖고, 상기 sys, sb. sc들의 비트 리솔루션(bit resolution)은 상기 Wsa보다 작은 Ws이다.
상기 양방향 쉬프트 레지스터(324a,b, 334a,b, 344a,b)들은 상기 입력받은 sa, sb, sc의 입력 순서와 베타 메트릭을 계산하는 순서를 맞추기 위해 스택(LIFO; Last-in Firs-out)의 역할을 한다. 즉, 상기 양방향 쉬프트 레지스터(324a,b, 334a,b, 344a,b)들이 오른쪽으로 쉬프트 할 때에는 심볼이 왼쪽에서 입력되고 오른쪽으로 출력되며, 왼쪽으로 쉬프트 할 때에는 심볼들이 오른쪽에서 입력되고 왼쪽으로 출력된다. 이때, 쉬프트의 방향을 2W마다 반복적으로 교체하여 2W단위의 심볼들을 역방향으로 정렬할 수 있다. 여기서 W는 베타 메트릭의 묶음 계산단위로서, 양방향 쉬프트 레지스터가 심볼을 출력하는 단위인 2W중, 첫 W만큼의 심볼은 트레이스(trace)구간의 베타 메트릭을, 뒷 W만큼의 심볼은 밸리드(valid)구간의 베타 메트릭을 계산하는 데에 사용된다. 베타 0와 베타 1에 대한 양방향 쉬프트 레지스터들 각각의 동작을 W만큼 엇갈리게 사용하여, LLR 계산을 위한 베타 메트릭 값이 연속적으로 계산되도록 한다. 양방향 쉬프트 레지스터에 첫 번째 심볼이 입력된 후 , 상기 심볼이 다시 출력되기까지의 시간은 4W이다.
상기 단방향 쉬프트 레지스터들(300,322,332,342)은 상기 입력받은 sys, sa, sb 및 sc를 순방향으로 알파 메트릭을 위한 입력값으로 출력하고, LLR계산을 위한 베타 메트릭의 타이밍을 일치시키기 위해 4W(4 비트)의 길이로 구성된다.
상기 도 6의 고속 윈도우 입력 버퍼를 구성하는데 필요한 저장장치의 비트 수를 계산해 보면 다음과 같다. 상기 고속 윈도우 입력 버퍼의 총 비트 수는 상기 sys, sb, sc의 단방향 버퍼의 비트 수인 4W 곱하기 Ws와, 상기 sa의 단방향 버퍼의 비트 수인 4W 곱하기 Wsa와, 상기 sa의 양방향 버퍼의 비트수인 2W 곱하기 Wsa 2개와, 상기 sb, sc의 양방향 버퍼수인 2W 곱하기 Ws 2개의 합이다. 따라서, 총 비트수는 (4W * Ws) *5 + (4W*Wsa) *2이므로 20W*Ws + 8W*Wsa이다.
1x-EVDV 모뎀에 채용된 터보 복호기의 경우, Ws는 8비트이고, Wsa는 10비트이며, W의 최대 크기는 48로 정해져 있다. 이럴 경우, 윈도우 입력 버퍼를 구성하는데 필요한 저장 장치의 비트수는 20*48*8 + 8*48*10이므로 총 11520비트이다.
실제적으로, 쉬프트 레지스터의 구현에는 플리플롭에 멀티플렉서가 추가로 포함되고, 양방향 쉬프트 레지스터의 경우에는 그 오버헤드(overhead)가 더 커서 11520비트는 적지 않은 부담이 된다. 또한, 디코딩 수행 중에 쉬프트 레지스터 전체가 계속 동작하게 되므로, 매 클럭 사이클마다 11,520비트의 플리플롭 값이 변하게 되어 많은 전류가 소모된다.
그리하여, 이에 대한 개선안으로 상기 입력버퍼에 동일한 심볼이 여러개의 쉬프트 레지스터에 중복되어 저장되지 않도록 하여, 윈도우 버퍼 전체의 크기를 감 소시키는 개선되니 버퍼 구조가 제안되었다.
도 7은 면적 개선된 고속 윈도우 입력 버퍼의 상세구조를 보여주는 도면이다.
도 7을 참조하면, 윈도우 입력버퍼는 sys 심볼을 위한 단방향 쉬프트 레지스터(400)와, 윈도우 사이즈가 W인 양방향 쉬프트 레지스터들(422a,b,c,d, 432a,b,c,d, 442a,b,c,d)과, 멀티플렉서들(424a,b, 434a,b, 444a,b)로 구성된다.
각각의 양방향 쉬프트 레지스터(422a,b,c,d, 432a,b,c,d, 442a,b,c,d)에서 처음에 왼쪽으로 입력된 심볼들은 다시 왼쪽으로 출력되면서 역방향으로 정렬되어 베타 메트릭 계산에 사용된다. 이 때, 동시에 쉬프트 레지스터의 오른쪽으로 입력된 심볼들은 이후에 다시 오른쪽으로 출력되면서 순방향으로 재정렬되어 알파 메트릭의 계산에 재활용된다. 이를 위해서 상기 sa, sb, sc에 대한 베타메트릭 계산을 위해 W를 가지는 4개의 양방향 쉬프트 레지스터들을 사용하면, 초기 지연 없이 알파 메트릭 입력값을 출력한다.
상기 면적 개선된 고속 윈도우 입력 버퍼에 필요한 저장장치의 비트수를 보면, 12개의 W*Ws 와, 4개의 W*Wsa으로 1x EV-DV 모뎀에 적용하면 12*48 + 4*48*10으로 총 저장수는 6,528비트가 된다.
결과적으로, 상기 면적 개선된 고속 윈도우 입력 버퍼의 사용으로 상기 고속 윈도우 입력 버퍼에 비해 복호기의 면적에서 상당한 감소를 얻을 수 있었다. 그러나, 여전히 매 클럭 사이클마다 6,528비트의 플리플롭 값이 변하게 되고, 멀티플렉서들도 그대로 남아있어 전류 소모면의 부담은 무시할 수 없다.
이하, 본 발명의 보다 바람직한 실시예에서는 디코딩 수행 중에 그 값이 이동하는 저장장치의 비트 수를 최소화하는 고속 윈도우 입력버퍼의 구조를 제안한다.
도 8은 본 발명의 바람직한 실시예에 따른 고속 윈도우 입력 버퍼의 구조를 보여주는 도면이다.
도 8을 참조하면, sys 심볼을 위한 2W 사이즈 SYSRAM(504a,b), sa, sb, sc심볼을 위한 5개의 W사이즈 5개 WINRAM(518a,b,c,d,e)과, 순방향 어드레스 생성기(514a)와, 역방향 어드레스 생성기(514b)와, 멀티 플렉서 (502, 516a,b)와, 디멀티플렉서(506, 516c)로 구성된다.
상기 SYSRAM(504a,b)을 2개로 구성하여 각각 읽기/쓰기 동작을 수행함으로써 싱글 포트(single port) RAM만으로도 듀얼 포트(Dual port)RAM처럼 사용한다. 상기 SYSRAM(504a,b)는 각각 짝수번째 심볼과 홀수번째 심볼을 저장하는 용도로 나뉘어서 사용되어 4W길이의 입력 심볼을 읽고 쓰는 동작을 번갈아가며 수행한다.
상기 WINRAM(518a,b,c,d,e)들은 5개로 구성하여 수신된 특정 심볼을 중복 저장하지 않고, 입력된 심볼이 초기지연 4W길이 이후에 순방향 메트릭 계산에 사용되기 위해 출력된 후 다른 심볼이 입력된다. 상기 입력된 sa, sb, sc심볼들은 상쇄(concatenate)된 형태로 상기 WINRAM(518a,b,c,d,e)에 각각 저장되고, 알파 및 베타 블록들의 입력값으로 출력된다. 구체적으로, 상기 입력 심볼 sa, sb, sc는 상기 5개의 WINRAM(518a,b,c,d,e)들 중 선택된 한 개의 WINRAM에 저장되며, 동시에 나머지 3개의 다른 WINRAM으로부터 각기 개별적으로 알파, 베타0, 베타1블록으로 입력 되기 위한 심볼이 읽혀진다. 상기 읽혀진 심볼은 멀티플렉서(516c)에 의해 각각 알파, 베타 0, 베타 1블록으로 전달된다.
상기 순방향 어드레스 생성기(514a)는 입력 심볼에 대하여 0부터 W-1까지 순차적으로 증가하는 카운터이고, 심볼의 저장 및 알파메트릭 계산을 위한 심볼의 출력에 사용된다. 상기 역방향 어드레스 생성기(514b)는 W-1부터 0까지 순차적으로 감소하는 카운터이며, 베타 메트릭 계산을 위한 심볼의 출력에 사용된다.
도 9a는 본 발명의 바람직한 실시예에 따른 입력 버퍼의 각 메모리별 데이터 흐름 및 제어 신호에 입력 시작점에 따른 타이밍도를 보여주는 도면이다.
도 9a를 참조하면, 참조부호(522)는 입력심볼들로 윈도우 길이 W단위로 0,1,2,3....으로 순차적으로 이루어진다. 알파블록과 베타블록으로의 심볼 출력 타이밍을 같도록 하기 위해서, 참조부호 524는 알파블록으로의 출력값으로 상기 참조부호 522보다 4W만큼 지연된다.
참조부호 526,528은 베타 0 및 1 블록을 위한 심볼 출력 타이밍으로 2W단위로 역 정렬되어 베타 0 블록으로 (1, 0)가 출력되면, 상기 베타 0 블록으로 1이 출력되는 타이밍부터 (2, 1)이 베타 블록 1로 출력되는 식으로 서로 엇갈려서 출력된다. 구체적으로, 베타 블록으로 출력되는 심볼들의 순서는 베타 메트릭이 계산되는 동작과 관련되어 있다. 베타 메트릭은 W단위로 계산되며, W길이 만큼 "valid"한 구간 이전에 동일한 W만큼의 "trace"구간이 존재해야 하므로 심볼의 입력은 2W단위로 진행된다. 최초 0번째 심볼 구간에 대한 베타 메트릭을 계산하기 위해 베타 블록으로 입력되어야 하는 심볼들의 윈도우 번호는 (1,0)이 된다. 그 후에 (2,1), (3,2), (4,3)과 같은 순서로 베타 블록으로 심볼들이 입력될 것이다. 이 때, 두 개의 베타 블록에서 LLR블록으로 출력되는 베타 메트릭 값이 "valid"한 구간에서 연속 될 수 있도록, 베타 0블록과 베타 1블록의 동작은 W 길이만큼 어긋나게 되어 심볼의 입력 순서에 반영된다. 즉, 베타0 블록으로 입력되는 심볼은 (1,0), (3,2), (5,4),....가 되며, 베타 1블록으로 출력되는 심볼은 (2,1), (4,3), (6,5)가 되고, 베타 1블록으로의 심볼 출력 타이밍(526)은 베타 0블록으로의 심볼 출력동작보다 W길이만큼 지연되어 동작한다.
참조부호 530,532,534,536,538은 상기 입력심볼들(522)을 정렬하기 위해 WINRAM0내지 4가 수행하는 동작을 시간별로 보여준다. 여기서, 'W'는 복호기 입력 심볼들을 순방향으로 저장하는 동작을 나타내고, 'F'는 상기 입력 심볼들을 알파 메트릭 블록으로 순방향 어드레스기를 사용하여 순방향으로 출력하는 동작을 의미하고, 'B0' 및 'B1'은 상기 입력 심볼들을 각각 B0 메트릭 블록과 B1블록으로 역방향 어드레스기를 통해 역방향으로 출력하는 동작을 의미한다.
'W'로 표시된 타이밍에 해당 WINRAM 모듈에 저장된 심볼은 이후 'B1', 'B0', 'F'로 표시된 타이밍에서 해당 블록의 입력으로 사용된다. 즉, 알파와 베타 0 및 1 블록의 입력 심볼들을 동일한 메모리에 저장함으로써, 심볼을 중복 저장할 필요가 없게 된다.
일 예로, 윈도우 번호 5의 심볼들이 저장되는 타이밍(555)에서 WINRAM0는 입력 심볼을 기록하며, WINRAM1은 윈도우 번호 1의 심볼들을 알파 메트릭 블록으로 출력하고, WINRAM2와 4역시 윈도우 번호 2,4의 해당 심볼을 각각 베타 0 및 베타 1 메트릭 블록으로 각각 출력하고, WINRAM3은 휴식한다.
참조부호 540내지 550은 WRITE_window내지 Beta1_state의 데이터들은 각 동작 별로 시간에 따라 제어하는 WINRAM의 읽기/쓰기 동작 및 도 8에 나타난 멀티플렉서 및 디 멀티플렉서의 선택신호가 결정된다. 참조부호 540은 상기 입력 심볼을 저장하는 Write_window의 타이밍을 나타내고, 참조부호 542는 알파 메트릭 블록으로 입력될 심볼을 출력하는 alpha_window모듈의 타이밍이고, 참조부호 544는 베타0 메트릭 블록으로 입력될 심볼을 출력하는 Beta0_window의 타이밍이다. 참조부호 546는 베타0 메트릭 블록으로 입력 심볼들(522)을 출력하는 동작을 제어하는 Beta0_state의 스테이트를 의미하고, 참조번호 548은 베타1 메트릭 블록으로 입력 심볼들(522)을 출력하는 Beta1_window의 타이밍이고, 참조부호 550은 베타1 메트릭 블록에 관련된 입력버퍼의 스테이트(Beta1_state)를 나타낸다.
구체적으로, 상기 Write_window(540)의 값은 입력 심볼들이 저장된 WINRAM을 나타내며, W주기의 모듈로 5카운터에 의해 제어되어, 5개의 WINRAM에 입력 심볼(522)을 W개씩 차례로 저장되도록 한다. 상기 alpha_window(524)의 값은 초기지연 4W 시간 후에 알파 메트릭 블록으로 출력할 심볼들이 저장된 WINRAM을 나타낸다. 상기 alpha_window와, beta0_window와, beta1_window의 값은 상기 알파 와 베타0 및 베타 1로 출력하는 WINRAM 모듈은 읽기 동작을 수행한다.
도 9b는 본 발명의 바람직한 실시예에 따른 입력 버퍼의 각 메모리별 데이터 흐름 및 제어 신호에 입력 종료에 따른 타이밍도를 보여주는 도면이다.
도 9b를 참조하면, write_window(540)에 따르면, WINRAM0에 마지막 심볼이 기록된다. alpha_window(542)에 따르면, WINRAM0는 알파메트릭 블록으로 출력될 마지막 값을 출력하고, beta0_window(544)에 따르면, WINRAM4는 베타 0메트릭 블록으로 출력될 마지막 값을 출력하며, beta1_window(548)에 따르며, WINRAM0는 베타 1메트릭 블록으로 출력될 마지막 값을 출력한다. 즉, 상기 알파, 베타0, 1 메트릭 블록을 위한 출력값의 종료시점들은 각각 일치하지 않는 것을 볼 수 있다.
이하, 상기 도 9a,b 및 10 내지 도 12를 참조하여 본 발명에 따른 입력 버퍼에 따른 심볼 쓰기 동작 및 알파, 베타 0,1블록을 위한 심볼 출력을 제어하는 절차를 상세히 설명한다.
도 10은 본 발명의 바람직한 실시예에 따른 심볼 쓰기 동작 및 알파 메트릭 심볼 읽기 절차를 보여주는 도면이다.
도 10을 참조하면, 복호 동작을 수행하기 위한 초기에는 IDLE상태(600)로부터 심볼이 입력되기 시작하면 WRITE0상태(602)로 전이한다. 상기 WRITE0상태(602)에서 window_limit이 활성화되면 WRITE1상태(604)로 전이하고, 상기 window_limit이 활성화되지 않으면 다음 심볼을 입력받는다.
이때, 상기 window_limit은 알파 블록으로의 출력을 위한 상태 전이 단위로 W만큼의 심볼이 입력 되었을 때 '1'로 활성화되어 알파 입력을 위한 상기 상태전이를 윈도우 단위로 동작 할 수 있도록 한다.
상기 WRITE1상태(604)에서 window_limit이 '1'이면 WRITE2상태(606)로 전이하고, window_limit이 '0'이면 다음 심볼을 입력받는다. 상기 WIRTE2 상태(606)에서 window_limit이 '1'이면 WIRTE3상태(608)로 전이하고, window_limit이 '0'이면 다음 심볼을 입력받는다.
이상과 같이, WRITE0상태(602) 내지 WRITE3상태(608)는 심볼 입력 종료 전까지 윈도우 경계 W만큼씩의 입력 심볼을 해당 WINRAM에 기록한다. 이는, 4W만큼의 버퍼 초기 지연에 해당한다.
상기 WIRTE3상태(608)에서 window_limit이 '0'이면 다음 심볼을 입력받고, window_limit이 '1'이면 WRITE4상태(610) 또는 TRIAL3상태(612)내지 TRAIL0상태(618)로 전이된다.
상기 WRITE3상태(608)에서 심볼의 입력이 끝나지 않은 경우, WRITE4상태(610)로 전이하여 심볼의 입력이 종료되는 시점까지 지속적으로 심볼을 입력받고, 심볼의 입력이 종료되는 시점에서TRAIL3상태(612)로 전이하게 된다. 상기 WRITE3상태(608)에서 TRIAL3상태(612)내지 TRAIL0상태(618)로 전이되면 각각 상기 WRITE0(602) 내지 WRITE3(608)단계 동안 윈도우 버퍼에 저장되어 있는 심볼들을 W만큼씩 순차적으로 알파 메트릭 블록으로 보내는 동작을 수행한다.
상기 WRITE3상태(608)에서 한 윈도우의 심볼 입력이 끝나면, 한 부호화 패킷(NEP)의 단위에 따라 TRAIL3상태(612)내지 TRAIL0상태(618)로 전이된다.
TRAIL3상태(612)는 WINRAM 0에 저장되어 있는 상기 입력 패킷의 심볼을 입력 심볼의 종료시점까지 알파 메트릭 블록으로 출력한다. TRAIL2상태(614)는 WINRAM 1에 저장되어 있는 심볼을 상기 입력 심볼의 종료시점까지 알파 메트릭 블록으로 출력한다. TRAIL1상태(616)는 WINRAM2에 저장되어 있는 심볼을 상기 입력 심볼의 종 료시점까지 알파 메트릭 블록으로 출력한다. 상기 TRAIL0상태(618)는 WINRAM3에 저장되어 있는 심볼을 상기 입력 심볼의 종료시점까지 알파 메트릭 블록으로 출력한다.
상기 WIRTE3상태(608)에서 NEP단위가 4W를 넘을 경우 WIRTE4로 전이하고, NEP단위가 3W<NEP4W이면 TRAIL3상태(612)로 전이한다. 상기 입력 심볼 단위가 2W<N
EP3W이면, TRAIL2상태(614)로 전이하고, 상기 입력 심볼 단위가 1W<NEP2W이면, TRAIL1상태(616)로 전이한다. 상기 입력 심볼의 단위가 1W이하이면 TRAIL0상태(618)로 전이하고, 상기 입력 심볼의 종료시점까지 모두 출력하였으면 IDLE(600)상태로 전이한다.
WRITE 3상태(612)에서 부호화 패킷(NEP)가 4W이하인 경우, TRIAL3(612)내지 TRAIL0(618) 중 하나로 직접 전이한다. 버퍼의 쓰기 동작('W')은 WRITE0상태(602) 내지 WRITE4 상태(608)에서만 수행되므로, write_window의 증가는 이 구간에서만 수행된다. 마찬가지로 알파 메트릭을 출력하는 WRITE4(610)내지 TRAIL0(618)의 구간내에서 alpha_window의 증가가 수행된다.
이하 도 11 및 12를 참조하여 본 발명에 따른 베타 메트릭 블록의 심볼 읽기를 위한 동작을 보여주는 도면이다.
도 11은 본 발명의 바람직한 실시예에 따른 베타0 메트릭 블록으로 입력값을 출력하는 동작을 보여주는 도면이다.
도 11을 참조하면, IDLE상태(700)에서 심볼 입력이 시작되면 INIT0상태(710) 로 전이한다. 상기 INIT0상태(710)에서 window_limit이 '1'이면 INTI1상태(712)로 전이한다. 상기 INIT0상태(710)와 INIT1상태(712)상태는 beta0_window의 초기 지연 보상 구간으로 2W이다. 상기 INIT1상태(712)에서 window_limit이 '1' 활성화되면 beta_window=1로 초기화하고 TRACE0상태(714) 내지 VALID1상태(720)로 전이한다. TRACE0상태(714)는 WINRAM1에 저장되어 있는 심볼을 출력하고, VALID0상태(716)는 WINRAM0에 저장되어 있는 심볼을 출력한다. TRACE1상태(718)는 WINRAM3에 저장되어 있는 심볼을 출력하고, VALID1상태(720)는 WINRAM2에 저장되어 있는 심볼을 출력한다. 이후, 상기 TRACE0상태(714)내지 VALID1상태(720)는 해당 WINRAM에 저장되어 있는 심볼을 출력한다.
상기 TRACE0상태(714)에서 window_limit이 '1'이면 VALID0상태(716)로 전이하고, VALID0(716)에서 상기 VALID0상태에서 window_limit이 '1'이면 한 부호화 패킷의 심볼들이 모두 출력되었는지를 판단하기 위하여 NEP 또는 write_state를 판단한다. 상기 write_state가 TRAIL1 및 TRAIL0 이거나 NEP 4W이면 상기 IDLE상태(700)로 전이하고, 그렇지 않으면 beta0_window를 3만큼 증가시켜 TRACE0상태(714)로 전이한다. 상기 TRACE1상태(718)에서 window_limit이 '1'이면, beta0_window를 1만큼 감소시키고, VALID1상태(720)로 전이한다. 상기 VALID1(720)에서 window_limit이 '1'이면 write_state가 TRAIL1 및 TRAIL0이거나 3W<NEP4W이면 심볼 입력이 끝난것이므로 'IDLE"상태(700)로 전이하고, 그렇지 않으면 심볼 입력이 끝나지 않은 것으로 TRACE0(714)상태로 전이한다.
여기서, TRACE0(714)상태와 TRACE1(718)상태는 베타 0블록의 입력 심볼이 "trace"구간에 대한 것임을 나타내고, VALID0(716)상태와 VALID1(720)상태는 베타 0블록의 입력 심볼이 "valid"구간에 대한 것임을 나타낸다. "trace"구간의 시작점에서는 "beta0_start_pre"신호를 활성화시켜 베타0블록이 베타 메트릭 동작을 초기화 하도록 하고, "valid"구간의 시작점에서는 베타0블록이 유효한 베타 메트릭을 LLR블록으로 보내는 시작점을 알려 준다. 베타 0 메트릭 블록의 입력값을 출력하기 위한 상태 전이시 beta0_window 값을 바꾸어 주는데,"trace"구간에서 "valid"로 전이시에는 beta0_window의 값을 1만큼 감소시키고, "valid"구간에서 "trace"구간으로 전이할 때에는 beta_0window의 값을 3만큼 증가시킨다.
도 12는 본 발명의 바람직한 실시예에 따른 베타1 메트릭 블록으로의 입력값을 출력하는 동작을 보여주는 도면이다.
도시한 바와 같이, IDLE상태(800)에서 INIT0 상태(810)로의 전이는 지연이 복호 동작의 시작점에서 이루어지는 대신, beta0_state가 INIT0인 타이밍에서 이루어진다.
IDLE상태(800)에서 beta0_state가 INIT0이고, window_limit이 1이면 INIT0상태(810)로 전이한다. 상기 INIT0상태(810)에서 window_limit이 '1'이면 INTI1상태(812)로 전이한다. 상기 INIT1상태(812)에서 window_limit이 '1'로 활성화되면 beta1_window를 2로 초기화하고 TRACE0상태(814)로 전이한다. 상기 TRACE0상태(814)에서 window_limit이 '1'이면, beta2_window를 1만큼 감소시키고 VALID0상태(816)로 전이한다. 상기 VALID0상태(816)에서 window_limit이 '1'이면 write_state 가 TRAIL1 및 TRAIL0 이거나 2W<NEP3W이면 IDLE상태(800)으로 전이하고, 그렇지 않으면 beta1_window를 3만큼 증가시켜 TRACE1상태(818)로 전이한다. 상기 TRACE1상태(818)에서 window_limit이 '1'이면 VALID1상태(820)로 전이하고, 상기 VALID1(820)에서 window_limit이 '1'이면 write_state가 TRAIL1 또는 TRAIL0이면 심볼 입력이 끝난 경우이므로 'IDLE"상태로 전이하고, 그렇지 않으면, 부호화 패킷이 끝나지 않은 경우로 beta1_window를 3만큼 증가시키고 TRACE0(814)상태로 전이한다.
상기 TRACE0상태(814) 내지 VALID1상태(820)는 해당 WINRAM에 저장되어 있는 심볼을 각각 읽어 베타 1메트릭 블록으로 출력한다.
한편 본 발명의 상세한 설명에서는 구체적인 실시예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되지 않으며, 후술되는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
이상에서 상세히 설명한 바와 같이 동작하는 본 발명에 있어서, 개시되는 발명 중 대표적인 것에 의하여 얻어지는 효과를 간단히 설명하면 다음과 같다.
본 발명은, 개선된 고속의 윈도우 입력 버퍼를 터보 복호기에 제공함으로써 디코딩 수행 중에 소모 전류를 줄일 수 있는 효과가 있다. 또한, 본 발명은 고속의 윈도우 입력 버퍼에 플리플롭 대신 메모리를 사용함으로써 면적과 소모 전류를 감소시키는 효과가 있다.
Claims (5)
- 소정 개수의 시스테메틱 심볼과 패리티 심볼들을 포함하는 부호화된 패킷을 윈도우 단위(w)로 알파, 베타0 및 베타 1메트릭 블록들을 포함하는 터보 복호기에 입력하기 위한 고속 입력 버퍼 장치에 있어서,상기 시스테메틱 심볼들 중 각각 짝수번째 심볼과 홀수번째 심볼을 각각 저장하고 상기 심볼들을 읽고 쓰는 동작을 번갈아가며 수행하는 2개의 2W사이즈 SYSRAM과,상기 부호화 패킷의 심볼들을 수신하여 하나의 윈도우 단위로 순환하여 저장하고, 상기 저장된 심볼들을 상기 알파 메트릭과 베타및 베타1 메트릭 블록으로 출력하는 5개의 W사이즈인 단일포트 WINRAM으로 구성되는 버퍼부와,상기 알파 메트릭을 계산하기 위하여 심볼들의 출력 어드레스를 생성하고 상기 버퍼부로 제공하는 순방향 어드레스 생성기와,상기 베타0 및 베타1 메트릭 계산을 위한 심볼들의 출력 어드레스를 생성하여 상기 버퍼부로 제공하는 역방향 어드레스 생성기를 포함함을 특징으로 하는 장치.
- 제 1항에 있어서, 상기 버퍼부는,4W만큼의 초기지연 이후, 상기 입력 심볼들을 순차적으로 윈도우 단위 만큼씩 읽어내어 상기 알파 메트릭 계산을 위한 입력값으로 출력하는 것을 특징으로 하 는 장치.
- 제 1항에 있어서, 상기 버퍼부는,2W만큼의 초기지연 이후, 상기 5개의 WINRAM들 중 2개의 WINRAM으로부터 읽어낸 심볼들을 윈도우 단위로 역정렬하여 상기 베타 0메트릭 계산을 위한 입력값으로 출력하는 것을 특징으로 하는 장치.
- 제 1항에 있어서, 버퍼부는,3W만큼의 초기 지연 이후, 상기 5개의 WINRMA들 중 2개의 WINRAM으로부터 읽어낸 심볼들을 윈도우 단위로 역정렬하여 첫 번째 윈도우를 제외한 이후의 저장된 심볼들 중 2배의 윈도우 단위로 역정렬 된 심볼들을 읽어내어 상기 베타 1메트릭 계산을 위한 입력값으로 출력하는 것을 특징으로 하는 장치.
- 소정 개수의 시스테메틱 심볼과 패리티 심볼들을 포함하는 부호화된 패킷을 윈도우 단위(w)로 알파, 베타0 및 베타 1메트릭 블록을 포함하는 터보 복호기로 입력하는 방법에 있어서,상기 부호화 패킷의 심볼들을 수신하여 한 윈도우 단위로 순환하여 저장하는 과정과,2W만큼의 초기지연 이후, 2배의 윈도우 단위로 역정렬 된 심볼들을 읽어내어 상기 베타 0메트릭 계산을 위한 입력값으로 출력하는 과정과,3W만큼의 초기 지연 이후, 2배의 윈도우 단위로 역정렬 된 심볼들을 읽어내어 상기 베타 1메트릭 계산을 위한 입력값으로 출력하는 과정과,4W만큼의 초기지연 이후, 상기 입력 심볼들을 순차적으로 윈도우 단위 만큼씩 읽어내어 상기 알파 메트릭 계산을 위한 입력값으로 출력하는 과정을 포함하여 구성되는 것을 특징으로 하는 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020040059638A KR100617822B1 (ko) | 2004-07-29 | 2004-07-29 | 터보 복호기를 위한 고속 입력 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020040059638A KR100617822B1 (ko) | 2004-07-29 | 2004-07-29 | 터보 복호기를 위한 고속 입력 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060011005A KR20060011005A (ko) | 2006-02-03 |
KR100617822B1 true KR100617822B1 (ko) | 2006-08-28 |
Family
ID=37121115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020040059638A KR100617822B1 (ko) | 2004-07-29 | 2004-07-29 | 터보 복호기를 위한 고속 입력 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100617822B1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1122890A2 (en) | 2000-01-31 | 2001-08-08 | Texas Instruments Incorporated | MAP decoding with parallelized sliding window processing |
JP2003032126A (ja) | 2001-05-23 | 2003-01-31 | Texas Instruments Inc | ターボ復号方法及びターボ復号装置 |
KR20030045954A (ko) * | 2001-12-03 | 2003-06-12 | 엘지전자 주식회사 | 터보 디코딩 방법 및 이를 위한 장치 |
KR20040013475A (ko) * | 2002-08-06 | 2004-02-14 | 삼성전자주식회사 | 터보 복호화 장치 |
KR20040045221A (ko) * | 2002-11-23 | 2004-06-01 | 삼성전자주식회사 | 터보 복호기의 입력 제어 방법 및 장치 |
-
2004
- 2004-07-29 KR KR1020040059638A patent/KR100617822B1/ko not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1122890A2 (en) | 2000-01-31 | 2001-08-08 | Texas Instruments Incorporated | MAP decoding with parallelized sliding window processing |
JP2003032126A (ja) | 2001-05-23 | 2003-01-31 | Texas Instruments Inc | ターボ復号方法及びターボ復号装置 |
KR20030045954A (ko) * | 2001-12-03 | 2003-06-12 | 엘지전자 주식회사 | 터보 디코딩 방법 및 이를 위한 장치 |
KR20040013475A (ko) * | 2002-08-06 | 2004-02-14 | 삼성전자주식회사 | 터보 복호화 장치 |
KR20040045221A (ko) * | 2002-11-23 | 2004-06-01 | 삼성전자주식회사 | 터보 복호기의 입력 제어 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
KR20060011005A (ko) | 2006-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3898574B2 (ja) | ターボ復号方法及びターボ復号装置 | |
US20050034046A1 (en) | Combined interleaver and deinterleaver, and turbo decoder comprising a combined interleaver and deinterleaver | |
AU2003256099B2 (en) | Turbo decoding apparatus and method | |
EP1045521A2 (en) | Rate matching and channel interleaving for a communications system | |
US20050273687A1 (en) | Apparatus and method for turbo decoding using a variable window size | |
US20020007474A1 (en) | Turbo-code decoding unit and turbo-code encoding/decoding unit | |
JP4054221B2 (ja) | ターボ復号方法及びターボ復号装置 | |
JP2006324754A (ja) | 最大事後確率復号方法及び復号装置 | |
US8448033B2 (en) | Interleaving/de-interleaving method, soft-in/soft-out decoding method and error correction code encoder and decoder utilizing the same | |
CN201018490Y (zh) | TD-SCDMA/3G硬核turbo译码器 | |
CN101217336B (zh) | TD-SCDMA/3G硬核turbo译码器 | |
KR100617822B1 (ko) | 터보 복호기를 위한 고속 입력 장치 및 방법 | |
KR100762612B1 (ko) | 터보 복호화 장치에서 인터리버와 디인터리버간 메모리공유 장치 및 방법 | |
JP2008099145A (ja) | ターボ復号装置 | |
US7652597B2 (en) | Multimode decoder | |
KR100355452B1 (ko) | 엠에이피 방식을 사용한 터보 복호기 | |
KR100447175B1 (ko) | 터보 디코딩 방법 및 이를 위한 장치 | |
JP4043501B2 (ja) | ターボ復号方法及びターボ復号装置 | |
Wang et al. | Efficient interleaver memory architectures for serial turbo decoding | |
CN113992213A (zh) | 一种双路并行译码存储设备及方法 | |
JP2009060455A (ja) | スライディングウィンドウターボ復号処理装置とその方法 | |
CN116979974A (zh) | Turbo码译码方法及Turbo码译码器 | |
Wang et al. | A Design Method of Block Interleaver for Turbo Codes Based on Low Correlation Coefficient |
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 | ||
LAPS | Lapse due to unpaid annual fee |