KR100215566B1 - 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법 - Google Patents

정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법 Download PDF

Info

Publication number
KR100215566B1
KR100215566B1 KR1019960043231A KR19960043231A KR100215566B1 KR 100215566 B1 KR100215566 B1 KR 100215566B1 KR 1019960043231 A KR1019960043231 A KR 1019960043231A KR 19960043231 A KR19960043231 A KR 19960043231A KR 100215566 B1 KR100215566 B1 KR 100215566B1
Authority
KR
South Korea
Prior art keywords
address
clock
static ram
signal
input
Prior art date
Application number
KR1019960043231A
Other languages
English (en)
Other versions
KR19980023731A (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 KR1019960043231A priority Critical patent/KR100215566B1/ko
Publication of KR19980023731A publication Critical patent/KR19980023731A/ko
Application granted granted Critical
Publication of KR100215566B1 publication Critical patent/KR100215566B1/ko

Links

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/2732Convolutional interleaver; Interleavers using shift-registers or delay lines like, e.g. Ramsey type interleaver
    • 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/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
    • H03M13/6505Memory efficient implementations

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

본 발명은 디지탈 채널부호기의 길쌈 인터리버 및 채널복호기의 길쌈 디인터리버에 관한 것으로, 더욱 상세하게는 정적 램(SRAM)을 사용하여 하드웨어양을 감소시키고, 정적 램의 액세스를 효율적으로 제어한 정적 램을 이용한 길쌈 인터리버/디인터리버 및 정적 램의 주소 생성 방법에 관한 것으로서, 본 발명의 길쌈 인터리버/디인터리버는 입력 수단(41)과, 주소 생성 수단(42), 정적 램(43), 출력 수단(44) 및, 제어수단(45)으로 구성된 구조이며, 상기 주소 생성 수단(22)에 적용되는 주소 생성 방법은 N개의 심볼을 주기로 하여 입력 순서에 따라 정확한 지연 후에 출력되도록, 지연시간에 해당하는 시간에 쓰기 주소(WA)와 읽기 주소(RA)를 클럭의 반 주기동안 각각 발생하도록 하였으며, 상기 정적 램의 전체 메모리 크기(MEM_SIZE)로 모듈러 연산하여 순환 번지 지정 방식으로 주소를 할당하므로써, 종전과 동일한 인터리빙/디인터리빙을 수행하게 된다.
따라서, 본 발명의 효과는 최소한의 메모리(즉, (N-1)×(B-1) + 1)(Bytes)만을 사용하고, 또한, 각종 제어 신호들이 클럭신호와 반전된 클럭신호이기 때문에 제어 수단을 간단한 하드웨어로 쉽게 구현할 수 있는 효과가 있다.

Description

정적 램을 이용한 길쌈 인터리버/디인터리버 및 정적 램의 주소 생성 방법(Cnvolutional Interleaver and Deinterleaver using SRAM and a method for generating address of SRAM )
본 발명은 디지탈 채널부호기의 길쌈 인터리버 및 채널복호기의 길쌈 디인터리버에 관한 것으로, 더욱 상세하게는 정적 램(SRAM)을 사용하여 하드웨어양을 감소시키고, 정적 램의 액세스를 효율적으로 제어한 정적 램을 이용한 길쌈 인터리버/디인터리버 및 정적 램의 주소 생성 방법에 관한 것이다.
일반적으로, 통상의 통신 시스템에 있어서 전송중에 발생하는 에러는 군데 군데 랜덤한 형태로 발생하는 랜덤 에러(random error)와, 한 곳에 집중적으로 몰려서 발생하는 군집 에러(burst error)가 있다.
이렇게 채널상에서 발생하는 에러를 수신측에서 처리할 수 있도록 에러 정정 기술을 사용하고 있으며, 이러한 에러 정정 기술은 크게 에러 정정 부호화(ECC:error correcting coding) 기술과, 부호화된 데이터를 인터리빙(interleaving)하는 기술이 있다.
에러 정정 부호화(ECC)는 에러를 검출하거나 정정하는 데 사용되는 검사 심볼(check symbol)을 부가하는 것으로서, 몇개의 정보 심볼(information symbol)을 묶어 블럭으로 분리한 다음, 블럭 단위로 부호화를 수행하는 블럭 코드(block code)와, 정보 심볼열의 입력 시퀀스에 따라 부호화를 수행하는 난블록 코드(nonblock code)가 있다.
그리고, 인터리빙(interleaving)은 부호화된 데이터열을 미리 정해진 방식으로 데이터열의 순서를 재배열하는 것으로, 그 방식에 따라 블럭 인터리버(block interleaver)와 길쌈 인터리버(convolution interleaver)가 있다.
도 1 은 일반적인 채널 부호기에 대한 구성도로서, 채널 부호기는 리드 솔로몬 부호기(11)와, 제 1 인터리버(12), 길쌈 부호기(13), 및 제 2 인터리버(14)로 구성된다.
상기 리드 솔로몬 부호기(11)는 원래의 정보 심볼에 에러 정정을 위한 검사 심볼을 첨가시켜 리드 솔로몬 부호화 기능을 수행하고, 제 1 인터리버(12)는 상기 리드 솔로몬 부호기(11)로 부터 출력된 신호의 순서를 재배열하여 랜덤화시킨다.
상기 길쌈 부호기(13)는 상기 제 1 인터리버(12)로부터 출력된 신호를 길쌈 부호 (convolutional code)로 부호화하고, 제 2 인터리버(12)는 길쌈 부호기(13)로부터 출력된 신호의 순서를 재배열하여 랜덤화 시킨다.
도 2 는 일반적인 채널 복호기에 대한 구성도로서, 채널 복호기는 동기 검출기(21)와, 제 2 디인터리버(22), 길쌈 복호기(23), 제 2 디인터리버(24), 및 리드 솔로몬 복호기(25)로 구성된다.
상기 동기 검출기(21)는 입력 신호의 동기를 검출하고, 상기 제 2 디인터리버 (22)는 상기 동기 검출기(21)로 부터 출력된 신호를 디인터리빙하여 상기 제 2 인터리버(14)의 입력 신호 순서대로 재배열하여 출력한다.
상기 길쌈 복호기(23)는 상기 제 2 디인터리버(22)로부터 출력된 신호를 비터비 복호화하여 발생된 에러를 정정하고, 상기 제 1 디인터리버(24)는 상기 길쌈 복호기(23)로부터 출력된 신호를 디인터리빙하여 상기 제 1 인터리버(12)의 입력 신호 순서대로 재배열하여 출력한다.
상기 리드 솔로몬 복호기(25)는 상기 제 1 디인터리버(24)로부터 출력된 신호를 리드 솔로몬 복호화하여 발생된 에러를 정정한다.
도 1과 도 2에서 보여준 길쌈/RS 연쇄 부호(concatenated code)를 사용한 에러 정정 시스템은 부호화된 신호를 재배열하여 랜덤 에러와 군집 에러에 모두에 효율적으로 대처하고 있으며, 그 이유는 다음과 같다.
에러 정정 부호(RS code, convolutional code)는 각 부호어(codeword)내에서 제한된 수의 비트 에러를 정정할 수 있으므로 랜덤 에러에는 효율적이나, 에러가 군집해서 발생하는 경우에는 비효율적일 수 있다.
이러한 군집 에러에 대처하기 위해, 송신단에서는 인터리버를 통해 부호화된 데이터 스트림의 순서를 재배열(랜덤화)시켜서 전송중에 군집 에러가 발생한다 하더라도, 수신단의 디인터리버를 통해 원래의 데이터 스트림 순서로 복원시키므로써 군집 에러를 랜덤 에러로 변형시키기 때문이다.
한편, 미국 디지털 위성 방송의 하나인 DSS(Direct Satellite System)방식에서는 (146, 130)리드 솔로몬 부호기를 채택하고, 리드 솔로몬 부호화된 신호를 길쌈 인터리버(convolution interleaver)를 통해 재배열하고 있다.
여기서, (146, 130)리드 솔로몬 코드는 8비트를 하나의 심볼로하여 130개의 정보 심볼(infomation symbol)에 16개의 검사 심볼(check symbol)을 추가하여 전체 부호어 길이가 146개의 심볼(=146bytes)로 이루어져 있다. 그리고, 길쌈 인터리버는 인터리빙 간격을 13으로 하여 이웃한 두 입력 심볼 사이에 12개의 임의의 심볼을 삽입하여 재배열한다.
도 3 은 DSS방식에 사용된 종래의 길쌈 인터리버에 대한 블럭도로서, 길쌈 인터리버는 입력 스위치(30)와, 복수개의 시프트레지스터(2-0∼2-145), 및 복수개의 가산기(3-0∼3-145)로 구성되어 있다.
상기 입력 스위치(30)는 입력되는 바이트 순서대로 맨 오른쪽 가산기(3-0)의 입력탭 #0 부터 맨 왼쪽 가산기(3-145)의 탭 #145 까지 차례대로 스위칭하여 입력 데이터를 전달하는 기능을 한다.
상기 복수개의 시프트 레지스터(2-0∼2-145)는 맨 오른쪽 가산기(3-0)에는 1개의 레지스터(2-0)가 연결되어있고, 나머지 두 가산기 사이에는 12개의 레지스터(2-1∼2-145)가 연결되어 있으면서, 입력 데이터와 동기된 클럭에 의해 입력당 한번씩 오른쪽으로 시프트하는 기능을 한다.
상기 복수개의 가산기(3-0∼3-145)는 맨 왼쪽 가산기(3-145)의 한쪽 입력은 항상 0으로 고정되어 있으면서, 상기 입력 스위치(30)에 스위칭되는 입력 탭이 0으로 고정되있는 상태에서 스위치에 연결되면, 입력 데이터를 입력받고, 상기 시프트레지스터로부터 시프트된 값과 더하여 출력한다.
상기와 같이 구성된 종래의 길쌈 인터리버의 동작을 설명하면 다음과 같다.
리드 솔로몬 부호화된 신호가 바이트 단위로 입력되면, 상기 입력 스위치(30)는 바이트 클럭 단위로 상기 0번 가산기(3-0)부터 차례대로 선택한다.
따라서, 1번째 클럭에 동기되어 0차 데이터(D0)가 입력되고, 1 클럭 지연후에 0차 데이터(D0)는 출력된다. 2번째 클럭에서 1차 데이터(D1)가 입력되고, 12+1 클럭 지연 후에 1차 데이터(D1)는 출력된다. 3번째 클럭에서 2차 데이터(D2)가 입력되고, 2×12+1 클럭 지연 후에 2차 데이터(D2)는 출력된다. 계속해서 146번째 클럭에서 145차 데이터(D145)가 입력되고, 145×12+1 클럭 후에 출력된다.
결국, 상기와 같이 구성된 N=146, B=13 길쌈인터리버를 통해서 0차내지 145차 데이터(Di, 0≤i≤145)는 각각 하기 수학식 1과 같은 지연후에 출력된다.
그리고, 도 3의 종래의 길쌈 인터리버에서 요구된 최소한의 메모리양은 하기 수학식 2와 같이 주어진다.
종래와 같이 메모리를 시프트레지스터로 구현했을 경우에는, 가장 기본적으로 간단히 구현되었다 하더라고, 레지스터당 6개의 게이트(gate)가 사용되고, 1 게이트는 4 개의 트랜지스터로 구현되기 때문에, 결국에는 1 개의 레지스터를 설계하는 데에 24개의 트랜지스터가 필요하게 된다.
이것을 일반적인 로직(LOGIC)으로 구현한다면 상당히 큰 양이 되고, 또한, 주문형 반도체(ASIC)로 구현한다하더라도 그 양은 무시할 수 없을 정도여서 상당한 하드웨어의 부피나 비용 부담에 대한 문제점이 있었다.
이에 대한 해결 방안으로 정적 램을 이용한다면, 정적 램의 경우는 하나의 정적 램 셀(cell)당 대략 1.5 게이트, 즉 6개의 트랜지스터만으로 구현할 수 있으므로, 길쌈 인터리버가 요구하는 메모리양이 상당히 클 경우에는 시프트레지스터를 사용하는 것보다 정적 램(SRAM)을 사용하여 구현하는 것이 하드웨어가 차지하는 부피나 비용면에서 경제적일 것이다.
그러나, 정적 램을 이용한 길쌈 인터리버/디인터리버에서는 정적 램의 액세스를 담당하는 제어 로직이 추가되어야 하는 데, 그 하드웨어 구조 및 주소 생성 방법에 대해서도 공개되어있지 않은 문제점이 있었다.
이에, 본 발명은 상기와 같은 종래의 제 문제점을 해결하기 위해서 안출된 것으로, 본 발명의 목적은 정적 램(SRAM)을 이용하여 메모리 부담을 줄이면서도 간단한 하드웨어 구조를 갖는 길쌈 인터리버/디인터리버를 제공하는 데 그 목적이 있다.
본 발명의 다른 목적은 순환 번지 지정 방식(circular addressing)을 이용하여 상기 장치에 있어서 인터리빙/디인터리빙을 수행하도록 하는 주소 생성 방법을 제공하는 데 그 목적이 있다.
상기 목적을 달성하기 위한 정적 램을 이용한 길쌈 인터리버/디인터리버는,
입력 데이터를 바이트 단위로 래치하여 데이터버스로 출력하는 입력 수단; 읽기 주소(RA)와 쓰기 주소(WA)를 발생하는 주소 생성 수단; 상기 읽기 주소(RA)에 따라 저장된 데이터를 상기 데이터 버스로 출력함과 동시에, 상기 쓰기 주소(WA)에 따라 상기 데이터 버스에 실린 데이터를 저장하는 정적 램; 상기 정적 램으로부터 출력된 데이터를 바이트 단위로 래치하여 출력하는 출력 수단; 패킷 동기 신호(packet_sync)와 바이트 클럭 신호(byte_clock)에 따라 입력수단 인에이블 신호(IN_ENA)와, 정적 램 읽기신호(read), 정적 램 쓰기신호(write) 및, 출력수단 인에이블 신호(OUT_ENA) 등의 제어신호를 발생하는 제어수단을 포함하여 구성되는 것을 특징으로 한다.
상기 다른 목적을 달성하기 위하여, 바이트단위로 입력되는 데이터 스트림을 N개의 데이터를 주기로 하여, 인터리빙 간격 B로 인터리빙하는 상기 장치를 위한 정적 램의 주소를 생성하는 방법은,
메모리 크기가 (N-1)×B+1(bytes)의 정적 램을 순환 번지 지정 방식으로 매핑하기 위해서, 시스템 초기시, 기본 주소(BASE_ADDR)를 초기화하는 제 1 과정과; N주기의 0차 심볼 D(k,0)의 지연을 위해서, 상기 기본 주소(BASE_ADDR)를 클럭의 앞 반주기동안 읽기 주소(RA0)로 발생하고, 상기 읽기 주소(RA0)+1 을 클럭의 뒤 반주기동안 쓰기 주소(WA0)로 발생하는 제 2 과정; N주기의 나머지 심볼 (D(k,i), 1≤i≤N-1)의 지연을 위해서, 이전 클럭의 읽기 주소(RAi-1)+1 을 클럭의 앞 반주기 동안 읽기 주소(RAi)로 발생하고, 상기 읽기 주소(RAi) + 심볼 차수(i)×(B-1)+1 을 클럭의 뒤 반주기 동안 쓰기 주소(WAi)로 발생하는 제 3 과정을 포함하여 구성되는 것을 특징으로 한다.
상기 다른 목적을 달성하기 위하여 인터리빙된 데이터열을 바이트 단위로 입력받아 N주기 (=S(k,0), S(k,1),…,S(k,N-1))로 디인터리빙하는 상기 장치를 위한 정적 램의 주소를 생성하는 방법은,
쓰기 주소(WAi)를 생성하기 위해서, 입력 심볼의 인덱스 i 에 따라 (N-1)×B+1(bytes) 정적 램의 스위칭 위치(switch_position)를 결정하는 제 1 과정; 상기 정적 램을 순환 번지 지정 방식으로 매핑하기 위해서, 기본 주소(base_address)를 초기화하는 제 2 과정; N주기의 0차 심볼 S(k,0)의 지연을 위해서, 상기 기본 주소(base_address)를 클럭의 앞 반주기동안 읽기 주소(RA0)로 발생하고, 상기 읽기 주소(RA0)+ 1 +스위칭 위치×(B-1) 을 클럭의 뒤 반주기동안 쓰기 주소(WA0)로 발생하는 제 2 과정; N주기의 나머지 심볼(S(k,i), 1≤i≤N-1)의 지연을 위해서, 이전 클럭의 읽기 주소(RAi-1)+1 을 클럭의 앞 반주기 동안 읽기 주소(RAi)로 발생하고, 상기 읽기 주소(RAi)+ 1 +스위칭 위치×(B-1) 을 클럭의 뒤 반주기동안 쓰기 주소(WAi)로 발생하는 제 3 과정을 포함하여 구성되는 것을 특징으로 한다.
상기와 같은 본 발명의 주소 발생 방법을 적용한 길쌈 인터리버는 종전과 동일한 재배열 순서에 따라 인터리빙을 수행하고, 디인터리버도 역시 원래 순서대로 복원 하게 된다.
따라서, 본 발명에의한 정적 램의 주소 생성 방법을 적용한 길쌈 인터리버/디인터리버에서는 최소한의 메모리(즉, (N-1)×(B-1)+1)(Bytes)만을 사용하면 되고, 각종 제어 신호들이 클럭신호와 반전된 클럭신호이기 때문에 제어 수단을 간단한 하드웨어로 쉽게 구현할 수 있다.
도 1 은 일반적인 채널 부호기에 대한 구성도,
도 2 는 일반적인 채널 복호기에 대한 구성도,
도 3 은 DSS 방식에 사용된 종래의 길쌈 인터리버에 대한 블럭도,
도 4 은 본 발명에 따른 길쌈 인터리버에 대한 블럭도,
도 5 는 본 발명에 따른 주소 할당 방법을 설명하기 위한 정적 램의 주소 매핑도,
도 6 은 본 발명에 따른 길쌈 인터리버/디인터리버의 동작을 설명하기 위한 여러 제어신호에 대한 타이밍도이다.
* 도면의 주요 부분에 대한 부호의 설명 *
41 : 입력 버퍼 42 : 주소 생성부
43 : 정적 램 44 : 출력 래치
45 : 제어부
이하, 첨부된 도면을 참조하여 본 발명을 자세히 설명하기로 한다.
도 4 는 본 발명에 따른 정적 램을 이용한 길쌈 인터리버에 대한 블럭도로서, 본 발명의 길쌈 인터리버는 입력 버퍼(41)와, 주소 생성부(42), 정적 램(43), 출력 래치(44) 및, 제어부(45)로 구성되어 있다.
상기 입력 버퍼(41)는 입력 데이터(D(k,i))를 바이트 단위로 래치하여 데이터버스로 출력한다.
상기 주소 생성부(42)는 클럭의 앞 반주기동안에 읽기 주소(RA)를 생성하고, 클럭의 뒤 반주기동안에 쓰기 주소(WA)를 생성하여 출력한다.
상기 정적 램(43)은 클럭의 앞 반주기동안 발생된 상기 읽기 주소(RA)에 따라 저장된 데이터(S(k,i))를 상기 데이터버스로 출력함과 동시에, 클럭의 뒤 반주기동안 발생된 상기 쓰기 주소(WA)에 따라 상기 입력 데이터(D(k,i))를 저장한다.
상기 출력 버퍼(44)는 상기 정적 램(43)으로부터 출력된 데이터(S(k,i))를 래치하여 인터리빙된 데이터를 최종 출력한다.
상기 제어부(45)는 패킷 동기 신호(packet_sync)와, 바이트 클럭(byte_clock)에 따라 입력버퍼 인에이블 신호(IN_ENA)와, 정적 램 읽기신호(read), 정적 램 쓰기신호(write) 및, 출력버퍼 인에이블 신호(OUT_ENA)등의 제어신호를 발생하여 상기 입력 버퍼와(41), 정적 램(43) 및, 출력 버퍼(44)를 제어한다.
도 5 는 본 발명에 따른 주소 할당 방법을 설명하기위한 정적 램의 주소 매핑도이다.
도 5에서 보는 바와 같이, 기본 주소(base_address)가 가르키는 1바이트(#0)는 도 3 의 0번 시프트레지스터(3-0)의 기능을 구현하기 위한 메모리 블럭이고, 다음 12바이트(#1)는 도 3의 1번 시프트레지스터(3-1)의 기능을 구현하기 위한 메모리 블럭으로, 이하 나머지 메모리 블럭(#2∼#145)에서도 도 3 의 시프트레지스터(3-2∼3-145)와 일대일 대응으로 구성되어 있다.
즉, 필요한 최소한의 메모리 용량(MEM_SIZE)은 145×12+1(bytes)이며, 1바이트로 구성된 1번 메모리 블럭의 주소가 최하위 주소가 된다.
입력 심볼의 클럭에 동기되어 매 클럭마다 상기 기본 주소(base_address)가 1씩 증가하면서(우측에서 좌측으로), 클럭의 앞 반주기동안 상기 기본 주소(base_address)를 읽기 주소로 발생하여 데이터를 읽어냄으로써 도 3 의 시프트 작용은 달성된다.
그리고, 실제 메모리를 액세스하기위한 읽기 주소(RA)와 쓰기 주소(WA)는 전체 메모리 크기(MEM_SIZE)로 모듈러 연산한 값을 순환 번지 지정 방식(circular addressing)으로 매핑하여 사용한다.
여기서, 순환 번지 지정 방식이란, 미리 지정된 범위내의 최상위 번지나 최하위 번지에 도달하게 되면 다시 처음의 번지값으로 돌아가서 일정한 범위안에서 번지가 순환하는 번지 지정 방식이다.
상기 본 발명의 도 5 의 작용과 종래의 도 3의 작용을 서로 비교해 보면, 도 3의 가산기에 입력되는 탭은 입력 스위치가 선택한 탭에는 입력 데이터를, 다른 탭에는 0을 입력하는 것과 같고, 또한 선택된 탭에 해당하는 가산기의 다른 입력값은 0이 되기 때문에, 도 5 에서와 같이 정적 램에 입력 데이터를 저장하고 것만으로도 충분히 구현된다.
이어서, 도 5 의 메모리를 액세스 하기위한 인터리버의 주소 생성 알고리즘을 설명하기로 한다.
우선, 인터리버 주소 생성 알고리즘을 C 언어를 사용하여 기술하였으며, 스위치 동기와 관력된 동기 부분이 제외된 것이다.
[표1]
인터리버 주소 생성 알고리즘 : C 프로그램 1
#define N 146
#define B 13
while(system=ON) {
if(reset=ON) {
base_address=0(or arbitrary position);
input_counter=0;
}
else {
switch_position=input_counter;
RA = base_address;
WA = ( base_address+switch_position*(B-1)+1)%MEM_SIZE;
input_counter=(input_count+1)%N;
base_address=(base_address+1)%MEM_SIZE;
}
1 system clock delay;
}
상기 표 1 에서 RA는 정적 램의 읽기 주소이고, WA는 정적 램의 쓰기 주소이며, switch_position은 도 3의 스위치 탭번호에 해당하는 것으로 입력 데이터의 인덱스와 동일한 값이다.
상기 표 1 을 간단히 설명하면, 시스템이 온 상태이고, 리셋인지를 판단한다.
리셋이면, 정적 램의 시작 주소를 가리키는 기본 주소(base_address)를 최하위 주소 0으로 지정하고, 주기의 몇번째 데이터인가를 알리는 카운터 변수(input_count)를 0으로 초기화 시킨다.
리셋이 아니면, 스위치 위치를 알리는 스위치 변수(switch_position)는 상기 카운터 변수(input_count)로 지정하고, 읽기 주소(RA)는 상기 기본 주소(base_address)로 지정하고, 쓰기 주소(WA)는 상기 기본 주소(base_address)에다가 상기 스위치 변수(switch_position)의 (B-1)배한 값에 1을 더한 값을 합한 다음 메모리 크기(MEM_SIZE)로 모듈러 연산한 값을 지정한다.
그리고, 상기 카운터 변수(input_count)는 1증가하여 N으로 모듈러 연산한 값으로 지정하고, 상기 기본 주소(base_address)는 1증가하여 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정한다.
상기와 같이 진행되는 주소 생성 알고리즘을 주기 7 이고, 인터리빙 간격 3인 (N=7, B=3) 길쌈 인터리버에 적용한 결과를 하기 표 2에 나타내었다.
[표 2]
주기 변수 k에 따른 (7, 3)길쌈 인터리버의 정적 램 주소 및 출력 데이터
입력 데이터 D(k,i) 카운트변수 input_count 기본 주소base_address 읽기 주소(RA) 쓰기 주소 (WA) 출력 데이터S(k,i)
D(1,0) 0 0 0 1 X
D(1,1) 1 1 1 4 D(1,0)
D(1,2) 2 2 2 7 X
D(1,3) 3 3 3 10 X
D(1,4) 4 4 4 0 D(1,1)
D(1,5) 5 5 5 3 X
D(1,6) 6 6 6 6 X
D(2,0) 0 7 7 8 D(1,2)
D(2,1) 1 8 8 11 D(2,0)
D(2,2) 2 9 9 1 X
D(2,3) 3 10 10 4 D(1,3)
D(2,4) 4 11 11 7 D(2,1)
D(2,5) 5 12 12 10 X
D(2,6) 6 0 0 0 D(1,4)
D(3,0) 0 1 1 2 D(2,2)
D(3,1) 1 2 2 5 D(3,0)
D(3,2) 2 3 3 8 D(1,5)
D(3,3) 3 4 4 11 D(2,3)
상기 (7, 3)길쌈 인터리버의 정적 램 크기(=(N-1)×(B-1)+1)는 13바이트이고, 최상위번지를 '12'로, 최하위 번지를 '0'으로 가정하였을 경우에 대한 것이다.
상기 표 2에서 보는 바와 같이, 읽기 주소(RA)는 클럭의 앞 반주기 동안에 최하위 주소(0)부터 1씩 증가하면서 순환 번지 지정 방식에 따라 발생하고 있다.
그리고, 쓰기 주소(WA)는 클럭의 뒤 반주기 동안에 1번단의 최하위 주소(1)부터 3(=B)씩 증가하면서 순환 번지 지정 방식에 따라 발생하여 7(=N)주기로 입력되는 데이터를 저장하고, 다음 주기의 0차 심볼을 저장하기위한 주소는 이전 주기의 마지막 데이터의 주소에서 2(=B-1)씩 증가하여 발생한다.
따라서, 입력 데이터의 스트림중 이웃한 두개의 데이터사이에 2(=B-1)개의 데이터가 삽입되어 인터리빙된 데이터를 얻을 수 있는 것이다.
이어서, 디인터리빙 방법에 대해서 N=7, B=3인 (7, 3)길쌈 인터리버에 의해 출력된 데이터 스트림을 예를 들어 설명하고자 한다.
몇번째 주기를 나타내는 주기 변수 k에 따라 7개의 심볼을 주기로 인덱스 i (0≤i≤6)를 갖는 심볼 D(k,i)는 길쌈 인터리버에 입력되어 다음 표 2 와 같은 순서로 출력된다.
[표 3]
인터리버 출력 순서
k D(k,i), 0≤i≤5
1 D(1,0), X, X, D(1,1), X, X, D(1,2)
2 D(2,0), X D(1,3), D(2,1), X, D(1,4), D(2,2)
3 D(3,0), D(1,5), D(2,3), D(3,1), D(1,6), D(2,4), D(3,2)
4 D(4,0), D(2,5), D(3,3), D(4,1), D(2,6), D(3,4), D(4,2)
: : : : : : :
D(k,0), D(k,5), D(k,3), D(k,1), D(k,6), D(k,4), D(k,2)
상기 표 3에서, X 는 시스템 초기에 레지스터에 들어 있는 임의의 데이터를 표시한 것이다. 상기에서 표 3에서 보는 바와 같이, 디인터리버에서는 입력되는 데이터 N개를 주기로 하였을 때, 인터리버 입력 인덱스 i가 0, 5, 3, 1, 6, 4, 2 인 데이터 순으로 입력된다.
따라서, 디인터리버는 인터리버에서의 인덱스에 따른 지연량(상기 수학식 1)을 역으로 적용하여, 모든 인덱스에 따른 지연량을 동일하게 만들어주므로써, 인터리버의 입력 순서와 디인터리버의 출력 순서가 동일하게 되도록 하여야 한다.
즉, 디인터리버에서는 입력되는 데이터의 인터리버 입력에서의 인덱스에 따라 하기 수학식 3과 같은 상대적인 지연양을 갖도록 해야 한다.
따라서, N=7이고, B=3인 디인터리버에서는 인터리버의 입력 인덱스 i=0은 6×2, i=5는 1×2, i=3은 3×2, i=1은 5×2, i=6은 0×2, i=4는 2×2, i=2는 4×2 만큼의 지연량을 주도록 해야한다.
지금까지의 설명을 간단히 요약하면, 도 3의 블럭도를 (7,3)인터리버/디인터리버에 적용시킬 경우, 인터리버에서는 의 가산기 입력 탭 번호 #0,#1,#2,#3,#4,#5,
#6 을 차례로 스위칭 작용이 발생하고, 디인터리버에서는 #6,#1,#3,#5,#0,#2,#4 순서로 각 탭에 스위칭하여 연결하는 것과 같다.
이어서, 디인터리버의 스위칭 순서를 구하는 알고리즘을 설명하기로 한다.
우선, N=146, B=12 인 DSS 경우에 디인터리버에서의 스위칭 알고리즘을 C 언어를 사용하여 기술하면 다음과 같다.
[표 4]
디인터리버의 스위칭 순서를 구하는 알고리즘 : C 프로그램 2
#define N 146
#define B 13
main()
{
int n, i;
int H[N], G[N];
FILE *outf;
outf=fopen(dsspkg.vhd,w);
for (n=0;nN;n++) H[n]= n * B % N;
for(j=0;jN;j++)
{ for(n=0;nN;n++)
{ if(H[n]==j)
G[j]=n; }
fprint(outf,#%d, ,N-1-G[j] );
}
fclose(outf);
}
상기 표 4에서 변수 n 은 인터리버의 입력 순서를 나타내는 입력 인덱스이고, H[n] 은 인터리버에서의 출력 데이터가 N 주기의 몇 번째 출력되는지를 나타낸다. 변수 j 는 디인터리버의 입력 순서를 나타내는 입력 인덱스이고, G[j]는 H[n]의 역함수이다.
상기 표 4를 간단히 설명하면, 인터리버의 출력 순서 H[n]는 입력 인덱스 n 과 인터리빙 간격 B를 곱하여 N으로 모듈러 연산한 값이다.상기 H[n]값의 역함수 G[j] (=n)는 디인터리버의 입력 인덱스 j 에 해당하는 데이터가 인터리버에서는 N주기의 몇번째 입력 데이터였는지를 알려주는 입력 인덱스 n에 해당한다.상기 인터리버의 인덱스 G[j]=n 값을 이용하여 상기 수학식 3 과 같이 지연량을 결정해주는 스위칭 순서 N-1-G[j] 를 구한다.
상기 프로그램 2의 결과를 표 4에 나타내었다.
[표 4]
디인터리버의 스위칭 순서 : 탭 번호
#145, #100, #55, #10, #111, #66, #21, #122, #77, #32, #133, #88, #43,
#144, #99, #54, #9, #110, #65, #20, #121, #76, #31, #132, #87, #42,
#143, #98, #53, #8, #109, #64, #19, #120, #75, #30, #131, #86, #41,
: : : :
#137, #92, #47, #2, #103, #58, #13, #114, #69, #24, #125, #80, #35,
#136, #91, #46, #1, #102, #57, #12, #113, #68, #23, #124, #79, #34,
#135, #90, #45, #0, #101, #56, #11, #112, #67, #22, #123, #78, #33,
#134, #89, #44
상기와 같이 구한 디인터리버의 스위칭 순서를 이용하여 디인터리버를 위한 주소 생성 알고리즘을 C 언어를 사용하여 기술하였다.
[표 5]
디인터리버의 주소 생성 C 프로그램 2
constant N=146;
constant B=13;
constant switching_orther[N]= {145,100,55,10,111,66,21,122,77,32,133,88,43,
144, 99,54, 9,110,65,20,121,76,31,132,87,42,
143, 98,53, 8,109,64,19,120,75,30,131,86,41,
142, 97,52, 7,108,63,18,119,74,29,130,85,40,
141, 96,51, 6,107,62,17,118,73,28,129,84,39,
140, 95,50, 5,106,61,16,117,72,27,128,83,38,
139, 94,49, 4,105,60,15,116,71,26,127,82,37,
138, 93,48, 3,104,59,14,115,70,25,126,81,36,
137, 92,47, 2,103,58,13,114,69,24,125,80,35,
136, 91,46, 1,102,57,12,113,68,23,124,79,34,
135, 90,45, 0,101,56,11,112,67,22,123,78,33,
134, 89,44 }
while(system=ON) {
if(reset=ON) {
base_address=0(or arbitrary position);
input_counter=0;} else{
switch_position=constant(input_counter);
RA = base_address;
WA=(base_address+switch_position*(B-1)+1)%MEM_SIZE;
input_counter=(input_count+1)% N;
}
base_address=(base_address+1)% MEM_SIZE;
1 system clock delay;
}
상기 표 5에서 보는 바와 같이, 디인터리버의 알고리즘은 스위칭 순서만 다를 뿐, 주소 생성 방법은 동일하게 적용된다.
상기 표 5를 적용한 (N=7, B=3)길쌈 디인터리버 실시예를 표 6에 나타내었다.
[표 6]
주기 변수 k에 따른 (7, 3)길쌈 디인터리버의 정적 램 주소 및 출력 데이터
상기 표 6에서 보는 바와 같이, 시스템이 초기화 된 이후 14 클럭이 지난 후부터 출력되는 데이터는 인터리빙 전의 원래 순서대로 복원되어 디인터리빙이 완벽하게 수행되는 것을 볼수 있다.
즉, 디인터리버의 하드웨어 구조는 도 4에 도시한 인터리버의 구조와 동일하며, 다만 정적 램을 액세스하기 위한 주소를 생성하는 데에 있어서, 입력 순서에 대응되는 도 3의 스위칭 순서만 다르게 하여 주소를 생성하면 되는 것이다.
이어서, 도 6 은 도 4 의 길쌈 인터리버 동작을 설명하기 위한 여러 제어신호에 대한 타이밍도이다. 도 6은 인터리빙되는 과정을 N=146, B=13 을 사용하는 DSS 방식의 길쌈 인터리버의 작용을 도시한 것이다.
6A는 바이트 클럭 신호(byte_clock)이고, 6B는 입력 데이터 스트림 (D(k,i))으로, 바이트 클럭(byte_clock)에 동기되어 상기 입력 버퍼(41)로 입력된다.
6C는 입력 버퍼의 인에이블 신호(IN_ENA)로서, 상기 제어부(45)에서 클럭신호와 동일하게 발생하며, 액티브 로우 신호(avctive low)이다.
6D는 입력 버퍼 출력 데이터로서, 상기 입력 버퍼 인에이블 신호(IN_ENA)에 의해 한 클럭지연 된 후, 바이트 클럭의 뒤 반주기동안 데이터버스에 실린다.
6E는 정적 램 쓰기 신호(write)로서, 상기 제어부(45)에서 클럭신호와 동일하게 발생하며, 액티브 로우 신호이다.
6F는 정적 램 읽기 신호(read)로서, 상기 제어부(45)에서 클럭신호를 반전 시켜 발생하며, 액티브 로우 신호이다.
6G는 어드레스 버스에 실린 정적 램을 액세스 하기 위한 주소 데이터로서, 상기 주소 생성부(44)에서 클럭의 앞 반주기동안에는 읽기 주소(RA)가 발생되고, 클럭의 뒤 반주기 동안에는 쓰기 주소(WA)가 발생된다.
6H는 데이터 버스에 실린 데이터로서, 클럭의 앞 반주기 동안에는 상기 읽기 주소(RA)에 따라 상기 정적 램의 출력 데이터(S(k,i))가 실리고, 클럭의 뒤 반주기 동안에는 상기 입력 버퍼의 출력 데이터(D(k,i))가 실린다.
6I는 출력 래치의 인에이블 신호(OUT_ENA)로서, 상기 제어부(25)에서 클럭 신호를 반전시켜 발생하며, 액티브 로우 신호이다.
6J는 출력 래치의 출력 데이터(S(k,i))로서, 클럭의 앞 반주기에 실리는 상기 정적 램의 출력 데이터가 래치된다.
또한, 상기 도 6의 제어신호(6C, 6E, 6F, 6I)는 디인터리버에도 동일하게 적용되므로서, 원래 데이터 순서로 디인터리빙이 수행된다.
이상에서 살펴본 바와 같이, 본 발명에 의한 정적 램의 주소 생성 방법을 적용한 길쌈 인터리버/디인터리버에서는 최소한의 메모리(=(N-1)×(B-1)+1)(Bytes)만을 사용하므로써, 이론상 최적의 메모리를 사용하는 효과가 있다.
또한, 각종 제어 신호들이 클럭신호와 반전된 클럭신호이기 때문에 제어 수단을 간단한 하드웨어로 쉽게 구현할 수 있는 효과가 있다.

Claims (7)

  1. 데이터 스트림을 인터리빙 간격 B로 재배열하여 전송하고, 이를 수신하여 원래 데이터 스트림의 순서대로 복원하는 길쌈 인터리버/디인터리버에 있어서,
    입력 데이터를 바이트 단위로 래치하여 데이터버스로 출력하는 입력 수단(41)과;
    읽기 주소(RA)와 쓰기 주소(WA)를 발생하는 주소 생성 수단(42);
    상기 읽기 주소(RA)에 따라 저장된 데이터를 상기 데이터 버스로 출력함과 동시에, 상기 쓰기 주소(WA)에 따라 상기 데이터 버스에 실린 데이터를 저장하는 정적 램(43);
    상기 정적 램(43)으로부터 출력된 데이터를 바이트 단위로 래치하여 출력하는 출력 수단(44); 및
    패킷 동기 신호(packet_sync)와 바이트 클럭 신호(byte_clock)에 따라 입력수단 인에이블 신호(IN_ENA)와, 정적 램 읽기신호(read), 정적 램 쓰기신호(write) 및, 출력수단 인에이블 신호(OUT_ENA) 등의 제어신호를 발생하는 제어수단(45)을 포함하여 구성되는 것을 특징으로 하는 정적 램을 이용한 길쌈 인터리버/디인터리버.
  2. 제 1 항에 있어서, 상기 제어수단(45)은 클럭 신호(byte_clock)를 입력 수단 인에이블 신호(IN_ENA)로 발생하여 상기 입력 수단(41)에 제공하는 것을 특징으로 하는 정적 램을 이용한 길쌈 인터리버/디인터리버.
  3. 제 1 항에 있어서, 상기 제어수단(45)은 클럭 신호(byte_clock)를 정적 램 쓰기 신호(WT)로 발생하여 상기 정적 램(43)으로 제공하는 것을 특징으로 하는 정적 램을 이용한 길쌈인터리버/디인터리버.
  4. 제 1 항에 있어서, 상기 제어수단(45)은 클럭 신호(byte_clock)를 반전시켜 정적 램 읽기 신호(read)로 발생하여 상기 정적 램(43)으로 제공하는 것을 특징으로 하는 정적 램을 이용한 길쌈인터리버/디인터리버.
  5. 제 1 항에 있어서, 상기 제어수단(45)은 클럭 신호(byte_clock)를 출력수단 인에이블 신호(OUT_ENA)로 발생하여 상기 출력 수단(44)으로 제공하는 것을 특징으로 하는 정적 램을 이용한 길쌈인터리버/디인터리버.
  6. 바이트단위로 입력되는 데이터 스트림을 N개의 데이터를 주기로 하여, 인터리빙 간격 B로 인터리빙하는 데 있어서,
    메모리 크기가 (N-1)×B+1(bytes)의 정적 램을 순환 번지 지정 방식으로 매핑하기 위해서, 시스템 초기시, 기본 주소(BASE_ADDR)를 초기화하는 제 1 과정과;
    N주기의 0차 심볼 D(k,0)의 지연을 위해서, 상기 기본 주소(BASE_ADDR)를 클럭의 앞 반주기동안 읽기 주소(RA0)로 발생하고, 상기 읽기 주소(RA0)+1 을 클럭의 뒤 반주기동안 쓰기 주소(WA0)로 발생하는 제 2 과정;
    N주기의 나머지 심볼(D(k,i), 1≤i≤N-1)의 지연을 위해서, 이전 클럭의 읽기 주소(RAi-1)+1 을 클럭의 앞 반주기 동안 읽기 주소(RAi)로 발생하고, 상기 읽기 주소(RAi)+심볼 차수(i)×(B-1)+1 을 클럭의 뒤 반주기 동안 쓰기 주소(WAi)로 발생하는 제 3 과정을 포함하여 구성되는 것을 특징으로 하는 정적 램의 주소 생성 방법.
  7. 인터리빙된 데이터열을 바이트 단위로 입력받아 N주기 (=S(k,0), S(k,1),…,S(k,N-1))로 디인터리빙하는 데 있어서,
    쓰기 주소(WAi)를 생성하기 위해서, 입력 심볼의 인덱스 i 에 따라 (N-1)×B+1(bytes) 정적 램의 스위칭 위치(switch_position)를 결정하는 제 1 과정;
    상기 정적 램을 순환 번지 지정 방식으로 매핑하기 위해서, 기본 주소(base_address)를 초기화하는 제 2 과정;
    N주기의 0차 심볼 S(k,0)의 지연을 위해서, 상기 기본 주소(base_address)를 클럭의 앞 반주기동안 읽기 주소(RA0)로 발생하고, 상기 읽기 주소(RA0)+1+스위칭 위치×(B-1) 을 클럭의 뒤 반주기동안 쓰기 주소(WA0)로 발생하는 제 2 과정;
    N주기의 나머지 심볼(S(k,i), 1≤i≤N-1)의 지연을 위해서, 이전 클럭의 읽기 주소(RAi-1)+1 을 클럭의 앞 반주기 동안 읽기 주소(RAi)로 발생하고, 상기 읽기 주소(RAi)+1+스위칭 위치×(B-1) 을 클럭의 뒤 반주기동안 쓰기 주소(WAi)로 발생하는 제 3 과정을 포함하여 구성되는 것을 특징으로 하는 정적 램의 주소 생성 방법.
KR1019960043231A 1996-09-30 1996-09-30 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법 KR100215566B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019960043231A KR100215566B1 (ko) 1996-09-30 1996-09-30 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960043231A KR100215566B1 (ko) 1996-09-30 1996-09-30 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법

Publications (2)

Publication Number Publication Date
KR19980023731A KR19980023731A (ko) 1998-07-06
KR100215566B1 true KR100215566B1 (ko) 1999-08-16

Family

ID=19475758

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960043231A KR100215566B1 (ko) 1996-09-30 1996-09-30 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법

Country Status (1)

Country Link
KR (1) KR100215566B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100800840B1 (ko) * 2001-05-09 2008-02-04 삼성전자주식회사 터보코드를 사용하는 부호분할다중접속 이동통신시스템의 터보 인터리버 및 터보 인터리빙 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6304991B1 (en) * 1998-12-04 2001-10-16 Qualcomm Incorporated Turbo code interleaver using linear congruential sequence
KR100413421B1 (ko) * 1999-10-08 2003-12-31 엘지전자 주식회사 이중 인터리빙 방법
KR100601624B1 (ko) * 1999-10-30 2006-07-14 삼성전자주식회사 인터리버빙과 디인터리빙 장치 및 방법
KR101033582B1 (ko) * 2004-04-09 2011-05-11 엘지전자 주식회사 방송 수신기에서의 시간 역인터리빙을 위한 메모리 제어 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100800840B1 (ko) * 2001-05-09 2008-02-04 삼성전자주식회사 터보코드를 사용하는 부호분할다중접속 이동통신시스템의 터보 인터리버 및 터보 인터리빙 방법

Also Published As

Publication number Publication date
KR19980023731A (ko) 1998-07-06

Similar Documents

Publication Publication Date Title
EP0681373B1 (en) Convolutional interleaver with reduced memory requirements and address generator therefor
JP3882097B2 (ja) 重畳インターリーバ及びメモリのアドレス発生方法
JP3773263B2 (ja) 順列ユニットを含む回路装置及び一組の項目の処理方法
JPH0637646A (ja) 誤り訂正方式及びこの誤り訂正方式を用いた復号器
JP2006521059A (ja) 誤り訂正コードインターリーバ
US4633472A (en) Multiprocessor computer system comprising n parallel operating computer modules, and computer module for use in such a multiprocessor computer system
US7945780B1 (en) Apparatus for dynamically configurable interleaver scheme using at least one dynamically changeable interleaving parameter
US5978883A (en) Block interleaving and deinterleaving method and device therefor
KR100215566B1 (ko) 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법
WO1984003157A1 (en) Burst error correction using cyclic block codes
KR100499467B1 (ko) 블록 인터리빙 방법 및 그를 위한 장치
JPH06204893A (ja) 符号化方法および装置
JP2001332980A (ja) インタリーブ装置及びインタリーブ方法
KR100243468B1 (ko) 듀얼 포트 메모리를 이용한 길쌈 인터리버 /디인터리버
KR100230912B1 (ko) 고화질 텔레비젼(hdtv)의 복호지연에 의한 오류 데이타 제거장치 및 방법
KR100215565B1 (ko) 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법
EP0674395A2 (en) Error correction code encoding device and error correction code encoding method
US5124992A (en) Error correcting encoder/decoder for a digital transmission installation
KR0123088B1 (ko) 메모리를 이용한 길쌈 디인터리버
KR0183171B1 (ko) 인터리버 및 디인터리버와 그 방법
JP4487385B2 (ja) デジタル衛星放送受信装置、デインタリーブ方法及び逆エネルギー拡散処理方法
US9015551B2 (en) Decoding apparatus with de-interleaving efforts distributed to different decoding phases and related decoding method thereof
RU29816U1 (ru) Кодирующее устройство помехоустойчивого кода
JPH10163887A (ja) インターリーブ装置およびデインターリーブ装置
JP4532637B2 (ja) データ順序変更装置

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: 20120503

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20130502

Year of fee payment: 15

LAPS Lapse due to unpaid annual fee