KR100866929B1 - 컨벌루셔널 터보 코드에서 사용되는 인터리버의 인터리브드 주소 발생기, 그 방법 및 씨티씨에서 사용되는 인터리버 - Google Patents

컨벌루셔널 터보 코드에서 사용되는 인터리버의 인터리브드 주소 발생기, 그 방법 및 씨티씨에서 사용되는 인터리버 Download PDF

Info

Publication number
KR100866929B1
KR100866929B1 KR1020070006978A KR20070006978A KR100866929B1 KR 100866929 B1 KR100866929 B1 KR 100866929B1 KR 1020070006978 A KR1020070006978 A KR 1020070006978A KR 20070006978 A KR20070006978 A KR 20070006978A KR 100866929 B1 KR100866929 B1 KR 100866929B1
Authority
KR
South Korea
Prior art keywords
output
interleaved
address
interleaver
input data
Prior art date
Application number
KR1020070006978A
Other languages
English (en)
Other versions
KR20080069356A (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 (주)카이로넷
Priority to KR1020070006978A priority Critical patent/KR100866929B1/ko
Publication of KR20080069356A publication Critical patent/KR20080069356A/ko
Application granted granted Critical
Publication of KR100866929B1 publication Critical patent/KR100866929B1/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/27Coding, 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 using interleaving techniques
    • H03M13/276Interleaving address generation
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2771Internal interleaver for turbo 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/27Coding, 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 using interleaving techniques
    • H03M13/2782Interleaver implementations, which reduce the amount of required interleaving memory
    • 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/6502Reduction of hardware complexity or efficient processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

컨볼루셔널 터보 코드(Convolutional Turbo Code)를 사용하는 인터리버의 인터리브드 주소 발생기는 초기값 레지스터, 누산부 및 제1 선택기를 포함한다. 초기값 레지스터는 입력 데이터의 프레임 길이에 따른 제1 내지 제4 인터리빙(interlaeving) 상수(P0 내지 P3)를 저장하고 제1 인터리빙 상수와 제2 내지 제4 누산기 초기값을 출력한다. 누산부는 제1 인터리빙 상수와 제2 내지 제4 인터리빙 상수를 기초로 계산된 각각의 제2 내지 제4 누산기 초기값을 제공받아 프레임 길이에 따른 제1 내지 제4 인터리브드 어드레스를 각각 출력하는 동일한 형태의 제1 내지 제4 누산기를 포함한다. 제1 선택기는 상기 입력 데이터의 어드레스의 하위 2비트에 따라 상기 제1 내지 제4 인터리브드 어드레스 중 하나를 선택하여 출력한다.

Description

컨벌루셔널 터보 코드에서 사용되는 인터리버의 인터리브드 주소 발생기, 그 방법 및 씨티씨에서 사용되는 인터리버{interleaved address generator, method thereof used in convolutional turbo code(CTC) and interleaver used in CTC}
도 1은 종래의 인코더와 디코더에 사용되는 인터리버의 구성을 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 CTC(Convolutional Turbo Code)를 사용하는 인터리버의 인터리브드 주소 발생기의 구성을 나타내는 블록도이다.
도 3은 누산부와 제1 선택기의 구성을 나타내는 블록도이다.
도 4는 제1 누산기의 구체적인 구성을 나타내는 블록도이다.
도 5는 도 5는 본 발명에 적용되는 초기값 레지스터를 나타내는 블록도이다.
도 6은 초기값 레지스터의 내부 모습을 나타낸다.
도 7은 IEEE802.16e 표준에 정의된 인터리빙 상수들을 나타내는 표이다.
도 8은 본 발명의 일 실시예에 따른 CTC(Convolutional Turbo Code)를 사용하는 인터리버의 구성을 나타낸다.
<도면의 주요 부분에 대한 부호 설명>
50, 710 : 초기값 레지스터 100, 720 : 누산부
600, 730 : 제1 선택기
200, 300, 400, 500 : 누산기
210, 220 : 연산기 230, 240: 선택기
본 발명은 인터리버에서의 인터리브드 주소 발생기에 관한 것으로, 보다 상세하게는 별도의 메모리를 필요로 하지 않는 CTC(Convolution Turbo Code)를 사용하는 인터리버의 인터리브드 주소 발생기에 관한 것이다.
터보 코드는 무선 통신 분야에서 가장 강력한 채널 코딩 방법들 중 하나로 새논(Shannon)의 한계에 거의 근접하는 성능을 보여준다. 오늘날 집적 회로(IC, Integrated Circuit)의 지속적인 소형화로 인하여 터보 디코딩 방법은 모바일 장치에도 적용 가능하게 되었으며, W-CDMA(Wideband Code Division Multiple Access), CDMA-2000등에 이어서 최근 WiBro(Wireless Broadband Internet), WiMAX 등의 표준에 채택되었다.
이와 같은 터보 코드는 인코딩을 하는 과정에서 내부에 인터리버를 포함하게 되고 이 인터리버는 디코딩을 하는 과정에서도 필요하게 된다. 이 때 인터리브드 어드레스 패턴은 프레임 사이즈에 따라서 다르게 되고, 매 사이클마다 필요로 하게 되므로 빠르게 계산되고 생성될 수 있어야 한다. 특히 높은 데이터 레이트를 요구 하는 최근의 표준에서는 이와 같은 특성이 더욱 중요하게 된다.
도 1은 종래의 인코더와 디코더에 사용되는 인터리버의 구성을 나타내는 블록도이다.
도 1을 참조하면, 종래의 인터리버는 비트쌍 교환기(10), 쓰기 주소 발생기(20), 메모리(30) 및 읽기 주소 발생기(40)를 포함한다.
종래의 인터리버에 채용되는 쓰기 주소 발생기(20)가 인터리브드 어드레스 패턴을 얻는 방법은 각 프레임 사이즈에 대하여 미리 인터리브드 어드레스 패턴을 구하고 이를 메모리에 저장하는 것이다. 하지만 이와 같은 경우 많은 양의 메모리가 필요하게 된다. 예를 들어서 WiMAX/Wibro의 경우에는 duo-binary turbo code를 채택하고 있고 최대 2400 pair의 Frame Length를 지원하는데, 이 경우 2400*12 bits의 메모리를 요구하게 된다. 또한 각각의 Frame Length에 대하여도 각각의 메모리를 요하게 되거나 각 Frame Length에 대한 연산을 하면서 메모리에 수백 cycle 동안 값을 기록해야 하므로 칩의 면적을 많이 차지하게 되고 또한 전력 소모도 상당하게 된다.
따라서 별도의 메모리를 사용하지 않고 인터리브드 어드레스를 필요할 때마다 전용 하드웨어를 사용하여 연산을 통해서 얻을 수 있는 인터리브드 주소 발생기 및 이를 포함한 인터리버가 필요하게 되었다.
상기와 같은 문제점을 해결하기 위한 본 발명의 제1 목적은 하드웨어의 복잡도를 감소시킬 수 있는 CTC를 사용하는 인터리버의 인터리브드 주소 발생기를 제공 하는 데 있다.
본 발명의 제2 목적은 CTC를 사용하는 인터리버의 쓰기 주소 발생방법을 제공하는 데 있다.
본 발명의 제3 목적은 CTC를 사용하는 인터리버를 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 CTC를 사용하는 인터리버의 인터리브드 주소 발생기는 초기값 레지스터, 누산부 및 제1 선택기를 포함한다.
상기 초기값 레지스터는 입력 데이터의 프레임 길이에 따라 다른 값을 갖는 제1 내지 제4 인터리빙(interlaeving) 상수(P0 내지 P3)와 상기 입력 데이터의 프레임 길이에 기초하여 계산된 각각의 제2 내지 제4 누산기 초기값과 상기 제1 인터리빙 상수를 저장하고 출력한다. 상기 누산부는 상기 제1 인터리빙 상수와 각각 상기 제2 내지 제4 누산기 초기값을 제공받아 상기 프레임 길이에 따른 제1 내지 제4 인터리브드 어드레스를 각각 출력하는 동일한 형태의 제1 내지 제4 누산기를 포함한다. 제1 선택기는 상기 입력 데이터의 어드레스의 하위 2비트에 따라 상기 제1 내지 제4 인터리브드 어드레스 중 하나를 선택하여 출력한다.
실시예에 따라, 상기 제1 내지 제4 누산기 각각은 상기 제1 인터리빙 상수와 상기 제1 인터리브드 어드레스 내지 제4 인터리브드 어드레스를 중 해당하는 인터리브드 어드레스를 입력받아 그 합을 출력하는 제1 연산기, 상기 제1 연산기의 출력에서 상기 입력 데이터의 프레임 길이를 감산한 결과를 출력하는 제2 연산기, 상 기 제2 연산기의 출력의 최상위 비트에 따라 상기 제1 연산기의 출력과 상기 제2 연산기의 출력 중의 하나를 선택하여 출력하는 제2 선택기, 상기 인터리버의 초기화 상태에 따라 상기 제2 연산기의 출력과 상기 해당하는 누산기 초기값 중 하나를 선택하여 출력하는 제3 선택기 및 상기 제3 선택기의 출력을 저장하여 상기 해당하는 인터리브드 어드레스를 출력하는 레지스터를 포함할 수 있다.
실시예에 따라, 상기 제2 선택기는 상기 제2 연산기의 출력의 최상위 비트가 0일 때는 상기 제2 연산기의 출력을 선택하여 출력하고, 상기 제2 연산기의 출력의 최상의 비트가 1일 때는 상기 제1 연산기의 출력을 선택하여 출력할 수 있다.
실시예에 따라, 상기 제3 선택기는 상기 인터리버가 초기화 상태가 아닐 때(즉 초기화 상태값이 0일 때)는 상기 제2 선택기의 출력값을 선택하여 출력하고, 상기 인터리버가 초기화 상태일 때(즉, 초기화 상태 값이 1일 때)는 각각 상기 해당하는 초기값을 선택하여 출력할 수 있다.
실시예에 따라 상기 제1 누산기 초기값은 상기 프레임 길이에 관계없이 1일 수 있다.
실시예에 따라 상기 제2 누산기 초기값은 P1+N/2+1일 수 있다. 여기서 N은 상기 입력 데이터의 프레임 길이일 수 있다. 상기 제3 누산기 초기값은 P2+1일 수 있다. 상기 제4 누산기 초기값은 P3+N/2+1일 수 있다.
실시예에 따라 상기 제1 선택기는 상기 입력 데이터의 어드레스의 하위 2비트가 [00]일 때는 상기 제1 인터리브드 어드레스를 선택하여 출력할 수 있다. 상기 제1 선택기는 상기 입력 데이터의 어드레스의 하위 2비트가 [01]일 때는 상기 제2 인터리브드 어드레스를 선택하여 출력할 수 있다. 상기 제1 선택기는 상기 입력 데이터의 어드레스의 하위 2비트가 [10]일 때는 상기 제3 인터리브드 어드레스를 선택하여 출력할 수 있다. 상기 제1 선택기는 상기 입력 데이터의 어드레스의 하위 2비트가 [11]일 때는 상기 제4 인터리브드 어드레스를 선택하여 출력할 수 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 CTC를 사용하는 인터리버의 인터리브드 주소 발생 방법은 (a)입력 데이터의 프레임 길이에 따라 다른 값을 갖는 제1 내지 제4 인터리빙 상수(P0 내지 P3)와 상기 입력 데이터의 프레임 길이에 기초하여 계산된 각각의 제2 내지 제4 초기값과 상기 인터리빙 상수를 저장하여 출력하는 단계, (b)상기 제1 인터리빙 상수를 제공받아 상기 프레임 길이에 따른 제1 인터리브드 어드레스를 출력하는 단계, (c)상기 제1 인터리빙 상수와 상기 제2 초기값을 제공받아 상기 프레임 길이에 따른 제2 인터리브드 어드레스를 출력하는 단계, (d)상기 제1 인터리빙 상수와과 상기 제3 초기값을 제공받아 상기 프레임 길이에 따른 제3 인터리브드 어드레스를 출력하는 단계, (e)상기 제1 인터리빙 상수와 상기 제4 초기값을 제공받아 상기 프레임 길이에 따른 제4 인터리브드 어드레스를 출력하는 단계 및 (f)상기 입력 데이터의 어드레스의 하위 2비트에 따라 상기 제1 내지 제4 인터리브드 어드레스들 중 하나를 선택하여 출력하는 단계를 포함한다.
실시예에 따라 상기 (b) 내지 (e)단계 각각은 (1)상기 제1 인터리빙 상수와 상기 제1 인터리브드 어드레스 내지 제4 인터리브드 어드레스들 중 해당하는 인터리브드 어드레스들 입력받아 그 합을 출력하는 단계, (2)상기 (1)단계의 출력에서 상기 입력 데이터의 프레임 길이를 감산한 결과를 출력하는 단계, (3)상기 (2)단계의 출력의 최상위 비트에 따라 상기 (1)단계의 출력과 상기 (2)단계의 출력 중 하나를 선택하여 출력하는 단계, (4)상기 인터리버의 초기화 상태에 따라 상기 (2)단계의 출력과 상기 해당하는 초기값 중 하나를 선택하여 출력하는 단계 및 (5)상기 (4)단계의 출력을 저장하여 상기 해당하는 인터리브드 어드레스로 출력하는 단계를 포함할 수 있다.
실시예에 따라 상기 (3)단계는 상기 (2)단계의 출력의 최상위 비트가 0일 때는 상기 (2)단계의 출력을 선택하여 출력하고, 상기(2)단계의 출력의 최상위 비트가 1일 때는 상기 (1)단계의 출력을 선택하여 출력할 수 있다.
실시예에 따라 상기 (4)단계는 상기 인터리버가 초기화 상태가 아닐 때(즉, 초기화 상태값이 0일 때)는 상기 (3)단계의 출력을 선택하여 출력하고, 상기 인터리버가 초기화 상태일 때(즉, 초기화 상태값이 1일 때)는 각각 상기 해당하는 초기값을 선택하여 출력할 수 있다.
실시예에 따라 상기 제2 초기값은 P1+N/2+1일 수 있다. 상기 제3 초기값은 P2+1일 수 있다. 상기 제4 초기값은 P3+N/2+1일 수 있다.
실시예에 따라 상기 (f) 단계는 상기 입력 데이터의 어드레스의 하위 2비트가 [00]일 때는 상기 제1 인터리브드 어드레스를 선택하여 출력할 수 있다. 상기 (f) 단계는 상기 입력 데이터의 어드레스의 하위 2비트가 [01]일 때는 상기 제2 인터리브드 어드레스를 선택하여 출력할 수 있다. 상기 (f) 단계는 상기 입력 데이터의 어드레스의 하위 2비트가 [10]일 때는 상기 제3 인터리브드 어드레스를 선택하 여 출력할 수 있다. 상기 (f) 단계는 상기 입력 데이터의 어드레스의 하위 2비트가 [11]일 때는 상기 제3 인터리브드 어드레스를 선택하여 출력할 수 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 CTC를 사용하는 인터리버는 입력 데이터의 짝수 번째 비트쌍을 교환하는 비트쌍 교환기, 상기 입력 데이터의 프레임 길이에 따른 인터리브드 어드레스를 생성하는 인터리브드 주소 발생기 및 상기 비트쌍 교환기와 상기 인터리브드 주소 발생기의 출력을 제공받아 CTC 인터리빙 처리된 데이터를 저장하는 인터리버 메모리를 포함한다. 상기 입력 데이터의 프레임 길이에 다른 값을 갖는 제1 내지 제4 인터리빙(interlaeving) 상수(P0 내지 P3)와 상기 입력 데이터의 프레임 길이에 기초하여 계산된 각각의 제2 내지 제4 누산기 초기값과 상기 제1 인터리빙 상수를 저장하고 출력하는 초기값 레지스터, 상기 제1 인터리빙 상수와 각각 상기 제2 내지 제4 누산기 초기값을 제공받아 상기 프레임 길이에 따른 제1 내지 제4 인터리브드 어드레스를 각각 출력하는 동일한 형태의 제1 내지 제4 누산기를 포함하는 누산부 및 상기 입력 데이터의 어드레스의 하위 2비트에 따라 상기 제1 내지 제4 인터리브드 어드레스 중 하나를 선택하여 출력하는 제1 선택기를 포함한다.
실시예에 따라 상기 제1 내지 제4 누산기 각각은 상기 제1 인터리빙 상수와 각각 상기 제1 인터리브드 어드레스 내지 제4 인터리브드 어드레스를 중 해당하는 인터리브드 어드레스를 입력받아 그 합을 출력하는 제1 연산기, 상기 제1 연산기의 출력에서 상기 입력 데이터의 프레임 길이를 감산한 결과를 출력하는 제2 연산기, 상기 제2 연산기의 출력의 최상위 비트에 따라 상기 제1 연산기의 출력이과 상기 제2 연산기의 출력 중의 하나를 선택하여 출력하는 제2 선택기, 상기 인터리버의 초기화 상태에 따라 상기 제2 연산기의 출력과 상기 해당하는 누산기 초기값 중 하나를 선택하여 출력하는 제3 선택기 및 상기 제3 선택기의 출력을 저장하여 상기 해당하는 인터리브드 어드레스를 출력하는 레지스터를 포함할 수 있다.
본 발명의 실시예에 따른 CTC를 사용하는 인터리버의 인터리브드 주소 발생기, 인터리브드 주소 발생 방법 및 CTC를 사용하는 인터리버는 하드웨어의 복잡도를 크게 경감시키고 전력 소비량을 줄이고 칩 사이즈도 상당히 줄일 수 있다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
아래의 표 1은 IEEE 802.16e 표준에 나와있는 터보 코드에서의 인터리버의 동작이 나타나 있다.
[표1]
-----------------------------------------------------
STEP 1
for i=0...N-1
if(imod2 = 1)let (Ai, Bi)→(Bi, Ai)
STEP 2
for i=0...N-1
switch imod4:
case 0:P(i)=(P0*i + 1)modN
case 1:P(i)=(P0*i + 1 + N/2 + P1)modN
case 2:P(i)=(P0*i + 1 + P2)modN
case 3:P(i)=(P0*i + N/2+ P3)modN
---------------------------------------------------
표1에서 STEP1은 각각 (Ai, Bi)로 구성되어 있는 심볼 내에서의 순서를 현재 어드레스의 제일 마지막 비트의 값에 따라서 그 상태 그대로 STEP2로 넘어갈 것인지 아니면(Bi,Ai)로 순서를 바꾸어 진행을 할지를 결정하는 단계이다. 이는 단순히 멀티플렉서로 구현가능하다.
표1에서 STEP2는 2개의 비트로 이루어진 심볼들간의 순서를 뒤섞어서 인터리브드 어드레스들 발생하는 단계이다. 이 부분은 표1에도 나타나 있듯이 modulo 연산과 곱셈, 그리고 최대 4개의 opereand 간의 덧셈등을 가지고 있다. 따라서 이를 직접적으로 구현할 경우에 하드웨어의 크기가 지나치게 커지게 된다.
하지만 표1을 자세히 살펴보면, i값은 0부터 N-1까지 차례로 증가하는 값이다. 또한 i값이 0부터 N-1까지 차례로 증가하므로 STEP2에서 각각의 case에서의 P(i)의 값은 특정 초기값에 P0를 하나씩 더해가면서 modulo 연산을 취하는 것과 동일하게 된다. 즉 누산기로서 표2의 STEP2를 구현할 수 있다는 것이다.
도 2는 본 발명의 일 실시예에 따른 CTC(Convolutional Turbo Code)를 사용하는 인터리버의 인터리브드 주소 발생기의 구성을 나타내는 블록도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 CTC를 사용하는 인터리버의 인터리브드 주소 발생기는 초기값 레지스터(50), 누산부(100) 및 제1 선택기(600)를 포함한다.
초기값 레지스터(50)는 입력 데이터의 프레임 길이에 따라 다른 값을 갖는 제1 내지 제4 인터리빙(interlaeving) 상수(P0 내지 P3)와 상기 입력 데이터의 프레임 길이에 기초하여 계산된 각각의 제2 내지 제4 누산기 초기값과 상기 제1 인터리빙 상수를 저장하고 출력한다. 입력 데이터의 프레임 길이에 따른 인터리빙 상수들인 P0, P1, P2, P3는 각 표준안에 따라 정의하고 있으며, IEEE802.16e 표준에서는 도 7과 같이 정의하고 있다. 초기값 레지스터는 상기 도 7의 표에 따른 인터리빙 상수들과 N값에 대하여 각각 P0와 제2 내지 제4 누산기 초기값이 계산된 테이블을 저장하고 있다. 이 테이블의 크기는 각 N값에 대하여 (6+11*3)bit 씩 총17*(6+11*3)=663bits가 되고 이 정도 크기이면 라이브러리의 롬이 아닌 로직만으로 구현할 수 있는 크기이다.
누산부(100)는 P0와 P1 내지 P3로 이루어진 제2 내지 제4 누산기 초기값을 제공받아 프레임 길이에 따른 제1 내지 제4 인터리브드 어드레스를 출력한다.
제1 선택기(600)는 입력 데이터의 어드레스의 하위 2비트에 따라 제1 내지 제4 인터리브드 어드레스들 중 하나를 선택하여 출력한다.
도 3은 누산부(100)와 제1 선택기(600)의 구성을 나타내는 블록도이다.
도 3을 참조하면, 누산부(100)는 동일한 형태의 제1 내지 제4 누산기(200, 300, 400, 500)로 구성되어 있다. 제1 선택기(600)는 4X1 멀티플렉서로 구성되어 있다. 물론 제1 선택기는 이와 동일한 역할을 하는 다른 회로소자로도 구성될 수 있음은 자명하다.
도 4는 제1 누산기(200)의 구체적인 구성을 나타내는 블록도이다.
도 4를 참조하면 제1 누산기(200)는 제1 연산기(210), 제2 연산기(220), 제2 선택기(230), 제3 선택기(240) 및 레지스터(250)를 포함한다.
이러한 구성은 제2 내지 제4 누산기(300, 400, 500)도 동일하다.
제1 연산기(210)는 제1 인터리빙 상수(P0)와 제1 인터리브드 어드레스를 입력받아 그 합을 출력한다. 제2 누산기(300)에 있어서도 제1 연산기(미도시)는 제1 인터리빙 상수(P0)와 제2 인터리브드 어드레스를 입력받아 그 합을 출력한다. 제3 누산기(400)와 제4 누산기(500)에서도 마찬가지이므로 이에 대한 설명은 생략한다.
제2 연산기(220)는 제1 연산기(210)의 출력에서 입력 데이터의 프레임 길이를 감산한 결과를 출력한다. 제2 선택기(230)는 제2 연산기(220)의 출력의 최상위 비트에 따라서 제2 연산기(220)의 출력을 선택하여 출력하거나 제1 연산기(210)의 출력을 선택하여 출력한다. 실시예에서 최상위 비트가 0이면 제2 연산기(220)의 출 력을 선택하여 출력하고, 최상위 비트가 1이면 제1 연산기(210)의 출력을 선택하여 출력한다. 제2 선택기(230)는 2X1 멀티플렉스로 구현될 수 있다.
제3 선택기(240)는 제2 선택기(230)의 출력과 초기값 레지스터(50)에서 해당하는 초기값을 제공받고 인터리버가 초기화 상태에 있는지 아닌지 여부에 따라서 두 값 중 하나를 선택하여 출력한다. 인터리버가 초기화 상태가 아니면, 즉 초기화 상태값이 0이면, 제3 선택기(240)는 제2 선택기(230)의 출력을 선택하여 출력하고, 인터리버가 초기화 상태이면, 즉 초기화 상태값이 1이면 제3 선택기(240)는 해당하는 초기값을 선택하여 출력한다. 이 때 초기값은 표1을 다시 참고하면 제1 누산기(200)의 경우는 1이므로 초기값 레지스터(50)에 따로 저장할 필요가 없다. 즉 제1 누산기(200)의 경우에 초기값은 프레임 길이에 관계없이 1이다. 제2 누산기(300)의 경우에 초기값은 P1+N/2+1가 된다. 제3 누산기(400)의 경우에 초기값은 P2+1이 되고, 제4 누산기(500)의 경우에 초기값은 P3+N/2+1가 된다. 입력 데이터의 프레임 길이에 따른 P0 내지 P3의 값들은 초기값 레지스터(50)에 미리 저장되어 있고, 초기값 레지스터(50)에서는 P0와 제2 내지 제4 누산기 초기값들이 출력된다. 제1 누산기(200)의 경우에는 초기값이 1이므로 초기값을 저장하고 있지 않아도 된다.
도 5는 본 발명에 적용되는 초기값 레지스터를 나타내는 블록도이고, 도 6은 초기값 레지스터의 내부 모습을 나타낸다.
다시 도 4를 참조하면, 레지스터(250)는 제3 선택기(240)의 출력을 저장하여 해당하는 제1 내지 제4 인터리브드 어드레스로 출력한다.
도 2 내지 도 7을 참조하여 프레임 길이(N)가 144인 경우에 본 발명의 일 실 시예에 따른 CTC를 사용하는 인터리버의 인터리브드 주소 발생기의 동작을 상세히 살펴보자.
N이 144인 경우 P0는 17, P1은 74, P2는 72 P3는 2로 IEEE802.16e 표준에 정의되어 있다. 초기값 레지스터(50)는 N값을 입력 받으면 저장되어 있는 P0와 제2 누산 초기값 내지 제4 누산 초기값을 제1 내지 제4 누산기(200,300,400,500)에 제공한다. 이 경우에 있어서 제1 누산기(200)의 동작을 살펴보자. 이 경우에 있어서, 인터리버는 초기화 상태라고 가정하면 레지스터(250)의 출력값은 1이 되는 것이다. P0는 17이고 레지스터의 출력이 1이므로 제1 연산기(210)의 출력은 18이 된다. 제1 연산기(210)의 출력이 18이고 N값이 144이므로 제2 연산기(220)의 출력은 음수가 나온다. 제2 연산기(220)의 출력이 음수이면, 제2 연산기(220)의 출력의 최상위 비트가 1이 되므로 제2 선택기(230)의 출력은 제1 연산기(210)의 출력인 18이 된다. 또한 제2 선택기(240)의 출력도 인터리버가 초기화 상태가 아니기 때문에 18이 되고 레지스터의 출력도 18이 된다. 이렇게 되면 다시 제1 연산기(210)의 출력은 17+18이 되어 제2 연산기(220)의 출력이 양수가 될 때 까지 이러한 과정을 반복하게 된다.
여기서 제1 연산기(220)와 제2 선택기(230)가 표1의 STEP2의 모듈로 연산을 하고 있다는 것을 알 수 있다. 즉, 복잡한 디바이더를 채용하지 않고 i값이 순차적으로 증가하는 경우에 모듈로 연산은 값을 증가시킨 후 N 값과 비교하여 N보다 크거나 같은 경우에는 그 값을 빼 주고, N보다 작은 경우에는 그 값을 그대로 유지하는 식의 연산을 통해서 항상 최종 결과 값이 N 보다 작은 "modulo N"의 동작을 유 지할 수 있다.
누산부(100)에서 이러한 과정들이 반복되고 있는 동안에 제1 선택기(600)는 제1 내지 제4 누산기(200, 300, 400, 500)의 출력들 중에서 입력 데이터의 하위 어드레스 2비트에 따라서 하나를 선택하여 출력한다. 실시예에서는, 입력 데이터의 어드레스의 하위 2비트가 00인 경우에는 제1 누산기(200)의 출력인 제1 인터리브드 어드레스가 최종 인터리브드 어드레스로 출력된다. 입력 데이터의 어드레스의 하위 2비트가 00인 경우에는 제1 누산기(200)의 출력인 제1 인터리브드 어드레스가 최종 인터리브드 어드레스로 출력된다. 입력 데이터의 어드레스의 하위 2비트가 01인 경우에는 제2 누산기(300)의 출력인 제2 인터리브드 어드레스가 최종 인터리브드 어드레스로 출력된다. 입력 데이터의 어드레스의 하위 2비트가 10인 경우에는 제3 누산기(400)의 출력인 제3 인터리브드 어드레스가 최종 인터리브드 어드레스로 출력된다. 입력 데이터의 어드레스의 하위 2비트가 11인 경우에는 제4 누산기(400)의 출력인 제4 인터리브드 어드레스가 최종 인터리브드 어드레스로 출력된다.
이와 같이 제1 내지 제4 누산기(200, 300, 400, 500)는 매 사이클마다 자신의 초기값에 P0를 더하고, 4개의 출력들 중 입력 데이터의 하위 2비트를 통해서 4개의 출력들 중 어느 값을 선택할지를 결정하게 된다. 이 선택된 값이 실제의 인터리브드 어드레스가 되는 것이다.
본 발명의 실시예처럼 인터리브드 주소 발생기에서 전용 하드웨어가 아닌 메모리를 사용하였다면, 도 7의 17가지 프레임 길이에 대하여 인터리브드 어드레스를 저장하기 위해서 필요한 최소한의 메모리의 크기는 (5bit*24 + 6bit*36 + 6bit*48 + 7bit*72 + 7bit*96 + 7bit*108 + 7bit*120 + 8bit*144 + 8bit*180 + 8bit*192 + 8bit*216 + 8bit*240 + 9bit*480 + 10bit*960 + 11bit*1440 + 11bit*1920 + 12bit*2400) = 90852bits가 된다. 하지만 본 발명의 실시예처럼 전용 하드웨어를 사용한다면 (6+11*3)bit 씩 총17*(6+11*3)=663bits가 작은 크기의 로직만으로도 인터리브드 주소 발생기를 구성할 수 있음을 알 수 있다.
도 8은 본 발명의 일 실시예에 따른 CTC(Convolutional Turbo Code)를 사용하는 인터리버의 구성을 나타낸다.
도 8을 참조하면, 본 발명의 일 실시예에 따fms CTC를 사용하는 인터리버는 비트쌍 교환기(610), 인터리브드 주소 발생기(700) 및 인터리버 메모리(620)를 포함한다.
비트쌍 교환기(610)는 입력 데이터의 짝수 번째 비트쌍을 교환한다. 인터리브드 주소 발생기(700)는 입력 데이터의 프레임 길이에 따른 인터리브드 어드레스를 생성한다. 인터리버 메모리는 비트쌍 교환기(610)와 인터리브드 주소 발생기(700)의 출력을 제공받아 CTC 인터리빙 처리된 데이터를 저장한다.
인터리브드 주소 발생기는 초기값 레지스터(710), 누산부(720) 및 제1 선택기(730)를 포함한다. 초기값 레지스터(710), 누산부(720) 및 제1 선택기(730)의 구성 및 동작은 도 2 내지 도 6의 초기값 레지스터(50), 누산부(100) 및 제1 선택기(600)의 동작과 동일하므로 이에 대한 자세한 설명은 생략한다.
본 발명의 실시예에 따른 CTC를 사용하는 인터리버의 인터리브드 주소 발생기 및 CTC를 사용하는 인터리버는 주로 IEEE802.16e 표준에 중점을 두고 설명되었지만 이 는 CTC를 사용하는 다른 표준에도 적용할 수 있음은 당업자에게 자명하다.
상술한 바와 같이, 본 발명의 실시예에 따른 CTC를 사용하는 인터리버의 인터리브드 주소 발생기, 인터리브드 주소 발생 방법 및 CTC를 사용하는 인터리버는 별도의 인터리버 상수를 저장하는 별도의 메모리가 필요하지 않고, 모듈로 연산을 하는데 디바이더를 사용하지 않고도 단순히 덧셈기와 뺄셈기와 멀티플렉서를 통하여 구현함으로써 하드웨어의 복잡도를 크게 경감시키고 전력 소비량을 줄이고 칩 사이즈도 상당히 줄일 수 있다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (24)

  1. CTC(Convolutional Turbo Code)에서 사용되는 인터리버의 인터리브드 주소 발생기에 있어서,
    입력 데이터의 프레임 길이에 따라 다른 값을 갖는 제1 내지 제4 인터리빙(interlaeving) 상수(P0 내지 P3)와 상기 입력 데이터의 프레임 길이에 기초하여 계산된 각각의 제2 내지 제4 누산기 초기값과 상기 제1 인터리빙 상수를 저장하고 출력하는 초기값 레지스터;
    상기 제1 인터리빙 상수와 각각 상기 제2 내지 제4 누산기 초기값을 제공받아 상기 프레임 길이에 따른 제1 내지 제4 인터리브드 어드레스를 각각 출력하는 동일한 형태의 제1 내지 제4 누산기를 포함하는 누산부; 및
    상기 입력 데이터의 어드레스의 하위 2비트에 따라 상기 제1 내지 제4 인터리브드 어드레스 중 하나를 선택하여 출력하는 제1 선택기를 포함하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기.
  2. 제 1 항에 있어서, 상기 제1 내지 제4 누산기 각각은,
    상기 제1 인터리빙 상수와 이전에 출력된 제1 인터리브드 어드레스 내지 제4 인터리브드 어드레스들 중 해당하는 이전에 출력된 인터리브드 어드레스를 입력받아 그 합을 출력하는 제1 연산기;
    상기 제1 연산기의 출력에서 상기 입력 데이터의 프레임 길이를 감산한 결과를 출력하는 제2 연산기;
    상기 제2 연산기의 출력의 최상위 비트에 따라 상기 제1 연산기의 출력과 상기 제2 연산기의 출력 중의 하나를 선택하여 출력하는 제2 선택기;
    상기 인터리버의 초기화 상태에 따라 상기 제2 연산기의 출력과 상기 해당하는 누산기 초기값 중 하나를 선택하여 출력하는 제3 선택기; 및
    상기 제3 선택기의 출력을 저장하여 상기 해당하는 인터리브드 어드레스를 출력하는 레지스터를 포함하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기.
  3. 제 2 항에 있어서, 상기 제2 선택기는, 상기 제2 연산기의 출력의 최상위 비트가 0일 때는 상기 제2 연산기의 출력을 선택하여 출력하고, 상기 제2 연산기의 출력의 최상의 비트가 1일 때는 상기 제1 연산기의 출력을 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기.
  4. 제 3 항에 있어서, 상기 제3 선택기는, 상기 인터리버가 초기화 상태가 아닐 때(즉 초기화 상태값이 0일 때)는 상기 제2 선택기의 출력값을 선택하여 출력하고, 상기 인터리버가 초기화 상태일 때(즉, 초기화 상태 값이 1일 때)는 각각 상기 해당하는 초기값을 선택하여 출력하며 상기 제1 누산기의 초기값은 상기 프레임 길이에 관계없이 1인 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기.
  5. 제 4 항에 있어서, 상기 제2 누산기 초기값은 P1+N/2+1인 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기(N은 상기 입력 데이터의 프레임 길이).
  6. 제 4 항에 있어서, 상기 제3 누산기 초기값은 P2+1인 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기(N은 상기 입력 데이터의 프레임 길이).
  7. 제 4 항에 있어서, 상기 제4 누산기 초기값은 P3+N/2+1인 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기(N은 상기 입력 데이터의 프레임 길이).
  8. 제 1 항에 있어서, 상기 제1 선택기는 상기 입력 데이터의 어드레스의 하위 2비트가 [00]일 때는 상기 제1 인터리브드 어드레스를 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기.
  9. 제 1 항에 있어서, 상기 제1 선택기는 상기 입력 데이터의 어드레스의 하위 2비트가 [01]일 때는 상기 제2 인터리브드 어드레스를 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기.
  10. 제 1 항에 있어서, 상기 제1 선택기는 상기 입력 데이터의 어드레스의 하위 2비트가 [10]일 때는 상기 제3 인터리브드 어드레스를 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기.
  11. 제 1 항에 있어서, 상기 제1 선택기는 상기 입력 데이터의 어드레스의 하위 2비트가 [11]일 때는 상기 제4 인터리브드 어드레스를 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생기.
  12. CTC(Convolutional Turbo Code)에서 사용되는 인터리버의 인터리브드 주소 발생 방법에 있어서,
    (a)입력 데이터의 프레임 길이에 따라 다른 값을 갖는 제1 내지 제4 인터리빙 상수(P0 내지 P3)와 상기 입력 데이터의 프레임 길이에 기초하여 계산된 각각의 제2 내지 제4 초기값과 상기 인터리빙 상수를 저장하여 출력하는 단계;
    (b)상기 제1 인터리빙 상수를 제공받아 상기 프레임 길이에 따른 제1 인터리브드 어드레스를 출력하는 단계;
    (c)상기 제1 인터리빙 상수와 상기 제2 초기값을 제공받아 상기 프레임 길이에 따른 제2 인터리브드 어드레스를 출력하는 단계;
    (d)상기 제1 인터리빙 상수와 상기 제3 초기값을 제공받아 상기 프레임 길이에 따른 제3 인터리브드 어드레스를 출력하는 단계;
    (e)상기 제1 인터리빙 상수와 상기 제4 초기값을 제공받아 상기 프레임 길이에 따른 제4 인터리브드 어드레스를 출력하는 단계; 및
    (f)상기 입력 데이터의 어드레스의 하위 2비트에 따라 상기 제1 내지 제4 인터리브드 어드레스들 중 하나를 선택하여 출력하는 단계를 포함하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법.
  13. 제 12 항에 있어서, 상기 (b) 내지 (e)단계 각각은,
    (1)상기 제1 인터리빙 상수와 이전에 출력된 제1 인터리브드 어드레스 내지 제4 인터리브드 어드레스들 중 해당하는 이전에 출력된 인터리브드 어드레스를 입력받아 그 합을 출력하는 단계;
    (2)상기 (1)단계의 출력에서 상기 입력 데이터의 프레임 길이를 감산한 결과를 출력하는 단계;
    (3)상기 (2)단계의 출력의 최상위 비트에 따라 상기 (1)단계의 출력과 상기 (2)단계의 출력 중 하나를 선택하여 출력하는 단계;
    (4)상기 인터리버의 초기화 상태에 따라 상기 (2)단계의 출력과 상기 해당하는 초기값 중 하나를 선택하여 출력하는 단계; 및
    (5)상기 (4)단계의 출력을 저장하여 상기 해당하는 인터리브드 어드레스로 출력하는 단계를 포함하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법.
  14. 제 13 항에 있어서, 상기 (3)단계는 상기 (2)단계의 출력의 최상위 비트가 0일 때는 상기 (2)단계의 출력을 선택하여 출력하고, 상기(2)단계의 출력의 최상위 비트가 1일 때는 상기 (1)단계의 출력을 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법.
  15. 제 14 항에 있어서, 상기 (4) 단계는 상기 인터리버가 초기화 상태가 아닐 때(즉, 초기화 상태값이 0일 때)는 상기 (3) 단계의 출력을 선택하여 출력하고, 상기 인터리버가 초기화 상태일 때(즉, 초기화 상태값이 1일 때)는 각각 상기 해당하는 초기값을 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법.
  16. 제 15 항에 있어서, 상기 제2 초기값은 P1+N/2+1인 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법(N은 상기 입력 데이터의 프레임 길이).
  17. 제 15 항에 있어서, 상기 제3 초기값은 P2+1인 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법.(N은 상기 입력 데이터의 프레임 길이).
  18. 제 15 항에 있어서, 상기 제4 초기값은 P3+N/2+1인 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법.(N은 상기 입력 데이터의 프레임 길이).
  19. 제 12 항에 있어서, 상기 (f) 단계는 상기 입력 데이터의 어드레스의 하위 2비트가 [00]일 때는 상기 제1 인터리브드 어드레스를 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법.
  20. 제 12 항에 있어서, 상기 (f) 단계는 상기 입력 데이터의 어드레스의 하위 2비트가 [01]일 때는 상기 제2 인터리브드 어드레스를 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법.
  21. 제 12 항에 있어서, 상기 (f) 단계는 상기 입력 데이터의 어드레스의 하위 2비트가 [10]일 때는 상기 제3 인터리브드 어드레스를 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법.
  22. 제 12 항에 있어서, 상기 (f) 단계는 상기 입력 데이터의 어드레스의 하위 2비트가 [11]일 때는 상기 제4 인터리브드 어드레스를 선택하여 출력하는 것을 특징으로 하는 CTC에서 사용되는 인터리버의 인터리브드 주소 발생 방법.
  23. CTC(Convolutional Turbo Code)에서 사용되는 인터리버에 있어서,
    입력 데이터의 짝수 번째 비트쌍을 교환하는 비트쌍 교환기;
    상기 입력 데이터의 프레임 길이에 따른 인터리브드 어드레스를 생성하는 인터리브드 주소 발생기; 및
    상기 비트쌍 교환기와 상기 인터리브드 주소 발생기의 출력을 제공받아 CTC 인터리빙 처리된 데이터를 저장하는 인터리버 메모리를 포함하며,
    상기 인터리브드 주소 발생기는,
    상기 입력 데이터의 프레임 길이에 따른 값을 갖는 제1 내지 제4 인터리빙(interlaeving) 상수(P0 내지 P3)와 상기 입력 데이터의 프레임 길이에 기초하여 계산된 각각의 제2 내지 제4 누산기 초기값과 상기 제1 인터리빙 상수를 저장하고 출력하는 초기값 레지스터;
    상기 제1 인터리빙 상수와 각각 상기 제2 내지 제4 누산기 초기값을 제공받아 상기 프레임 길이에 따른 제1 내지 제4 인터리브드 어드레스를 각각 출력하는 동일한 형태의 제1 내지 제4 누산기를 포함하는 누산부; 및
    상기 입력 데이터의 어드레스의 하위 2비트에 따라 상기 제1 내지 제4 인터리브드 어드레스 중 하나를 선택하여 출력하는 제1 선택기를 포함하는 것을 특징으로 하는 CTC에서 사용되는 인터리버.
  24. 제 23 항에 있어서, 상기 제1 내지 제4 누산기 각각은,
    상기 제1 인터리빙 상수와 각각 이전에 출력된 제1 인터리브드 어드레스 내지 제4 인터리브드 어드레스들 중 해당하는 이전에 출력된 인터리브드 어드레스를 입력받아 그 합을 출력하는 제1 연산기;
    상기 제1 연산기의 출력에서 상기 입력 데이터의 프레임 길이를 감산한 결과를 출력하는 제2 연산기;
    상기 제2 연산기의 출력의 최상위 비트에 따라 상기 제1 연산기의 출력과 상기 제2 연산기의 출력 중의 하나를 선택하여 출력하는 제2 선택기;
    상기 인터리버의 초기화 상태에 따라 상기 제2 연산기의 출력과 상기 해당하는 누산기 초기값 중 하나를 선택하여 출력하는 제3 선택기; 및
    상기 제3 선택기의 출력을 저장하여 상기 해당하는 인터리브드 어드레스를 출력하는 레지스터를 포함하는 것을 특징으로 하는 CTC에서 사용되는 인터리버.
KR1020070006978A 2007-01-23 2007-01-23 컨벌루셔널 터보 코드에서 사용되는 인터리버의 인터리브드 주소 발생기, 그 방법 및 씨티씨에서 사용되는 인터리버 KR100866929B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070006978A KR100866929B1 (ko) 2007-01-23 2007-01-23 컨벌루셔널 터보 코드에서 사용되는 인터리버의 인터리브드 주소 발생기, 그 방법 및 씨티씨에서 사용되는 인터리버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070006978A KR100866929B1 (ko) 2007-01-23 2007-01-23 컨벌루셔널 터보 코드에서 사용되는 인터리버의 인터리브드 주소 발생기, 그 방법 및 씨티씨에서 사용되는 인터리버

Publications (2)

Publication Number Publication Date
KR20080069356A KR20080069356A (ko) 2008-07-28
KR100866929B1 true KR100866929B1 (ko) 2008-11-04

Family

ID=39822608

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070006978A KR100866929B1 (ko) 2007-01-23 2007-01-23 컨벌루셔널 터보 코드에서 사용되는 인터리버의 인터리브드 주소 발생기, 그 방법 및 씨티씨에서 사용되는 인터리버

Country Status (1)

Country Link
KR (1) KR100866929B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013081216A1 (ko) * 2011-12-01 2013-06-06 엘지전자 주식회사 이동 통신 시스템에서 ctc(convolutional turbo code) 인코더를 이용하여 데이터를 전송하기 위한 장치 및 그 방법
TWI733334B (zh) * 2020-02-15 2021-07-11 財團法人工業技術研究院 卷積神經網路運算裝置及其運算的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001267934A (ja) 2000-03-17 2001-09-28 Matsushita Electric Ind Co Ltd インタリーブアドレス生成装置
KR20050022511A (ko) * 2003-09-02 2005-03-08 엘지전자 주식회사 터보 인터리버의 출력 주소 산출기

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001267934A (ja) 2000-03-17 2001-09-28 Matsushita Electric Ind Co Ltd インタリーブアドレス生成装置
KR20050022511A (ko) * 2003-09-02 2005-03-08 엘지전자 주식회사 터보 인터리버의 출력 주소 산출기

Also Published As

Publication number Publication date
KR20080069356A (ko) 2008-07-28

Similar Documents

Publication Publication Date Title
JP5490320B2 (ja) Turbo符号並行インターリーバ及びその並行インターリーブ方法
Liang et al. Hardware efficient and low-latency CA-SCL decoder based on distributed sorting
GB2311447A (en) Viterbi decoder
KR19990063573A (ko) 인터레이서, 코딩 디바이스, 치환 방법, 코딩 방법, 디코딩디바이스 및 이들을 사용하는 방법 및 시스템
JP3274668B2 (ja) 演算処理装置及び演算処理方法
KR19980032867A (ko) 연산처리장치
JP4767266B2 (ja) 演算ユニット、エラー訂正復号回路及び誤り位置多項式の演算方法
EP3202045A1 (en) Method and device for calculating a crc code in parallel
CN114063973B (zh) 伽罗华域乘法器及纠删编解码系统
KR100866929B1 (ko) 컨벌루셔널 터보 코드에서 사용되는 인터리버의 인터리브드 주소 발생기, 그 방법 및 씨티씨에서 사용되는 인터리버
US6792570B2 (en) Viterbi decoder with high speed processing function
JP2013207382A (ja) インタリーブ制御装置、インタリーブ処理装置及びインタリーブ処理方法
US8468410B2 (en) Address generation apparatus and method for quadratic permutation polynomial interleaver
US7756224B2 (en) Viterbi decoding circuit and wireless device
JP2009246474A (ja) ターボデコーダ
Asghar et al. Towards radix-4, parallel interleaver design to support high-throughput turbo decoding for re-configurability
US6138133A (en) Circuit for calculating the inverse of an arbitrary element of a finite field
JP2009175861A (ja) 値選択回路
US8595584B2 (en) Method and apparatus for interleaving a data stream using quadrature permutation polynomial functions (QPP)
US20160336995A1 (en) Method and Vector Computing Unit for Implementing De-scrambling and De-spreading, and Computer Storage Medium
JPH06230991A (ja) 有限体での任意元素の逆数算出方法及び装置
CN113472358B (zh) 一种基于准循环生成矩阵的高速并行编码器
KR0155516B1 (ko) 비터비 복호기에서 한개의 메모리를 사용한 상태 매트릭 메모리 운용방법 및 그 장치
Broich et al. Efficient VLSI architectures of QPP interleavers for LTE turbo decoders
Martina et al. Hardware design of a low complexity, parallel interleaver for WiMax duo-binary turbo decoding

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20111007

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20121008

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee