KR19990003706A - 듀얼 포트 메모리를 이용한 길쌈 인터리버 / 디인터리버 - Google Patents

듀얼 포트 메모리를 이용한 길쌈 인터리버 / 디인터리버 Download PDF

Info

Publication number
KR19990003706A
KR19990003706A KR1019970027636A KR19970027636A KR19990003706A KR 19990003706 A KR19990003706 A KR 19990003706A KR 1019970027636 A KR1019970027636 A KR 1019970027636A KR 19970027636 A KR19970027636 A KR 19970027636A KR 19990003706 A KR19990003706 A KR 19990003706A
Authority
KR
South Korea
Prior art keywords
data
dual port
deinterleaver
packet
port memory
Prior art date
Application number
KR1019970027636A
Other languages
English (en)
Other versions
KR100243468B1 (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 KR1019970027636A priority Critical patent/KR100243468B1/ko
Publication of KR19990003706A publication Critical patent/KR19990003706A/ko
Application granted granted Critical
Publication of KR100243468B1 publication Critical patent/KR100243468B1/ko

Links

Abstract

본 발명은 디지탈 채널부호기의 길쌈 인터리버 및 채널복호기의 길쌈 디인터리버에 관한 것으로서, 인터리빙/디인터리빙을 처리하는 데 있어, 입력 데이터를 얼마간 지연시키기 위한 지연 메모리 수단으로 듀얼 포트 메모리를 이용하여 구현한다. 상기 듀얼 포트 메모리의 최소 용량은 패킷 길이(N)와 인터리빙 간격(B)에 따라 결정되며, 그 크기는 패킷길이×인터리빙 간격(N×B)(bytes)이다. 그리고, 상기 듀얼 포트 메모리를 액세스 하기 위한 쓰기 주소 및 읽기 주소는 간단한 카운터를 이용하여 발생시키며, 특히, 인터리버의 쓰기 주소는 클럭신호를 +1씩 카운팅하여 모듈러 (BN) 연산한 값이며, 읽기 주소는 반전된 클럭 신호를 +(BN-(N-1))씩 카운팅하여 모듈러 (BN)연산한 값이다. 디인터리버는 상기 인터리버와 정반대로 동작하도록 구현한다.
본 발명의 효과는 종래의 지연 수단으로 선입선출버퍼를 사용했을때보다 듀얼 포트 메모리(램)를 사용하여 게이트수를 줄여 면적 효율의 이득을 얻고, 또한, 상기 메모리의 주소를 클럭신호와 반전된 클럭신호를 카운팅하여 발생시키므로써 간단한 하드웨어로 쉽게 구현할 수 있는 효과가 있다.

Description

듀얼 포트 메모리를 이용한 길쌈 인터리버 / 디인터리버(Cnvolutional Interleaver / Deinterleaver using dual-port memory)
본 발명은 디지탈 채널 부호기의 길쌈 인터리버 및 채널복호기의 길쌈 디인터리버에 관한 것이다.
일반적으로, 디지탈 전송 시스템은 채널상에서 발생하는 에러를 수신측에서 처리할 수 있도록 에러 정정 기술을 사용한다. 이러한 에러 정정 기술은 크게 에러 정정 부호화(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)와, 복수개의 선입선출버퍼(First-In First-Out: FIFO's, I-0∼I-(B-1)) 및, 출력스위치(12)로 구성되어 있다. 그리고, 길쌈 디인터리버(15)는 입력 스위치(16)와, 복수개의 선입선출버퍼(D-(B-1)∼D-0) 및, 출력 스위치(17)로 구성되어 있다.
상기 길쌈 인터리버(10)의 선입선출버퍼구조는, 맨 윗단(I-0)은 선입선출버퍼가 없이 곧바로 입력과 출력이 연결되 선입선출버퍼길이는 0 이고, 다음단 선입선출버퍼(I-1∼I-(B-1))부터는 계속해서 M바이트, 2M바이트, 3M바이트, …, (B-1)M바이트 만큼의 길이를 가지고 있는 등, 인접한 수직단의 선입선출버퍼간에는 M 바이트 차이를 갖는다. 그리고, 상기 길쌈 디인터리버의 선입선출버퍼구조는, 상기 길쌈 인터리버의 선입선출버퍼구조와 정반대의 구조를 갖는다. 즉, 상기 길쌈 디인터리버(15)의 선입선출버퍼구조는, 맨 윗단(D-(B-1))은 선입선출버퍼길이가 (B-1)M바이트이고, 그 다음단(D-(B-2)∼D-0)부터는 계속해서 (B-2)M바이트, …, 2M바이트, M바이트, 0바이트 만큼의 길이를 가지고 있다.
일반적으로 길쌈 인터리버의 사양을 (B, M)단위로 나타내는데, 여기서 B는 선입선출버퍼의 수직 단 갯수를 나타내며, 이 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)로 구현한다면 그 양은 무시할 수 없을 정도로 상당한 하드웨어의 복잡도를 초래하는 문제점이 있었다.
이에, 본 발명은 상기와 같은 종래의 문제점을 해결하기 위해서 안출된 것으로, 본 발명의 목적은 선입선출버퍼 대신 듀얼 포트 램(dual-port RAM)을 이용하여 메모리 부담을 줄이고, 카운터를 이용하여 상기 듀얼 포트 램의 읽기/쓰기 주소를 발생시켜 동일한 동작을 하면서도 간단한 하드웨어 구조를 갖는 길쌈 인터리버/디인터리버를 제공하는 데 그 목적이 있다.
상기 목적을 달성하기 위한 듀얼 포트 메모리를 이용한 (B, M)길쌈 인터리버/디인터리버는, N 바이트로 구성된 패킷 스트림을 바이트 단위로 입/출력하여 인터리빙/디인터리빙하는 데 있어서, 패킷 동기 신호에 따라 리셋되고, 클럭 신호에 따라 카운팅하여 듀얼 포트 메모리의 쓰기 주소(WA)를 발생시키는 쓰기 주소 생성부와; 패킷 동기 신호에 따라 리셋되고, 반전된 클럭 신호에 따라 카운팅하여 듀얼 포트 메모리의 읽기 주소(RA)를 발생시키는 읽기 주소 생성부 및; 입력 데이터를 상기 쓰기 주소(WA)에따라 저장하였다가 상기 읽기 주소(RA)에 따라 저장된 데이터를 출력하는 듀얼 포트 메모리를 포함하여 구성되는 것을 특징으로 한다.
상기와 같은 길쌈 인터리버는 듀얼 포트 메모리를 이용하여 쓰기 동작과 읽기 동작을 동시에 할수 있으며, 저장된 데이터를 읽어간 후에 쓰기 동작을 진행시킨다. 듀얼 포트 메모리는 최소한 BN 바이트가 소요되며, 쓰기 주소(WA)와 읽기 주소(RA)를 발생시키는 데 있어서는 카운터를 이용하고, BN 모듈러 연산하므로써 종전과 동일한 재배열 순서에 따라 인터리빙된다. 물론 디인터리버도 역시 카운터를 주소를 발생시켜 원래 데이터 순서대로 디인터리빙 되어진다.
도 1 은 종래의 길쌈 인터리버와 디인터리버의 동작을 설명하기 위한 개념도,
도 2는 본 발명의 듀얼포트 메모리를 이용한 길쌈인터리버에 대한 블럭도이다.
* 도면의 주요부분에 대한 부호의 설명
21 : 쓰기 주소 발생부 22 : 읽기 주소 발생부
23 : 듀얼 포트 메모리
이하, 첨부된 도면을 참조하여 본 발명을 자세히 설명하기로 한다.
도 2는 본 발명에 따른 듀얼 포트 메모리를 이용한 길쌈 인터리버에 대한 블럭도로서, 길쌈 인터리버는 쓰기 주소 발생부(21)와, 읽기 주소 발생부(22), 및 듀얼 포트 메모리(23)로 구성되어 있다.
상기 쓰기 주소 발생부(21)는 클럭 신호에 따라 +1씩 카운팅하여 듀얼 포트 메모리의 쓰기 주소(WA)를 발생시키는 제 1 카운터를 포함하여 구성되어 있다. 상기 제 1 카운터는 패킷 동기 신호가 입력될 때 리셋된다. 쓰기 주소(WA)는 상기 제 1 카운팅 값을 인터리빙 간격×패킷 길이(=B×N )로 모듈러 연산한 값에 해당한다.
상기 읽기 주소 발생부(22)는 반전된 클럭 신호에 따라 +(B×N-(N-1) )씩 카운팅하여 듀얼 포트 메모리의 읽기 주소(RA)를 발생시키는 제 2 카운터를 포함하여 구성되어 있다. 상기 제 2 카운터는 패킷 동기 신호가 입력될 때 리셋된다. 읽기 주소(RA)는 상기 제 2 카운팅 값을 인터리빙 간격×패킷 길이(=B×N)로 모듈러 연산한 값에 해당한다.
상기 듀얼 포트 메모리는 최소한 인터리빙 간격×패킷 길이(=B×N)바이트를 저장할수 있는 용량을 가지는 램으로 구성되어 있으며, 8비트 데이터 버스를 통해 입력된 데이터를 제 1 포트로 입력 받고, 상기 쓰기 주소(WA)에 따라 해당 위치에 저장하는 한편, 상기 읽기 주소(RA)에 따라 해당 위치에 저장된 데이터를 제 2 포트를 통해 8비트 데이터 버스로 출력한다.
상기와 같이 구성된 본 발명의 작용 및 효과를 실시예를 통해 자세히 설명하면 다음과 같다.
본 실시예는 DVB 스펙을 적용한 것으로, DVB스펙에서의 패킷 길이(N)는 204바이트로 구성되며, 204 바이트중 처음 1바이트는 패킷의 시작을 알리는 패킷 동기 바이트로 할당되어 있다. 그리고, 이 패킷 단위를 기본으로 (12,17)길쌈 인터리빙을 수행한다. 즉, 12는 길쌈 인터리빙 간격(B)이며, 17은 지연을 위한 단위로서, 패킷 길이를 길쌈 인터리빙 간격으로 나눈 값(M=17=204/12)이다.
본 발명을 적용한 듀얼 포트 램의 읽기 주소와 쓰기 주소를 발생하는 알고리즘을 살펴보면 다음과 같다.
우선, 도 1의 인터리버로 들어오는 입력 데이터를 X(n)이라하고, 인터리버를 통해 인터리빙된 출력 데이터를 Y(n)이라 하자. 이미 설명한 바와 같이, I-0번 단으로 입력되는 12주기의 첫번째 데이터는 지연 없이 출력되고, I-1번 단으로 입력되는 12주기의 두번째 데이터는 12×17 지연 후 출력되고, I-2번 단으로 입력되는 세번째 데이터는 12×2×17 지연 후 출력되는 등 입력 데이터열중 이웃한 두 데이터 사이에 204개의 임의의 데이터가 삽입되어 인터리빙이 수행된다.
이러한 인터리빙된 데이터 열을 기준으로하여, 즉, 현재 출력된 데이터가 얼마나 지연된 입력 데이터인지를 조사해 보았다.
수직 단 출력 데이터 = 입력 데이터 입력 데이터인덱스
I-0 Y(0) = X(0) 0
I-1 Y(1) = X(1 - 12×1×17) -203
I-2 Y(2) = X(2 - 12×2×17) -406
I-11 Y(11) = X(11 - 12×11×17) -2233
I-0 Y(12) = X(12) 12
I-1 Y(13) = X(13 - 12×1×17) -191
I-10 Y(202) = X(202 - 12×10×17) -1838
I-11 Y(203) = X(203 - 12×11×17) -2041
상기 표 1에서 보는 바와 같이, 인터리버 입/출력 데이터 순서는 패킷 길이 204(=N)를 주기로 반복적으로 나타난다. 출력 데이터 Y(n)에서는 인덱스(n)가 +1씩 증가 될 때, 입력 데이터 X(n)는 인덱스(n)가 203 씩 감소되고 있음을 알수 있다. 출력 데이터 Y(11)과 Y(12)사이의 입력 데이터 X(n)의 인덱스를 보면, 불연속적인 갭이 생기는 것으로 보이지만 이것은 모듈러스 2448 로 해결될 수 있다. 즉, 모듈러스 2448 를 하게 되면, 출력 데이터 Y(11)의 입력 데이터 인덱스로부터 203을 감소시키면 -2233 -203 = -2436 을 얻는다. 이 -2436 값을 모듈러스 2448로 연산하면 12 가 된다. 이렇게 모듈러스 2448을 하는 근거는 방정식 [ (12×inc)%modulus = 12 & inc = modulus-203 ] 를 풀면, 해 modulus = 2448을 얻게 되고, 이 2448은 인터리빙 간격(B) × 패킷 길이(N) = 12×204와 동일한 값이다. 한편, 출력 데이터 인덱스가 1씩 증가하는 동안 입력 데이터 인덱스가 203씩 감소하는 것은, 입력 데이터 인덱스가 2245(=2448-203)씩 증가하는 것과 동일하다.
상기와 같은 주소 발생 알고리즘을 적용한 인터리버의 동작은 다음과 같다.
상기 쓰기 주소 발생부(21)에서는 유효한 데이터가 입력되는 클럭의 상승 에지(rising edge)에 동기되어 +1씩 카운팅한다. 그 카운팅 값을 모듈러스 2448 연산하고, 모듈러스 연산된 값이 바로 상기 듀얼 포트 메모리(23)의 쓰기 주소(WA)로 발생된다. 이때 입력된 데이터가 상기 듀얼 포트 메모리의 상기 쓰기 주소에 해당하는 메모리 위치에 저장된다. 여기서, 상기 +1 카운터는 2448번째 클럭마다 즉, 12번째 패킷의 패킷 동기 신호(PACKET_SYNC)가 입력될 때 마다 리셋되어진다.
상기 읽기 주소 발생부(22)에서는 클럭을 반전 시킨 신호, 즉, 반전된 클럭의 상승 에지에 동기되어 매 클럭당 +2245씩 카운팅한다. 그 카운팅 값을 모듈러스 2448 연산 하고, 모듈러스 연산된 값이 바로 상기 듀얼 포트 메모리(23)의 읽기 주소(RA)로 발생된다. 상기 읽기 주소에 따라 상기 듀얼 포트 메모리에 저장된 데이터가 출력된다. 여기서, 상기 +2245 카운터는 2448번째 클럭마다, 즉 12번째 패킷의 패킷 동기 신호(PACKET_SYNC)가 입력 될때 마다 리셋되어진다.
여기서, 읽기 주소를 발생시키는 데 있어서, 반전된 클럭 신호를 사용하는 이유는 데이터를 메모리에 쓰기도 전에 읽어가는 것을 방지하기 위함이다. 예를 들어 지연이 발생되지 않는 인터리빙 간격 12의 첫번째 데이터 Y(0)=X(0), Y(12)=X(12), Y(24)=X(24),… 등은 클럭의 앞반주기 동안 메모리에 저장되었다가 클럭의 뒤반주기 동안 출력되도록, 클럭의 앞반주기 동안 쓰기 주소(WA)가 발생된 후 클럭의 뒤반주기 동안 상기 쓰기 주소(WA)와 동일한 값이 읽기 주소(RA)로 발생되는 것이다.
표 2는 클럭에 따라 204바이트 패킷 단위로 입력되는 데이터를 2448 바이트 듀얼 포트 메모리에 저장하였다가 12 바이트 인터리빙처리하는 과정을 보였다.
클럭(CLK) 입력 데이터 쓰기 주소modulo 2448 읽기 주소modulo 2448 출력 데이터
0 PACKET_SYN1 0 0 PACKET_SYN1
1 D(1,1) 1 2245 (=2245×1 %2448) x
2 D(1,2) 2 2042 (=2245×2 %2448) x
3 D(1,3) 3 1839 (=2245×3 %2448) x
12 D(1,12) 12 12 (=2245×12 %2448) D(1,12)
13 D(1,13) 13 2257 (=2245×13 %2448) x
204 PACKET_SYN2 204 204 (=2245×204 %2448) PACKET_SYN2
205 D(2,1) 205 1 (=2245×205 %2448) D(1,1)
206 D(2,2) 206 2246 (=2245×206 %2448) x
408 PACKET_SYN3 408 408 (=2245×408 %2448) PACKET_SYN3
409 D(3,1) 409 205 (=2245×409 %2448) D(2,1)
410 D(3,2) 410 2 (=2245×410 %2448) D(1,2)
411 D(3,3) 411 2247 (=2245×411 %2448) x
612 PACKET_SYN4 612 612 (=2245×612 %2448) PACKET_SYN4
613 D(4,1) 613 409 (=2245×613 %2448) D(3,1)
614 D(4,2) 614 206 (=2245×614 %2448) D(2,2)
615 D(4,3) 615 3 (=2245×615 %2448) D(1,3)
상기 표 2 에서 보는 바와 같이, 데이터는 패킷 단위(N=204바이트)로 1바이트 동기 신호와 203바이트 유효 데이터 스트림이 클럭에 동기되어 입력된다. 데이터 D(i,j)는 i번째 패킷의 j번째 데이터를 나타낸다.
클럭 CLK0∼CLK203동안에 첫번째 패킷 스트림(PACKET1)이 입력되고, 클럭 CLK204∼CLK407동안 두번째 패킷 스트림(PACKET2)이 입력되고, 클럭 CLK408∼CLK611동안 세번째 패킷 스트림(PACKET3)이 입력되고 있음을 보이고 있다. 인터리빙 간격을 12(=B)로 하였으므로, 12개 데이터를 주기로 하여 0번째 데이터는 지연없이 출력되고, 1번째 데이터는 204(=N)클럭 지연후 출력되고, 2번째 데이터는 408(=2N)클럭 지연후 출력되는 등, 마지막 11번째 데이터는 2244(=11N)클럭 지연 후 출력되어야 한다.
예를 들어, 첫번째 패킷 스트림의 12개 입력 데이터 (PACKET_SYNC1,D(1,1),D(1,2),…,D(1,11))들이 쓰기 주소에 따라 듀얼 포트 메모리에 저장되고, 읽기 주소에 따라 출력되는 시점을 살펴보면 다음과 같다.
CLK0에서 입력된 PACKET_SYNC1 데이터는 클럭에 동기되어 (클럭의 앞반주기) 쓰기 주소 '0'이 발생되고, 반전된 클럭에 동기되어 (클럭의 뒤반주기) 읽기 주소 '0'이 발생되므로써, 지연없이 출력된다. CLK1에서 입력된 D(1,1) 데이터는 클럭에 동기되어 발생된 쓰기 주소 '1'에 따라 듀얼 포트 메모리에 저장되었다가 CLK205 에서 반전된 클럭에 동기되어 발생된 읽기 주소 '1'에 따라 출력된다. 즉, 204(=N)클럭 지연후 출력된다. CLK2에서 입력된 D(1,2) 데이터는 클럭에 동기되어 발생된 쓰기 주소 '2'에 따라 듀얼 포트 메모리에 저장되었다가 CLK410에서 반전된 클럭에 동기되어 발생된 읽기 주소 '2'에 따라 출력된다. 즉, 408(=2N)클럭 지연후 출력된다. CLK3에서 입력된 D(1,3) 데이터는 클럭에 동기되어 발생된 쓰기 주소 '3'에 따라 듀얼 포트 메모리에 저장되었다가 CLK615 에서 반전된 클럭에 동기되어 발생된 읽기 주소 '3'에 따라 출력된다. 즉, 612(=3N)클럭 지연 후 출력된다. 마찬가지로 CLK11에서 입력된 12주기의 마지막 데이터 D(1,11) 데이터는 2244(=11N)클럭 지연 후 CLK2255 에서 출력된다. 그리고, CLK 12 에 입력된 D(1,12)는 12주기의 첫번째 데이터이므로 지연없이 출력되고 있음을 확인할 수 있다.
이상에서 살펴본 바와 같이, 본 발명의 인터리버는 종전과 동일한 인터리빙 동작을 수행한다. 인터리버와 마찬가지로 디인터리버에서도 동일한 구조를 갖으며, 다만, 쓰기 주소와 읽기 주소를 발생시키는 데 있어 인터리버와 반대로 동작하도록 하면 된다. 즉, 쓰기 주소는 클럭 신호에 동기되어 +2245씩 증가시킨 카운팅값을 모듈러 2448연산한 값으로 사용하고, 읽기 주소는 반전된 클럭 신호에 동기되어 +1씩 증가시킨 카운팅 값을 모듈러 2448 연산한 값으로 사용한다. 그러면, 상기 디인터리버의 출력 데이터 스트림은 상기 인터리버의 입력 데이터 스트림과 동일한 순서로 출력됨이 분명하다.
상기 듀얼 포트 메모리(23)는 입력 포트와 출력 포트를 따로 따로 가지고 있는 정적 램으로 구현할 수 있으며, 입력 데이터 버스와 출력 데이터 버스 및 입력 데이터 주소 버스와 출력 데이터 주소버스도 따로 따로 갖고 있다. 그리고, 정적 램 어레이의 각 매크로셀은 2포트 D플립플롭으로 구현되어 진다. 통상적으로 1포트 D플립플롭으로 구현된 정적 램의 경우에는 셀 하나가 4개의 트랜지스터로 구성되므로 비트 하나를 저장하는데 1개의 게이트이면 충분하다. 물론 주문형 VLSI나 ASIC 설계시 2포트 플립플롭들이 정적 램으로 제작될 경우에는 셀당 4개 이상의 트랜지스터가 필요하며, 트랜지스터의 개수는 제작 기술에 따라 다소 차이가 있긴 하다. 대략 1 포트 정적 램에 비해서 2포트 정적 램의 경우는 실리콘 면적이 30% 정도 증가한다고 하나, 전체 칩 면적의 증가분은 매우 적다고 볼수 있다.
따라서, 종래의 인터리버의 지연 메모리수단으로 선입선출버퍼( FIFO )를 사용할 때는 1비트를 저장하기 위해서 24개의 트랜지스터가 필요했으나, 듀얼 포트 메모리(RAM)를 사용하게 되면 1비트를 저장하기 위해서 4개 이상의 트랜지스터만으로 구현할 수 있으므로 최대한 6배 정도의 칩 면적 감소 이득을 얻게 되는 것이다. 그리고, 상기 램을 액세스하는 주소 발생도 카운터를 이용하여 간단히 발생시킬 수 있다.
이상에서 설명한 바와 같이, 본 발명은 최소한 (B×N)(Bytes) 이상의 듀얼 포트 메모리를 사용하여 종래의 지연 수단으로 선입선출버퍼를 사용했을때보다 면적 효율의 이득을 얻고, 또한, 상기 메모리의 주소를 클럭신호와 반전된 클럭신호를 카운팅하여 한 클럭의 앞반주기에서는 쓰기 동작하고, 뒤반주기에서는 읽기 동작을 진행시켜 한클럭동안 읽기와 쓰기 동작을 동시에 진행시킬 수 있는 효과가 있다. 또한, 상기 쓰기 주소와 읽기 주소를 2개의 카운터를 이용하여 발생하기 때문에 간단한 하드웨어로 쉽게 구현할 수 있는 효과가 있다.

Claims (6)

  1. N 바이트로 구성된 패킷 스트림을 바이트 단위로 입력받아 인터리빙 간격 B로 재배열하여 전송하고, 이를 수신받아 원래 데이터 스트림 순서대로 복원하는 (B,M(=N/B))길쌈 인터리버/디인터리버에 있어서, 패킷 동기 신호에 따라 리셋되고, 클럭 신호에 따라 카운팅하여 쓰기 주소(WA)를 발생시키는 쓰기 주소 생성부(21)와; 패킷 동기 신호에 따라 리셋되고, 반전된 클럭 신호에 따라 카운팅하여 읽기 주소(RA)를 발생시키는 읽기 주소 생성부(22) 및; 입력 데이터를 상기 쓰기 주소(WA)에따라 저장하였다가 상기 읽기 주소(RA)에 따라 저장된 데이터를 출력하는 듀얼 포트 메모리(23)를 포함하여 구성되는 것을 특징으로 하는 듀얼 포트 메모리를 이용한 길쌈 인터리버/디인터리버.
  2. 제 1 항에 있어서, 상기 길쌈 인터리버의 쓰기 주소 생성부(21)는 클럭 신호에 따라 +1씩 카운팅하면서, 매 B 번째 패킷 동기 신호가 입력될 때 마다 리셋 되는 제 1 카운터를 포함하여 구성되어 있으며, 상기 제 1 카운터 값을 인터리빙 간격×패킷 길이(=B×N )로 모듈러 연산하여 쓰기 주소(WA)로 발생시키는 것을 특징으로 하는 듀얼 포트 메모리를 이용한 길쌈 인터리버.
  3. 제 1 항에 있어서, 상기 길쌈 인터리버의 읽기 주소 발생부(22)는 반전된 클럭 신호에 따라 +(B×N-(N-1) )씩 카운팅하면서, 매 B 번째 패킷 동기 신호가 입력될 때마다 리셋되는 제 2 카운터를 포함하여 구성되어 있으면서, 상기 제 2 카운터 값을 인터리빙 간격×패킷 길이(=B×N)로 모듈러 연산하여 읽기 주소(RA)를 발생시키는 것을 특징으로 하는 듀얼 포트 메모리를 이용한 길쌈 인터리버.
  4. 제 1 항에 있어서, 상기 길쌈 디인터리버의 쓰기 주소 생성부(21)는 클럭 신호에 따라 +(B×N-(N-1) )씩 카운팅하면서, 매 B 번째 패킷 동기 신호가 입력될 때 마다 리셋되는 제 3 카운터를 포함하여 구성되어 있으며, 상기 제 3 카운터 값을 인터리빙 간격×패킷 길이(=B×N)로 모듈러 연산하여 쓰기 주소(WA)로 발생시키는 것을 특징으로 하는 듀얼 포트 메모리를 이용한 길쌈 디인터리버.
  5. 제 1 항에 있어서, 상기 길쌈 디인터리버의 읽기 주소 발생부(22)는 반전된 클럭 신호에 따라 +1씩 카운팅하면서, 매 B 번째 패킷 동기 신호가 입력될 때마다 리셋되는 제 4 카운터를 포함하여 구성되어 있으면서, 상기 제 4 카운터 값을 인터리빙 간격×패킷 길이(=B×N)로 모듈러 연산하여 읽기 주소(RA)를 발생시키는 것을 특징으로 하는 듀얼 포트 메모리를 이용한 길쌈 디인터리버.
  6. 제 1 항에 있어서, 상기 듀얼 포트 메모리(23)는 최소한 인터리빙 간격×패킷 길이(=B×N)바이트를 저장할수 있는 용량을 가지며, 입력된 데이터를 제 1 포트로 입력 받아 상기 쓰기 주소(WA)에 따라 저장하는 한편, 상기 읽기 주소(RA)에 따라 저장된 데이터를 제 2 포트를 통해 출력하는 것을 특징으로 하는 듀얼 포트 메모리를 이용한 길쌈 인터리버/디인터리버.
KR1019970027636A 1997-06-26 1997-06-26 듀얼 포트 메모리를 이용한 길쌈 인터리버 /디인터리버 KR100243468B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970027636A KR100243468B1 (ko) 1997-06-26 1997-06-26 듀얼 포트 메모리를 이용한 길쌈 인터리버 /디인터리버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970027636A KR100243468B1 (ko) 1997-06-26 1997-06-26 듀얼 포트 메모리를 이용한 길쌈 인터리버 /디인터리버

Publications (2)

Publication Number Publication Date
KR19990003706A true KR19990003706A (ko) 1999-01-15
KR100243468B1 KR100243468B1 (ko) 2000-02-01

Family

ID=19511396

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970027636A KR100243468B1 (ko) 1997-06-26 1997-06-26 듀얼 포트 메모리를 이용한 길쌈 인터리버 /디인터리버

Country Status (1)

Country Link
KR (1) KR100243468B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100413421B1 (ko) * 1999-10-08 2003-12-31 엘지전자 주식회사 이중 인터리빙 방법
KR100468576B1 (ko) * 2000-12-29 2005-01-31 엘지전자 주식회사 바이트 어드레싱 메모리를 이용한 더블유-씨디엠에이 웰시스템의 인터리버 장치 및 그 제어방법
KR100605913B1 (ko) * 2004-07-14 2006-08-02 삼성전자주식회사 이동통신 시스템에서 고속 순방향 패킷 데이터 수신을위한 디인터리빙 수행 방법 및 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701482B2 (en) * 2001-09-20 2004-03-02 Qualcomm Incorporated Method and apparatus for coding bits of data in parallel

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100413421B1 (ko) * 1999-10-08 2003-12-31 엘지전자 주식회사 이중 인터리빙 방법
KR100468576B1 (ko) * 2000-12-29 2005-01-31 엘지전자 주식회사 바이트 어드레싱 메모리를 이용한 더블유-씨디엠에이 웰시스템의 인터리버 장치 및 그 제어방법
KR100605913B1 (ko) * 2004-07-14 2006-08-02 삼성전자주식회사 이동통신 시스템에서 고속 순방향 패킷 데이터 수신을위한 디인터리빙 수행 방법 및 장치

Also Published As

Publication number Publication date
KR100243468B1 (ko) 2000-02-01

Similar Documents

Publication Publication Date Title
EP0681373B1 (en) Convolutional interleaver with reduced memory requirements and address generator therefor
JP3882097B2 (ja) 重畳インターリーバ及びメモリのアドレス発生方法
US6964005B2 (en) System and method for interleaving data in a communication device
EP1125366B1 (en) Generalized convolutional interleaver/deinterleaver
US7945780B1 (en) Apparatus for dynamically configurable interleaver scheme using at least one dynamically changeable interleaving parameter
KR100518295B1 (ko) 디지털 통신 시스템의 디인터리빙장치 및 그의디인터리빙방법
KR100243468B1 (ko) 듀얼 포트 메모리를 이용한 길쌈 인터리버 /디인터리버
EP1610467A1 (en) Efficient address generation for Forney's modular periodic interleavers
US20040030985A1 (en) Cross interleave reed-solomon code correction
JP3549756B2 (ja) ブロックインターリーブ回路
US7502390B2 (en) Optimized interleaver and/or deinterleaver design
KR100215566B1 (ko) 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법
KR100215565B1 (ko) 정적 램을 이용한 길쌈 인터리버/디인터리버 및정적 램의 주소 생성 방법
KR100230912B1 (ko) 고화질 텔레비젼(hdtv)의 복호지연에 의한 오류 데이타 제거장치 및 방법
KR0183171B1 (ko) 인터리버 및 디인터리버와 그 방법
US5999566A (en) Method and apparatus for providing error-tolerant communication of information
KR0123088B1 (ko) 메모리를 이용한 길쌈 디인터리버
KR100443003B1 (ko) 오류정정을 위한 순차형 블록 인터리버 장치
KR19990065357A (ko) 인터리브/디인터리브 장치
RU2107953C1 (ru) Устройство для записи-воспроизведения многоканальной цифровой информации
SU940299A1 (ru) Устройство дл декодировани двоичных кодов Хемминга
EP1388946A1 (en) Cross interleave reed-solomon code correction
JPH07262030A (ja) 誤り訂正符号化装置および誤り訂正符号化方法

Legal Events

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

Payment date: 20111101

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20121101

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee