이하 본 발명의 바람직한 실시예의 상세한 설명이 첨부된 도면들을 참조하여 설명될 것이다. 하기에서 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한한 동일한 부호를 가지도록 하고 있음에 유의해야 한다.
우선 본 출원의 발명자는 터보 인터리빙 동작을 위해 발생되는 어드레스중에서 삭제되어야 할 터보 인터리버 크기(혹은 입력 프레임 크기) 값 이상의 어드레스가 일정한 규칙(rule)이 있음을 발견하였음을 밝혀두는 바이다. 이러한 규칙에 대해서는 후술될 것이다. 상기 삭제되는 어드레스에 일정한 규칙이 있기 때문에 사전에 상기 삭제되는 어드레스에 대응하는 값이 카운팅되지 않도록 할 수 있을 것이다. 즉 본 발명은 아예 삭제될 어드레스는 발생시키지 않는 것이다. 그러면 최종적으로 터보 인터리빙 동작을 위한 어드레스는 일정한 주기를 가지고 연속적으로 발생되게 되며, 어드레스의 발생 주기가 불연속적임에 따라 야기되던 문제점은 해소될 수 있을 것이다. 본 출원의 발명자는 터보 인터리빙 어드레스 발생 장치를 도 3에 도시된 바와 같이 구성하여, 실제 사용될 어드레스만이 일정한 주기를 가지고 발생되도록 하고 있다. 이러한 본 발명은 터보 디인터리버가 터보 인터리버의 역과정에 해당하는 것으로 구조상 모든 부분이 동일하며 단지 리드/라이트 모드에서 입력되는 순서만이 다르다는 사실을 고려해 볼 때 터보 인터리버 뿐만 아니라 터보 디인터리버에도 동일하게 적용될 수 있을 것이다. 따라서 본 발명은 설명의 편의를 위해 터보 인터리버에 적용되는 동작으로 제한되어 설명되지만, 본 발명은 터보 디인터리버에도 동일하게 적용될 수 있음을 유의하여야 할 것이다.
도 3을 참조하면, 본 발명에 따른 어드레스 발생장치는 제어부 200과, 카운터 블록인 I_COUNTER 210과, 랜덤화(randomization) 동작을 수행한 후 랜덤화 처리된 어드레스를 터보 인터리빙 동작을 위한 어드레스로 발생하는 블록 120,130,140,150으로 이루어진다. 상기 구성요소들중에서 가산기 120, 룩업테이블 130, 비트 반전기 140, 곱셈&모듈로 연산기 150은 도 2에 도시된 종래기술에 따른 어드레스 발생장치의 구성으로부터 알 수 있는 바와 같이 일반적인 구성요소들이다. 나머지 구성요소들인 제어부 200, I_COUNTER 210은 본 발명에 따른 특징적인 구성요소들이다.
상기 제어부 200은 미리 정해지는 터보 인터리버 크기 값(Nturbo)(입력 프레임의 크기)을 대응하는 이진수로 변환하고 이 변환된 이진수를 분석함으로써 상기 터보 인터리버 크기 값에 의해 정해지는 일련의 어드레스중에서 상기 터보 인터리버 크기 값 이상의 삭제할 어드레스를 결정한다. 상기 I_COUNTER 210은 상기 제어부 200의 제어하에 상기 결정된 삭제 어드레스를 제외한 나머지 어드레스를 연속하여 카운팅 출력한다.
구체적으로 말하면, 상기 제어부 200은 상기 변환된 이진수의 상위 5비트들의 값을 분석하여 그 값보다 큰 값의 상위 5비트들을 가지는 어드레스를 삭제 어드레스로서 결정한다. I_COUNTER 210은 상기 제어부 200에 제어되어 상기 결정된 삭제 어드레스를 제외한 나머지 어드레스만이 발생되도록 카운팅 동작을 수행한다. 사실 I_COUNTER 210에 의해 카운팅되는 하위 5비트들은 비트반전기 140에 의해 반전된 후 출력 어드레스의 상위 5비트들을 구성하므로, I_COUNTER 210은 상기 이진수의 상위 5비트들의 값보다 큰 값의 상위 5비트들을 비트 반전한 경우 얻어지는 값을 제외한 나머지 값들을 하위 5비트들의 값으로 카운팅 출력한다.
또한 상기 제어부 200은 상기 변환된 이진수의 상위 5비트들의 값과 동일한 값의 상위 5비트를 가지는 어드레스에 대해서는 선택적으로 출력 어드레스를 발생하도록 결정한다. 왜냐하면 상기 변환된 이진수의 상위 5비트들의 값이 동일하다고 할지라도 이 상위 5비트들과 나머지 하위 n비트들에 의해 정해되는 값이 터보 인터리버의 크기 값 이상인 경우의 출력 어드레스는 삭제될 어드레스이고, 터보 인터리버의 크기 값보다 작은 경우의 출력 어드레스는 발생될 어드레스이기 때문이다. 따라서 출력 어드레스의 선택적 발생(삭제 어드레스의 선택적 결정) 기준은 상기 변환된 이진수의 하위 n비트들의 값을 가지고 판단한다. 즉 제어부 200은 상기 하위 n비트들의 값 이상의 값에 대응하는 값을 상위 n비트의 값으로 I_COUNTER 210이 카운팅 출력하지 않도록 제어하고, 그 대응하는 값 이외의 값만을 상위 n비트의 값으로 카운팅 출력하도록 I_COUNTER 210을 제어한다.
이와 같이 I_COUNTER 210은 제어부 200에 제어되어 터보 인터리버 크기 값 이상의 어드레스를 발생시키기 위한 카운팅 값을 출력하지는 않는다. 즉 도 1에 도시된 종래기술에 따른 카운터 110은 터보 인터리버 크기 값 이상의 어드레스를 발생시키기 위한 2n+5만큼의 카운팅 값 [0..... 2n+5-1]을 출력하지만, 본 발명에 따른 카운터인 I_COUNTER 210은 터보 인터리버 크기 값보다 작은 어드레스만을 발생시키기 위한 카운팅 값 [0 ..... Nturbo-1]을 출력한다. 상기 제어부 200의 삭제 어드레스 결정 동작 및 그에 따른 I_COUNTER 210의 카운팅 동작은 하기에서 참조될 각종 표들과의 관련된 설명으로부터 보다 명확해질 것이다.
상기 가산기 120, 룩업테이블 130, 비트 반전기 140, 곱셈 및 모듈로 연산기 150으로 이루어져 랜덤화기로서 동작하는 블록은 상기 I_COUNTER 210에 의해 카운팅되는 값(입력 어드레스)을 랜덤화 처리하여 출력한다. 이러한 랜덤화기는 소위 LCS(Linear Congruential Sequence) 점화식에 따른 연산 동작을 수행하는 것이다. 상기 가산기 120은 I_COUNTER 210에 의해 카운팅되는 상위 n비트들의 값에 특정 크기의 값("1")을 가산하여 출력한다. 즉 I_COUNTER 210에 의해 카운팅되는 값이 j=0,1,2, .....이라고 가정하면, 가산기 120은 j+1=1,2,3, .....을 출력한다. 룩업 테이블(look-up table) 130은 인터리빙 그룹 각각에 대응하는 다수의 시드(seeds) 값(혹은 C values)을 저장하고 있으며, I_COUNTER 210에 의해 카운팅되는 하위 5비트들의 값에 대응하는 n비트의 시드값을 출력한다. 곱셈&모듈로 연산기 150은 가산기 120의 출력과 룩업 테이블 130의 출력을 곱셈 및 모듈로 연산하고 그 연산된 결과를 터보 인터리빙 동작을 위한 출력 어드레스의 하위 n비트의 값으로 출력한다. 이때 곱셈&모듈로 연산기 150에 의한 연산 결과는 가산기 120의 출력과 룩업 테이블 130의 출력을 곱한 결과로부터 하위 n비트를 절단(truncation)한 결과와 동일하다. 비트 반전기(bit reverser) 140은 I_COUNTER 210에 의해 카운팅되어 출력되는 하위 5비트들의 값을 비트 반전시켜 터보 인터리빙 동작을 위한 출력 어드레스의 상위 5비트 값으로 출력한다.
상기 도 3에 도시된 어드레스 발생장치가 터보 인터리버에 적용되는 경우에 (5+n)비트의 출력 어드레스는 도 1에 도시된 바와 같이 터보 인터리버의 출력단인 인터리버 메모리 36에 리드어드레스로서 제공된다. 이와 달리 상기 도 3에 도시된 어드레스 발생장치가 터보 디인터리버에 적용되는 경우에 (5+n)비트의 출력 어드레스는 디인터리버 메모리의 라이트어드레스로서 제공된다.
도 4는 도 3에 도시된 I_COUNTER 210의 구성을 구체적으로 보여주는 도면이다.
도 4를 참조하면, I_COUNTER 210은 하위 5비트들의 값 [4:0]을 카운팅 출력하는 G_COUNTER(Group Counter) 212와, 상위 n비트들의 값 [n-1:0]을 카운팅 출력하는 J_COUNTER(Index Counter) 214로 구성된다. 상기 G_COUNTER 212에 의해 카운팅되어 출력되는 하위 5비트들의 값은 룩업 테이블 130의 어드레스를 결정하는 값과, 비트 반전기 140의 동작에 의하여 인터리빙 블록의 그룹을 결정하는 값으로 사용된다. 상기 J_COUNTER 214에 의해 카운팅 출력되는 상위 n비트들의 값은 인터리빙 블록의 각 그룹에서 2n개의 인덱스를 서로 치환(permutation)하기 위한 변수로 사용된다. 상기 G_COUNTER 212에 의한 카운팅 동작시 발생되는 캐리(Carry) 값은 J_COUNTER 214의 캐리 입력으로 인가되며, 또한 제어부 200으로도 인가된다. 상기 제어부 200은 상기 캐리값이 입력될 시 상기 J_COUNTER 214에 의한 카운팅 값을 판단하여 선택적으로 G_COUNTER 212의 카운팅 동작을 증가시킨다. 즉 G_COUNTER 212는 초기의 값(Initial Value) [00000]으로부터 순차적으로 카운팅 동작을 수행하다가 제어부 200에 의해 제어되는 시점에는 그 시점에 대응하는 값에 대한 카운팅 동작을 스킵(skip)하고 다음 값을 카운팅한다. 상기 G_COUNTER 212의 초기 값은 [00000]으로 설정되며, J_COUNTER 214의 초기 값은 [00...00]으로 설정된다.
이와 같이 I_COUNTER 210은 상위 카운터(upper counter)로서의 J_COUNTER 214와, 하위 카운터(lower counter)로서의 G_COUNTER 212를 포함하여 이루어진다. 이때 G_COUNTER 212는 이후에 출력 어드레스의 상위 5비트의 값을 결정하기 위한 하위 5비트의 값을 카운팅 출력하고, J_COUNTER 214는 이후에 출력 어드레스의 하위 n비트의 값을 결정하기 위한 상위 n비트의 값을 출력한다. 즉 I_COUNTER 210은 전체 n+5비트, 즉 터보 인터리버 크기 값(Nturbo)에 의해 정해지는 일련의 어드레스를 발생하기 위한 값을 입력 어드레스로서 생성하는데, 이때 제어부 200의 제어에 의해 삭제될 어드레스를 발생하기 위한 값은 카운팅 출력하지 않는다.
이하 출력 어드레스중에서 삭제될 어드레스를 분석한 결과 일정한 규칙이 있으며, 이러한 규칙에 해당하는 입력 어드레스에 대해서는 I_COUNTER 210이 카운팅하지 않도록 제어부 200이 제어함으로써 출력 어드레스가 불연속적으로 발생되는 문제점이 해소될 수 있다. 하기의 설명은 IS-95C에 채택된 LCS 터보 인터리버의 구현 방법을 기준으로 한다. 즉 현재 1X 터보 코덱에서는 데이터 전송율(RS: Rate Set)을 RS1, RS2로 구분할 수 있으므로, 이들을 기준으로 설명될 것이다.
상기 <표 1>에서 Nturbo(=L)은 실제 터보 인터리버의 크기(입력 프레임의 데이터 크기) 값을 나타낸다. n은 미리 정해지는 터보 인터리버의 크기 값에 대응하여 인터리빙 블록의 각 그룹의 데이터 비트 수를 결정하는 값이다. 예를 들어, IS-95C의 스펙(Specification)에 따르면, 터보 인터리버의 크기 값이 378로 정해지는 경우 이를 만족하는 어드레스의 수는 512(29)개이므로, 각 그룹의 데이터 비트는 24으로 결정된다. 왜냐하면, IS-95C에서는 인터리빙 블록의 그룹수는 25(32)으로 결정되기 때문이다. M은 2n으로 LCS(Linear Congruential Sequence)의 주기를 나타낸다. Nturbo(2) 또는 L(2)는 터보 인터리버의 크기 값(Nturbo)을 이진수로 변환한 값이다. FLAG는 상기 변환된 이진수 L(2)의 상위 5비트 값을 나타낸다. THLD는 출력 어드레스가 터보 인터리버의 크기 값(Nturbo)보다 작게 하기 위해서 사용되는 임계값(threshold value)으로 상기 변환된 이진수 L(2)의 상기 상위 5비트를 제외한 하위 n비트의 10진값을 나타낸다.
상기 <표 1>을 참조하면, 터보 인터리버의 크기 값을 이진수로 변환한 경우에 상위 5비트들의 값은 RS1 및 RS2에 따라 동일함을 알 수 있다. 터보 인터리버의 크기 값이 가변되더라도, RS1의 경우에는 변환된 이진수의 상위 5비트들의 값이 "10111"로 동일하며, RS2의 경우에는 변환된 이진수의 상위 5비트들의 값이 "10001"로 동일함을 알 수 있다. 사실 RS1의 경우에는 상기 "10111"의 값보다 큰 값을 출력 어드레스의 상위 5비트들의 값으로 가지는 어드레스는 삭제될 어드레스에 해당하며, RS2의 경우에는 상기 "10001"의 값보다 큰 값을 출력 어드레스의 상위 5비트들의 값으로 가지는 어드레스는 삭제될 어드레스에 해당한다. 그러므로 I_COUNTER 210이 카운팅 동작을 수행할 시 삭제될 어드레스의 상위 5비트들의 값에 대응하는 하위 5비트들의 값을 출력하지 않도록 제어하면 출력 어드레스의 불연속적인 발생을 제거할 수 있을 것이다. 즉 상기 출력 어드레스의 상위 5비트들의 값은 I_COUNTER 210에 의해 카운팅 출력되는 하위 5비트들의 값을 비트 반전한 값이므로, 상기 삭제될 어드레스를 결정하는 상위 5비트들의 값보다 큰 값의 상위비트들을 비트 반전한 후 이 비트 반전된 값에 대해서는 I_COUNTER 210이 카운팅 동작을 행하지 않도록 하면 출력 어드레스는 연속적으로 발생될 수 있을 것이다. 상기 RS1의 삭제될 어드레스를 결정하는 기준 값인 상위 5비트들의 값 "10111"을 비트 반전하면 "11101"의 FLAG 값이 얻어지며, RS2의 삭제될 어드레스를 결정하는 기준 값인 상위 5비트들의 값 "10001"을 비트 반전하면 "10001"의 FLAG값이 얻어진다. 그러므로 제어부 200이 이렇게 얻어진 FLAG값보다 큰 값을 하위 5비트로 가지는 어드레스를 카운팅 출력하지 않도록 I_COUNTER 210을 제어하면 출력 어드레스는 연속적으로 발생될 수 있을 것이다.
하기의 <표 2> 및 <표 3>은 터보 인터리버 크기 값에 의해 정해지는 일련의 출력 어드레스중에서 삭제될 어드레스에 대응하여 구해지게 되는 G_COUNTER 212의 카운팅 값을 나타낸다. <표 2>는 RS 1의 경우에 삭제될 어드레스에 대응하여 구해지게 되는 G_COUNTER 212의 카운팅 값이고, <표 3>은 RS 2의 경우에 삭제될 어드레스에 대응하여 구해지게 되는 G_COUNTER 212의 카운팅 값이다.
ADDRESS_OUT[n+4:n] = FLAG |
G_COUNTER[4:0] |
Deletion |
Number of discarded ADDRESS_OUT |
10111 |
11101 (29) |
Partially discarded |
<2n |
11000 |
00011 (3) |
All discarded |
2n |
11001 |
10011 (19) |
All discarded |
2n |
11010 |
01011 (11) |
All discarded |
2n |
11011 |
11011 (27) |
All discarded |
2n |
11100 |
00111 (7) |
All discarded |
2n |
11101 |
10111 (23) |
All discarded |
2n |
11110 |
01111 (15) |
All discarded |
2n |
11111 |
11111 (31) |
All discarded |
2n |
상기 <표 2>를 참조하면, RS 1의 경우에는 출력 어드레스를 상위 5비트의 값에 따라 세가지로 분류할 수 있다. 출력 어드레스 ADDRESS_OUT[n+4:n]이 00000(0)∼10110(22) 범위의 값인 경우, 이때의 출력 어드레스들은 삭제되지 않고 발생되어야 할 어드레스들이다. 출력 어드레스 ADDRESS_OUT [n+4:n]이 11000(24)∼11111(31) 범위의 값인 경우, 이때의 출력 어드레스들은 삭제되어야 할 어드레스들이다. 출력 어드레스 ADDRESS[n+4:n]이 10111(23)인 경우, 이때의 출력 어드레스들은 나머지 하위 n비트들의 값에 따라 부분적으로 삭제되거나 발생되어야 할 어드레스들이다.
상기 <표 2>에서 알 수 있는 바와 같이, 출력 어드레스 ADDRESS_OUT[n+4:n]중에서 삭제될 어드레스에 대응하는 G_COUNTER 212에 의해 카운팅되는 입력 어드레스들을 오름차순으로 정리하면 다음의 <수학식 1>과 같이 초항이 3이고, 등차가 4인 등차수열로 정리된다.
G_COUNTER[4:0] = { 3, 7, 11, 15, 19, 23, 27, 31 }
따라서 G_COUNTER 212의 카운팅 값이 위 <수학식 1>인 경우에 해당되는 모든 I_COUNTER 210의 값을 발생시키지 않으면 항상 출력 어드레스는 터보 인터리버 크기 값 Nturbo보다 작은 값을 갖게 된다. 이러한 동작은 출력 어드레스중에서 삭제할 어드레스를 결정하는 동작을 사전에 입력 카운터 210에서 조정함으로써 아예 인덱스의 발생 자체를 금지하도록 설계하는 것을 의미한다. 또한 위 시퀀스가 등차가 4인 등차수열을 구성하므로, 실제 입력 어드레스로서의 카운팅 값인 I_COUNTER [n+4:0]의 구현이 규칙적이며 용이해진다. 즉 G_COUNTER 212는 삭제될 어드레스를 제외한 어드레스만을 발생시키기 위한 값을 다음의 <수학식 2>와 같이 카운팅하면 된다.
G_RS1 =
{0,1,2,4,5,6,8,9,10,12,13,14,16,17,18,20,21,22,24,25,26,28,29,30}
상기 <수학식 2>와 같은 그룹에 해당되는 모든 카운팅 값에 대응하는 어드레스만을 LCS 터보 인터리버의 출력 어드레스로서 사용한다. 이때 출력 어드레스로서 사용되는 G_COUNTER의 시퀀스는 RS1에 속하는 모든 터보 인터리버 크기 값에 대해서 동일하게 적용된다. 즉 n값에 관계없이 RS1에 속하는 모든 경우에 G_COUNTER 212는 상기 <수학식 2>와 같은 시퀀스를 발생시키면 된다.
그러나 출력 어드레스의 상위 5비트 값이 10111(23)인 경우(= ADDRESS_OUT[n+4:0]=(10111)인 경우), 즉 G_COUNTER[4:0]=(11101)인 경우에는 부분적으로 출력 어드레스로서 사용하고 나머지는 삭제 어드레스로서 결정한다. 이때 삭제 어드레스로서 결정하는 기준에 대해서는 후술될 J_COUNTER[n-1:0]와 C값에 따라 결정된다.
ADDRESS_OUT[n+4:n] |
G_COUNTER[4:0] |
Deletion |
Number of discarded ADRESS_OUT |
10001 |
10001 (17) |
Partially discarded |
<2n |
10010 |
01001 (9) |
All discarded |
2n |
10011 |
11001 (25) |
All discarded |
2n |
10100 |
00101 (5) |
All discarded |
2n |
10101 |
10101 (21) |
All discarded |
2n |
10110 |
01101 (13) |
All discarded |
2n |
10111 |
11101 (29) |
All discarded |
2n |
11000 |
00011 (3) |
All discarded |
2n |
11001 |
10011 (19) |
All discarded |
2n |
11010 |
01011 (11) |
All discarded |
2n |
11011 |
11011 (27) |
All discarded |
2n |
11100 |
00111 (7) |
All discarded |
2n |
11101 |
10111 (23) |
All discarded |
2n |
11110 |
01111 (15) |
All discarded |
2n |
11111 |
11111 (31) |
All discarded |
2n |
상기 <표 3>을 참조하면, RS 2의 경우에는 이미 언급한 RS 1의 경우와 같이 출력 어드레스를 상위 5비트의 값에 따라 세가지로 분류할 수 있다. 출력 어드레스 ADDRESS_OUT[n+4:n]이 00000(0)∼10000(16) 범위의 값인 경우, 이때의 출력 어드레스들은 삭제되지 않고 발생되어야 할 어드레스들이다. 출력 어드레스 ADDRESS_OUT [n+4:n]이 10010(18)∼11111(31) 범위의 값인 경우, 이때의 출력 어드레스들은 삭제되어야 할 어드레스들이다. 출력 어드레스 ADDRESS[n+4:n]이 10001(17)인 경우, 이때의 출력 어드레스들은 나머지 하위 n비트들의 값에 따라 부분적으로 삭제되거나 발생되어야 할 어드레스들이다.
상기 <표 3>에서 알 수 있는 바와 같이, 출력 어드레스 ADDRESS_OUT[n+4:n]중에서 삭제될 어드레스에 대응하는 G_COUNTER 212에 의해 카운팅되는 입력 어드레스들을 오름차순으로 정리하면 다음의 <수학식 3>과 같이 초항이 3이고, 등차가 2인 등차수열로 정리된다.
G_COUNTER[4:0] = {3,5,7,9,11,13,15,17,19,21,23,25,27,29,31}
따라서 G_COUNTER 212의 카운팅 값이 위 <수학식 3>인 경우에 해당되는 모든 I_COUNTER 210의 값을 발생시키지 않으면 항상 출력 어드레스는 터보 인터리버 크기 값 Nturbo보다 작은 값을 갖게 된다. 이러한 동작은 출력 어드레스중에서 삭제할 어드레스를 결정하는 동작을 사전에 입력 카운터 210에서 조정함으로써 아예 인덱스의 발생 자체를 금지하도록 설계하는 것을 의미한다. 또한 위 시퀀스가 등차가 2인 등차수열을 구성하므로, 실제 입력 어드레스로서의 카운팅 값인 I_COUNTER [n+4:0]의 구현이 규칙적이며 용이해진다. 즉 G_COUNTER 212는 삭제될 어드레스를 제외한 어드레스만을 발생시키기 위한 값을 다음의 <수학식 4>와 같이 카운팅하면 된다.
G_RS2 = {0,1,2,4,6,8,10,12,14,16,17,18,20,22,24,26,28,30}
상기 <수학식 4>와 같은 그룹에 해당되는 모든 카운팅 값에 대응하는 어드레스만을 LCS 터보 인터리버의 출력 어드레스로서 사용한다. 이때 출력 어드레스로서 사용되는 G_COUNTER의 시퀀스는 RS2에 속하는 모든 터보 인터리버 크기 값에 대해서 동일하게 적용된다. 즉 n값에 관계없이 RS2에 속하는 모든 경우에 G_COUNTER 212는 상기 <수학식 4>와 같은 시퀀스를 발생시키면 된다.
그러나 출력 어드레스의 상위 5비트 값이 10001(17)인 경우(= ADDRESS_OUT[n+4:0]=(10001)인 경우), 즉 G_COUNTER[4:0]=(10001)인 경우에는 부분적으로 출력 어드레스로서 사용하고 나머지는 삭제 어드레스로서 결정한다. 이때 삭제 어드레스로서 결정하는 기준에 대해서는 후술될 J_COUNTER[n-1:0]와 C값에 따라 결정된다.
전술한 바와 같이 입력 어드레스를 구성하는 카운팅 값을 출력하는 카운터 210의 카운팅 동작을 제어함으로써 출력 어드레스의 일부를 삭제함에 따라 출력 어드레스가 불연속적으로 발생되는 문제점을 해결할 수 있음을 알 수 있다. 즉 상기 <수학식 2> 및 <수학식 4>와 같은 시퀀스를 가지는 값을 하위 5비트의 값으로 카운팅 출력하도록 G_COUNTER 212를 설계하면, 매 심볼 간격으로 규칙적인 출력이 나오도록 설계하는 것이 가능하게 된다. 남은 문제는 부분적으로만 어드레스를 삭제해야 하는 경우이다. RS1의 경우에는 ADDRESS_OUT[n+4:n]=(10111), 즉 G_COUNTER[4:0]=(11101)=29인 경우에 부가적인 처리가 요구된다. RS2의 경우에는 ADDRESS_OUT[n+4:n]=(10001), 즉 G_COUNTER [4:0]=(10001)=17인 경우에 부가적인 처리가 요구된다.
다음의 <표 4a>, <표 4b>, <표 5a>, <표 5b>는 IS-95C에서 사용되는 LCS 터보 인터리버의 파라메터중에서 각각의 n값과 각 그룹에 대한 C값과의 관계를 보여주고 있다. 이러한 관계는 룩업 테이블 130에 저장되는 것으로 이미 규정된 바 있으나, 본 발명에서는 특정 그룹에 대해서는 밑줄로 표시하였고, 특정 그룹에 대해서는 진하게 표시하였다는 사실에 유의할 필요가 있다. 상기 표들에 있어서 밑줄로 표시된 부분은 위에서 설명한 바와 같이 삭제되는 어드레스를 가지는 그룹을 의미하며, 진하게 표시된 부분은 부분적으로 삭제되는 어드레스를 가지는 그룹을 의미하는 것이다. 즉 밑줄로 표시된 그룹에 대해서는 입력 카운터 210이 카운팅 동작을 수행하지 않고, 진하게 표시된 그룹에 대해서는 입력 카운터 210이 선택적으로 카운팅 동작을 수행한다. 밑줄로 혹은 진하게 표시된 그룹에 대한 입력 카운터 210의 카운팅 동작을 제어함으로써 LCS 터보 인터리버의 출력단을 천공(puncturing)하지 않고도 모든 인터리빙된 어드레스를 출력할 수 있다.
하기의 <표 4a> 및 <표 4b>는 RS 1의 경우에 각각의 n값과 각 그룹에 대한 C값과의 관계를 보여주고 있다. 표로부터 알 수 있는 바와 같이, 테이블 인덱스(Table Index)가 3,7,11,15, 19,23,27,31인 그룹에 대해서 입력 카운터 210은 카운팅 동작을 수행하지 않는다.
하기의 <표 5a> 및 <표 5b>는 RS 2의 경우에 각각의 n값과 각 그룹에 대한 C값과의 관계를 보여주고 있다. 표로부터 알 수 있는 바와 같이, 테이블 인덱스가 3,5,7,9,11,13,15,19,21,23,25, 27,29,31인 그룹에 대해서 입력 카운터 210은 카운팅 동작을 수행하지 않는다.
Table Index |
n=4 Enties |
n=5 Enties |
n=6 Enties |
n=7 Enties |
n=8 Enties |
n=9 Enties |
n=10 Enties |
0 |
5 |
27 |
3 |
15 |
3 |
3 |
1 |
1 |
15 |
3 |
27 |
127 |
1 |
31 |
3 |
2 |
5 |
1 |
15 |
89 |
5 |
9 |
927 |
3 |
15 |
15 |
13 |
1 |
83 |
355 |
1 |
4 |
1 |
13 |
29 |
31 |
19 |
203 |
3 |
5 |
9 |
17 |
5 |
15 |
179 |
407 |
1 |
6 |
9 |
23 |
1 |
61 |
19 |
257 |
1 |
7 |
15 |
13 |
31 |
47 |
99 |
1 |
589 |
8 |
13 |
9 |
3 |
127 |
23 |
3 |
937 |
9 |
15 |
3 |
9 |
17 |
1 |
1 |
375 |
10 |
7 |
15 |
15 |
119 |
3 |
503 |
615 |
11 |
11 |
3 |
31 |
15 |
13 |
1 |
1 |
12 |
15 |
13 |
17 |
57 |
13 |
3 |
737 |
13 |
3 |
1 |
5 |
123 |
3 |
395 |
1 |
14 |
15 |
13 |
39 |
95 |
17 |
1 |
3 |
15 |
5 |
29 |
1 |
5 |
1 |
415 |
85 |
Table Index |
n=4 Enties |
n=5 Enties |
n=6 Enties |
n=7 Enties |
n=8 Enties |
n=9 Enties |
n=10 Enties |
16 |
13 |
21 |
19 |
85 |
63 |
199 |
981 |
17 |
15 |
19 |
27 |
17 |
131 |
111 |
329 |
18 |
9 |
1 |
15 |
55 |
17 |
219 |
109 |
19 |
3 |
3 |
13 |
57 |
131 |
495 |
949 |
20 |
1 |
29 |
45 |
15 |
211 |
93 |
167 |
21 |
3 |
17 |
5 |
41 |
173 |
239 |
589 |
22 |
15 |
25 |
33 |
93 |
231 |
111 |
675 |
23 |
1 |
29 |
15 |
87 |
171 |
131 |
297 |
24 |
13 |
9 |
13 |
63 |
23 |
383 |
879 |
25 |
1 |
13 |
9 |
15 |
147 |
209 |
109 |
26 |
9 |
23 |
15 |
13 |
243 |
355 |
161 |
27 |
15 |
13 |
31 |
15 |
213 |
407 |
187 |
28 |
11 |
13 |
17 |
81 |
189 |
171 |
999 |
29 |
3 |
1 |
5 |
57 |
51 |
111 |
727 |
30 |
15 |
13 |
15 |
31 |
15 |
363 |
67 |
31 |
5 |
13 |
33 |
69 |
67 |
105 |
875 |
Table Index |
n=4 Enties |
n=5 Enties |
n=6 Enties |
n=7 Enties |
n=8 Enties |
n=9 Enties |
n=10 Enties |
0 |
5 |
27 |
3 |
15 |
3 |
3 |
1 |
1 |
15 |
3 |
27 |
127 |
1 |
31 |
3 |
2 |
5 |
1 |
15 |
89 |
5 |
9 |
927 |
3 |
15 |
15 |
13 |
1 |
83 |
355 |
1 |
4 |
1 |
13 |
29 |
31 |
19 |
203 |
3 |
5 |
9 |
17 |
5 |
15 |
179 |
407 |
1 |
6 |
9 |
23 |
1 |
61 |
19 |
257 |
1 |
7 |
15 |
13 |
31 |
47 |
99 |
1 |
589 |
8 |
13 |
9 |
3 |
127 |
23 |
3 |
937 |
9 |
15 |
3 |
9 |
17 |
1 |
1 |
375 |
10 |
7 |
15 |
15 |
119 |
3 |
503 |
615 |
11 |
11 |
3 |
31 |
15 |
13 |
1 |
1 |
12 |
15 |
13 |
17 |
57 |
13 |
3 |
737 |
13 |
3 |
1 |
5 |
123 |
3 |
395 |
1 |
14 |
15 |
13 |
39 |
95 |
17 |
1 |
3 |
15 |
5 |
29 |
1 |
5 |
1 |
415 |
85 |
Table Index |
n=4 Enties |
n=5 Enties |
n=6 Enties |
n=7 Enties |
n=8 Enties |
n=9 Enties |
n=10 Enties |
16 |
13 |
21 |
19 |
85 |
63 |
199 |
981 |
17 |
15 |
19 |
27 |
17 |
131 |
111 |
329 |
18 |
9 |
1 |
15 |
55 |
17 |
219 |
109 |
19 |
3 |
3 |
13 |
57 |
131 |
495 |
949 |
20 |
1 |
29 |
45 |
15 |
211 |
93 |
167 |
21 |
3 |
17 |
5 |
41 |
173 |
239 |
589 |
22 |
15 |
25 |
33 |
93 |
231 |
111 |
675 |
23 |
1 |
29 |
15 |
87 |
171 |
131 |
297 |
24 |
13 |
9 |
13 |
63 |
23 |
383 |
879 |
25 |
1 |
13 |
9 |
15 |
147 |
209 |
109 |
26 |
9 |
23 |
15 |
13 |
243 |
355 |
161 |
27 |
15 |
13 |
31 |
15 |
213 |
407 |
187 |
28 |
11 |
13 |
17 |
81 |
189 |
171 |
999 |
29 |
3 |
1 |
5 |
57 |
51 |
111 |
727 |
30 |
15 |
13 |
15 |
31 |
15 |
363 |
67 |
31 |
5 |
13 |
33 |
69 |
67 |
105 |
875 |
이제 본 발명의 남은 문제인 터보 인터리버 크기 값에 의해 정해지는 출력 어드레스의 상위 5비트들의 값과 동일한 값을 상위 5비트들의 값으로 가지는 어드레스를 선택적으로 제어하여 일부 어드레스는 삭제시키고 나머지 어드레스를 출력 어드레스로서 발생하는 동작을 설명한다. 이러한 동작은 상기 <표 4b>의 그룹 29 및 <표 5b>의 그룹 17에 해당하는 것으로, 이 동작은 I_COUNTER 210의 J_COUNTER 214을 제어하는 동작과 관련이 있는 것이다.
다음의 <표 6> 및 <표 7>을 참조하면, 출력 어드레스의 상위 5비트들의 값과 동일한 값을 상위 5비트들의 값으로 가지는 어드레스를 발생시킬 것이냐, 삭제시킬 것이냐의 결정은 나머지 하위 n비트들의 값인 THLD의 값에 의해 결정됨을 알 수 있다. 왜냐하면, 우선 출력 어드레스중에서 상위 5비트들의 값을 제외한 나머지 n비트들의 값 이상의 값에 대응하는 값을 상위 n비트들의 값으로 가지는 입력 어드레스가 J_COUNTER 214에 의해 카운팅되지 않아야 할 값들로 결정되기 때문이다. 예를 들어, 출력 어드레스중에서 하위 n비트의 값(THLD값)이 <표 6>과 같이 10인 경우에는 10보다 큰 값을 하위 n비트의 값으로 가지는 어드레스가 삭제될 어드레스로 결정된다. 즉 ADDRESS_OUT[n-1:0] = {10,11,12,13, 14,15}인 경우의 어드레스는 삭제될 어드레스로 결정된다. 그러므로 상기 결정된 하위 n비트들의 값에 대응하는 값들을 상위 n비트의 값으로 가지는 입력 어드레스를 카운터 210은 카운팅하지 말아야 한다. 상기 결정된 하위 n비트들의 값에 대응하는 값은 J_COUNTER 214에 의해 카운팅된 n비트가 가산기 120 및 곱셈&모듈로 연산기 150에 의해 처리된 후 출력되는 값, 즉 LCS연산(함수) 처리된 값이므로, LCS 연산을 역으로 취함으로써 얻어질 수 있을 것이다. 일예로, 상기 결정된 하위 n비트들의 값 {10,11,12,13,14,15}에 대응하는 값은 {3,4,8,9,13,14}로 구해진다. 따라서 I_COUNTER 210의 J_COUNTER 214은 상기 결정된 하위 n비트들의 값 {10,11,12,13,14,15}에 대응하는 값인 J_COUNTER[n-1] = {3,4,8,9,13,14}에 대해서는 카운팅 동작을 수행하지 않아야 한다.
RS1(G_COUNTER =29) |
n=4 |
n=5 |
n=6 |
n=7 |
n=8 |
C |
3 |
1 |
5 |
57 |
51 |
THLD |
10 |
26 |
58 |
122 |
250 |
ADDRESS_OUT[n-1:0] : Discarded index |
{10,11,12, 13,14,15} |
{26,27,28, 29,30,31} |
{58,59,60, 61,62,63} |
{122,123,124, 125,126,127} |
{250,251,252,253,254,255} |
J_COUNTER[n-1:0] : Discarded index |
{3,4,8, 9,13,14} |
{25,26,27, 28,29,30} |
{11,24,37, 49,50,62} |
{73,82,91, 100,109,118} |
{4,9,14, 19,24,29} |
RS2(G_COUNTER =17) |
n=4 |
n=5 |
n=6 |
n=7 |
n=8 |
C |
|
19 |
27 |
17 |
131 |
THLD |
|
26 |
58 |
122 |
250 |
ADDRESS_OUT[n-1:0] : Discarded index |
|
{26,27,28, 29,30,31} |
{58,59,60, 61,62,63} |
{122,123,124, 125,126,127} |
{250,251,252, 253,254,255} |
J_COUNTER[n-1:0] : Discarded index |
|
{4,9,14, 19,24,29} |
{6,13,25, 32,44,51} |
{14,29,44, 59,74,89} |
{40,83,126, 169,212,253} |
상기 <표 6>은 RS 1에서 출력 어드레스의 상위 5비트들의 값(10111)과 동일한 값의 상위 비트들을 가지는 어드레스의 일부를 상기 출력 어드레스의 나머지 하위 n비트들의 값에 따라 선택적으로 삭제하는 동작을 나타내고 있다. 일예로, 터보 인터리버 크기 값이 <표 1>에 나타난 바와 같이 378인 경우에 출력 어드레스의 상위 5비트들의 값은 10111(29)이고, 나머지 n비트들의 값인 THLD값은 1010(10)이다. 이때 상기 THLD값 이상의 값인 {10,11,12,13,14,15}을 하위 n비트들의 값으로 가지는 어드레스는 삭제될 어드레스이다. 그러므로, 상기 {10,11,12,13,14,15} 각각에 대해 상관관계(LCS 역함수)를 가지는 대응하는 값 {3,4,8,9,13,14}를 상위 n비트들의 값으로 가지는 입력 어드레스가 발생되지 않도록 I_COUNTER 210의 J_COUNTER 214를 제어하면 삭제될 어드레스의 발생을 위한 입력 어드레스는 발생되지 않게 된다. 이와 같이 삭제될 어드레스의 발생을 위한 입력 어드레스가 발생되지 않으므로, I_COUNTER 210은 삭제될 어드레스를 제외한 나머지 어드레스를 출력 어드레스로서 발생하기 위한 입력 어드레스(카운팅 값)을 연속하여 카운팅하게 된다.
상기 <표 7>은 RS 2에서 출력 어드레스의 상위 5비트들의 값(10001)과 동일한 값의 상위 비트들을 가지는 어드레스의 일부를 상기 출력 어드레스의 나머지 하위 n비트들의 값에 따라 선택적으로 삭제하는 동작을 나타내고 있다. 일예로, 터보 인터리버 크기 값이 <표 1>에 나타난 바와 같이 570인 경우에 출력 어드레스의 상위 5비트들의 값은 10001(17)이고, 나머지 n비트들의 값인 THLD값은 11010(26)이다. 이때 상기 THLD값 이상의 값인 {26,27,28,29,30,31}을 하위 n비트들의 값으로 가지는 어드레스는 삭제될 어드레스이다. 그러므로, 상기 {26,27,28,29,30,31} 각각에 대해 상관관계(LCS 역함수)를 가지는 대응하는 값 {4,9,14,19,24,29}를 상위 n비트들의 값으로 가지는 입력 어드레스가 발생되지 않도록 I_COUNTER 210의 J_COUNTER 214를 제어하면 삭제될 어드레스의 발생을 위한 입력 어드레스는 발생되지 않게 된다. 이와 같이 삭제될 어드레스의 발생을 위한 입력 어드레스가 발생되지 않으므로, I_COUNTER 210은 삭제될 어드레스를 제외한 나머지 어드레스를 출력 어드레스로서 발생하기 위한 입력 어드레스(카운팅 값)을 연속하여 카운팅하게 된다.
상기 <표 6>에서 RS 1의 G_COUNTER[4:0]=29, n=4, C=3, THLD=10인 경우의 동작을 정리해보면 다음의 <표 8>과 같다. 하기의 <표 8>에서 ADDRESS_OUT[8:4]=10111(23)은 G_COUNTER[4:0] =11101(29)의 비트 반전값을 나타낸다. 따라서 어드레스가 삭제되는 경우는 J_COUNTER[3:0]∈{3,4,8,9,13,14}인 6가지 경우가 되는데, 이는 상기 <표 6>에 나타낸 결과와 동일한 결과를 의미한다. J_COUNTER[3:0]이 상기 6가지 경우에 속하면 I_COUNTER 210의 G_COUNTER 212는 +1 증가되어 다음 그룹으로 천이한다. 따라서 실제로는 그룹 29에 해당되는 인덱스는 출력되지 않고 그룹 30으로 I_COUNTER[n+4:0]이 천이된다.
J_COUNTER[3:0] |
LCS |
ADDRESS_OUT[3:0] |
ADDRESS_OUT[8:4] |
0 |
(0+1)×3 mod 16 |
3 |
10111(23) |
1 |
(1+1)×3 mod 16 |
6 |
10111(23) |
2 |
(2+1)×3 mod 16 |
9 |
10111(23) |
3 |
(3+1)×3 mod 16 |
12 * discarded |
10111(23) |
4 |
(4+1)×3 mod 16 |
15 * discarded |
10111(23) |
5 |
(5+1)×3 mod 16 |
2 |
10111(23) |
6 |
(6+1)×3 mod 16 |
5 |
10111(23) |
7 |
(7+1)×3 mod 16 |
8 |
10111(23) |
8 |
(8+1)×3 mod 16 |
11 * discarded |
10111(23) |
9 |
(9+1)×3 mod 16 |
14 * discarded |
10111(23) |
10 |
(10+1)×3 mod 16 |
1 |
10111(23) |
11 |
(11+1)×3 mod 16 |
4 |
10111(23) |
12 |
(12+1)×3 mod 16 |
7 |
10111(23) |
13 |
(13+1)×3 mod 16 |
10 * discarded |
10111(23) |
14 |
(14+1)×3 mod 16 |
13 * discarded |
10111(23) |
15 |
(15+1)×3 mod 16 |
0 |
10111(23) |
상기 <표 6>에서 RS 1의 G_COUNTER[4:0]=29, n=5, C=1, THLD=26인 경우의 동작을 정리해보면 다음의 <표 9A> 및 <표 9B>와 같다. 하기의 <표 9A> 및 <표 9B>에서 ADDRESS_OUT[8:4]=10111(23)은 G_COUNTER[4:0] =11101(29)의 비트 반전값을 나타낸다. 따라서 어드레스가 삭제되는 경우는 J_COUNTER[3:0]∈{25,26,27,28,29,30}인 6가지 경우가 되는데, 이는 상기 <표 6>에 나타낸 결과와 동일한 결과를 의미한다. J_COUNTER[3:0]이 상기 6가지 경우에 속하면 I_COUNTER 210의 G_COUNTER 212는 +1 증가되어 다음 그룹으로 천이한다. 따라서 실제로는 그룹 29에 해당되는 인덱스는 출력되지 않고 그룹 30으로 I_COUNTER[n+4:0]이 천이된다.
J_COUNTER[4:0] |
LCS |
ADDRESS_OUT[4:0] |
ADDRESS_OUT[9:5] |
0 |
(0+1)×1 mod 32 |
1 |
10111(23) |
1 |
(1+1)×1 mod 32 |
2 |
10111(23) |
2 |
(2+1)×1 mod 32 |
3 |
10111(23) |
3 |
(3+1)×1 mod 32 |
4 |
10111(23) |
4 |
(4+1)×1 mod 32 |
5 |
10111(23) |
5 |
(5+1)×1 mod 32 |
6 |
10111(23) |
6 |
(6+1)×1 mod 32 |
7 |
10111(23) |
7 |
(7+1)×1 mod 32 |
8 |
10111(23) |
8 |
(8+1)×1 mod 32 |
9 |
10111(23) |
9 |
(9+1)×1 mod 32 |
10 |
10111(23) |
10 |
(10+1)×1 mod 32 |
11 |
10111(23) |
11 |
(11+1)×1 mod 32 |
12 |
10111(23) |
12 |
(12+1)×1 mod 32 |
13 |
10111(23) |
13 |
(13+1)×1 mod 32 |
14 |
10111(23) |
14 |
(14+1)×1 mod 32 |
15 |
10111(23) |
15 |
(15+1)×1 mod 32 |
16 |
10111(23) |
J_COUNTER[3:0] |
LCS |
ADDRESS_OUT[3:0] |
ADDRESS_OUT[8:4] |
16 |
(16+1)×1 mod 32 |
17 |
10111(23) |
17 |
(17+1)×1 mod 32 |
18 |
10111(23) |
18 |
(18+1)×1 mod 32 |
19 |
10111(23) |
19 |
(19+1)×1 mod 32 |
20 |
10111(23) |
20 |
(20+1)×1 mod 32 |
21 |
10111(23) |
21 |
(21+1)×1 mod 32 |
22 |
10111(23) |
22 |
(22+1)×1 mod 32 |
23 |
10111(23) |
23 |
(23+1)×1 mod 32 |
24 |
10111(23) |
24 |
(24+1)×1 mod 32 |
25 |
10111(23) |
25 |
(25+1)×1 mod 32 |
26 * discarded |
10111(23) |
26 |
(26+1)×1 mod 32 |
27 * discarded |
10111(23) |
27 |
(27+1)×1 mod 32 |
28 * discarded |
10111(23) |
28 |
(28+1)×1 mod 32 |
29 * discarded |
10111(23) |
29 |
(29+1)×1 mod 32 |
30 * discarded |
10111(23) |
30 |
(30+1)×1 mod 32 |
31 * discarded |
10111(23) |
31 |
(31+1)×1 mod 32 |
0 |
10111(23) |
도 5 및 도 6은 본 발명의 제1 및 제2실시예에 따른 인터리빙 동작의 처리흐름을 보여주는 도면이다. 상기 도 5는 RS 1의 경우에 수행되는 인터리빙 동작의 처리흐름을 보여주는 도면이고, 상기 도 6은 RS 2의 경우에 수행되는 인터리빙 동작의 처리흐름을 보여주는 도면이다. 상기 처리흐름에 따른 동작은 도 4에 도시된 바와 같이 G_COUNTER 212의 카운팅 값과 J_COUNTER 214의 카운팅 값을 입력하는 제어부 200에 의해 제어된다. 초기 상태에서 상기 G_COUNTER 212 및 J_COUNTER 214는 리셋 상태로 있게 된다.
도 5를 참조하면, 제어부 200은 G_COUNTER 212의 카운팅 값이 상기 <수학식 2>에 나타낸 G_RS1의 시퀀스에 해당하는 값인 것으로 402단계에서 판단되는 경우, 410단계에서 G_COUNTER 212의 카운팅 값을 증가시키면서 I_COUNTER 210에 의해 카운팅되는 값을 406단계에서 랜덤화 및 비트반전하여 결과적으로 인터리빙을 위한 어드레스로 출력한다. 상기 G_RS1의 시퀀스에 해당하지 않는 값이 G_COUNTER 212에 의해 카운팅되는 것으로 402단계에서 판단되는 경우, 제어부 200은 404단계 및 406단계를 수행하지 않고 408단계로 바로 진행함으로써 삭제될 어드레스에 대응하는 입력 어드레스의 발생동작이 수행되지 않도록 한다.
이러한 출력 어드레스의 발생 동작을 수행하는 도중에 404단계에서 G_COUNTER 212의 카운팅 값이 29이고 J_COUNTER 214의 카운팅 값이 <표 6>에 나타낸 바와 같이 삭제값인 것으로 판단되는 경우에는 출력 어드레스가 부분적으로 삭제될 어드레스에 해당하므로, 제어부 200은 412단계에서 G_COUNTER 212를 리셋시키고, J_COUNTER 214의 카운팅 값을 증가시키면서 출력 어드레스가 삭제될 어드레스인지 여부를 판단한다. 출력 어드레스가 삭제될 어드레스에 해당하는 값을 J_COUNTER 214가 카운팅하는 것으로 404단계에서 판단되는 경우, 제어부 200은 G_RS1의 시퀀스에 해당하지 않는 값이 G_COUNTER 212에 의해 카운팅되는 것으로 402단계에서 판단되는 경우와 마찬가지로 406단계의 동작을 수행하지 않는다.
그러나 J_COUNTER 214의 카운팅 값이 출력 어드레스가 삭제될 어드레스가 아님을 나타내는 것으로 404단계에서 판단되는 경우, 제어부 200은 406단계를 수행함으로써 I_COUNTER 210에 카운팅되고, 랜덤화 및 비트반전된 어드레스를 인터리빙 어드레스로 출력한다.
위와 같은 동작은 G_COUNTER 212의 카운팅 값이 31이고 J_COUNTER 214의 카운팅 값이 모두 1인 것으로 414단계에서 판단될 때까지 반복적으로 수행되게 된다.
도 6을 참조하면, 제어부 200은 G_COUNTER 212의 카운팅 값이 상기 <수학식 4>에 나타낸 G_RS2의 시퀀스에 해당하는 값인 것으로 502단계에서 판단되는 경우, 510단계에서 G_COUNTER 212의 카운팅 값을 증가시키면서 I_COUNTER 210에 의해 카운팅되는 값으로 입력 어드레스를 구성함으로써 506단계에서 랜덤화 및 비트반전되어 결과적으로 인터리빙을 위한 어드레스가 출력되도록 한다. 상기 G_RS1의 시퀀스에 해당하지 않는 값이 G_COUNTER 212에 의해 카운팅되는 것으로 502단계에서 판단되는 경우, 제어부 200은 504단계 및 506단계를 수행하지 않고 508단계로 바로 진행함으로써 삭제될 어드레스에 대응하는 입력 어드레스의 발생동작이 수행되지 않도록 한다.
이러한 출력 어드레스의 발생 동작을 수행하는 도중에 504단계에서 G_COUNTER 212의 카운팅 값이 17이고 J_COUNTER 214의 카운팅 값이 <표 7>에 나타낸 바와 같이 삭제값인 것으로 판단되는 경우에는 출력 어드레스가 부분적으로 삭제될 어드레스에 해당하므로, 제어부 200은 512단계에서 G_COUNTER 212를 리셋시키고, J_COUNTER 214의 카운팅 값을 증가시키면서 출력 어드레스가 삭제될 어드레스인지 여부를 판단한다. 출력 어드레스가 삭제될 어드레스에 해당하는 값을 J_COUNTER 214가 카운팅하는 것으로 504단계에서 판단되는 경우, 제어부 200은 G_RS2의 시퀀스에 해당하지 않는 값이 G_COUNTER 212에 의해 카운팅되는 것으로 502단계에서 판단되는 경우와 마찬가지로 506단계의 동작을 수행하지 않는다.
그러나 J_COUNTER 214의 카운팅 값이 출력 어드레스가 삭제될 어드레스가 아님을 나타내는 것으로 504단계에서 판단되는 경우, 제어부 200은 506단계를 수행함으로써 I_COUNTER 210에 카운팅된 후 비트반전 및 랜덤화된 어드레스를 인터리빙을 위한 어드레스로서 발생되도록 한다.
위와 같은 동작은 G_COUNTER 212의 카운팅 값이 31이고 J_COUNTER 214의 카운팅 값이 모두 1인 것으로 514단계에서 판단될 때까지 반복적으로 수행되게 된다.