상기 목적을 달성하기 위한 본 발명은, 4 비트의 필터 입력 데이터에 대해 8 비트의 필터 출력 데이터를 출력하는 108 탭, 1:4 인터폴레이션 유한 임펄스 응답 필터 장치에 있어서, 2의 보수 형태인 상기 4 비트의 필터 입력 데이터를 단일 비트화하고, 제1 클럭 신호에 응답하여 단일 비트화된 입력 데이터를 시프트한 후 저장하기 위한 4개의 27비트 시프트 및 저장 수단; 상기 제1 클럭 신호 및 제2 클럭 신호에 응답하여 상기 4개의 27 비트 시프트 및 저장 수단에 저장된 입력 데이터 중 하나를 선택하기 위한 제1 선택 수단: 상기 제1 선택 수단에서 선택된 입력 데이터에 응답하여 다수의 필터 계수 그룹 각각에 대응되는 룩업 테이블의 어드레스를 생성하기 위한 어드레스 생성 수단; 상기 어드레스 생성 수단에서 생성된 어드레스를 응답하여 각 필터 계수 그룹의 필터 출력을 생성하기 위한 제1 내지 제4 룩업 테이블 그룹; 상기 제1 내지 제4 룩업 테이블 그룹으로부터 각각 병렬로 출력되는 상기 필터 계수 그룹의 필터 출력을 시프트하고, 계수 비트수만큼 적산하기 위한 4개의 적산 수단; 및 상기 4개의 적산 수단 각각으로부터의 출력을 각 필터 계수 그룹 별로 직렬 변환하기 위한 제2 선택 수단을 포함하여 이루어진다.
또한 본 발명의 유한 임펄스 응답 필터 장치는 다비트의 필터 입력 데이터를 단일 비트화하고, 다수의 클럭신호에 응답하여 단일 비트화된 입력 데이터를 시프트저장한 후 순차적으로 출력하는 쉬프트레지스터및선택기; 상기 쉬프트레지스터및선택기로부터의 출력에 응답하여 다수의 필터 계수 그룹 각각에 대응되는 룩업 테이블의 어드레스를 생성하기 위한 어드레스생성수단; 상기 어드레스생성수단에서 생성된 어드레스에 응답하여 각 필터 계수 그룹의 필터 출력을 생성하기 위한 다수의 룩업테이블그룹; 상기 룩업테이블그룹으로부터 각각 병렬로 출력되는 상기 필터 계수 그룹의 필터 출력을 시프트하고, 계수 비트수만큼 적산하기 위한 다수의 적산수단; 및 상기 적산수단 각각으로부터의 출력을 각 필터 계수 그룹 별로 직렬 변환하여 출력하기 위한 그룹선택수단을 포함하여 이루어짐을 특징으로 한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부된 도면을 참조하여 설명하기로 한다.
먼저, 본 실시예를 간략히 요약하면, 본 실시예에서는 승산기를 사용하지 않는 멀티 비트 입력의 1:4 인터폴레이션 FIR 필터를 제안하고 있으며, 이를 위해 2의 보수 형태의 M 비트 입력을 M 개의 단일 비트로 변환하고, 하나의 독립된 필터에서 다수 개의 단일 비트 입력 1:4 인터폴레이션 FIR 필터 연산을 동작 주파수의 증가 없이 동시에 처리하며, 이들을 각각 계수 그룹별로 적산함으로써 최종적으로 4개의 필터 출력 값을 출력시키는 구성을 가진다. 또한, 승산기를 사용하지 않고 룩업 테이블을 필터 계수의 대칭성 및 룩업 테이블 내의 대칭성을 이용하여 종래의 룩업 테이블 사용량보다 훨씬 작은 크기로 구현한다.
도 3은 본 발명의 일실시예에 따른 승산기를 사용하지 않는 108 탭 1:4 인터폴레이션 FIR 필터의 구성도이다.
도 3에 도시한 바와 같이, 본 발명의 FIR 필터는 2의 보수 형태인 4비트 필터 입력(FI[3:0])을 단일 비트화한 후 클럭 신호(ck1)에 응답하여 이를 시프트 및 저장하고, 저장된 입력 데이터 중 하나를 클럭 신호(ck1, ck2)에 응답하여 선택하기 위한 입력 시프트 레지스터 및 선택기(100), 입력 시프트 레지스터 및선택기(100)로부터 출력되는 선택된 입력 데이터(A[26:0])에 응답하여 각 계수 그룹의 룩업 테이블에 맞게 어드레스를 생성하는 어드레스 생성기(200), 어드레스 생성기(200)로부터 출력되는 해당 그룹의 어드레스를 각기 입력받아 어드레스에 해당되는 필터 출력을 그룹별로 룩업 테이블에 의하여 생성하고 생성된 필터 출력을 연산하는 룩업 테이블 그룹0(300), 룩업 테이블 그룹3(400), 룩업 테이블 그룹1(500) 및 룩업 테이블 그룹2(600), 각 계수 그룹별로 출력되는 결과들을 입력 비트수 만큼 시프트 라이트하면서 적산하기 위한 적산기 그룹0(700), 적산기 그룹3(800), 적산기 그룹1(900) 및 적산기 그룹2(1000), 그리고 제어 신호(FO_SEL[1:0])에 응답하여 적산기 그룹 각각의 출력을 직렬화하여 출력(FO[7:0])하기 위한 4 ×1 멀티플렉서(MUX)(1100)로 이루어진다.
먼저, 본 발명의 계수 어드레스 분할 및 룩업 테이블의 구성에 대해 살펴본다.
도 4는 본 발명에 따른 계수 어드레스 분할 및 룩업 테이블의 일실시 구성도를 개념적으로 도시한 도면으로서, 앞서의 가정과 같이 필터의 탭수가 108탭이고, 1:4 인터폴레이션 필터인 경우에 대한 것이다.
도 4를 참조하면, 필터 계수의 0 ~ 53과 54 ~ 107의 좌우 대칭성을 활용하고, 룩업 테이블의 크기를 줄이기 위해 108 탭의 계수를 아래 수학식 1과 같이 5 부분으로 나누었다.
LUT_0 = {C0, C1, C2, C3, …, C22, C23} (24개 계수)
LUT_1 = {C24, C25, C26, …, C46, C47} (24개 계수)
LUT_C = {C48, C49, C50, …, C58, C59} (12개 계수)
LUT_2 = {C60, C61, C62, …, C82, C83} (24개 계수)
LUT_3 = {C84, C85, C86, …, C106, C107} (24개 계수)
상기 수학식 1에서 LUT_0과 LUT_3, LUT_1과 LUT_2는 각각, 계수의 좌우 대칭성 때문에 같은 계수들을 가지고, LUT_C의 12개 계수는 4로 나눌 경우 3이 되어 계수의 좌우 대칭성을 이용하지 않는 것이 더욱 회로를 줄일 수 있다. 따라서, 이러한 5개의 계수 부분은 1:4 인터폴레이션 필터에 의하여 LUT_0은 LUT0_0 ~ LUT3_0의 필터 계수 그룹으로, LUT_1은 LUT0_1 ~ LUT3_1의 필터 계수 그룹으로, LUT_C는 LUT0_C ~ LUT3_C의 필터 계수 그룹으로, LUT_2는 LUT0_2 ~ LUT3_2의 필터 계수 그룹으로, LUT_3은 LUT0_3 ~ LUT3_3의 필터 계수 그룹으로 각각 나누어진다. 그러나, 여기서 모든 필터 계수 그룹에 대한 룩업 테이블을 구현하지 않고, 상기한 바와 같은 계수의 좌우 대칭성을 이용하여 LUT_2 부분의 LUT0_2 ~ LUT3_2 필터 계수 그룹과 LUT_3부분의 LUT0_3 ~ LUT3_3 필터 계수 그룹은 구현하지 않고 입력되는 어드레스를 변환하여 LUT_0부분과 LUT_1 부분을 두 번 액세스함으로써 룩업 테이블의 양을 반으로 줄인다.
구체적인 룩업 테이블 내의 대칭성을 LUT0_0 필터 계수의 경우를 예로 들어설명하면 아래와 같다.
LUT0_0은 C0, C4, C8, C12, C16, C20 의 6개 계수로 구성되어 있다. 입력으로 '0'이 들어올 경우 + Cn, '1'이 들어올 경우 - Cn를 취하면 입력 6 비트의 64가지 상태에 따라 아래 표 1과 같은 룩업 테이블 값을 가진다.
어드레스 |
룩업 테이블 출력값 |
000000 |
+ C0 + C4 + C8 + C12 + C16 + C20 |
000001 |
+ C0 + C4 + C8 + C12 + C16 - C20 |
... |
... |
111110 |
- C0 - C4 - C8 - C12 - C16 + C20 |
111111 |
- C0 - C4 - C8 - C12 - C16 - C20 |
상기 표 1에서 처음 값과 마지막 값은 부호만 반대이고, 크기는 같은 값을 가진다. 즉, 64개의 룩업 테이블 값 중에서 앞의 32개의 값과 뒤의 32개의 값은 부호만 반대 일뿐 같은 값을 가지는 대칭이다. 따라서, LUT0_0의 룩업 테이블의 개수는 26개가 아닌 25로 구현되고, 입력 비트의 최상위 비트가 '0'일 경우 룩업 테이블 값을 그냥 출력하고, '1'일 경우 부호를 반전하여 출력함으로써 룩업 테이블의 수를 반으로 줄일 수 있다.
한편, 도 4에서 입력 시프트 레지스터의 출력은 27 비트, A[26:0]으로 표시되며, A[0]이 제일 처음에 입력된 비트이고, A[26]이 마지막에 입력된 비트를 의미한다. 여기서, A[26:0]의 27비트 중에서 A[26:21]은 LUT_0 부분에 입력되고,A[20:15]는 LUT_1 부분에 입력되며, A[14:12]는 LUT_C 부분에 입력된다. 또한, 계수의 대칭성을 이용하여 A[11:6]은 A[6:11]로 순서가 바뀌어 LUT_2를 대신하여 LUT_1 부분에 입력되고, 마찬가지로 A[5:0]은 A[0:5]로 순서가 바뀌어 LUT_3을 대신하여 LUT_0 부분에 입력된다.
도 5는 본 발명의 일실시예에 따른 상기 도 3의 입력 시프트 레지스터 및 선택기(100)에 대한 내부 블록도이다.
도 5에 도시된 바와 같이, 입력 시프트 레지스터 및 선택기(100)는 2의 보수 형태의 4비트 필터 입력인 FI[3:0]을 입력받는 데, 4비트 필터 입력 FI[3:0]은 최대 '0111(+7)'과 최소 '1000(-8)'의 16개 경우를 갖는다. 여기서, 필터로의 입력은, '0'은 '+1'로, '1'은 '-1'로 변환되는 안티포달 비트(Antipodal bit) 형태를 가지기 때문에 최상위 비트인 FI[3]은 그대로 입력되고, FI[2], FI[1], FI[0]은 반전되어야 한다. 따라서, 필터입력의 최대값인 '0111'은 '0000'으로 변환되어 이는 '+15'의 값을 가지고, 최소값인 '1000'은 '1111'로 변환되어 '-15'의 값을 갖는다. 이렇게 변환된 4개의 단일 비트 입력들은 클럭 신호(ck1)에 응답되어 각각의 쉬프트 레지스터(SHIFT_REG27)(101 내지 104)로 입력되어 저장되며, 저장된 시프트 레지스터의 값들은 2개의 클럭 신호(ck1, ck2)에 의해 제어되는 4 ×1 멀티플렉서(105)에서 순차적으로 선택되어 출력 A[26:0]으로 나간다.
도 6은 본 발명의 일실시예에 따른 상기 도 3의 어드레스 생성기(200)에 대한 내부 블록도이다.
도 6에 도시된 바와 같이, 어드레스 생성기(200)는 필터 계수 대칭성을 이용하여 생략된 LUT_2와 LUT_3을 대신하여 LUT_1과 LUT_0을 두번 액세스하기 위한 4개의 멀티플렉서(206 내지 209)와, 룩업 테이블 내의 대칭성을 이용하여 생략된 룩업 테이블의 어드레스를 액세스하기 위하여 입력되는 어드레스의 최상위 비트를 사용하여 배타적 논리합하기 위한 배타적 논리합 게이트(201 내지 205)로 이루어진다.
도 6에서 어드레스 생성기(200)의 출력 B[2:0]은 LUT0_C ~ LUT3_C를 위한 어드레스로서, B[2] = A[14], B[1] = A[14]A[13], B[0] = A[14]A[12]와 같다. 그리고, C0[5:0]은 LUT0_0 및 LUT1_0을 위한 어드레스로서, 클럭 신호(ck4)가 '0'이면 C0[5] = A[26], C0[4] = A[26]A[25], C0[3] = A[26]A[24], C0[2] = A[26]A[23], C0[1] = A[26]A[22], C0[0] = A[26]A[21]로 출력되고, 클럭 신호(ck4)가 '1'이면 C0[5] = A[0], C0[4] = A[0]A[1], C0[3] = A[0]A[2], C0[2] = A[0]A[3], C0[1] = A[0]A[4], C0[0] = A[0]A[5]로 출력된다. D0[5:0], C1[5:0], D1[5:0]도 상기와 같은 방법으로 각각 생성된다.
도 7은 본 발명의 일실시예에 따른 상기 도 3의 룩업 테이블 그룹0(300), 룩업 테이블 그룹3(400), 룩업 테이블 그룹1(500) 및 룩업 테이블 그룹2(600)의 내부 블록도이다.
도 7에 도시된 바와 같이, 룩업 테이블 그룹0(300)은 필터 계수 그룹 0의 필터 결과를 룩업 테이블과 연산에 의하여 생성하는 블록으로서, 그 동작은 다음과 같다. 먼저, C0[4:0]이 LUT0_0(301)에 입력되어 32개 룩업 테이블 값 중 하나인 0A를 출력하고, C1[4:0]이 LUT0_1(302)에 입력되어 32개 룩업 테이블 값 중 하나인 0B를 출력하고, B[1:0]이 LUT0_C(303)에 입력되어 4개 룩업 테이블 값 중 하나인0C를 출력한다. 그리고, 연산 회로부(ALU2)(304)는 룩업 테이블 대칭성을 위해 생략된 룩업 테이블 값을 보상하기 위한 연산회로로서, 아래 수학식 2에 기재된 것과 같은 동작을 수행한다.
C0[5] = '0' 이고 C1[5] = '0' 이면, ALU2 출력 = 0A + 0B
C0[5] = '0' 이고 C1[5] = '1' 이면, ALU2 출력 = 0A - 0B
C0[5] = '1' 이고 C1[5] = '0' 이면, ALU2 출력 = - 0A + 0B
C0[5] = '1' 이고 C1[5] = '1' 이면, ALU2 출력 = - 0A - 0B
계수 대칭의 사용에 의하여 제거된 도 4의 LUT0_2와 LUT0_3의 계산을 위해 대칭인 룩업 테이블 값을 가지고 있는 룩업 테이블 그룹3(400)의 LUT3_0(401)과 LUT3_1(402)을 D0[4:0]과 D1[4:0]으로 각각 어드레싱하여 3A 및 3B를 만들고, 3A 및 3B를 입력받은 연산회로부(ALU2)(404)에서 D0[5], D1[5]의 제어를 받아 상기 수학식 2와 같은 연산을 수행하여 L3을 생성한다. 생성된 L3과 앞서 생성된 연산회로부(304)의 출력은 가산부(ADD)(305)에서 가산되어 L0을 생성한다. 그리고, 연산회로부(ALU1)(306)는 B[2]에 따라 B[2] = '0'이면 'L0 + 0C'를 출력하고, B[2] = '1' 이면 'L0 - 0C'를 출력한다. 연산회로부(306)의 출력단에 연결된 레지스터(307)는 클럭 신호(ck4)의 상승 에지에 응답하여 룩업 테이블 그룹0(300)의 출력인 G0[10:0]을 저장하는 레지스터로서, 계수의 대칭성으로 두번 액세스되는 룩업 테이블 그룹0(300)의 출력값을 버퍼링하기 위해 사용되어진다. 그리고, 또 하나의 레지스터(308)는 클럭 신호(ck4)의 하강 에지에 응답하여 레지스터(307)에 저장된 값을 버퍼링하여 필터 출력 G0[10:0]을 출력한다.
한편, 룩업 테이블 그룹3(400), 룩업 테이블 그룹1(500) 및 룩업 테이블 그룹2(600)도 상술한 룩업 테이블 그룹0(300)의 동작과 동일하게 각각의 필터 출력 G3[10:0], G1[10:0], G2[10:0]을 생성한다.
도 8은 본 발명의 일실시예에 따른 상기 도 3의 적산기 그룹0(700), 적산기 그룹1(900), 적산기 그룹2(1000) 및 적산기 그룹3(800)의 내부 블록도로서, 각 적산기 그룹의 내부 블록이 서로 동일하기 때문에 적산기 그룹0(700)의 내부 블록만을 상세 도시하였다.
도 8을 참조하면, 계수그룹 0을 위한 적산기 그룹0(700)은 입력 G0[10:0] 중 최상위 비트인 G0[10]을 부호(sign) 값(도 8에서 'S'로 표시)으로 부호확장(sign extension)하는 시프트 및 부호 확장부(701)를 포함한다. 시프트 및 부호 확장부(701)는 4비트의 필터 입력이 4개의 단일 비트로 변환되면서 처리하여야 할 필터출력의 가중치를 주기 위한 것으로서, 필터입력 FI[3]을 위해서는 S, G0[10:0]을 생성한다. 여기서, 최상위 비트에 하나의 부호값을 확장하는 것은 뒷단의 가산기(ADDER_12)(703)에서 발생되는 오버플로우(overflow)를 방지하기 위함이다. 그리고, 필터입력 FI[2]를 위해서는 FI[3]에 비해 1/2가중치를 가지도록 1비트 시프트 라이트함으로써 S, S, G0[10:1]을 생성하며, FI[1]을 위해서는 S, S, S, G0[10:2]를, FI[0]을 위해서는 S, S, S, S, G0[10:3]을 각각 생성한다. 이후, 시프트 라이트 후 부호 확장하여 생성된 4개의 입력은 선택신호(MUX_SEL[1:0])에 의해 4 ×1 멀티플렉서(702)에서 차례대로 선택되어진다.
한편, 도 8에서 가산기(703) 및 클럭 신호(ck4)에 응답하여 동작하는 레지스터(REG12)(704)는 적산기를 형성하고, 가산기(703)의 출력과 제어신호(TMP_R)를 입력받는 논리곱 게이트(706)는 제어신호(TMP_R)에 응답하여 레지스터(704)를 리셋하기 위한 것이다. 그리고, 2 ×1 멀티플렉서(707) 및 레지스터(REG8)(705)는 4번의 반복으로 적산된 값을 저장하기 위한 것으로, 필터의 출력 비트수인 8비트로 하위 4 비트가 절단(truncation)된다.
도 9는 본 발명의 일실시예에 따른 FIR 필터에 사용되는 클럭 신호 및 주요 신호들에 대한 타이밍도이다.
도 9를 참조하여, 본 발명의 적산 방법 및 타이밍을 살펴본다.
먼저, 레지스터(704)의 출력 TMP_0 신호는 MUX_SEL= '00'인 경우에 A[3]의 계수그룹 0의 출력값인 A3_0[10:0]이 된다. 그리고, MUX_SEL = '01'인 경우에 가산기(703)에서 A3_0[10:0]과 A[2]의 출력값인 A2_0의 시프트 라이트 값인 A2_0[10:1]이 가산된 결과값이 TMP_O가 된다. 그리고, MUX_SEL = '10'인 경우에는 가산기(703)에서 'A3_0[10:0] + A2_0[10:1]'과 A[1]의 출력값인 A1_0의 시프트 라이트 2인 값인 A1_0[10:2]가 가산된 결과값이 레지스터(704)에 저장된다. 마지막으로, MUX_SEL = '11'인 경우에는 가산기(703)에서 'A3_0[10:0] + A2_0[10:1] + A1[10:2]'와 A[0]의 출력값인 A0_0의 시프트 라이트 3인 값인 A0_0[10:3]을 가산하여, 레지스터(705)에 A[3:0] 필터 입력의 계수 그룹 0에 해당하는 최종 필터 출력으로 'A3_0[10:0] + A2_0[10:1] + A1[10:2] + A0[10:3]'이 저장되어 출력 ACC0으로 나가게 된다. 이때, 레지스터(704)는 TMP_R과 논리곱 게이트(706)에 의하여 리셋된다.
상기와 같은 방법으로 계수그룹 1을 위한 적산기 그룹 1(900)에 의하여 4비트 필터 입력의 계수그룹 1에 대한 필터 출력 값인 ACC1이 생성되고, 계수그룹 2를 위한 적산기 그룹 2(1000)에 의하여 4비트 필터 입력의 계수그룹 2에 대한 필터 출력 값인 ACC2가 생성되고, 계수그룹 3을 위한 적산기 그룹 3(800)에 의하여 4비트 필터 입력의 계수그룹 3에 대한 필터 출력 값인 ACC3이 생성된다.
이렇게 생성된 ACC0 내지 ACC3은 제어신호(FO_SEL[1:0])에 의해 4 ×1 멀티플렉서(1100)에서 ACC3부터 ACC2, ACC1, ACC0의 순으로 출력되어 본 발명의 최종 필터 출력인 FO[7:0]을 생성한다.
상술한 바와 같은 본 발명의 설명은 108탭 1:4 인터폴레이션 FIR 필터에 4비트 필터 입력, 8비트 필터 출력을 가정하여 본 발명의 일실시예로 설명한 것일 뿐, 본 발명을 필터의 탭수가 T탭, 1:N 인터폴레이션의 FIR 필터에 계수의 비트수가 C비트이고, X 비트 필터입력, Y비트 필터 출력으로 일반화하면 상술한 본 발명은 아래의 구조로 확장될 수 있다.
본 발명을 상기한 바와 같이 일반화할 경우, 도 5의 필터 입력은 FI[X-1:0]이 되고, FI[X-1]을 제외한 FI[X-2:0]이 모두 인버팅된다. 그리고, 쉬프트 레지스터의 갯수는 X개가 되고, 그 길이는 T/N이 되며, 멀티플렉서(105)는 X개의 입력을 다중화하여야 한다. 어드레스 생성기(200)는 룩업 테이블의 분할 개수와 각 룩업테이블의 크기에 따라 결정되며, 필터 계수의 대칭성 및 룩업 테이블 내의 대칭성 이용을 위하여 적절한 배타적 논리합 게이트 및 멀티플렉서를 사용한다. 이때, 룩업테이블의 크기와 부가 연산 회로의 크기가 최소화되는 구조를 선택한다.
그리고, 도 7의 각 계수 그룹별 룩업테이블 블록은 N개의 룩업 테이블 블록을 가진다. 여기서, T탭을 짝수화하고 계수의 좌우 대칭성을 이용하여 T/2만의 계수를 기본적으로 사용하는 것이 유리하지만, 본 발명의 실시예에서 설명한 바와 같이 분할된 부분이 N으로 나누어지지 않는 경우 계수의 대칭성을 이용하지 않는 것이 회로 사용에 유리할 수도 있다. 또한, 룩업 테이블 내의 대칭성은 분할된 룩업테이블 내에서 모두 사용하는 것이 유리하다.
도 8의 각 계수 그룹별 적산기 블록은 N개를 가지며, 적산기에서 가산되는 횟수는 입력 비트수인 X가 되고, 멀티플렉서(1100)는 N개의 적산 출력을 순차적으로 선택하여 FO[Y-1:0]으로 출력한다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.