KR100575285B1 - 고속의 저전력 이산 코사인 변환 장치 및 방법 - Google Patents
고속의 저전력 이산 코사인 변환 장치 및 방법 Download PDFInfo
- Publication number
- KR100575285B1 KR100575285B1 KR1020030032245A KR20030032245A KR100575285B1 KR 100575285 B1 KR100575285 B1 KR 100575285B1 KR 1020030032245 A KR1020030032245 A KR 1020030032245A KR 20030032245 A KR20030032245 A KR 20030032245A KR 100575285 B1 KR100575285 B1 KR 100575285B1
- Authority
- KR
- South Korea
- Prior art keywords
- odd
- determinant
- common
- input signal
- coefficients
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/156—Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
본 발명은 고속의 저전력 이산 코사인 변환 장치 및 방법에 관한 것으로, 이산 코사인 변환을 변환결과의 짝수번째 출력에 따른 이븐 행렬식 및 홀수번째 출력에 따른 오드 행렬식으로 각각 표현할 때, 행렬식들의 계수행렬들에 포함되는 각 계수를 CSD(Canonic Signed Digit) 방식으로 표현하여 입력 신호에 대한 이산 코사인 변환을 구하는 이산 코사인 변환 장치에 있어서, 입력 신호중 두 신호를 선택하고 가산하여 각각 이븐 및 오드 행렬식의 입력신호로 각각 가공하는 입력신호 가공부; 이븐 행렬식에 해당되는 계수들에 공통되는 제1공통패턴들을 구하고, 공통 서브-익스프레션 공유 방식으로 표현되는 수학식에 따라 상기 제1공통패턴들과 이븐 행렬식의 입력신호를 해당 회수만큼 쉬프트한 결과들을 가산하며, 가산 결과들을 이용하여 이븐 행렬식에 따른 연산을 수행하는 이븐 DCT부; 및 오드 행렬식에 포함되는 계수들에 공통되는 제2공통패턴들을 구하고, 공통 서브-익스프레션 공유 방식으로 표현되는 수학식에 따라 제2공통패턴들과 오드 행렬식의 입력신호를 해당 회수만큼 쉬프트한 결과들을 가산하며, 가산 결과들을 이용하여 오드 행렬식에 따른 연산을 수행하는 오드 DCT부를 포함함을 특징으로한다.
Description
도 1은 일반적인 전치 직접형 필터구조를 이용하는 DCT 장치를 도시한 것이다.
도 2는 CSD 방식의 계수를 이용하는 이븐 DCT 장치를 도시한 것이다.
도 3은 CSD 방식의 계수를 이용하는 오드 DCT 장치를 도시한 것이다.
도 4는 16비트 정세도로 표현된 CSD 방식의 이븐 DCT 계수 표현에서 공통되는 공통패턴을 도시한 것이다.
도 5는 도 4의 표에 따른 이븐 DCT 장치를 도시한 것이다.
도 6은 16비트 정세도로 표현된 CSD 방식의 오드 DCT 계수 표현에서 공통되는 공통패턴을 도시한 것이다.
도 7은 도 6의 표에 따른 오드 DCT 장치를 도시한 것이다.
도 8은 본 발명에 따른 DCT 장치를 도시한 것이다.
본 발명은 고속의 저전력 이산 코사인 변환(Discrete Cosine Transformation, DCT) 장치 및 그 방법에 관한 것으로, 공통 서브-익스프레션 공유(common sub-expression sharing, CSS) 방식을 사용하는 고속의 저전력 DCT 장치 및 그 방법에 관한 것이다.
DCT는 여러가지 데이터 압축 표준들에서 매우 중요한 역할을 수행한다. DCT는 쓰임이 많아지면서 그에 대한 고속 알고리듬들이 연구되었다. 이와 같은 고속 알고리듬들은 DCT가 가지고 있는 수학적 성질을 이용하여 계산량을 감소시킨다. 예를 들어 W.H. Chen 등에 의한 "A fast computaional algorithm for the discrete cosine transform", IEEE Comm., vol. COM-25, pp. 1004-1009, Sep. 1977 에서는 8-포인트 DCT를 수행하는데 16회의 곱셈과 26회의 덧셈이 필요하고, B. G. Lee, "A new algorithm to compute the discrete cosine transform", IEEE Trans. Accost., Speech, Signal Proc., ASSP-32, pp. 1243-1245, Dec. 1984 에서는 12회의 곱셈과 29회의 덧셈이 필요하다.
또한 비디오 압축과 복원에 사용되는 표준들에서는 실시간 처리 요구를 만족시키기위한 DCT의 효과적인 VLSI 구조가 많이 연구되었다. 이와 같은 하드웨어 구조는 고속처리가 가능한 장점은 있지만 구현 비용이 프로세서를 사용하는 구조보다 상대적으로 많이 든다. VLSI의 발달로 프로세서의 속도가 빨라짐에 따라 DCT를 프로세서를 사용하여 구현하는 연구가 또한 진행되고있다. 그러나, 이와 같은 프로세서를 사용한 구현은 하드웨어는 줄일 수 있지만 실시간으로 처리되기위해서는 프로세서의 고속동작이 필수적이다. 또한 지금까지 열거한 하드웨어 구조와 프로세서를 사용한 구조의 장점만을 취하기위하여 하이브리드 구조가 연구되고 있다. T.S Chang 등의 "A simple processor core design for DCT/IDCT", IEEE Trans. Circuits and Ananlog and Digital Signal Processing, vol. 43, No. 10, pp. 677-688, Oct. 1996, 에서는 곱셈기를 내장한 프로세서를 사용하지않고 연산기(AU, Arithmetic Unit), 즉 가산기 1개만을 내장한 프로세서를 사용하여 2-D 8x8 DCT를 구현함으로써 1208회의 덧셈을 수행하는 방식이 개시되어있다. 그러나 이 방식은 한 개의 AU 프로세서를 사용하여 DCT를 수행하므로 거의 프로세서 방식에 가깝다.
본 발명이 이루고자하는 기술적 과제는 8-포인트 DCT 계산을 위해 DCT 계수의 계산은 가산기를 사용하는 하드웨어가 담당하고, 완전한 출력신호 계산은 4사이클의 AU가 담당하는 CSS 방식의 DCT 장치 및 그 방법을 제공하는데 있다.
상기 기술적 과제를 이루기위한, 본 발명은 이산 코사인 변환을 변환결과의 짝수번째 출력에 따른 이븐 행렬식 및 홀수번째 출력에 따른 오드 행렬식으로 각각 표현할 때, 상기 행렬식들의 계수행렬들에 포함되는 각 계수를 CSD 방식으로 표현하여 입력 신호에 대한 이산 코사인 변환을 구하는 이산 코사인 변환 장치에 있어서, 상기 입력 신호중 두 신호를 선택하고 가산하여 각각 상기 이븐 및 오드 행렬식의 입력신호로 각각 가공하는 입력신호 가공부; 상기 이븐 행렬식에 해당되는 계수들에 공통되는 제1공통패턴들을 구하고, 공통 서브-익스프레션 공유 방식으로 표현되는 수학식에 따라 상기 제1공통패턴들과 상기 이븐 행렬식의 입력신호를 해당 회수만큼 쉬프트한 결과들을 가산하며, 가산 결과들을 이용하여 상기 이븐 행렬식 에 따른 연산을 수행하는 이븐 DCT부; 및 상기 오드 행렬식에 포함되는 계수들에 공통되는 제2공통패턴들을 구하고, 공통 서브-익스프레션 공유 방식으로 표현되는 수학식에 따라 상기 제2공통패턴들과 상기 오드 행렬식의 입력신호를 해당 회수만큼 쉬프트한 결과들을 가산하며, 가산 결과들을 이용하여 상기 오드 행렬식에 따른 연산을 수행하는 오드 DCT부를 포함함을 특징으로한다.
상기 기술적 과제를 이루기위한, 본 발명의 이산 코사인 변환 방법은 (a) 이산 코사인 변환을 변환결과의 짝수번째 출력에 따른 이븐 행렬식 및 홀수번째 출력에 따른 오드 행렬식으로 각각 표현하는 단계; (b) 상기 행렬식들의 계수행렬들에 포함되는 각 계수를 CSD 방식으로 표현하는 단계; (c) 상기 CSD 방식으로 표현된 이븐 및 오드 행렬식의 계수들중 각각에 공통되는 패턴인 제1 및 제2공통패턴을 구하는 단계; (d) 공통 서브-익스프레션 공유 방식을 이용하여 상기 제1, 제2공통패턴, 상기 이븐 및 오드 행렬식의 계수들에 대한 수학식을 구하는 단계; (e) 입력 신호들중 두 입력신호를 선택하여 상기 이븐 및 오드 행렬식의 입력신호 형태로 가공하는 단계; 및 (f) 가공된 입력신호와 상기 계수들을 이용하여 상기 (d)단계의 수학식에 따른 연산을 수행하는 단계를 포함함을 특징으로한다.
이하에서 첨부된 도면을 참조하여 본 발명을 보다 상세히 설명하기로 한다.
도 1은 일반적인 전치 직접형(Transposed Direct Form) 필터구조를 이용하는 DCT 장치를 도시한 것이다. 도시된 바에 따른 DCT 장치는 이븐(even) DCT부(10) 및 오드(odd) DCT부(11)을 구비한다.
이븐 DCT(10)는 제1MUX(100), 제1가산기(101), 복수의 곱셈기를 구비하는 제1곱셈부(102) 그리고 복수의 MUX들과 AU들을 구비하는 제1연산부(103)를 포함한다.
오드 DCT(11)는 제2MUX(110), 제2가산기(111), 복수의 곱셈기를 구비하는 제2곱셈부(112), 복수의 MUX들과 AU들을 구비하는 제2연산부(113)를 포함한다.
상기 구성에 따른 동작은 다음과 같다. 통상, 1차원의 8-포인트 DCT는 다음 식으로 나타낼 수 있다.
상기 식의 8-포인트 DCT를 행렬식으로 나타내면, 다음 식과 같이 표현된다.
상기 행렬식에서 사용되는 7개의 DCT계수 a,b,c,d,e,f 및 g는 각각 다음과 같다. a=0.2451963201, b=0.2309698831, c=0.2078674031, d=0.1767766953, e=0.1388925583, f=0.0956708581, g=0.0487725805.
수학식 2를 보면 64회의 곱셈이 필요하다. 그러나, 그 계수행렬을 살펴보면 부호를 제외하는 경우 좌우 대칭임을 알 수 있다. 따라서 중복되는 곱셈을 다음 식과 같이 줄일 수 있다.
수학식 3 및 4를 살펴보면 32회의 곱셈이 필요하고, 수학식 2와 비교해보면 곱셈의 회수가 반으로 감소되는 것을 알 수 있다. 수학식 3으로 표현되는 구조를 이븐 DCT구조, 수학식 4로 표현되는 구조를 오드 DCT구조라 한다. 도 1에서 참조번호 10의 이븐 DCT 장치는 수학식 3의 이븐 DCT를 수행하는 장치이고, 참조번호 11의 오드 DCT 장치는 수학식 4의 오드 DCT를 수행하는 장치이다.
제1MUX(100) 및 제2MUX(110)는 x0 내지 x3중 하나와 x4 내지 x7
중 하나를 각각 선택 출력하고, 제1가산기(101) 및 제2가산기(111)는 각각 제1MUX(100)와 제2MUX(110)의 출력을 가산 및 감산한다. 이는 수학식 3 및 4의 최우측 벡터값들을 계산하기위한 것이다.
제1곱셈부(102)는 제1가산기(101)의 출력에 대해 수학식 3의 계수행렬의 인자(element)에 해당하는 d,b,f를 각각 곱한다.
제2곱셈부(112)는 제2가산기(111)의 출력에 대해 수학식 4의 계수행렬의 인자에 해당하는 a,c,e,g를 각각 곱한다.
제1연산부(103)는 복수의 MUX들을 사용하여 제1곱셈부(102)에서 출력되는 곱셈결과를 선택적으로 출력하고, 복수의 AU들을 사용하여 수학식 3의 행렬식에 따른 최종 연산결과를 출력한다.
제2연산부(113)는 복수의 MUX들을 사용하여 제2곱셈부(112)에서 출력되는 곱셈결과를 선택적으로 출력하고, 복수의 AU들을 사용하여 수학식 4의 행렬식에 따른 최종 연산결과를 출력한다.
이븐 DCT 장치(10)의 동작을 살펴보면, 16개의 곱셈을 4 사이클에 수행하기위해서 직접형과 전치 직접형 구조의 2가지가 가능하나, 대체로 전치 직접형 구조가 주로 사용된다. 이븐 DCT 장치(10)를 직접형 구조로 구성한다면, 첫 사이클에서 d(x0+x7),d(x1+x6),d(x2+x5),d(x
3+x4)의 계산을 수행한다. 즉, 수학식 4의 4x4 DCT 계수 행렬에서 첫번째 행의 계수 d들을 사용한다. 이 경우에 각각의 사이클에서 사용하는 DCT 계수들이 공통이 아니므로 하드웨어의 구현비용이 증가하는 단점이 있다. 즉, 첫번째 사이클에서는 4개의 d를 곱하는 회로가 필요하며, 만일 1개의 d를 곱하는 회로만을 사용하려면 4배의 속도로 계산하여야한다. 두번째 사이클에서는 2개의 b와 역시 2개의 f를 곱하는 회로가 필요하다. 따라서 직접형 구조를 사용하면 4개의 d와 2개의 f,b를 곱하는 회로를 구성하여야한다. 즉, 8개의 곱셈용 하드웨어가 필요하다. 그러나 도 1에 도시된 바와 같은 전치 직접형 구조를 사용하면 하드웨어 구현비용을 감소시킬 수 있다. 즉, 첫번째 사이클에서 x0+x7에 필요한 계산을 모두 수행한다. 다시 말하면, 4x4 DCT 계수 행렬의 첫번째 열 d,b,d,f에 해당하는 곱셈을 첫번째 사이클에서 모두 수행한다. 4x4 DCT 계수 행렬의 2,3,4번째 열을 살펴보면 모두 공통으로 d,b,f만이 사용되고 있음을 알 수 있다. 이와같이 각각 4개의 사이클에서 공통의 계수가 사용되므로 하드-와이어드(hard-wired) 구현의 경우에 전치 직접형 구조와 비교하여 구현비용이 감소되는 장점을 갖는다. 직접형 구조를 사용하면 계수용 곱셈회로가 12개 필요하나 도 1에 도시된 바와 같은 전치 직접형 구조를 사용하면 7개로 감소함을 알 수 있다.
오드 DCT 장치(11)의 경우에는 전치 직접형 구조와 비교하여 큰 장점을 갖지않는다고 볼 수도 있다. 이는 수학식 4에서 보듯이 열과 행이 모두 공통계수 a,c,e,g를 사용하고 있기 때문에 전치 직접형 구조를 사용하든지, 직접형 구조를 사용하든지, 공통계수를 모두 이용할 수 있기때문이다.
도 1에 도시된 전치 직접형 구조의 DCT 장치는 2개의 가산기, 7개의 곱셈기 그리고 8개의 AU가 사용됨을 알 수 있다. 그리고 4사이클에 DCT가 완료된다.
고속, 저전력이 요구되는 경우에 도 1의 DCT 계수들의 곱셈을 덧셈과 쉬프트(shift)만으로 수행할 수 있다. 이와 같이 곱셈을 덧셈과 쉬프트로 구현하는 경우, 쉬프트는 하드웨어로 구현할 때에는 비용이 거의 들지 않으므로 덧셈의 회수가 곧 하드웨어의 구현비용이 된다. DCT 계수들의 이진 표현에서 "1"의 수가 적게 사용되는 CSD(Canonic Signed Digit)형 계수를 사용하는 것이 구현비용이 적게 든 다. 모든 n-비트의 2의 보수(2's complement)형의 수는 n-비트 CSD형의 수로 나타낼 수 있으며, 그 변형방법은 R.W.Reitwiesner의 "Binary arithmetic", Advances in Computers, New York: Academic, vol. 1, pp.231-308, 1996 등에 개시되어있다. 2의 보수형의 수에 비하여 CSD형의 수는 (N+1)/2 이상의 논제로(Nonzero) 비트를 갖지않는 장점을 갖고 있으며, 이는 가산기를 사용하여 구현할 때에 덧셈 회수를 줄일 수 있음을 의미한다. 수학식 3에서 사용되는 3개의 계수 d,b,f를 17비트 정세도의 CSD형으로 나타내면 다음 표와 같다.
-1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -10 | -11 | -12 | -13 | -14 | -15 | -16 | -17 | |
d | 1 | N | N | 1 | 1 | 1 | |||||||||||
b | 1 | N | N | 1 | 1 | ||||||||||||
f | 1 | N | 1 | N | N |
상기 표에서 빈칸은 "0"을 나타낸다. 즉, 각 계수들의 이진 표현에서 "0"은 표시하지않았다. 그리고 N은 "-1"을 의미한다. 최상위 행의 "-k"표시는 입력을 우측으로 k번 쉬프팅하는 것임을 나타낸다. 표 1을 참조하여 이븐 DCT를 구현하면 도 2와 같다.
도 2에 도시된 바에 따르면, 복수의 쉬프터를 구비하는 쉬프터부(200), 복수의 가산기를 구비하는 가산부(210), 복수의 MUX를 구비하는 MUX부(220) 및 복수의 AU를 구비하는 연산부(230)를 구비한다.
쉬프터부(200)는 복수의 쉬프터를 이용하여 입력신호를 우측으로 쉬프팅한다. 가산부(210)는 복수의 가산기를 이용하여 각 쉬프터에서 출력되는 값을 표 1의 "1" 또는 "N"에 따라 가산 또는 감산함으로써 d,b 및 f를 각각 출력한다.
MUX부(220)는 누적되어 출력되는 d,b,f를 선택적으로 출력하고, 연산부(230)는 복수의 AU를 이용하여 해당 연산을 수행함으로써 최종 출력인 X0, X2, X4
및 X6을 출력한다.
도시된 CSD를 이용한 이븐 DCT 장치는 13개의 가산기로 d,b,f의 계수를 구한다. 입력신호 x0+x7은 도 2의 장치를 통해 동시에 d,b,d,f가 곱하여져서 각 AU에 저장된다. 즉 이 AU들에는 X0, X2, X4, X6의 중간결과 값이 저장된다. 두번째 사이클의 입력은 x1+x6이고, 이 때 사용되는 계수는 수학식 3 행렬의 두번째 열인 d,f,-d,-b이다. 따라서 두번째 사이클에서는 첫번째 사이클에서 사용한 계수용 장치를 그대로 이용한다. 즉, 부가적인 하드웨어가 필요없고, 단지 각 AU에서 +와 -를 선택하기만하면된다. 세번째와 네번째 사이클에서도 같은 계수들이 사용된다. 다만 X2와 X6의 AU들의 입력단에는 입력을 선택하기위한 MUX가 필요하다. 즉, X2의 계산을 위해서 각 사이클마다 f,-b,b,-f의 계산이 필요하므로 이를 각 사이클마다 선택한다. AU들도 한 개의 덧셈 혹은 뺄셈으로 간주될 수 있으므로 이 구조는 17개의 덧셈과 4 사이클이 필요하다. 입력신호를 만드는데 1개의 덧셈기가 필요하므로, 이븐 DCT의 설계에는 총 18개의 덧셈이 필요하다.
CSD형 계수를 이용하는 오드 DCT 설계는 다음과 같이 이루어진다. 먼저 입력신호는 수학식 4의 최우측 벡터의 요소들과 같이 가공된다. 또한 수학식 4의 16개의 곱셈을 4사이클에 계산하기위하여 이븐 DCT의 경우와 마찬가지로 한 사이클당 한 개의 입력신호를 사용한다. 따라서 첫번째 사이클에 x0-x7의 입력신호와 곱해지는 모든 계산을 수행한다. 두번째, 세번째 그리고 네번째 사이클에서는 각각 x1-x6
, x2-x5, x3-x4의 입력신호를 사용하는 계산을 수행한다. 첫번째 사이클에서 필요한 계수는 수학식 4의 계수행렬의 첫번째 열에 있는 a,c,e,g이다. 이와 같은 4개의 계수를 17비트 정세도의 CSD형으로 나타내면 다음 표와 같다.
-1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -10 | -11 | -12 | -13 | -14 | -15 | -16 | -17 | |
a | 1 | N | N | 1 | 1 | ||||||||||||
c | 1 | N | 1 | 1 | 1 | N | N | 1 | |||||||||
e | 1 | 1 | N | 1 | N | ||||||||||||
g | 1 | N | 1 | N |
상기 표의 각 표현방법은 표 1의 경우와 동일하다.
상기 표에서 나타낸 CSD형의 a,c,e,g의 계수들을 덧셈을 사용하여 구현하면 도 3과 같다. 도시된 바에 따르면 복수의 쉬프터를 포함하는 쉬프터부(300), 복수의 가산기를 포함하는 가산부(310), 복수의 MUX를 구비하는 MUX부(320) 및 복수의 AU를 구비하는 연산부(330)를 구비한다. 각 구성요소들의 동작은 도 2의 경우와 동일하고, 다만 쉬프트부(300)의 각 쉬프터에서 쉬프팅되는 횟수, 가산부(310)에서 최종적으로 가산되어 출력되는 값들, 그리고 MUX부(320)에서 각 MUX로 입력되는 신호들은 상기 표 2에 따라 도 3에 도시된 바와 같이 달라진다.
도 3에 따르면, 오드 DCT는 18개의 덧셈으로 a,c,e,g의 계수들이 구현된다. 첫번째 사이클에서 입력신호 x0-x7은 도 3에 도시된 장치를 통해 a,c,e,g가 곱해져 서 4개의 AU들에 저장된다. 즉, 이 AU들에는 X1, X3, X5, X7
의 첫번빼 사이클의 중간결과값이 저장된다. 두번째 사이클에서 사용되는 입력신호는 x1-x6이고, 이 때 사용되는 계수는 수학식 4의 계수행렬의 두번째 열인 c,-g,-a,-e이다. 이 계수들도 부호만 제외하면 첫번째 사이클에서 사용된 수들과 같다. 따라서 두번째 사이클을 위한 부가적인 하드웨어는 필요없고, AU들에서 "+"와 "-"를 선택하는 구조가 된다. 세번째와 네번째 사이클에서도 동일한 방법으로 처리된다. 다만, X1, X3, X5
, X7을 위한 각 AU의 입력단에는 입력 선택을 위한 MUX가 필요하다. 도 3에서도 각 MUX의 입력선택 순서는 위부터 각 사이클마다 한개씩 선택되고, 각 AU의 동작도 각 사이클마다 동작한다. 도시된 장치는 22개의 덧셈기와 4사이클이 필요하다. 입력신호를 만드는데 1개의 덧셈이 필요하므로 오드 DCT설계에는 총 23개의 덧셈기가 필요하다. 따라서 CSD형 계수를 사용하는 DCT 장치에는 총 41개의 덧셈기가 필요함을 알 수 있다.
이러한 CSD형 계수를 사용하는 DCT 장치는 단지 DCT 계수들을 CSD형으로 사용함으로써 덧셈의 수를 감소시키는 방식이다. 디지털 필터 구조에서 덧셈의 수를 더욱 감소시키기위해 공통 서브-익스프레션 공유(Common Sub-expression Sharing, CSS)방식이 사용될 수도 있다. 본 발명에서도 덧셈의 수를 더욱 감소시키기위하여 CSS방식을 DCT 계수 계산에 사용하기로한다. 먼저, 본 발명에 따른 이븐 DCT 장치의 설계에서는 수학식 3에 사용되는 3개의 계수 d,b,f를 도 4와 같이 17비트 정세도의 CSD형으로 나타내고, 공통되는 패턴들을 이중 실선으로 표시한다. 표시된 부 분은 101과 10N의 공통패턴이 있음을 알 수 있다. 여기서 N0N은 101과 동일한 패턴이다. 즉, 구현할 때에 101의 패턴에 "-"만 붙이면 N0N의 패턴이 되기때문이다. 101과 10N의 공통패턴에 대한 서브 익스프레션은 각각 다음과 식과 같이 정의될 수 있다.
상기 식과 같은 공통패턴을 사용하여 d,b,f의 계수들을 나타내면 다음 식과 같다.
도 5는 상기 식에 따라 구현한 본 발명에 따른 이븐 DCT 장치를 도시한 것이다. 도시된 바에 따른, 이븐 DCT 장치는 쉬프트부(500), 공통패턴 계산부(510), 행렬계수 계산부(520), MUX부(530) 그리고 AU부(540)를 포함한다.
쉬프트부(500)는 복수의 쉬프터를 구비하고, 입력신호 x1을 오른쪽으로 쉬프팅한다. 공통패턴 계산부(510)는 복수의 가산기를 구비하여 입력신호에 대해 수학식 5에 해당하는 계산을 수행한다. 행렬계수 계산부(520)는 공통패턴 계산부(510)에서 출력되는 서브 익스프레션 x2, x3을 쉬프팅하고, 복수의 가산기를 구비하여 수 학식 6에 해당하는 계산을 수행한다. 그 결과로 수학식 3의 계수행렬의 계수들을 각각 출력한다. MUX부(530)는 수학식 3에서 X2 및 X6에 해당하는 식에 대해 행렬계수 계산부(520)에서 출력되는 계수중 적절한 값을 선택적으로 출력한다. AU부(540)는 각 사이클마다 행렬계수 계산부(520) 및 MUX부(530)을 통해 출력되는 각 행렬계수를 저장하고있다가 최종적으로 X0, X2, X4 및 X6를 연산하여 출력한다.
각 구성요소의 동작에 대한 보다 상세한 설명은 다음과 같다. 도 5에 도시된 바와 같이, 공통패턴을 공유함으로써 10개의 가산기를 이용하여 d,b,f를 계산할 수 있다. 첫번째 사이클에서 입력신호 x0+x7은 도 5에 도시된 장치를 통해 d,b,d,f가 곱해져서 AU부(540)의 각 AU에 저장된다. 두번째 사이클에서 입력은 x1+x6이고, 이 때 사용되는 계수는 수학식 3의 두번째 열인 d,f,-d,-b이다. 이 계수들은 부호만 제외하면 첫번째 사이클에서 사용된 수들과 동일함을 알 수 있다. 따라서 첫번째 사이클에서 장치를 두번째 사이클에서도 공유할 수 있다. 즉, 부가적인 하드웨어가 필요없고 단지 AU부(540)에서 각 사이클마다 "+"와 "-"를 적절하게 선택하면된다. 세번째와 네번째 사이클에서도 마찬가지로 동일한 계수들이 사용되므로 부가적이 하드웨어는 필요없다. 다만 X2와 X6를 출력하는 AU에는 입력선택을 위한 MUX가 필요하다. 즉, X2의 계산을 위해서 각 사이클마다 b,f,-f,-b의 계산이 필요하므로 이를 각 사이클마다 선택하여야한다. 마찬가지로 X6의 계산을 위해서 각 사이클마다 f,-b,b,-f의 계산이 필요하므로 이를 각 사이클마다 선택한다. 도시된 장치에서 MUX부(530)를 구성하는 각 MUX의 입력순서는 최상위 입력단자로부터 순서대로 각 사이클마다 한개씩 선택된다. AU부(540)의 각 AU의 동작은 각 AU의 좌측에 표시된 부호중 위에서부터 순서대로 각 사이클마다 동작한다. 각 AU는 최종적으로 수학식 3에 따른 행렬식을 계산하는 것이므로 결과적으로, 가산기 역할을 수행한다. 따라서 도시된 이븐 DCT장치는 14개의 가산기와 4사이클이 필요하다. 이외에 입력신호를 만드는데 1개의 덧셈기가 필요하므로 이븐 DCT장치는 총 15개의 덧셈기가 필요하게된다.
도 6은 본 발명에 따른 오드 DCT 장치의 설계에서 수학식 4에 사용되는 4개의 계수 a,c,e,g를 17비트 정세도의 CSD형으로 나타내고, 공통되는 패턴들을 이중 실선으로 표시한 도면이다. 공통패턴은 도 4에 도시된 바와 같은 101과 10N외에도 100N이 있다. 101과 10N의 공통패턴에 대한 서브 익스프레션은 수학식 5와 동일하고, 100N의 경우 다음 식과 정의될 수 있다.
그에 따른 계수 a,c,e,g는 다음 식과 같이 표현될 수 있다.
도 7은 상기 식에 따라 구현한 본 발명에 따른 오드 DCT 장치를 도시한 것이다. 도시된 바에 따른, 이븐 DCT 장치는 쉬프트부(700), 공통패턴 계산부(710), 행렬계수 계산부(720), MUX부(730) 그리고 AU부(740)를 포함한다.
쉬프트부(700)는 복수의 쉬프터를 구비하고, 입력신호 x1을 오른쪽으로 쉬프팅한다. 공통패턴 계산부(710)는 복수의 가산기를 구비하여 입력신호에 대해 수학식 5 및 7에 해당하는 계산을 수행한다. 행렬계수 계산부(720)는 공통패턴 계산부(710)에서 출력되는 서브 익스프레션 x2, x3, x4를 쉬프팅하고, 복수의 가산기를 구비하여 수학식 8에 해당하는 계산을 수행한다. 그 결과로 수학식 4의 계수행렬의 계수들을 각각 출력한다. MUX부(730)는 수학식 4의 각 출력 X1 내지 X7에 해당하는 식에 대해 행렬계수 계산부(520)에서 출력되는 계수중 적절한 값을 선택적으로 출력한다. AU부(740)는 각 사이클마다 행렬계수 계산부(720) 및 MUX부(730)을 통해 출력되는 각 행렬계수를 저장하고있다가 최종적으로 X1, X3, X5 및 X7을 연산하여 출력한다.
이에 대한 보다 상세한 설명은 다음과 같다. 도 7에 따르면, a,c,e,g의 계수들은 13개의 가산기로 구현될 수 있다. 첫번째 사이클에서 입력신호 x0-x7은 도시된 장치를 통하여 a,c,e,g가 곱해져서 AU부(740)의 각 AU에 저장된다. 즉, 각 AU에는 X1, X3, X5, X7의 첫번째 사이클의 중간결과값이 저장된다. 두번째 사이클에 사용되는 입력신호는 x1-x6이고, 이 때 사용되는 계수는 수학식 4의 행렬의 두번째 열인 c,-g,-a,-e이다. 이 계수들도 부호만 제외하면 첫번째 사이클에서 사용된 수들과 같다. 따라서 두번째 사이클을 위한 부가적인 장치는 필요없고, 다만 각 AU에 "+"와 "-"를 적절하게 선택하면 된다. 세번째와 네번째 사이클에서도 마찬가지이다. 다만 각 AU의 입력단에는 입력선택을 위한 MUX를 구비한다. MUX부(730)의 각 MUX의 입력 선택 순서는 위부터 각 사이클마다 한개씩 순서대로 입력된다. AU부(740)의 각 AU의 동작은 각 AU의 좌측에 표시된 부호중 위에서부터 순서대로 각 사이클마다 동작한다. 도시된 오드 DCT장치는 17개의 가산기와 4사이클이 필요하다. 이외에 입력신호를 만드는데 1개의 가산기가 필요하므로 오드 DCT장치는 총 18개의 가산기가 필요하게된다.
도 8은 도 5 및 도 7의 이븐 및 오드 DCT 장치를 사용하여 8-포인트 DCT 장치의 전체 구조를 도시한 것이다. 도시된 바에 따른 8-포인트 DCT 장치는 제1MUX(80), 제1가산기(81), 이븐 DCT부(82), 제2MUX(83), 제2가산기(84) 및 오드 DCT부(85)를 포함한다. 이븐 DCT부(82)의 구조는 도 5에 도시된 바와 같고, 오드 DCT부(85)의 구조는 도 7에 도시된 바와 같으며, 그 동작 또한 동일하다.
제1MUX(80)는 x0, x1, x2, x3중 하나를 선택하여 출력하고, 제2MUX(83)는 x7, x6, x5, x4중 하나를 선택하여 출력한다. 제1가산기(81) 및 제2가산기(84)는 제1MUX(80) 및 제2MUX(83)에서 각각 출력되는 값을 가산 및 감산한다. 이븐 DCT부(82)는 제1가산기(81)에서 출력되는 값을 입력으로하여 상술한 바와 같은 이븐 DCT를 수행하고, 오드 DCT(85)는 제2가산기(84)에서 출력되는 값을 입력으로하 여 상술한 바와 같은 오드 DCT를 수행한다.
도 8에 도시된 바에 따르면, 입력신호의 가공에 2개의 가산기가 필요하고, a,b,c,d,e,g의 계수를 계산하는 가산기가 23개 필요하며, AU용 가산기가 8개 필요하다. 따라서 총 33개의 가산기가 매 사이클마다 필요하다. 또한 4개의 입력신호중에서 하나를 선택하는 MUX가 8개 필요하다. 4사이클에 필요한 총 가산기의 수는 33x4=132개이다.
본 발명에 따른 DCT장치는 전치 직접형 구조를 사용하는 4사이클 구조이며, 쉬프터와 가산기들을 사용하는 구조이다. 종래 기술과 본 발명에 사용되는 가산기의 수를 알아보기위해, 상기 수학식 3 및 4에 따른 행렬식의 각 계수를 17비트의 정세도로 나타내면 다음 표와 같다. 표 3은 2의 보수형 계수에 대한 것이고, 표 4는 CSD형 계수에 대한 것이다.
-1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -10 | -11 | -12 | -13 | -14 | -15 | -16 | -17 | # | |
d | 1 | 1 | 1 | 1 | 1 | 1 | 5 | |||||||||||
b | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 6 | ||||||||||
f | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 8 | ||||||||
a | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 8 | ||||||||
c | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 8 | ||||||||
e | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 6 | ||||||||||
g | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 6 |
최우측 #은 해당 계수를 계산하는데 필요한 가산기의 수를 나타낸 것이다. 예를 들어, d는 6개의 1로 표현되므로 이를 구현하는데에는 5개의 가산기가 필요하다. 따라서 각 계수의 계산에는 상기 표에 따라 47개의 가산기, 입력신호 가공에 2개의 가산기 그리고 AU용으로 8개의 가산기가 필요하므로 총 57개의 가산기가 필요하다.
다음 표는 CSD형 계수에 대한 17비트의 정세도이다.
-1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -10 | -11 | -12 | -13 | -14 | -15 | -16 | -17 | # | |
d | 1 | N | N | 1 | 1 | 1 | 5 | |||||||||||
b | 1 | N | N | 1 | 1 | 4 | ||||||||||||
f | 1 | N | 1 | N | N | 4 | ||||||||||||
a | 1 | N | N | 1 | 1 | 4 | ||||||||||||
c | 1 | N | 1 | 1 | 1 | N | N | 1 | 7 | |||||||||
e | 1 | 1 | N | 1 | N | 4 | ||||||||||||
g | 1 | N | 1 | N | 3 |
상기 표 3의 경우와 마찬가지로 #는 필요한 가산기 수를 나타낸다. 따라서 계수의 계산에는 31개의 가산기가 필요하며, 입력신호의 가공 및 AU에 10개의 가산기가 필요하므로 총 41개의 가산기가 필요하게된다.
다음 표는 종래기술과 본 발명에 따른 가산기 수를 비교하여 나타낸 것이다.
구분 | 2의 보수형 계수 | CSD형 계수 | 본 발명 |
계수 | 47 | 31 | 23 |
입력신호 가공 | 2 | 2 | 2 |
AU | 8 | 8 | 8 |
계 | 57 | 41 | 33 |
% | 100 | 71.9 | 57.9 |
상기 표에 따르면, 본 발명은 2의 보수형 구조와 비교하면 가산기의 수가 42.1%의 감소되고, CSD형 구조와 비교하면 18.1% 감소됨을 알 수 있다.
본 발명에 따르면, CSD형 계수와 CSS를 채택함으로써 가산기의 수를 최소화할 수 있다. 또한 DCT의 크기를 늘리거나, 계수의 정세도가 높아질수록 공통패턴이 더 많이 발생하므로 가산기의 수가 더 감소함을 알 수 있다. 따라서 본 발명에 따른 DCT구조는 1차원 DCT가 코아(core)로 사용되는 JPEG이나 MPEG 등의 응용에서 널 리 사용될 수 있다.
Claims (6)
- 이산 코사인 변환을 변환결과의 짝수번째 출력에 따른 이븐 행렬식 및 홀수번째 출력에 따른 오드 행렬식으로 각각 표현할 때, 상기 행렬식들의 계수행렬들에 포함되는 각 계수를 CSD 방식으로 표현하여 입력 신호에 대한 이산 코사인 변환을 구하는 이산 코사인 변환 장치에 있어서,상기 입력 신호중 두 신호를 선택하고 가산하여 각각 상기 이븐 및 오드 행렬식의 입력신호로 각각 가공하는 입력신호 가공부;상기 이븐 행렬식에 해당되는 계수들에 공통되는 제1공통패턴들을 구하고, 공통 서브-익스프레션 공유 방식으로 표현되는 수학식에 따라 상기 제1공통패턴들과 상기 이븐 행렬식의 입력신호를 해당 회수만큼 쉬프트한 결과들을 가산하며, 가산 결과들을 이용하여 상기 이븐 행렬식에 따른 연산을 수행하는 이븐 CSD부; 및상기 오드 행렬식에 포함되는 계수들에 공통되는 제2공통패턴들을 구하고, 공통 서브-익스프레션 공유 방식으로 표현되는 수학식에 따라 상기 제2공통패턴들과 상기 오드 행렬식의 입력신호를 해당 회수만큼 쉬프트한 결과들을 가산하며, 가산 결과들을 이용하여 상기 오드 행렬식에 따른 연산을 수행하는 오드 CSD부를 포함함을 특징으로하는 이산 코사인 변환 장치.
- 제1항에 있어서, 상기 입력신호 가공부는상기 입력신호를 두 그룹으로 나누고, 각 그룹의 입력신호들에서 각각 하나씩 선택하여 출력하는 데이터 선택부; 및상기 데이터 선택부에서 출력되는 신호를 각각 가산 및 감산하는 제1 및 제2가산기를 구비하는 가산부를 구비함을 특징으로하는 이산 코사인 변환 장치.
- 제1항 또는 제2항에 있어서,상기 이븐 CSD부는,상기 제1공통패턴을 구하는 공통패턴 계산부;상기 공통 서브-익스프레션 공유 방식으로 표현되는 수학식에 따라 상기 제1공통패턴들과 상기 이븐 행렬식의 입력신호를 해당 회수만큼 쉬프트한 결과들을 가산하여 상기 이븐 행렬식의 계수들을 계산하는 계수 계산부;복수의 선택기들을 구비하고, 상기 입력신호 가공부에서 선택되는 입력신호의 순서에 대응하여 상기 계수 계산부의 출력들중 하나를 각각 선택하는 선택부; 및상기 선택기들에 각각 연결되는 복수의 연산기를 구비하고, 연결된 선택기에서 출력되는 계수를 저장하며, 상기 입력신호 가공부에서 입력신호가 최종적으로 선택되면 자신이 저장한 계수들을 가산하는 연산부를 구비함을 특징으로하는 이산 코사인 변환 장치.
- 제1항 또는 제2항에 있어서,상기 오드 CSD부는,상기 제2공통패턴들을 구하는 공통패턴 계산부;상기 공통 서브-익스프레션 공유 방식으로 표현되는 수학식에 따라 상기 제2공통패턴들과 상기 오드 행렬식의 입력신호를 해당 회수만큼 쉬프트한 결과들을 가산하여 상기 오드 행렬식의 계수들을 계산하는 계수 계산부;복수의 선택기들을 구비하고, 상기 입력신호 가공부에서 선택되는 입력신호의 순서에 대응하여 상기 계수 계산부의 출력들중 하나를 각각 선택하는 선택부; 및상기 선택기들에 각각 연결되는 복수의 연산기를 구비하고, 연결된 선택기에서 출력되는 계수를 저장하며, 상기 입력신호 가공부에서 입력신호가 최종적으로 선택되면 자신이 저장한 계수들을 가산하는 연산부를 구비함을 특징으로하는 이산 코사인 변환 장치.
- (a) 이산 코사인 변환을 변환결과의 짝수번째 출력에 따른 이븐 행렬식 및 홀수번째 출력에 따른 오드 행렬식으로 각각 표현하는 단계;(b) 상기 행렬식들의 계수행렬들에 포함되는 각 계수를 CSD 방식으로 표현하는 단계;(c) 상기 CSD 방식으로 표현된 이븐 및 오드 행렬식의 계수들중 각각에 공통되는 패턴인 제1 및 제2공통패턴을 구하는 단계;(d) 공통 서브-익스프레션 공유 방식을 이용하여 상기 제1, 제2공통패턴, 상기 이븐 및 오드 행렬식의 계수들에 대한 수학식을 구하는 단계;(e) 입력 신호들중 두 입력신호를 선택하여 상기 이븐 및 오드 행렬식의 입 력신호 형태로 가공하는 단계; 및(f) 가공된 입력신호와 상기 계수들을 이용하여 상기 (d)단계의 수학식에 따른 연산을 수행하는 단계를 포함함을 특징으로하는 이산 코사인 변환 방법.
- 제5항에 있어서, 상기 (e)단계는(e1) 상기 입력신호를 두 그룹으로 나누고, 각 그룹의 입력신호들에서 각각 하나씩 선택하는 단계; 및(e2) 선택된 신호를 각각 가산 및 감산하는 단계를 구비함을 특징으로하는 이산 코사인 변환 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030032245A KR100575285B1 (ko) | 2003-05-21 | 2003-05-21 | 고속의 저전력 이산 코사인 변환 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030032245A KR100575285B1 (ko) | 2003-05-21 | 2003-05-21 | 고속의 저전력 이산 코사인 변환 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040100044A KR20040100044A (ko) | 2004-12-02 |
KR100575285B1 true KR100575285B1 (ko) | 2006-04-28 |
Family
ID=37377485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020030032245A KR100575285B1 (ko) | 2003-05-21 | 2003-05-21 | 고속의 저전력 이산 코사인 변환 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100575285B1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019127484A1 (zh) * | 2017-12-29 | 2019-07-04 | 深圳市大疆创新科技有限公司 | 视频编码方法、视频解码方法及相关装置 |
CN109451307B (zh) * | 2018-11-26 | 2021-01-08 | 电子科技大学 | 一种基于近似系数的一维dct运算方法和dct变换装置 |
-
2003
- 2003-05-21 KR KR1020030032245A patent/KR100575285B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR20040100044A (ko) | 2004-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2646778B2 (ja) | ディジタル信号処理装置 | |
EP0275979B1 (en) | Circuit for computing the quantized coefficient discrete cosine transform of digital signal samples | |
EP0736205B1 (en) | Method and apparatus for performing a fast hadamard transform | |
JPH0526229B2 (ko) | ||
JPH04313157A (ja) | 演算処理装置 | |
JPH076161A (ja) | 周波数から時間領域への変換方法及び装置 | |
JP6357345B2 (ja) | ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法 | |
Lim et al. | A serial-parallel architecture for two-dimensional discrete cosine and inverse discrete cosine transforms | |
Darji et al. | High-performance multiplierless DCT architecture for HEVC | |
JPH01269183A (ja) | 空間フィルタ画像処理装置 | |
KR100575285B1 (ko) | 고속의 저전력 이산 코사인 변환 장치 및 방법 | |
CN108184127A (zh) | 一种可配置的多尺寸dct变换硬件复用架构 | |
JP5589628B2 (ja) | 内積演算装置および内積演算方法 | |
KR100444729B1 (ko) | 레딕스-8 단일 경로 지연 전달 구조의 고속 퓨리에 변환장치 및 그 방법 | |
JP3652717B2 (ja) | 離散コサイン高速演算器 | |
Tonomura | High-Speed Digital Circuit for Discrete Cosine Transform | |
KR100433709B1 (ko) | 행렬 변화를 통한 분산산술처리 방식의 이산여현변환 방법 | |
JP2001084242A (ja) | 可変演算プロセッサ | |
BenAyed et al. | New design using a VHDL description for DCT based circuits | |
KR100306745B1 (ko) | 알에이씨를사용하는하프밴드서브밴드디씨티/아이디씨티회로및그방법 | |
JP3575991B2 (ja) | 直交変換回路 | |
KR0154919B1 (ko) | 2차원 역이산 코사인 변환 회로 | |
JP3547567B2 (ja) | 離散コサイン変換器 | |
JP3875183B2 (ja) | 演算装置 | |
JP2000137703A (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: 20090415 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |