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

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

Info

Publication number
KR100215565B1
KR100215565B1 KR1019960043229A KR19960043229A KR100215565B1 KR 100215565 B1 KR100215565 B1 KR 100215565B1 KR 1019960043229 A KR1019960043229 A KR 1019960043229A KR 19960043229 A KR19960043229 A KR 19960043229A KR 100215565 B1 KR100215565 B1 KR 100215565B1
Authority
KR
South Korea
Prior art keywords
address
data
clock
delay
base
Prior art date
Application number
KR1019960043229A
Other languages
English (en)
Other versions
KR19980023729A (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 KR1019960043229A priority Critical patent/KR100215565B1/ko
Publication of KR19980023729A publication Critical patent/KR19980023729A/ko
Application granted granted Critical
Publication of KR100215565B1 publication Critical patent/KR100215565B1/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)을 사용하므로써 하드웨어양을 감소시키고, 정적 램의 액세스를 효율적으로 제어한 정적 램을 이용한 길쌈 인터리버/디인터리버 및 정적 램의 주소 생성 방법에 관한 것으로서, 본 발명의 길쌈 인터리버/디인터리버는 입력 수단(21)과, 주소 생성 수단(22), 정적 램(23), 출력 수단(24) 및, 제어수단(25)으로 구성된 구조이며, 상기 주소 생성 수단(22)에 적용되는 주소 생성 방법은 B개의 데이터를 주기로 하여 입력되는 데이터 순서에 따라 정확한 지연 후에 출력되도록, 상기 정적 램을 지연시간에 해당하는 블럭으로 구분하여 쓰기 주소(WA)와 읽기 주소(RA)를 클럭의 반 주기동안 각각 발생하도록 하였으며, 상기 정적 램의 전체 메모리 크기(MEM_SIZE)로 모듈러 연산하여 순환 번지 지정 방식으로 주소를 할당하므로써, 종전과 동일한 인터리빙/디인터리빙을 하게 된다.
따라서, 본 발명의 효과는 최소한의 메모리+1(즉, B×M×(B-1)/2 + 1)(Bytes)만을 사용하고, 또한, 각종 제어 신호들이 클럭신호와 반전된 클럭신호이기 때문에 제어 수단을 간단한 하드웨어로 쉽게 구현할 수 있는 효과가 있다.

Description

정적 램을 이용한 길쌈 인터리버/디인터리버 및 정적 램의 주소 생성 방법(Cnvolutional Interleaver and Deinterleaver using SRAM and a method for generating address of SRAM)
본 발명은 디지탈 채널부호기의 길쌈 인터리버 및 채널복호기의 길쌈 디인터리버에 관한 것으로, 특히 정적 램(SRAM)을 사용하여 하드웨어양을 감소시키고, 정적 램의 액세스를 효율적으로 제어한 정적 램을 이용한 길쌈 인터리버/디인터리버 및 정적 램의 주소 생성 방법에 관한 것이다.
일반적으로, 디지탈 전송 시스템은 채널상에서 발생하는 에러를 수신측에서 처리할 수 있도록 에러 정정 기술을 사용한다. 이러한 에러 정정 기술은 크게 에러 정정 부호화(ECC:error correcting coding) 기술과, 부호화된 데이터를 인터리빙하는 기술로 나누어 진다.
에러 정정 부호화(ECC)는 에러를 검출하거나 정정하는 데 사용되는 검사 데이터를 부가하는 것으로서, 몇개의 정보 데이터를 블럭으로 분리한 다음 블럭 단위로 부호화를 수행하는 블럭 코드(block code)와, 정보 데이터열의 입력 시퀀스에 따라 부호화를 수행하는 난블록 코드(nonblock code)가 있다.
그리고, 인터리빙은 부호화된 데이터열을 정해진 방식으로 데이터열의 순서를 재배열하는 것으로, 그 방식에 따라 블럭 인터리버(block interleaver)와 길쌈 인터리버(convolutional interleaver)가 있다.
여기서, 인터리버의 개념과 기능을 좀더 상세히 살펴보면 다음과 같다.
통상의 통신 시스템에 있어서 전송중에 발생하는 에러에는 군데 군데 랜덤한 형태로 발생하는 랜덤 에러(random error)와, 한 곳에 집중적으로 몰려서 발생하는 군집 에러(burst error)가 있다.
에러 정정 부호화(ECC)로 인해 각 부호어 내에서 제한된 수의 비트 에러(즉, 랜덤 에러)를 정정하게 되므로써 평균 비트 에러율이 작아지긴 하지만, 에러가 군집해서 발생하는 경우에는 에러 정정 부호가 비효율적일 수 있다.
예를 들어, 한 라인(에러 정정 부호화된 부호어)이 180바이트인 경우, 180바이트를 60개의 라인에 각각 3바이트씩 분산시켜 전송했을 때, 전송중에 라인 전체에 군집 에러가 발생하더라도, 군집 에러가 발생된 라인을 원래의 라인으로 복원시키면 군집 에러가 랜덤 에러로 변형되므로써 에러 정정 복호화를 통해 평균 에러율을 낮출 수 있다.
따라서, 대부분의 송신 시스템에서는 원래 데이터 스트림을 재배열하는 인터리버를 구비하고, 수신 시스템에서는 재배열된 데이터를 원래 데이터 스트림으로 복원하는 디인터리버를 하나 이상 구비하여 군집 에러에 대비하고 있다.
이어서, 길쌈 인터리빙 방식을 도 1 을 참조하여 설명하고자 한다.
도 1 은 길쌈 인터리버와 디인터리버를 설명하기 위한 개념도로서, 길쌈인터리버(10)는 입력 스위치(11)와, 복수개의 시프트레지스터(I-0∼I-(B-1)) 및, 출력스위치(12)로 구성되어 있다.
그리고, 길쌈 디인터리버(15)는 입력 스위치(16)와, 복수개의 시프트레지스터(D-(B-1)∼D-0) 및, 출력 스위치(17)로 구성되어 있다.
그리고, 상기 길쌈 인터리버의 시프트레지스터 구조는, 맨 윗단(I-0)은 시프트레지스터가 없이 곧바로 입력과 출력이 연결되지만, 레지스터가 있는 것으로 간주하여 시프트레지스터 길이는 0 이고, 그 다음단(I-1∼I-(B-1))부터는 계속해서 M, 2M, 3M, …, (B-1)M 만큼의 길이를 가지고 있는 것으로, 각 시프트레지스터간의 길이 차이가 M 바이트가 된다.
그리고, 상기 길쌈 디인터리버의 시프트레지스터 구조는, 상기 길쌈 인터리버의 시프트레지스터 구조와 정반대의 구조를 갖는다.
즉, 상기 길쌈 디인터리버의 시프트레지스터 구조는, 맨 윗단(D-(B-1))은 시프트레지스터가 (B-1)M이고, 그 다음단(D-(B-2)∼D-0)부터는 계속해서 (B-2)M, …, 2M, M, 0 만큼의 길이를 가지고 있다.
일반적으로 길쌈 인터리버의 사양을 (B, M)단위로 나타내는데, 여기서 B는 시프트레지스터의 수직 단 갯수를 나타내며, 이를 인터리빙 간격이라 하고, M은 각 단의 레지스터의 차로서 단위 길이를 나타낸다.
상기 길쌈 인터리버의 입력스위치(11)와, 출력스위치(12), 디인터리버의 입력스위치 (16) 및, 출력스위치(17)는 모두 서로 동기되어 동작하도록 되어 있으며, 시프트레지스터 0번 단부터 B-1번 단까지 순서대로 스위칭한 후 다시 0번 단부터 반복한다.
이러한 스위칭 동작을 통해서 길쌈 인터리버의 I-0번 단으로 입력되는 B주기의 첫번째 데이터는 지연 없이 출력되고, I-1번 단으로 입력되는 B주기의 두번째 데이터는 BM 지연 후, I-2번 단으로 입력되는 세번째 데이터는 2BM 지연 후, …, I-(B-1)번 단으로 입력되는 B주기의 마지막 데이터는 (B-1)BM 지연 후 출력된다.
결국, 송신측에서는 입력 데이터열중 이웃한 두 데이터사이에 BM개의 임의의 데이터가 삽입되는 인터리빙이 수행된다.
그리고, 길쌈 디인터리버의 D-(B-1)번 단으로 입력되는 B주기의 첫번째 데이터는 (B-1)BM 지연 후 출력되고, D-(B-2)번 단으로 입력되는 B주기의 두번째 데이터는 (B-2)BM 지연 후, …, D-1번 단으로 입력되는 B주기의 마지막 두번째 데이터는 M지연 후 출력되고, D-0번 단으로 입력되는 B주기의 마지막 데이터는 지연 없이 출력된다.
결국, 시스템이 동작한 후, (B-1)BM 지연 후에 원래 데이터 스트림을 얻게되는 디인터리빙이 수행된다.
이러한 길쌈 인터리버를 사용하는 스펙으로는 우리나라의 무궁화 위성과 유럽 디지탈 위성 통신 방송 DVB(digital video broadcasting)규격에 적용된 (12, 17) 인터리버, 미국 Grnad-Alliance사의 ATV 에 적용된 (52, 4) 인터리버 등이 있다.
여기서 요구된 최소한의 메모리양은 하기 수학식 1과 같이 주어진다.
예를 들어, DVB규격에서 사용하는 (12, 17)길쌈 인터리버에서 필요한 최소 메모리양은 17(=M)바이트로 구성된 단위군이 66(=(B-1)*B/2)개 필요하므로, 1122 바이트(bytes) 즉, 8976비트(bits)의 시프트레지스터가 필요하게 된다. 가장 기본적으로 간단히 구현되어다 하더라고, 레지스터당 6개의 게이트(gate)가 사용되고, 1 게이트는 4 개의 트랜지스터로 구현되므로써, 결국에는 1 개의 레지스터를 설계하는 데에 24개의 트랜지스터가 필요하게 된다.
이것을 일반적인 로직(LOGIC)으로 구현한다면, 상당히 큰 양이 되고, 또한, 주문형 반도체(ASIC)로 구현한다하더라도 그 양은 무시할 수 없을 정도여서 상당한 하드웨어의 부피나 비용 부담에 대한 문제점이 있었다.
이에 대한 해결 방안으로 정적 램을 이용한다면, 정적 램의 경우는 하나의 정적 램 셀(cell)당 대략 1.5 게이트, 즉 6개의 트랜지스터만으로 구현할 수 있으므로, 길쌈 인터리버가 요구하는 메모리양이 상당히 클 경우에는 시프트레지스터를 사용하는 것보다 정적 램(SRAM)을 사용하여 구현하는 것이 하드웨어가 차지하는 부피나 비용면에서 경제적일 것이다.
그러나, 정적 램을 이용한 길쌈 인터리버/디인터리버에 있어서, 완전한 인터리빙/디인터리빙 동작을 수행하기 위한 하드웨어 구조 및 정적 램의 액세스를 담당하는 제어 및 주소 생성 방법에 대해서 제시되지 않은 문제점이 있었다.
이에, 본 발명은 상기와 같은 종래의 제 문제점을 해결하기 위해서 안출된 것으로, 본 발명의 목적은 정적 램(SRAM)을 이용하여 메모리 부담을 줄이면서도 간단한 하드웨어 구조를 갖는 길쌈 인터리버/디인터리버를 제공하는 데 그 목적이 있다.
본 발명의 다른 목적은 순환 번지 지정 방식(circular addressing)을 이용하여 상기 장치에 있어서 인터리빙/디인터리빙을 수행하도록 하는 주소 생성 방법을 제공하는 데 그 목적이 있다.
상기 목적을 달성하기 위한 정적 램을 이용한 (B, M)길쌈 인터리버/디인터리버는, 입력 데이터를 바이트 단위로 래치하여 데이터버스로 출력하는 입력 수단; 클럭의 앞 반주기동안에는 쓰기 주소(WA)를 발생하고, 뒤 반주기동안에는 읽기 주소(RA)를 발생하는 주소 생성 수단; 클럭의 앞 반주기동안에는 상기 쓰기 주소(WA)에 따라 상기 데이터 버스의 데이터를 저장함과 동시에, 클럭의 뒤 반주기동안에는 상기 읽기 주소(RA)에 따라 저장된 데이터를 상기 데이터버스로 출력하는 정적 램; 상기 정적 램으로부터 출력된 데이터를 바이트 단위로 래치하여 출력하는 출력 수단; 패킷 동기 신호(packet_syn)와 바이트 클럭 신호(byte_clock)에 따라 입력수단 인에이블 신호(IN_ENA)와, 정적 램 읽기신호(read), 정적 램 쓰기신호(write) 및, 출력수단 인에이블 신호(OUT_ENA) 등의 제어신호를 발생하는 제어수단을 포함하여 구성되는 것을 특징으로 한다.
상기 다른 목적을 달성하기 위하여 바이트단위로 입력되는 데이터 스트림을 인터리빙 간격 B 주기 (= D(k,1), D(k,2),…,D(k,B))로 인터리빙하는 상기 장치를 위한 정적 램의 주소를 생성하는 방법은, 데이터 D(k,B)의 지연을 위한 메모리 블럭 (B-1)M바이트, 데이터 D(k,B-1)의 지연을 위한 메모리 블럭 (B-2)M바이트, …, 데이터 D(k,2)의 지연을 위한 메모리 블럭M바이트, 입력 데이터 D(k,1)의 지연을 위한 메모리 블럭 1바이트로 구분하여 메모리를 순환 번지 지정 방식으로 매핑하기 위해서, 기본 주소(BASE_ADDR)를 초기화하는 제 1 과정과; B주기의 첫번째 데이터 D(k,1)의 지연을 위해서, 상기 기본 주소(BASE_ADDR)를 클럭의 앞 반주기동안 쓰기 주소(WA)로 발생하고, 상기 기본 주소(BASE_ADDR)를 클럭의 뒤 반주기동안 읽기 주소(RA)를 상기 시작 주소(BASE_ADDR)로 발생하는 제 2 과정; B주기의 첫번째 데이터를 제외한 나머지(D(k,i), 2≤i≤B)의 지연을 위해서, 이전 데이터 D(k,i-1)의 지연 메모리 블럭의 최하위 주소(=현재 데이터의 지연 블럭의 최상위 주소+1)를 클럭의 앞 반주기 동안 쓰기 주소(WA)로 발생하고, 현재 입력 데이터 D(k,i)의 지연 메모리 블럭에 해당하는 최하위 주소를 클럭의 뒤 반주기 동안 읽기 주소(RA)로 발생하는 제 3 과정; 다음 B 주기의 지연을 위해서, B주기 마다 상기 기본 주소(BASE_ADDR)를 1씩 증가하는 제 4 과정을 포함하여 구성되는 것을 특징으로 한다.
상기 다른 목적을 달성하기 위하여 B주기로 인터리빙된 데이터열(=S(k,1), S(k,2),…,S(k,B))을 바이트 단위로 입력받아 디인터리빙하는 상기 장치를 위한 정적 램의 주소를 생성하는 방법은, 데이터 S(k,B-1)의 지연을 위한 메모리 블럭 M바이트, 데이터 S(k,B-2)의 지연을 위한 메모리 블럭 2M바이트, …, 데이터 S(k,1)의 지연을 위한 메모리 블럭 (B-1)M 바이트, 데이터 S(k,B)의 지연을 위한 메모리 블럭 1바이트로 구성된 메모리를 순환 번지 지정 방식으로 매핑하기 위해서, 기본 주소(BASE_ADDR)를 초기화하는 제 1 과정; B주기의 마지막 데이터를 제외한 나머지 데이터 (S(k,i), 1≤i≤B-1)의 지연을 위해서, 상기 기본 주소(BASE_ADDR)를 클럭의 앞 반주기동안 쓰기 주소(WA)로 발생하고, 클럭의 뒤 반주기동안 현재 입력 데이터 S(k,i)의 지연 메모리 블럭에 해당하는 최하위 주소를 읽기 주소(RA)로 발생하는 제 2 과정; B주기의 마지막 데이터 S(k,B)의 지연을 위해서, 이전 입력 데이터 S(k,B-1)의 지연 메모리 블럭에 해당하는 최하위 주소를 클럭의 앞 반주기동안 쓰기 주소(WA)로 발생하고, 클럭의 뒤 반주기동안에도 이전 입력 데이터 S(k,B-1)의 지연 메모리 블럭의 최하위 주소를 읽기 주소로 발생하는 제 3 과정; 및 다음 B 주기의 지연을 위해서 B주기마다 상기 기본 주소(BASE_ADDR)를 1씩 증가하는 제 4 과정을 포함하여 구성되는 것을 특징으로 한다.
상기와 같은 본 발명의 주소 발생 방법을 적용한 길쌈 인터리버는 종전과 동일한 재배열 순서에 따라 인터리빙을 수행하고, 디인터리버도 역시 원래 순서대로 복원 하게 된다.
따라서, 본 발명에의한 정적 램의 주소 생성 방법을 적용한 길쌈 인터리버/디인터리버에서는 최소한의 메모리+1(즉, B×M×(B-1)/2 + 1)(Bytes)만을 사용하면 되고, 각종 제어 신호들이 클럭신호와 반전된 클럭신호이기 때문에 제어 수단을 간단한 하드웨어로 쉽게 구현할 수 있다.
도 1 은 길쌈 인터리버와 디인터리버를 설명하기 위한 개념도,
도 2 는 본 발명에 따른 정적 램을 이용한 길쌈 인터리버에 대한 블럭도,
도 3 은 본 발명에 따른 주소 할당 방법을 설명하기 위한 정적 램의 주소 매핑도,
도 4 는 본 발명에 따른 길쌈 인터리버의 주소 생성 알고리즘을 보인 1실시 흐름도,
도 5 는 본 발명에 따른 길쌈 디인터리버의 주소 생성 알고리즘을 보인 1실시 흐름도,
도 6 은 본 발명에 따른 길쌈 인터리버/디인터리버의 동작을 설명하기 위한 여러 제어신호에 대한 타이밍도이다.
* 도면의 주요 부분에 대한 부호의 설명 *
21 : 입력 버퍼 22 : 주소 생성부
23 : 정적 램 24 : 출력 래치
25 : 제어부
이하, 첨부된 도면을 참조하여 본 발명을 자세히 설명하기로 한다.
도 2 는 본 발명에 따른 정적 램을 이용한 길쌈 인터리버에 대한 블럭도로서, 본 발명의 길쌈 인터리버는 입력 버퍼(21)와, 주소 생성부(22), 정적 램(23), 출력 버퍼(24) 및, 제어부(25)로 구성되어 있다.
상기 입력 버퍼(21)는 입력 데이터(D(k,i))를 바이트 단위로 래치하여 데이터버스로 출력한다.
상기 주소 생성부(22)는 클럭의 앞 반주기동안에 쓰기 주소(WA)를 생성하고, 클럭의 뒤 반주기동안에 읽기 주소(RA)를 생성하여 출력한다.
상기 정적 램(23)은 클럭의 앞 반주기동안 발생된 상기 쓰기 주소(WA)에 따라 상기 입력 데이터(D(k,i))를 저장함과 동시에, 클럭의 뒤 반주기동안 발생된 상기 읽기 주소(RA)에 따라 저장된 데이터(S(k,i))를 상기 데이터버스로 출력한다.
상기 출력 버퍼(24)는 상기 정적 램(23)으로부터 출력된 데이터(S(k,i))를 래치하여 인터리빙된 데이터를 최종 출력한다.
상기 제어부(25)는 패킷 동기 신호(packet_sync)와, 바이트 클럭(byte_clock)에 따라 입력버퍼 인에이블 신호(IN_ENA)와, 정적 램 읽기신호(read), 정적 램 쓰기신호(write) 및, 출력버퍼 인에이블 신호(OUT_ENA)등의 제어신호를 발생하여 상기 입력 버퍼와(21), 정적 램(23) 및, 출력 버퍼(24)를 제어한다.
도 3은 본 발명에 따른 주소 할당 방법을 설명하기위한 정적 램의 주소 매핑도로서, 도 3의 3a는 인터리빙을 수행하기 위한 주소 매핑도이고, 도 3의 3b는 디인터리빙을 수행하기 위한 주소 매핑도이다.
도 3의 3a에서 보는 바와 같이, 전체 메모리 크기는 {B(B-1)M/2 + 1}이며, 기본 주소(BASE_ADDR)가 가르키는 1바이트는 도 1에서 시프트레지스터 첫번째 단(I-0)의 기능을 구현하기 위한 지연 메모리 블럭이다.
B주기의 첫번째 데이터(D(k,1))가 입력될 때 : 클럭의 앞 반주기동안 1바이트 메모리 블럭이 쓰기 주소(WA)로 발생되고, 뒤 반주기동안 상기 1바이트 메모리 블럭이 읽기 주소(RA)로 발생된다.
도 3의 3a의 M바이트의 메모리 블럭은 도 1에서 시프트레지스터 두번째 단(I-1)의 기능을 구현하기 위한 메모리 블럭이다.
B주기의 두번째 데이터(D(k,2))가 입력될 때 : 클럭의 앞 반주기 동안 M바이트 메모리 블럭에서 1증가된 주소(=최상위 번지+1)가 쓰기 주소(WA)로 발생되고, 뒤 반주기 동안 M바이트 메모리 블럭의 최하위 번지가 읽기 주소(RA)로 발생된다.
도 3의 3a의 2M바이트의 메모리 블럭은 도 1에서 시프트레지스터 세번째 단(I-2)의 기능을 구현하기 위한 메모리 블럭이다.
B주기의 세번째 데이터(D(k,3))가 입력될 때 : 클럭의 앞 반주기 동안 2M바이트 메모리 블럭에서 1증가된 주소(=최상위 번지+1)가 쓰기 주소(WA)로 발생되고, 뒤 반주기 동안 M바이트 메모리 블럭의 최하위 번지가 읽기 주소(RA)로 발생된다.
계속해서, B주기의 마지막 데이터가 입력될 때에도 상기 두번째, 세번째 데이터에서와 같이 쓰기 주소(WA)와 읽기 주소(RA)가 발생된다.
즉, B주기의 첫번째 데이터를 제외한 나머지 데이터의(D(k,i), 2≤i≤B) 쓰기 주소(WA)는 이전 데이터(D(k,i-1))의 지연 메모리 영역의 최하위 주소이고, 읽기 주소(RA)는 현재 데이터(D(k,i))의 지연 메모리 영역의 최하위 주소이다.
이와 같이, B주기동안 B개의 데이터가 처리된 후, 다음 주기의 B개의 데이터를 처리하기 위해 상기 기본 주소(BASE_ADDR)를 1증가시켜 반복 수행한다.
여기서, 쓰기 주소(WA)를 현재 데이터의 지연을 위한 메모리 영역보다 1증가한 이유는, 그 메모리 주소는 바로 이전 클럭에서 읽기 주소(RA)에 해당하였기 때문에 오버라이트가 가능하며, 또한, B주기 마다 기본 주소(BASE_ADDR)가 1증가하면서 각 단에 해당하는 메모리 영역은 결국 하나씩 시프트하기 때문이다.
그리고, 미리 지정된 범위내의 최상위 번지나 최하위 번지에 도달하게 되면 다시 처음의 번지값으로 돌아가서 일정한 범위안에서 번지가 순환하는 순환 번지 지정(circular addressing)방식에 따라 주소가 매핑된다.
따라서, B주기의 첫번째 데이터는 지연없이 출력되고, B주기의 두번째 데이터는 BM바이트클럭 지연 후, B주기의 세번째 데이터는 2BM바이트클럭 지연 후, …, B주기의 마지막 데이터는 (B-1)BM바이트클럭 지연 후에 출력되므로써, 종전과 같은 지연을 갖으며, 이웃한 두 데이터 사이에 BM개의 데이터가 삽입되어 인터리빙되는 것이다.
도 3의 3b에서 보는 바와 같이, 전체 메모리 크기는 {B(B-1)M/2 + 1}이며, 기본 주소(BASE_ADDR)가 가르키는 1바이트는 도 1에서 시프트레지스터 마지막 단(D-0)의 기능을 구현하기 위한 메모리 블럭이다.
도 3의 3b의 (B-1)M바이트의 메모리 블럭은 도 1에서 시프트레지스터 첫번째 단(D-(B-1))의 기능을 구현하기 위한 메모리 블럭이다.
B주기의 첫번째 데이터가(S(k,1)) 입력될 때 : 클럭의 앞 반주기동안 현재 입력(B-1)M바이트의 메모리 블럭에서 1증가된 주소(=최상위 번지 + 1)가 쓰기 주소(WA)로 발생되고, 뒤 반주기동안 (B-1)M바이트의 메모리 영역의 최하위 번지가 읽기 주소(RA)로 발생된다.
도 3의 3b의 (B-2)M바이트의 메모리 블럭은 도 1에서 시프트레지스터 두번째 단(D-(B-2))의 기능을 구현하기 위한 메모리 블럭이다.
B주기의 두번째 데이터가(S(k,2)) 입력될 때 : 클럭의 앞 반주기동안 (B-2)M바이트의 메모리 블럭에서 1증가된 주소(=최상위 번지 + 1)가 쓰기 주소(WA)로 발생되고, 뒤 반주기동안 (B-3)M바이트 메모리 영역의 최하위 번지가 읽기 주소(RA)로 발생된다.
상기와 같은 쓰기 주소와 읽기 주소의 발생은 M 바이트 영역까지 동일하게 적용된다.
즉, B주기의 마지막 데이터를 제외한 나머지 데이터의 (S(k,i), 1≤i≤B-1) 쓰기 주소(WA)는 다음 데이터(S(k,i+1))의 지연 메모리 영역의 최하위 주소이고, 읽기 주소(RA)는 현재 데이터(S(k,i))의 지연 메모리 영역의 최하위 주소이다.
B주기의 마지막 데이터(S(k,B))가 입력될 때 : 클럭의 앞 반주기동안 이전 데이터(S(k,i-1))의 지연 메모리 블럭에 해당하는 최하위 번지가 쓰기 주소(WA)로 발생되고, 클럭의 뒤 반주기동안에도 이전 데이터(S(k,i-1))의 지연 메모리 블럭에 해당하는 최하위 번지가 읽기 주소(RA)로 발생된다.
B주기동안 B개의 데이터가 처리된 후, 다음 주기의 B개의 데이터를 처리하기 위해 상기 기본 주소(BASE_ADDR)를 1증가시키고, 주소 발생은 순환 번지 지정 방식이다.
즉, 디인터리빙 주소 생성은 인터리빙 주소 생성 방식과 정반대로 발생되는 것이다. 따라서, 인터리빙 간격 B, 단위 길이 M바이트로 인터리빙된 데이터 스트림은 BM(B-1)바이트클럭 지연 후에 원래 데이터 스트림 순서대로 디인터리빙된다.
이어서, 상기와 같은 주소 매핑 방법을 적용한 본 발명의 실시예를 참조하여 작용 및 효과를 자세히 설명하고자 한다.
도 4 는 본 발명에 따른 길쌈 인터리버의 주소 생성 알고리즘을 보인 실시 흐름도이다.
시스템이 온 상태인가를 판단한다.(41)
시스템이 온 상태이면, 패킷 시작인지를 판단한다.(42)
패킷 시작이면, 정적 램의 시작 주소를 가르키는 기본 주소(BASE_ADDR)를 메모리 크기(MEM_SIZE)로 지정하고, 주기의 몇번째 데이터인가를 알리는 포인터 변수(VP)를 0으로 초기화 시킨다.(43)
패킷 시작이 아니면, 상기 포인터 변수(VP)가 0인지를 판단한다.(44)
포인터 변수(VP)가 0이면, 쓰기 주소(wtad)는 상기 기본 주소(BASE_ADDR)로 지정한다.(45)
포인터 변수(VP)가 0이 아니면, 쓰기 주소(wtad)는 이전 클럭의 쓰기 주소에서 포인터 변수 -1 값의 M배를 뺀 후, 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정한다.(46)
읽기 주소(rdad)는 상기 쓰기 주소(46 또는 47단계)에서 상기 포인터 변수(VP)의 M배를 뺀 후, 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정함과 동시에, 상기 포인터 변수(VP)는 1 증가시켜 B로 모듈러 연산한 값으로 지정한다.(47)
포인터 변수(VP)가 0인지를 판단한다.(48)
상기 포인터 변수(VP)가 0이면, 기본 주소(BASE_ADDR)는 1 증가시켜 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 한다.(49)
상기 43단계와, 49단계의 이후, 및 48단계에서 포인터 변수가 0이 아니면, 1클럭 지연 후, 상기 41단계부터 반복 실행한다.
상기와 같이 진행되는 도 4 의 주소 생성 알고리즘을 인터리빙 간격이 3이고, 단위 길이가 2바이트인 (3, 2)길쌈 인터리버에 적용한 결과를 하기 표 1에 나타내었다.
주기 변수 k에 따른 (3, 2)길쌈 인터리버의 정적 램 주소 및 출력 데이터
입력 데이터 D(k,i) 기본 주소(BASE_ADDR) 포인트 변수(VP) 쓰기 주소 (wtad) (WA) 읽기 주소(rdad) (RA) 출력 데이터 S(k,i)
D(1,1) 7 0 7 7 0 7 D(1,1)
D(1,2) 1 0 7 -2 5 X
D(1,3) 2 -2 5 -6 1 X
D(2,1) 1 0 1 1 1 1 D(2,1)
D(2,2) 1 1 1 -1 6 X
D(2,3) 2 -1 6 -5 2 X
D(3,1) 2 0 2 2 2 2 D(3,1)
D(3,2) 1 2 2 0 7 D(1,2)
D(3,3) 2 0 7 -4 3 X
D(4,1) 3 0 3 3 3 3 D(4,1)
D(4,2) 1 3 3 1 3 D(2,1)
D(4,3) 2 1 1 -3 4 X
D(5,1) 4 0 4 4 4 4 D(5,1)
D(5,2) 1 4 4 2 2 D(3,2)
D(5,3) 2 2 2 -2 5 D(1,3)
상기 (3, 2)길쌈 인터리버의 정적 램 크기(=BM(B-1)/2+1)는 7바이트이고, 최상위번지를 '7'로, 최하위 번지를 '1'로 가정하였을 경우에 대한 것이다.
주기 변수 k=1일 때 ; 첫번째 데이터 지연을 위한 영역의 메모리 번지는 (7)이고, 두번째 데이터 지연을 위한 영역의 메모리 번지는 (5, 6) 이며, 세 번째 데이터 지연을 위한 영역의 메모리 번지는 (1,2,3,4) 이다.
k=2일 때 ; 첫번째 데이터 지연을 위한 영역의 메모리 번지는 (1)이고, 두번째 데이터 지연을 위한 영역의 메모리 번지는 (6, 7) 이며, 세 번째 데이터 지연을 위한 영역의 메모리 번지는 (2,3,4,5) 이다.
k=3 일 때 ; 첫번째 데이터 지연을 위한 영역의 메모리 번지는 (2)이고, 두번째 데이터 지연을 위한 영역의 메모리 번지는 (7, 1) 이며, 세 번째 데이터 지연을 위한 영역의 메모리 번지는 (3,4,5,6) 이다.
이와 같이 순환 번지 지정 방식에 따라 지연 메모리 블럭이 1씩 시프트 이동된다.
상기 표 1에서 쓰기 주소(WA) 및 읽기 주소(RA)는 도 4의 흐름도에서 보여준 모듈러 연산을 통한 나머지를 순환 지정방식에 따라 부혀하였으며, 그 주소 전환표는 하기 표 2에 나타내었다.
주소 전환표
계산상의 주소 (wtad,rdad) 실제 주소 (WT,RD)
0 7
-1 6
-2 5
-3 4
-4 3
-5 2
-6 1
상기 표 2를 적용한 표 1에서 보는 바와 같이, 3주기 마다 기본 주소가 1씩증가 되면서, 쓰기 주소(WA)와 읽기 주소(RA)가 변경되므로써, 주기의 첫번째 데이터는 지연없이 출력되고, 두번째 데이터는 6(=BM)클럭 지연 후에 출력되고, 세번째 데이터는 12(=2BM)클럭 지연 후에 출력된다.
이어서, 도 5는 본 발명에 따른 길쌈 디인터리버의 주소 생성 알고리즘을 보인 실시 흐름도이다.
시스템이 온 상태인가를 판단한다.(51)
시스템이 온 상태이면, 패킷 시작인가를 판단한다.(52)
패킷 시작이면, 정적 램의 시작 주소를 가르키는 기본 주소(BASE_ADDR)를 메모리 크기(MEM_SIZE)로 지정하고, 주기의 몇번째 데이터인가를 알리는 포인터 변수(VP)를 B-1로 초기화 시킨다.(53)
패킷 시작이 아니면, 상기 포인터 변수(VP)가 B-1인지를 판단한다.(54)
포인터 변수(VP)가 B-1이면, 쓰기 주소(wtad)는 상기 기본 주소(BASE_ADDR)로 지정한다.(55)
포인터 변수(VP)가 B-1이 아니면, 쓰기 주소(wtad)를 이전 클럭의 쓰기 주소에서 상기 포인터 변수 +1값의 M배를 뺀 후, 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정한다.(56)
읽기 주소(rdad)는 상기 쓰기 주소(55 또는 56단계)에서 상기 포인터 변수(VP)의 M배를 뺀 후, 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정함과 동시에, 포인터 변수(VP)는 1 감소시켜 B로 모듈러 연산한 값으로 한다.(57)
포인터 변수(VP)가 B-1인지를 판단한다.(58)
상기 포인터 변수()가 B-1이면, 기본 주소(BASE_ADDR)는 1 증가시켜 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 한다.(59)
상기 53단계와, 59단계의 이후, 및 58단계에서 포인터 변수가 B-1이 아니면, 1클럭 지연 후, 상기 51단계부터 반복 실행한다.(60)
상기와 같이 진행되는 도 5 의 주소 생성 알고리즘을 인터리빙 간격이 3(=B)이고, 단위 길이가 2(=M)바이트인 (3, 2)길쌈 디인터리버에 적용한 결과를 하기 표 2에 나타내었다.
주기 변수 k에 따른 (3, 2)길쌈 디인터리버의 정적 램 주소
입력 데이터 S(k,i) 기본 주소(BASE_ADDR) 포인트 변수 (VP) 쓰기 주소 (wtad) (WA) 읽기 주소(rdad) (RA) 출력 데이터 D(k,i)
S(1,1) 7 2 7 7 3 3 X
S(1,2) 1 3 3 1 1 X
S(1,3) 0 1 1 1 1 S(1,3)
S(2,1) 1 2 1 1 -3 4 X
S(2,2) 1 -3 4 -5 2 X
S(2,3) 0 -5 2 -5 2 S(2,3)
S(3,1) 2 2 2 2 -2 5 X
S(3,2) 1 -2 5 -4 3 S(1,2)
S(3,3) 0 -4 3 -4 3 S(3,3)
S(4,1) 3 2 3 3 -1 6 X
S(4,2) 1 -1 6 -3 4 S(2,2)
S(4,3) 0 -3 4 -3 4 S(4,3)
S(5,1) 4 2 4 4 0 7 S(1,1)=D(1,1)
S(5,2) 1 0 7 -2 5 S(3,1)=D(1,2)
S(5,3) 0 -2 5 -2 5 S(5,1)=D(1,3)
상기 (3, 2)길쌈 디인터리버의 정적 램의 크기(=BM(B-1)/2+1)는 7바이트이고, 최상위번지를 '7'로, 최하위 번지를 '1'로 가정하였을 경우에 대한 것이다.
주기 변수 k=1일 때 ; 첫번째 데이터 지연을 위한 영역의 메모리 번지는 (3,4,5,6)이고, 두번째 데이터 지연을 위한 영역의 메모리 번지는 (1,2) 이며, 세 번째 데이터 지연을 위한 영역의 메모리 번지는 (7) 이다.
k=2일 때 ; 첫번째 데이터 지연을 위한 영역의 메모리 번지는 (4,5,6,7)이고, 두번째 데이터 지연을 위한 영역의 메모리 번지는 (2,3) 이며, 세 번째 데이터 지연을 위한 영역의 메모리 번지는 (1) 이다.
k=3일 때 ; 첫번째 데이터 지연을 위한 영역의 메모리 번지는 (5,6,7,1)이고, 두번째 데이터 지연을 위한 영역의 메모리 번지는 (3,4) 이며, 세 번째 데이터 지연을 위한 영역의 메모리 번지는 (2) 이다.
k=4일 때 ; 첫번째 데이터 지연을 위한 영역의 메모리 번지는 (6,7,1,2)이고, 두번째 데이터 지연을 위한 영역의 메모리 번지는 (4,5) 이며, 세 번째 데이터 지연을 위한 영역의 메모리 번지는 (3) 이다.
이와 같이 순환 번지 지정 방식에 따라 지연 메모리 영역이 1씩 시프트 이동된다.
상기 표 3에서도 표 2의 주소 전환표에 따라 모듈러 연산한 나머지를 실제 주소로 변환하였다.
상기 표 3에서 보는 바와 같이, 3주기 마다 기본 주소가 1씩 증가 되면서, 쓰기 주소(WA)와 읽기 주소(RA)가 변경되어서, 주기의 첫번째 데이터는 12(=(B-1)BM)클럭 지연 후에 출력되고, 두번째 데이터는 6(=BM)클럭 지연 후에 출력되고, 세번째 데이터는 지연 없이 출력된다. 즉, 길쌈 인터리버의 동작을 완전히 반대로 수행하게 된다.
따라서, 표 1의 출력 데이터 S(k,i)에서와 같이 인터리빙된 데이터는 12클럭이 지연된 후, k=5에서 부터 표 3의 출력 데이터 D(k,i)에서와 같이 원래의 순서대로 디인터리빙되는 것이다.
이어서, 도 6 은 도 2의 길쌈 인터리버 동작을 설명하기 위한 여러 제어신호에 대한 타이밍도이다.
도 6은 인터리빙되는 과정을 표 1의 (3,2)길쌈 인터리버의 실시예로 도시한 것이다.
6A는 바이트 클럭 신호(byte_clock)이고, 6B는 입력 데이터 스트림 (D(k,i))으로, 바이트 클럭(byte_clock)에 동기되어 상기 입력 버퍼(21)로 입력된다.
6C는 입력 버퍼의 인에이블 신호(IN_ENA)로서, 상기 제어부(25)에서 클럭을 반전시켜 발생하며, 액티브 로우 신호(avctive low)이다.
6D는 입력 버퍼 출력 데이터로서, 상기 입력 버퍼 인에이블 신호(IN_ENA)에 의해 한 클럭지연 된 후, 바이트 클럭의 앞 반주기동안 데이터버스에 실린다.
6E는 정적 램 쓰기 신호(write)로서, 상기 제어부(25)에서 클럭을 반전시켜 발생하며, 액티브 로우 신호이다.
6F는 정적 램 읽기 신호(read)로서, 상기 제어부(25)에서 클럭신호와 동일하게 발생하며, 액티브 로우 신호이다.
6G는 어드레스 버스에 실린 정적 램을 액세스 하기 위한 주소 데이터로서, 상기 주소 생성부에서 클럭의 앞 반주기동안에는 쓰기 주소(WA)가 발생되고, 클럭의 뒤 반주기 동안에는 읽기 주소(RA)가 발생된다.
6H는 데이터 버스에 실린 데이터로서, 클럭의 앞 반주기 동안에는 상기 입력 버퍼의 출력 데이터(D(k,i))가 실리고, 클럭의 뒤 반주기 동안에는 상기 읽기 주소(RA)에 따라 상기 정적 램의 출력 데이터(S(k,i))가 실린다.
6I는 출력 래치의 인에이블 신호(OUT_ENA)로서, 상기 제어부(25)에서 클럭 신호와 동일하게 발생하며, 액티브 로우 신호이다.
6J는 출력 래치의 출력 데이터(S(k,i))로서, 클럭의 뒤 반주기에 실리는 상기 정적 램의 출력 데이터가 래치된다.
6K는 상기 출력 래치의 출력 데이터와 동일한 데이터로, 입력 데이터와 비교하여 실제 인터리빙된 데이터를 보여주고 있다.
6K에서 보는 바와 같이, 이웃하는 두 입력 데이터 D(1,1)과 D(2,1)사이에 6개(=BM)의 데이터가 삽입되어 재배열되고 있음을 볼 수 있다.
또한, 상기 도 6의 제어신호(6C, 6E, 6F, 6I)는 디인터리버에도 동일하게 적용되므로서, 원래 데이터 순서로 디인터리빙이 수행된다.
이상에서 설명한 바와 같이, 본 발명에 의한 정적 램의 주소 생성 방법을 적용한 길쌈 인터리버/디인터리버에서는 최소한의 메모리+1(B×M×(B-1)/2 + 1)(Bytes)만을 사용하므로써, 이론상 최적의 메모리를 사용하는 효과가 있다.
또한, 각종 제어 신호들이 클럭신호와 반전된 클럭신호이기 때문에 제어 수단을 간단한 하드웨어로 쉽게 구현할 수 있는 효과가 있다.

Claims (17)

  1. 데이터 스트림을 인터리빙 간격 B로 재배열하여 전송하고, 이를 수신하여 원래 데이터 스트림의 순서대로 복원하는 (B, M)길쌈 인터리버/디인터리버에 있어서,
    입력 데이터를 바이트 단위로 래치하여 데이터버스로 출력하는 입력 수단(21);
    클럭의 앞 반주기동안에는 쓰기 주소(WA)를 발생하고, 뒤 반주기동안에는 읽기 주소(RA)를 발생하는 주소 생성 수단(22);
    클럭의 앞 반주기동안에는 상기 쓰기 주소(WA)에 따라 상기 데이터 버스의 데이터를 저장함과 동시에, 클럭의 뒤 반주기동안에는 상기 읽기 주소(RA)에 따라 저장된 데이터를 상기 데이터버스로 출력하는 정적 램(23);
    상기 정적 램(23)으로부터 출력된 데이터(S(k,i)) 를 바이트 단위로 래치하여 출력하는 출력 수단(24);
    패킷 동기 신호(packet_sync)와, 바이트 클럭 신호(byte_clock)에 따라 입력수단 인에이블 신호(IN_ENA)와, 정적 램 읽기신호(read), 정적 램 쓰기신호(write) 및, 출력수단 래치신호(OUT_ENA) 등의 제어 신호를 발생하는 제어수단(25)을 포함하여 구성되는 것을 특징으로 하는 정적 램을 이용한 길쌈 인터리버/디인터리버.
  2. 제 1 항에 있어서, 상기 제어수단(25)은 클럭 신호(byte_clock)를 반전시켜서 입력수단 인에이블 신호(IN_ENA)로 발생하여 상기 입력 수단(21)에 제공하는 것을 특징으로 하는 정적 램을 이용한 길쌈 인터리버/디인터리버.
  3. 제 1 항에 있어서, 상기 제어수단(25)은 클럭 신호(byte_clock)를 반전시켜서 입력수단 인에이블 신호(IN_ENA)를 발생하여 상기 입력 수단(21)에 제공하는 것을 특징으로 하는 정적 램을 이용한 길쌈 인터리버/디인터리버.
  4. 제 1 항에 있어서, 상기 제어부(29)는 클럭 신호(byte_clock)를 반전시켜서 정적 램 쓰기 신호(WT)를 발생하여 상기 정적 램(25)으로 제공하는 것을 특징으로 하는 정적 램을 이용한 길쌈인터리버/디인터리버.
  5. 제 1 항에 있어서, 상기 제어부(29)는 클럭 신호(byte_clock)를 정적 램의 읽기 신호(RD)로 발생하여 상기 정적 램(25)으로 제공하는 것을 특징으로 하는 정적 램을 이용한 길쌈인터리버/디인터리버.
  6. 제 1 항에 있어서, 상기 제어부(29)는 클럭 신호(byte_clock)를 출력수단 인에이블 신호(OUT_ENA)로 발생하여 상기 출력 수단(24)으로 제공하는 것을 특징으로 하는 정적 램을 이용한 길쌈인터리버/디인터리버.
  7. 바이트단위로 입력되는 데이터 스트림을 인터리빙 간격 B 주기 (= D(k,1), D(k,2),…,D(k,B))로 인터리빙하는 데 있어서,
    데이터 D(k,B)의 지연을 위한 메모리 블럭 (B-1)M바이트, 데이터 D(k,B-1)의 지연을 위한 메모리 블럭 (B-2)M바이트, …, 데이터 D(K,2)의 지연을 위한 메모리 블럭M바이트, 입력 데이터 D(k,1)의 지연을 위한 메모리 블럭 1바이트로 구분하여 메모리를 순환 번지 지정 방식으로 매핑하기 위해서, 기본 주소(BASE_ADDR)를 초기화하는 제 1 과정과;
    B주기의 첫번째 데이터 D(k,1)의 지연을 위해서, 상기 기본 주소(BASE_ADDR)를 클럭의 앞 반주기동안 쓰기 주소(WA)로 발생하고, 상기 기본 주소(BASE_ADDR)를 클럭의 뒤 반주기동안 읽기 주소(RA)를 상기 시작 주소(BASE_ADDR)로 발생하는 제 2 과정;
    B주기의 첫번째 데이터를 제외한 나머지(D(k,i), 2≤i≤B)의 지연을 위해서, 이전 데이터 D(k,i-1)의 지연 메모리 블럭의 최하위 주소(=현재 데이터의 지연 블럭의 최상위 주소+1)를 클럭의 앞 반주기 동안 쓰기 주소(WA)로 발생하고, 현재 입력 데이터 D(k,i)의 지연 메모리 블럭에 해당하는 최하위 주소를 클럭의 뒤 반주기 동안 읽기 주소(RA)로 발생하는 제 3 과정;
    다음 B 주기의 지연을 위해서, B주기 마다 상기 기본 주소(BASE_ADDR)를 1씩 증가하는 제 4 과정을 포함하여 구성되는 것을 특징으로 하는 정적 램의 주소를 생성하는 방법.
  8. B주기로 인터리빙된 데이터열(=S(k,1), S(k,2),…, S(k,B))을 바이트 단위로 입력받아 디인터리빙하는 데 있어서,
    데이터 S(k,B-1)의 지연을 위한 메모리 블럭 M바이트, 데이터 S(k,B-2)의 지연을 위한 메모리 블럭 2M바이트, …, 데이터 S(k,1)의 지연을 위한 메모리 블럭 (B-1)M 바이트, 데이터 S(k,B)의 지연을 위한 메모리 블럭 1바이트로 구성된 메모리를 순환 번지 지정 방식으로 매핑하기 위해서, 기본 주소(BASE_ADDR)를 초기화하는 제 1 과정;
    B주기의 마지막 데이터를 제외한 나머지 데이터 (S(k,i), 1≤i≤B-1)의 지연을 위해서, 상기 기본 주소(BASE_ADDR)를 클럭의 앞 반주기동안 쓰기 주소(WA)로 발생하고, 클럭의 뒤 반주기동안 현재 입력 데이터 S(k,i)의 지연 메모리 블럭에 해당하는 최하위 주소를 읽기 주소(RA)로 발생하는 제 2 과정;
    B주기의 마지막 데이터 S(k,B)의 지연을 위해서, 이전 입력 데이터 S(k,B-1)의 지연 메모리 블럭에 해당하는 최하위 주소를 클럭의 앞 반주기동안 쓰기 주소(WA)로 발생하고, 클럭의 뒤 반주기동안에도 이전 입력 데이터의 지연 메모리 블럭의 최하위 주소를 읽기 주소(RA)로 발생하는 제 3 과정; 및
    다음 B 주기의 지연을 위해서 B주기마다 상기 기본 주소(BASE_ADDR)를 1씩 증가하는 제 4 과정을 포함하여 구성되는 것을 특징으로 하는 정적 램의 주소를 생성하는 방법.
  9. 제 7 항 또는 제 8 항에 있어서, 상기 제 1 과정은 시스템이 온 상태인지를 판단하는 단계와;(41, 51)
    패킷의 시작임을 판단하는 단계(42, 52)가 추가되는 것을 특징으로 하는 정적 램의 주소 생성 방법.
  10. 제 7 항에 있어서, 상기 제 1 과정은,
    패킷 시작이면, 정적 램의 시작 주소를 가르키는 기본 주소(BASE_ADDR)를 메모리 크기(MEM_SIZE)로 지정하고, 주기의 몇번째 데이터인가를 알리는 포인터 변수(VP)를 0으로 초기화시키는 단계(43)와;
    패킷 시작이 아니면, 상기 포인터 변수(VP)가 0인지를 판단하는 단계(44)를 포함하는 것을 특징으로하는 정적 램의 주소 생성 방법.
  11. 제 7 항에 있어서, 상기 제 2 과정은,
    상기 포인터 변수(VP)가 0이면, 쓰기 주소(wtad)는 상기 기본 주소(BASE_ADDR)로 지정하는 단계(45)와;
    읽기 주소(rdad)는 상기 쓰기 주소(wtad)에서 상기 포인터 변수(VP)의 M배를 뺀 후, 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정함과 동시에, 포인터 변수(VP)는 1 증가시켜 B로 모듈러 연산한 값으로 지정하는 단계(47)를 포함하는 것을 특징으로하는 정적 램의 주소 생성 방법.
  12. 제 7 항에 있어서, 제 3 과정은,
    포인터 변수(VP)가 0이 아니면, 쓰기 주소(wtad)는 이전 클럭의 쓰기 주소에서 포인터 변수 -1 값의 M배를 뺀 후, 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정하는 단계(46)와;
    읽기 주소(rdad)는 상기 쓰기 주소(wtad)에서 상기 포인터 변수(44과정)의 M배를 뺀 후, 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정함과 동시에, 포인터 변수(VP)는 상기 포인터 변수(VP)는 1 증가시켜 B로 모듈러 연산한 값으로 하는 단계(47)를 포함하는 것을 특징으로하는 정적 램의 주소 생성 방법.
  13. 제 7 항에 있어서, 제 4 과정은,
    포인터 변수(VP)가 0인지를 판단하는 단계(48)와;
    상기 포인터 변수(VP)가 0이면, 기본 주소(BASE_ADDR)는 1 증가시켜 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 하는 단계(49); 및
    상기 43단계와, 49단계의 이후, 및 48단계에서 포인터 변수가 0이 아니면, 1클럭 지연 후, 상기 41단계부터 반복 실행하는 과정(50)을 포함하는 것을 특징으로 하는 정적 램 주소 생성 방법.
  14. 제 8 항에 있어서, 상기 제 1 과정은,
    패킷 시작이면, 정적 램의 시작 주소를 가르키는 기본 주소(BASE_ADDR)를 메모리 크기(MEM_SIZE)로 지정함과 동시에, 주기의 몇번째 데이터인가를 알리는 포인터 변수(VP)를 B-1로 초기화 시키는 단계(53)와;
    패킷 시작이 아니면, 상기 포인터 변수(VP)가 B-1인지를 판단하는 단계(54)를 포함하는 것을 특징으로하는 정적 램 주소 생성 방법.
  15. 제 9 항에 있어서, 상기 제 2 과정은,
    포인터 변수(VP)가 B-1이면, 쓰기 주소(wtad)는 상기 기본 주소(BASE_ADDR)로 지정하는 단계(55)와;
    읽기 주소(rdad)는 상기 쓰기 주소(wtad)에서 상기 포인터 변수(VP)의 M배를 뺀 후, 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정함과 동시에, 포인터 변수(VP)는 1 감소시켜 B로 모듈러 연산한 값으로 하는 단계(57)를 포함하는 것을 특징으로하는 정적 램 주소 생성 방법.
  16. 제 8 항에 있어서, 상기 제 3 과정은,
    포인터 변수(VP)가 B-1이 아니면, 쓰기 주소(wtad)를 이전 쓰기 주소에서 상기 포인터 변수 + 1값의 M배를 뺀 후, 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정하는 단계(56)와;
    읽기 주소(rdad)는 상기 쓰기 주소(wtad)에서 상기 포인터 변수(VP)의 M배를 뺀 후, 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정함과 동시에, 포인터 변수(VP)는 1 감소시켜 B로 모듈러 연산한 값으로 하는 단계(57)를 포함하는 것을 특징으로하는 정적 램 주소 생성 방법.
  17. 제 8 항에 있어서, 상기 제 4 과정은,
    상기 포인터 변수(VP)가 B-1인지를 판단하는 단계(58)와;
    상기 포인터 변수(VP)가 B-1이면, 기본 주소(BASE_ADDR)는 1 증가시켜 메모리 크기(MEM_SIZE)로 모듈러 연산한 값으로 지정하는 단계(59); 및
    상기 53단계와, 59단계의 이후, 및 58단계에서 포인터 변수가 B-1이 아니면, 1클럭 지연 후, 상기 51단계부터 반복 실행하는 과정(60)을 포함하는 것을 특징으로 하는 정적 램 주소 생성 방법.
KR1019960043229A 1996-09-30 1996-09-30 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법 KR100215565B1 (ko)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
KR19980023729A KR19980023729A (ko) 1998-07-06
KR100215565B1 true KR100215565B1 (ko) 1999-08-16

Family

ID=19475756

Family Applications (1)

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

Country Status (1)

Country Link
KR (1) KR100215565B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100782214B1 (ko) * 2001-05-15 2007-12-05 엘지전자 주식회사 멀티 캐리어 인터리빙 구현장치 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100782214B1 (ko) * 2001-05-15 2007-12-05 엘지전자 주식회사 멀티 캐리어 인터리빙 구현장치 및 방법

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100192797B1 (ko) 정적 램을 이용한 길쌈인터리버의 구조
CA2148199C (en) Convolutional interleaver with reduced memory requirements and address generator therefor
US6964005B2 (en) System and method for interleaving data in a communication device
KR100370239B1 (ko) 고속 블럭 파이프라인 구조의 리드-솔로몬 디코더에적용하기 위한 메모리 장치와 메모리 액세스 방법 및 그메모리 장치를 구비한 리드-솔로몬 디코더
JP4383672B2 (ja) 第3世代の符号分割多重アクセスのためのターボコード・インターリーバ
US6178530B1 (en) Addressing scheme for convolutional interleaver/de-interleaver
JP3361812B2 (ja) ブロック毎のインターリービング及びデインターリービング処理及び装置
US7770010B2 (en) Dynamically configurable interleaver scheme using at least one dynamically changeable interleaving parameter
KR100518295B1 (ko) 디지털 통신 시스템의 디인터리빙장치 및 그의디인터리빙방법
US7073012B2 (en) System and method for interleaving data in a communications device
WO1984003157A1 (en) Burst error correction using cyclic block codes
KR100215565B1 (ko) 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법
KR100499467B1 (ko) 블록 인터리빙 방법 및 그를 위한 장치
JP3549756B2 (ja) ブロックインターリーブ回路
KR100215566B1 (ko) 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법
KR100243468B1 (ko) 듀얼 포트 메모리를 이용한 길쌈 인터리버 /디인터리버
KR100230912B1 (ko) 고화질 텔레비젼(hdtv)의 복호지연에 의한 오류 데이타 제거장치 및 방법
JP2001332980A (ja) インタリーブ装置及びインタリーブ方法
KR20030047100A (ko) 터보 복호화 장치에서 인터리버와 디인터리버간 메모리공유 장치 및 방법
KR0183171B1 (ko) 인터리버 및 디인터리버와 그 방법
US5999566A (en) Method and apparatus for providing error-tolerant communication of information
JP2003133966A (ja) 高速インタリーバを用いたターボ復号装置及び方法
JP2004153349A (ja) データ送信装置およびデータ受信装置
JPH0478056B2 (ko)
JP2001196940A (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