이하 본 발명의 바람직한 실시 예를 첨부된 도면의 참조와 함께 상세히 설명한다.
우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 동일 부호를 가지도록 하였다. 또한 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우 그 상세한 설명은 생략한다.
도3은 본 발명의 제1 실시 예에 따른 인터리버의 구성을 나타낸 도면이다. 이하의 본 발명을 설명함에 있어서, 행 어드레스는 행의 어드레스를 나타내고 칼럼 어드레스는 열의 어드레스를 나타내며, 카운트 어드레스는 어드레스가 하나씩 증가하는 어드레스로서, 일반적인 어드레스 생성 알고리즘에 의해 생성되는 것이므로 그 상세한 설명을 생략한다.
도3에서 참조부호 300은 행 내 교환부이고, 320은 행 간 교환부이며, 330은 프루닝부이다. 상기 행 내 교환부(300)는 초기 값으로 '0'들의 값을 갖고 행 어드레스를 입력받아 해당 행 어드레스의 값을 출력하고 소정의 값을 입력받아 상기 행 어드레스의 값을 갱신하는 버퍼(301)와, 상기 파라미터에 의해 결정된 베이스 시퀀스를 구비하며 상기 버퍼링되었던 행 어드레스를 입력시 상기 베이스 시퀀스에 의한 행 내 교환을 수행하여 출력하는 베이스 시퀀스부(303)와, 입력되는 행 어드레스들에 대한 Reduce_q 값들을 갖는 테이블을 구비하고 상기 행 어드레스를 입력받 고 상기 행 어드레스에 해당하는 감소 큐(Reduce_q) 값을 출력하는 감소 q 생성부(305)와, 상기 버퍼(301)에서 출력되는 행 어드레스와 상기 감소 q 생성부(305)로부터 출력되는 Reduce_q 값을 입력받아 가산하는 가산기(307)와, 상기 가산기(307)에서 출력되는 A의 값과 p-1의 값을 갖는 B의 값을 입력받아 비교하고 상기 A가 B보다 작거나 같으면 '0'의 값을 출력하고 A가 B보다 크면 '1'의 값을 출력하는 비교기(309)와, p-1의 값과 '0'의 값을 입력받고 상기 비교기에서 출력되는 값을 선택신호로 입력받아 상기 p-1 또는 '0' 중 하나를 선택하는 다중화기(313:M1)와, 상기 가산기(307)에서 입력되는 A의 값을 상기 다중화기(313)에서 출력되는 값으로 감산하여 상기 버퍼(301)로 출력하는 감산기(311)로 구성된다.
상기 q 감소부(305)는 상술한 바와 같이 미리 입력되는 각 어드레스에 대한 Reduce_q 값들을 가지고 있을 수도 있고, 이하의 표5와 같이 q값과 p값들을 정의하는 테이블을 구비하여 이하의 수학식 5에 의해서 직접 계산될 수도 있다. 그러나 본 발명에서는 테이블화 하는 것이 연산량을 줄일 수 있으므로, 테이블화하여 구성한다.
reduced_q = (q)mod(p-1)
상기 q는 상기 표 4에서 정의되는 값이며, p는 교환을 수행하기 위한 파라미터이다.
예를 들면, p 값이 17이고 q값이 71이면 reduced_q = (71)mod(17) = 7이다. 상기와 같이 수학식 5에서 q 값을 모듈로 연산을 수행하여 감소시킬 수 있는 이유는 다음과 같다.
상기 수학식 4에서 Cj(i) = C([i * q(j)]mod (p-1) = c(A(i,j))이라 하면, 이하의 수학식 6과 같이 유도할 수 있음을 알 수 있다.
A(i,j) = (i*q(j))mod(p-1)
= (q(0) + q(1) +....+q(j))mod(p-1)
=[q(j)mod(p-1) +(q(j))mod(p-1)+...+q(j)mod(p-1)]mod(p-1)
= [A(i-1,j)+(q(j))mod(p-1)]mod(p-1)
= [A(i-1,j)+reduced_q(j)]mod(p-1)
상기 수학식 6에서 reduced_q는 0 ~(p-2)까지의 값을 갖는다. 그리고 상기 A(i-1, j)는 점화식이므로 0~(p-2)까지의 값을 갖는다. 상기 A(i,j)가 0~(p-2)까지의 값을 갖도록 하려면 상기 수학식 6을 다음과 같이 2가지의 경우로 구분할 수 있다.
첫 번째는 A(i-1,j)+reduced_q(j)가 (p-1)보다 작은 경우이고, 두 번째는 A(i-1,j)+reduced_q(j)가 (p-1)보다 같거나 큰 경우이다.
상기 첫 번째의 경우, 상기 A(i,j)는 모듈로 연산의 특성에 의해 A(i-1,j)+reduced_q(j)가 성립하고, 두 번째 경우도, 상기 A(i,j)는 A(i-1,j)+reduced_q(j)-(p-1)로 하면 상기 수학식 6과 일치한다.
이하의 표 6은 선택신호가 0일 경우 어드레스들과 상기 어드레스들에 각각 대응되는 파라미터들, 즉 p값과 g0값을 정의하고, 상기 어드레스들과 상기 어드레스들 각각에 정의된 파라미터들에 대응되는 Reduced_q값들을 나타낸 것이고 선택신호가 1일 경우는 표 7의 R10을 이용한다.
상기 표 6의 테이블은 상기 감소 q 생성부(305)가 가지고 있다. 도 4는 상기 감소 q 생성부(305)의 상세 구성도를 나타낸 도면으로서, 이하 도4를 참조하여 상기 감소 q 생성부(305)의 구체적인 구성 및 동작을 설명한다.
address |
p |
G_0 |
R10 |
N/A |
53 |
2 |
1, 7, 11, 19, 23, 29, 31, 37, 41 |
상기 감소 q 생성부(305)는 p값 저장부(501)와 비교기(503)와 제1스위치(504)와 제2스위치(506)와 g_0값을 저장부(505)와 Reduced_q 값 저장부(507)와 R10 저장부(509)와 다중화부(511)와 감소 q 레지스터부(513)로 구성된다. 상기 p값 저장부(501)는 어드레스들 각각에 대응하는 p값들을 갖는 테이블을 가지고 있으며, 어드레스를 입력받고 상기 어드레스에 대한 p값을 출력한다. 비교기(503)는 상기 p값 저장부(501)로부터 출력되는 p값과 기준값을 입력받아 비교한다. 상기 p값을 X라 하고, 기준값을 Y라 하면 상기 비교기(503)는 상기 X가 상기 Y와 같거나 큰지를 비교한다. 상기 X가 Y보다 같거나 크다면 상기 제1스위치(504)를 상단으로 연결하여 p값을 출력하고 제2스위치(506)를 하단으로 연결하여 상기 어드레스 카운트값을 g_0 저장부(505)와 reduced_q 저장부(507)로 출력한다, 그러나 상기 X가 Y보다 작다면 어드레스 카운트값을 하나씩 증가한다. 상기 g_0저장부(505)는 어드레스 카운트값들 각각에 대한 g_0값을 갖는 테이블을 가지고 있으며, 상기 제2스위치(506)를 통해 어드레스 카운트가 입력되면 상기 어드레스 카운트값에 해당하는 g_0값을 출력한다. 상기 reduced_q 값 저장부(507)는 어드레스 카운트값들 각각에 대응하는 reduced_q 값을 갖는 테이블을 가지고 있으며, 상기 제2 스위치부(506)를 통해 어드레스 카운트값이 입력되면 상기 어드레스 카운트값에 해당하는 reduced_q 값을 출력한다. 상기 R10 저장부(509)는 고정된 R값을 저장하고 있고 고정된 R값을 출력한다. 상기 R값은 본 발명에서 10을 사용하였고, 인터리버 크기 K가 160<K<200 일 경우이다. 이는 R=10이어도 R10을 사용 못하고 reduced_q 값이 사용되는 K값이 있을 수 있음을 의미한다. 다중화부(511)는 선택신호(select)를 입력받아 상기 reduced_q 저장부(507)와 R10 저장부(509)로부터 reduced_q 값과 R값 중 하나를 선택하여 감소 q 레지스터(513)에 저장한다.
도3에서 베이스 시퀀스 생성부(303)는 다중화기(401)와 곱셈기(403), 모듈로 연산부(405)와 베이스 시퀀스 레지스터(407)로 구성된다. 상기 다중화기(401)는 1의 값과 소정의 피드백 값을 입력받고, 리셋(reset)신호에 의해 상기 1 또는 피드백 값을 선택하여 출력한다. 구체적으로, 상기 리셋 신호가 인에이블 신호이면 상기 1의 값을 선택하여 출력하고, 디스에이블 신호이면 피드백 값을 출력한다. 상기 다중화기(401)의 출력은 상기 곱셈기(403)로 입력한다. 상기 곱셈기(403)는 상기 다중화기(401)의 출력과 g_0의 값을 곱하여 모듈로 연산부(405)로 출력한다. 모듈로 연산부(405)는 상기 곱셈기(403)의 출력값과 p값을 입력받고 상기 p값을 인수로 상기 수학식 2에 의한 연산을 수행하고, 상기 연산 결과를 출력한다. 상기 연산 결과 값이 베이스 시퀀스이다. 상기 베이스 시퀀스는 피드백 하여 상기 다중화기(401)로 입력하고 베이스 시퀀스 레지스터(407)로 입력한다. 상기 베이스 시퀀스 레지스터(407)는 상기 베이스 시퀀스를 저장하고, 상기 버퍼(301)로부터 입력되는 값과 상기 카운트 어드레스의 값을 곱하여 출력한다. 상기와 같이 베이스 시퀀스와 상기 카운트값을 곱함으로써 행 내 교환이 이루어진다. 상기 어드레스 카운트값은 상기 도3의 버퍼로부터 입력되는 값으로, 상기 베이스 시퀀스 값이 저장된 후에 하나씩 증가한다. 상기 베이스 시퀀스 레지스터(407), 즉 상기 도3의 베이스 시퀀스 생성부(303)에서 출력되는 베이스 시퀀스는 행간 교환부(320)로 입력한다.
상기 행간 교환부(320)는 다중화기(321)와 가산기(323)와 multiplied_PIP 생성부(325)로 구성된다. 상기 다중화기(321)는 상기 베이스 시퀀스 생성부(303)에서 출력되는 베이스 시퀀스와 0, 1 및 p 값을 입력받고 2비트의 선택신호를 입력받아 상기 베이스 시퀀스, 0, 1 및 p 값 중 하나를 선택하여 출력한다. 상기 다중화기(321)는 상기 수학식 4의 조건에 따른 선택신호를 입력받아 상기 값들 중 하나를 선택한다. 이는 상기 C 값에 따라 상기 베이스 시퀀스가 각 행을 채우지 못할 경우가 발생하기 때문이다. 상기 수학식 4에서와 같이 C가 p-1의 값을 가질 때는 행의 첫 번째 열에 1을 선택하게 하고, 이후의 열에서는 상기 베이스 시퀀스의 값을 선택하여 출력하고, C가 p일 경우에 상기 C가 p-1일 경우보다 각 행의 마지막 열이 하나씩 남음으로 상기 각 행들의 마지막 열에서 0의 값을 선택하여 출력한다. 그리고 C가 p+1일 경우는 상기 C가 p+1일 경우 보다 각 행의 마지막 열이 남음으로 상기 각 행의 마지막 열을 p값으로 채우기 위해 상기 p값을 선택하여 출력한다.
상기 다중화기(321)에서 출력되는 값은 가산기(323)로 입력한다. multiplied_PIP 생성부(325)는 로우 어드레스를 입력받고 상기 표 3의 선택신호들(A, B, C, D; 이하 "0", "1", "2", "3"으로 표현함)에 의해 multiplied_PIP 값 선택하여 출력한다.
도 5는 상기 multiplied_PIP 생성부(325)의 구체적인 구성을 나타낸 도면이다. 이하 도5를 참조하여 구체적으로 설명한다.
상기 multiplied_PIP(325)는 상기 각 선택신호에 대한 PIP값들을 저장하는 PIP 저장부(601)와 곱셈기(603)와 감산기(605)와 multiplied_PIP 레지스터(607)로 구성된다.
상기 PIP 저장부(601)는 선택신호와 리드 어드레스 카운터값을 입력받고 상기 선택신호에 대한 PIP값을 상기 리드 어드레스 카운터 위치로부터 읽어 출력한다. 곱셈기(603)는 상기 PIP 저장부(601)의 출력값을 입력받고 C값과 곱하여 출력한다. 가산기(605)는 상기 곱셈기(603)의 출력값과 마이너스 모드 값을 입력받고, 상기 출력값을 모드값으로 감산하여 출력한다. 상기 마이너스 모드값은 상기 C값과 p-1값에 의해 출력되는 값으로 상기 C값과 p-1값이 같을 경우 1을 출력하고 다를 경우에는 0을 출력한다.
상기 감산기(605)의 출력값은 multiplied_PIP 레지스터(607)로 입력하고, 상기 multiplied_PIP(607)은 라이트 어드레스 카운트값과 리드 어드레스 로우 값을 입력받고, 상기 라이트 어드레스 카운트값의 위치에 상기 감산기(605)의 출력값을 저장하고 상기 리드 어드레스 로우 값 입력 시 상기 리드 어드레스 로우 값 위치로부터 PIP 값을 읽어 도3의 가산기(323)로 출력한다.
도3의 가산기(323)는 도3의 다중화기(321)의 출력값과 상기 multiplied_PIP 값을 가산하여 출력한다. 프루닝부(331)는 상기 가산기(323)의 출력값과 인터리버 크기 K와 비교하여 작으면 상기 가산기의 출력값을 출력하고, 크면 출력하지 않는다.
도7은 본 발명의 제2실시 예에 따른 인터리버의 구조를 나타낸 도면으로서, 상술한 도3의 행 내 교환부(300)의 구성만 다르게 구성한다. 제2실시 예에 따른 본 발명은 비교기(703)와 다중화기(705) 그리고 감산기(707)의 위치만을 변경되었다.
도8은 상기 도3의 다중화기(321) 및 도7의 다중화기(713)로 입력되는 선택신호를 생성하기 위한 선택신호 생성기를 도시한 도면이다.
도8의 로우(low)와 칼럼(Column)은 2차원 매트릭스의 행과 열의 값이다. 변경모드(exchange_mode)는 상기 수학식 4의 변경을 위해 필요한 신호이다.
비교기(801)는 칼럼과 0이 같은지를 비교하고 같으면 1의 값을, 다르면 0의 값을 출력한다. 비교기(305)는 로우값과 0의 값이 같은지를 비교하여 같으면 1의 값을 출력하고 다르면 0의 값을 출력한다. 비교기(809)는 칼럼 값과 p의 값이 같은지를 비교하고, 같으면 1의 값을, 다르면 0의 값을 출력한다. 비교기(813)는 칼럼 값과 p-1의 값이 같은지를 비교하고 같으면 1의 값을 출력하고 다르면 0의 값을 출력한다. 앤드 게이트(803)는 상기 비교기(801)와 비교기(805)의 출력값과 변경모드 값을 입력받아 앤드 게이팅하여 출력한다. 앤드 게이트(807)는 상기 비교기(805)와 비교기(809)의 출력값과 변경 모드 값을 입력받아 앤드 게이팅하여 출력한다. 앤드 게이트(811)는 상기 앤드 게이트(807)의 출력값과 비교기(809)의 출력값을 앤드 게이팅하여 출력한다. 상기 앤드 게이트(803)의 출력, 상기 앤드 게이트(807)의 출력, 상기 앤드 게이트(811)의 출력 및 비교기(813)의 출력값이 선택신호가 된다. 예를 들면, 칼럼과 로우가 0이고 변경 모드이면, p값을 출력한다. 그리고 칼럼이 p이고 로우가 0이고 변경모드이면 1값을 출력한다. 칼럼이 p이고 변경모드가 아니거나 로우 값이 0이 아니면 p의 값을 출력한다. 그리고 칼럼이 p-1이면 0의 값을 출력한다. 이를 이하의 표 8과 같이 나타낼 수 있다.
select(abcd) |
output |
0000 |
베이스 시퀀스 |
1000 |
p |
0100 |
1 |
0010 |
p |
0001 |
0 |
도9는 상기 선택신호 생성기(327)로 입력되는 변경모드값을 생성하기 위한 변경모드 신호 생성기(329)의 구성을 나타낸 것이다.
상기 변경 모드 신호 생성기(329)는 상기 R값과 C값을 곱하여 출력하는 곱셈기(901)와, 상기 곱셈기(901)의 출력값과 인터리버 크기 K를 비교하고 같을 경우 1을 출력하고 다른 경우 0을 출력하는 비교기(903)와, 상기 C와 p+1의 값을 입력받아 같은지를 비교하고 같으면 1의 값을, 다르면 0의 값을 출력하는 비교기(905)와 상기 비교기(903)와 비교기(905)의 출력값을 입력받아 앤드 게이팅하여 변경모드 신호를 출력하는 앤드 게이트(907)로 구성된다.
도10은 본 발명의 제1실시 예 및 제2실시 예에 따른 구성들에 의해 수행되는 인터리빙 방법을 나타내 흐름도이다.
도 10에서 1001, 1003, 1005는 상기 도2의 200단계와 203단계에 해당하는 과정이다. 즉, 본 발명에 따라 적용되는 파라미터를 찾는 과정이다. 상기 1001, 1003 및 1005단계에서 파라미터들이 결정되면 1005단계에서 상기 결정된 C값과 p-1값에 의해 현재 모드가 마이너스 모드인지를 판단한다. 즉 상기 C값이 p-1값과 같을 경우 마이너스 모드로 결정된다. 상기 마이너스 모드인지의 여부가 판단되면 1009단계에서 multiplied_PIP를 생성한다. 상기 multiplied_PIP가 생성되면 1013단계로 진행하여 파라미터 p값과 g_0값에 의해 reduced_q값을 구하고 1015단계에서 베이스 시퀀스를 생성한다. 상기 베이스 시퀀스가 생성되면 1017단계로 진행하여 상기 reduced_q값에 의해 행 내 교환을 수행하고, 상기 베이스 시퀀스에 의해 행간 교환을 수행한다. 상기 교환이 수행된 후에 프루닝을 수행하고 종료한다.
상술한 과정을 다음과 같은 일 예를 들어 설명한다.
첫 번째로, 인터리버 크기 K가 321이고, 상기 수학식 1과 표 1에 의해 R=20, C=17, p=17이 결정된다.
두 번째로, 상기 p가 17임으로 상기 표 2의 테이블로부터 g_0은 3이다. 그러므로 상기 g_0과 p값을 상기 수학식 2에 대입하면 이하의 수학식 7로 나타내어지므로 베이스 시퀀스는 표 9로 나타내어진다.
c(0)= 1
c(i)=[3*c(i-1)]mod 17
i |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
C(i) |
1 |
3 |
9 |
10 |
13 |
5 |
15 |
11 |
16 |
14 |
8 |
7 |
4 |
12 |
2 |
6 |
그리고 베이스 시퀀스 qj는 상기 수학식 3의 조건에 의해 이하 표10과 같이 결정된다.
j |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
q(j) |
1 |
7 |
11 |
13 |
17 |
19 |
23 |
29 |
31 |
37 |
41 |
43 |
47 |
53 |
59 |
61 |
67 |
71 |
73 |
79 |
상기 표 10과 같이 베이스 시퀀스 q(j)를 상기 수학식 5를 사용하여 reduced_q를 생성하면, 이하의 표 11과 같이 나타내어진다.
j |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
Reduced_q(j) |
1 |
7 |
11 |
13 |
1 |
3 |
7 |
13 |
15 |
5 |
9 |
11 |
15 |
5 |
11 |
13 |
3 |
7 |
9 |
15 |
C=p인 경우 Intra-row permutation을 상기 reduced_q(j)인 base sequence를 상기 수학식 4에 대입하면, 즉 cj(i) = c ([i x q(j)]mod (16) ) (i=1,2, 15), cj(16) = 0이면, 이하의 표12와 같이 행 내 교환을 수행한다.
세 번째로, K=321이므로 교환 패턴이 A형인 경우 행간 교환(inter-row permutation=row-address offset permutation)을 수행하면 이하의 표13과 같이 interleaver index가 생성된다(생성 된 interleaver의 index값은 각 row에 offset값을 더한 후의 값을 표시하였다. 예를 들면 C=17이므로 첫째 줄의 경우 A의 첫 번 째 값이 19이므로 19*17=323값을 위의 값에 더하고, 둘 째줄의 경우 A의 둘째값이 9이므로 9*17=153을 더하면 아래와 같다). 다음 table을column by column 으로 읽으면서 K-1(0부터 index가 생성되므로)보다 큰 숫자가 나오면 무시하고 다음을 읽으면 된다.
즉 154,239,69,?,164,245,?.,255,187
A={19,9,14,4,0,2,5,7,12,18,10,8,13,17,3,1,16,6,15,11}
Case By Case 비교
아래는 R,p값이 동일할 때 C=p+1인 경우(Case-A)와 C=p인 경우(Case-B)와 C=p-1인 경우(Case-C)로 나누어서 하는 경우를 비교한 것이다.