KR20000008477A - 엠펙디코더의 역이산여현변환장치 - Google Patents

엠펙디코더의 역이산여현변환장치 Download PDF

Info

Publication number
KR20000008477A
KR20000008477A KR1019980028304A KR19980028304A KR20000008477A KR 20000008477 A KR20000008477 A KR 20000008477A KR 1019980028304 A KR1019980028304 A KR 1019980028304A KR 19980028304 A KR19980028304 A KR 19980028304A KR 20000008477 A KR20000008477 A KR 20000008477A
Authority
KR
South Korea
Prior art keywords
discrete cosine
inverse discrete
cosine transform
matrix
register
Prior art date
Application number
KR1019980028304A
Other languages
English (en)
Other versions
KR100275933B1 (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 KR1019980028304A priority Critical patent/KR100275933B1/ko
Priority to US09/287,367 priority patent/US6327602B1/en
Publication of KR20000008477A publication Critical patent/KR20000008477A/ko
Application granted granted Critical
Publication of KR100275933B1 publication Critical patent/KR100275933B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Discrete Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 MPEG 디코더의 역이산여현변환장치에 관한 것으로, N×N IDCT 커널 행렬의 대칭성을 이용함으로써 IDCT 블록의 승산기의 수를 N/4개로, 누산기의 수를 N/2개로 감소시키고, 이와 같은 하드웨어 구성요소의 감소에도 불구하고 동작속도의 손실이 전혀 발생하지 않도록 하는데 그 목적이 있다.
이와 같은 목적의 본 발명은 메모리부와, N/4개의 승산기, N/2개의 누산기, 전치 수단을 포함하여 이루어진다. 메모리부는 역이산여현변환 커널 행렬의 원소의 절대값을 저장한다. N/4개의 승산기에는 이산여현변환 계수 행렬의 원소 또는 1차원 역이산여현변환 계수 행렬의 전치 행렬의 원소가 피승수로서 입력되고, 역이산여현변환 커널 행렬의 원소가 승수로서 입력된다. N/2개의 누산기는 승산기의 출력을 입력받아 누산한다. 전치수단은 누산기의 출력을 입력받아 이를 전치시켜서 1차원 역이산여현변환 계수 행렬 또는 2차원 역이산여현변환 계수 행렬을 출력한다.
본 발명에 의한 효과로는 승산기와 누산기의 수가 감소하여 전체적인 하드웨어의 크기가 감소하는 것을 들 수 있다. 또한 하드웨어의 크기가 감소함에도 불구하고 MPEG2의 MP@ML 및 CCIR 601의 해상도와 동작속도의 요구조건을 충분히 만족한다.

Description

엠펙디코더의 역이산여현변환장치
본 발명은 MPEG 디코더의 역이산여현변환(Inverse Discrete Cosine Transform)장치에 관한 것으로, 특히 MPEG의 MP@ML과 CCIR 601의 권고를 만족하면서 8×8 데이타 블록을 2차원 역이산여현변환하기 위한 역이산여현변환장치의 구조에 관한 것이다.
MPEG(Moving Picture Experts Group, 일반적으로 엠펙이라고 발음)은 디지탈 화상 및 음성의 압축표준화를 위한 국제기구의 약식명칭으로 1988년부터 회의가 시작되었으나 HDTV 연구가 활발해진 90년대 초반에도 MPEG은 일부 극소수 전문가만이 알고 있는 용어였다.
그러나 이제는 MPEG 영상압축방식을 이용한 비디오 CD, VOD(Video On Demand) 등이 현실화되면서 일반적으로 쉽게 접할 수 있는 용어가 되었고, 멀티미디어 시대가 도래하면서 이 분야에 약간이라도 관심이 있는 사람이라면 귀에 익숙한 용어가 되었다.
그만큼 MPEG은 널리 알려진 국제표준이 되었고 음성보다도 특히 화상에 있어서 획기적인 성공을 거두었다. 이미 MPEG 신호를 복호할 수 있는 단일 칩 형태의 MPEG 디코더가 개발되었으며, 앞으로 영상신호의 보급에 있어서도 MPEG 방식을 이용하여 압축 저장한 매체들이 개발될 것이다.
도 1은 MPEG 디코더의 복호 과정을 나타낸 블록도이다.
가변장 복호화(Variable Length Decoding)(101)는 가변장부호화된(Variable Length Coded) DCT 계수를 대상으로 코딩의 역과정을 수행한다.
역스캔(Inverse Scan)(102)은 복호화된 일차원 DCT 계수를 스캐닝 방법에 따라서 다시 2차원으로 바꿔주는 과정이다. 스캐닝 방법은 지그재그 스캔(Zig-Zag Scan)과 교번 스캔(Alternate Scan)이 있고, 필요에 따라 임의의 스캐닝 방식을 사용할 수 있다.
역양자화(Inverse Quantization)(103)는 실제의 DCT 계수 값을 복원하는 작업이며, 포화과정(Saturation)과 불일치 제어(Mismatch Control) 과정을 포함한다. 이 포화과정과 불일치 제어과정은 MPEG이 인코딩은 규정하지 않고 디코딩만 규정하고 있기 때문에 인코더의 DCT와 디코더의 IDCT가 일치하지 않는 경우에 에러가 누적되는 것을 막기 위한 것이다.
역양자화(103)에 의해 발생한 DCT 계수는 역이산여현변환(104), 즉 IDCT를 거친 다음 움직임 보상(Motion Compensation)(105)이 이루어진다. 움직임 보상은 움직임 벡터(Motion Vector)를 사용하여 예측의 효율을 향상시키기 위한 것이다. 움직임 벡터는 복원된 과거 또는 미래의 기준 필드 또는 기준 프레임으로부터 발생하는 오프셋을 의미한다.
위에서 언급한 MPEG2의 IDCT는 수학적으로 다음의 식 (1)과 같이 표현된다.
여기서 x(i, j)(i, j=0, 1, 2, ···, N-1)는 픽셀 데이타이고, X(u, v)(u, v=0, 1, 2, ···, N-1)는 역양자화된 DCT 계수이다. 식 (1)에서 2차원 IDCT를 수행하기 위해서는 N4의 승산이 필요한 것을 알 수 있다.
그러나, 승산기는 하드웨적으로 매우 큰 면적이 필요하고, 또 연산속도가 매우 느리기 때문에, 이에 대한 해결방법이 요구된다.
따라서 본 발명은 N×N IDCT 커널 행렬의 대칭성을 이용함으로써 IDCT 블록의 승산기의 수를 N/4개로, 누산기의 수를 N/2개로 감소시키고, 이와 같은 하드웨어 구성요소의 감소에도 불구하고 동작속도의 손실이 전혀 발생하지 않도록 하는데 그 목적이 있다.
이와 같은 목적의 본 발명은 메모리부와, N/4개의 승산기, N/2개의 누산기, 전치 수단을 포함하여 이루어진다. 메모리부는 역이산여현변환 커널 행렬의 원소의 절대값을 저장한다. N/4개의 승산기에는 이산여현변환 계수 행렬의 원소 또는 1차원 역이산여현변환 계수 행렬의 전치 행렬의 원소가 피승수로서 입력되고, 역이산여현변환 커널 행렬의 원소가 승수로서 입력된다. N/2개의 누산기는 승산기의 출력을 입력받아 누산한다. 전치수단은 누산기의 출력을 입력받아 이를 전치시켜서 1차원 역이산여현변환 계수 행렬 또는 2차원 역이산여현변환 계수 행렬을 출력한다.
도 1은 MPEG 디코더의 복호 과정을 나타낸 블록도.
도 2는 두번의 1차원 IDCT로 2차원 IDCT가 이루어지도록 하드웨어를 구성하기 위한 개념도.
도 3은 하나의 1차원 IDCT 블록과 하나의 전치 블록만을 갖도록 하드웨어를 구성하기 위한 개념도.
도 4(a)는 1차원 IDCT 계수 행렬 Y=C·X의 행렬식을 나타낸 도면.
도 4(b)는 도 4(a)의 행렬식을 두 개의 행렬식으로 변형한 도면.
도 4(c)는 도 4(b)의 행렬식을 전개한 도면.
도 5는 도 3의 개념을 적용하여 구성한 하드웨어의 블록도.
도 6은 본 발명에 따른 2차원 IDCT를 위하여 구성된 하드웨어의 블록도.
도 7은 도 6의 1차원 IDCT 블록의 1차 1차원 IDCT 동작특성을 나타낸 타이밍도.
도 8(a)는 완전한 형태의 8×8 1차원 IDCT 계수를 나타낸 도면.
도 8(b)는 완전한 형태의 전치된 8×8 1차원 IDCT 계수 YT를 나타낸 도면.
도 9(a)는 IDCT 커널 행렬 C와 전치된 1차원 IDCT 계수 행렬의 첫 번째 8×1 행렬 YT를 승산 함으로써 구해지는 전치된 2차원 IDCT 계수 행렬의 8×1 행렬을 나타낸 도면.
도 9(b)는 도 9(a)의 행렬식을 두 개의 행렬식으로 변형한 도면.
도 10은 도 6의 1차원 IDCT 블록의 2차 1차원 IDCT 동작특성을 나타낸 타이밍도.
도 11(a)는 전치 메모리에 저장된 전치된 8×8 2차원 IDCT 계수 xT를 나타낸 도면.
도 11(b)는 완전한 형태의 8×8 2차원 IDCT 계수 x를 나타낸 도면.
* 도면의 주요 부분에 대한 부호의 설명 *
C : IDCT 커널, 또는 그 행렬식
Y : 1차원 IDCT 계수, 또는 그 행렬식
X : DCT 계수, 또는 그 행렬식
x : 2차원 IDCT 계수, 또는 그 행렬식
601, 603, 604, 606, 608∼619 : 레지스터 602, 605 : 승산기
620∼623 : 2×1 멀티플렉서 624∼627 : 누산기
629, 630 : 승산 블록 631∼634 : 누산 블록
628 : 36비트 버스라인
이와 같이 구성되는 본 발명의 바람직한 실시예를 도 2 내지 도 11을 참조하여 설명하면 다음과 같다.
먼저, 승산의 수를 줄이기 위하여 행렬 분리 연산방법(row-column decomposition)이 이용된다. 행렬 분리 연산방법은 먼저 행단위로 1차원 IDCT를 수행한 다음, 이 결과를 열단위로 다시 1차원 IDCT를 수행함으로써 2차원 IDCT를 수행한 것과 동일한 결과를 얻을 수 있는 방법이다.
식 (1)을 2개로 분리된 1차원 IDCT 행렬로 표현하면 다음과 같다.
즉, IDCT 커널 행렬 C(직교성을 갖는다)와 역양자화된 DCT 계수 행렬 X를 승산하면 1차원 IDCT의 결과인 행렬 Y가 구해진다.
위의 식 (1)과 (2)에 따르면, 2차원 IDCT 행렬 x는 다음의 식(3)과 같이 정의된다.
즉, 1차원 IDCT 결과인 행렬 Y를 전치(transpose)시켜서 다시 IDCT 커널 행렬 C와 승산하고, 이 결과를 다시 전치시키면 2차원 IDCT 행렬 x가 구해진다.
위의 식 (3)에서 행렬 C는 직교성을 가지므로 C·CT=I가 성립되며(I는 항등행렬), 식 (3)은 다음의 식(4)와 같이 재정의될수 있다.
식 (4)에 따르면, N×N의 2차원 IDCT는 3개의 N×N 행렬의 승산에 의해 이루어지기 때문에, 2N3의 승산이 요구되어 식 (1)과 비교하여 승산의 부담이 감소하는 것을 알 수 있다. 결과적으로, 2차원 IDCT는 두 번의 1차원 IDCT로 분리될 수 있고, 각 1차원 IDCT를 위한 N×N 행렬의 승산은 N개의 N×N 행렬과 N×1 행렬의 승산으로 이루어진다.
이와 같이 두번의 1차원 IDCT로 2차원 IDCT가 이루어지도록 하드웨어를 구성하기 위한 개념을 도 2에 나타내었다. 도 2에 나타낸 바와같이, 역양자화된 DCT 계수 행렬 X와 IDCT 커널 행렬 C를 대상으로 1차 1차원 IDCT를 수행한다. 1차원 IDCT 행렬 Y를 전치시켜서 새로운 행렬 YT를 구한다. 이 전치 행렬 YT와 상술한 IDCT 커널 행렬 C를 대상으로 다시 2차 1차원 IDCT를 실시한 다음, 그 결과를 전치시키면 2차원 IDCT 계수 행렬 x가 구해진다.
도 2에 나타낸 개념을 따르면 두 개의 1차원 IDCT 블록과 역시 두 개의 전치 블록이 필요하다. 만약 1차원 IDCT 블록과 전치 블록을 하나씩만 이용하여 하드웨어를 구성할 수 있다면 그만큼 면적이 감소된다.
이와 같이 하나의 1차원 IDCT 블록과 하나의 전치 블록만을 갖도록 하드웨어를 구성하기 위한 개념을 도 3에 나타내었다. 도 3은 각각 하나씩의 1차원 IDCT 블록과 전치 블록을 공유하여 2차원 IDCT를 수행하도록 함으로써 하드웨어의 면적을 줄일수 있음을 보여준다.
역양자화된 DCT 계수 행렬 X와 IDCT 커널 행렬 C를 대상으로 1차 1차원 IDCT를 수행한다. 1차 1차원 IDCT의 결과인 행렬 Y를 전치시켜서 새로운 행렬 YT를 구한다. 이 행렬 YT를 1차원 IDCT 블록에 피드백되도록 한다. 피드백된 행렬 YT와 상술한 IDCT 커널 행렬 C를 대상으로 다시 2차 1차원 IDCT를 수행하고, 그 결과를 전치시키면 2차원 IDCT의 결과인 행렬 x가 구해진다.
상술한 바와 같이 하나의 1차원 IDCT 블록만을 이용하여 2차원 IDCT를 수행하기 위해서는 1차원 IDCT 블록의 성능이 다음과 같은 연산능력을 만족해야 한다.
1차원 IDCT 블록의 동작 주파수를 40.5㎒라고 할 때, MPEG2의 MP@ML(Main Profile at Main Level) 수준의 영상복원에 요구되는 처리속도는 다음과 같이 계산된다. NTSC 사양에서 프레임의 전송속도는 30 [frame/sec]이고, 한 프레임을 구성하는데 필요한 화소의 수는 720×480개이다. MPEG2에서는 8×8 데이타 블록 단위로 IDCT가 수행되므로, 주어진 동작 주파수에서 단위 데이타 블록당 요구되는 연산능력은 다음과 같다.
먼저, 단위 프레임 당 데이타 블록 수는 다음과 같다.
식 (5)에서 승수 1.5는 MPEG 디코더에서 처리되는 휘도 신호와 색차신호의 비율이 4:2:0인 것에 기인하며, 이는 실제 디스플레이되는 영상의 휘도 신호와 색차신호의 비율과는 무관하다. 즉, 실제로 디스플레이되는 영상이 4:2:2 비율(CCIR 601)을 갖는 경우, MPEG 디코더에서 4:2:0의 비율로 데이타를 변환하더라도 비디오 제어부(video controller)에서 다시 4:2:2의 비율로 변환하기 때문이다.
1차원 IDCT 블록이 하나의 8×8 데이타 블록의 데이타를 처리하는데 필요한 동작 사이클 수는 다음과 같이 계산된다.
식 (6)에서 알 수 있듯이, 1차원 IDCT 블록이 하나의 데이타 블록을 166.7 사이클 내에 처리해야 한다.
그러나 이 조건은 1차원 IDCT 블록에서 디코딩의 정체(stall)가 전혀 일어나지 않고 디코딩이 연속적으로 수행될 때 성립한다. 실제로는 IDCT 블록 주변의 가변장 복호기(VLD, Variable Length Decoder) 또는 움직임 보상기(Motion Compensator) 등과의 인터페이싱 때문에 디코딩이 다소 정체된다.
이 디코딩의 정체에 따른 시간적 손실을 10%로 가정하면, 하나의 데이타 블록의 디코딩에 약 150 사이클(≒166.7×0.9) 정도가 할당된다고 볼 수 있다.
일반적으로 2차원 IDCT 블록에 입력되는 영상 데이타는 평균적으로 20%정도만이 비영값(non-zero value)을 갖는 것으로 알려져있다. 또한 P-픽쳐나 B-픽쳐에 비해서 I-픽쳐가 더 많은 비영 데이타를 갖게 되는데, 최악의 경우 각 1차원 IDCT의 입력에 대해 40%와 60% 정도의 비영 데이타를 갖는다.
만약 4개의 승산기와 8개의 누산기를 사용하고 매 동작 사이클마다 8×8 데이타 블록의 단위 데이타가 입력된다면, 하나의 데이타 블록을 구성하는 64개 데이타를 모두 변환하기 위하여 64 사이클이 필요하고, 2차원 IDCT를 고려하면 모두 128 사이클이 필요하다.
그러나 비영 데이타만을 액세스한다면, 이때 필요한 동작 사이클의 수는 (64×0.4)+(64×0.6)=64[사이클]이다. 이 숫자는 전술한 150 사이클의 요구조건을 충분히 만족하는 것이다. 따라서 이 여분의 동작 사이클을 활용하면 1/2의 연산기, 즉 2개의 승산기와 4개의 누산기만을 사용하여 연산이 수행되도록 하는 것이 충분히 가능하다.
연산기의 수를 1/2만 사용하게 되면, 전술한 바와 같이 단지 홀수번의 인덱스를 갖는 데이타를 처리하는 경우에만 1/2의 성능저하가 발생한다. 이는 전체적으로 볼 때 약 1.5배의 성능저하가 발생하는 것으로 볼 수 있다.
1차 1차원 IDCT 수행시의 데이타 블록당 열의 수는 8[열/블록]×0.4=3.2[열/블록]이고, 2차 1차원 IDCT 수행시의 데이타 블록당 행의 수는 8[행/블록]×0.6=4.8[행/블록]이다. 따라서 버터플라이 연산에 소요되는 데이타 블록당 사이클 수는 (3.2+4.8)×2=16사이클이 된다. 여기서 승수 2는 각 열(혹은 행)의 버터플라이 연산을 위해서 모두 2개의 동작 사이클이 요구되기 때문이다.
이와 같은 요소들을 모두 고려하여 하나의 8×8 데이타 블록의 연산에 소요되는 동작 사이클의 수를 계산하면 다음의 식 (7)과 같다.
따라서 하나의 8×8 데이타 블록의 연산이 150 사이클 내에 이루어져야 한다는 조건에 충분히 만족하는 것을 알 수 있다.
도 4(a)는 1차원 IDCT 계수 행렬 Y=C·X의 행렬식을 나타낸 도면이다. 도 4(a)에서 역양자화된 DCT 계수 행렬 X와 1차원 IDCT 계수 행렬 Y는 실제로 8×8의 구조를 갖는다. 8×1 행렬의 연산을 반복하면 8×8 행렬의 연산결과를 얻을 수 있으므로, 8×1 행렬만을 연산하는 경우를 예로 들어 설명하면 다음과 같다.
도 4(a)에 나타낸 IDCT 커널 행렬의 각각의 원소는 다음과 같은 값을 갖는다.
도 4(a)에서 IDCT 커널 행렬 C의 각 열들은 부호를 배제하면 점선을 중심으로 상하 대칭을 이룬다. 예를 들어 두 번째 열을 보면 도면의 위쪽부터 "b, d, e, g, -g, -e, -d, -b"의 순서로 배열되어 대칭성을 갖는 것을 알 수 있다. 세 번째 열 역시 도면의 위쪽부터 "c, f, -f, -c, -c, -f, f, c"의 순서로 배열되어 역시 상하 대칭성을 갖는 것을 알 수 있다.
이러한 대칭성을 이용하면 도 4(a)의 IDCT 커널 행렬식을 도 4(b)처럼 두 개의 분할된 커널 행렬식으로 변형하는 것이 가능하다. 분할된 두 개의 커널 행렬식을 각각 IDCT 서브커널 행렬 C'과 C"이라고 정의할 때, 도 4(a)의 IDCT 커널 행렬식은 도 4(b)와 같이 표현할 수 있다.
IDCT 서브커널 행렬 C'은 절대값 a, c, f를 원소로 가지며, C"은 절대값 b, d, e, g를 원소로 갖는다. DCT 계수 행렬 X'은 행렬 X의 원소들 가운데 짝수 인덱스의 원소 X0, X2, X4, X6를 가지며, 또 다른 DCT 계수행렬 X"은 홀수 인덱스의 원소 X1, X3, X5, X7을 갖는다.
도 4(c)는 도 4(b)의 행렬식을 전개한 것이다.
도 4(c)의 수식에서, 벡터 A의 원소들과 벡터 B의 원소들 가운데 동일한 인덱스를 갖는 원소들을 가산하면 행렬 Y의 원소 가운데 Y0, Y1, Y2, Y3이 구해지고, 감산하면 Y4, Y5, Y6, Y7이 구해지는 것을 알 수 있다.
또 벡터 A의 원소들을 보면 A0과 A3이 동일한 값들의 가산 또는 감산으로 이루어지며, A1과 A2역시 동일한 값들의 가산 또는 감산으로 이루어진다. 이는 IDCT 서브커널 행렬 C'이 대칭성을 갖는데 기인한다.
그러나 벡터 B의 경우에는 각각의 원소들이 공통점을 갖지 않는다.
도 4(b)에서 행렬 X' 또는 X"의 각 원소가 순차적으로 입력되면 행렬 C' 또는 C"의 해당 열과의 승산이 이루어지며, 그 결과는 누산된다. 이와 같은 승산과 누산이 행렬 C' 또는 C"의 모든 열을 대상으로 반복되면 새로운 4×1 벡터 A와 B가 구해진다. 이 두 벡터 A와 B에 대해서 버터플라이 연산을 수행하면 최종결과 Y'과 Y"이 얻어진다. 행렬 Y'은 벡터 A와 B의 가산에 의해서 구해지며, 행렬 Y"은 벡터 A와 B의 감산에 의해서 구해진다.
행렬 C' 또는 C"의 열의 원소가 4개이므로 승산기 역시 4개가 필요하다. 그러나 IDCT 서브 커널 행렬 C'은 각 원소의 절대값에 있어서 점선을 중심으로 상하 대칭을 이룬다.
따라서 부호를 배제하고 두 개의 승산기로 IDCT 서브커널 행렬 C'의 위쪽 두 행만을 승산한 다음, 승산 결과의 부호는 승산 결과를 누산 과정에서 보정하면 DCT 계수 행렬 X' 또는 X"과 IDCT 서브 커널 행렬 C' 또는 C"의 정상적인 승산 결과를 얻을 수 있다.
그러나 b, d, e, g의 원소를 갖는 또 다른 IDCT 서브 커널 행렬 C"은 대칭성을 갖지 않기 때문에 필요한 모든 승산이 동시에 수행되도록 하기 위해서는 4개의 승산기를 사용하는 것이 불가피하다. 그러나 도 4(b)에서 대칭성을 갖지 않는 IDCT 서브 커널 행렬 C"과 DCT 계수 행렬 X"를 승산할 때에는 행렬 X"의 각각의 원소를 2 사이클 동안 반복해서 액세스하면, 두 개의 승산기만으로도 도 4(b)의 행렬식의 연산이 충분히 가능하다.
그러나 이와 같은 방법으로 2개의 승산기 만을 사용하는 하드웨어 구조는 4개의 승산기를 사용하는 구조에 비해 동작 속도가 1/2로 저하된다. 따라서 2개의 승산기를 사용하여 하드웨어를 구성하는 것이 타당성을 가지려면 하나의 데이타 블록(8×8)을 처리하는데 필요한 사이클 수가 앞부분에서 계산된 150사이클 이하이어야 한다.
도 5는 도 3의 개념을 적용하여 구성한 하드웨어의 블록도이다.
2×1 멀티플렉서(501)에는 역양자화된 DCT 계수 행렬 X 또는 1차원 IDCT 계수 행렬 Y의 전치 행렬 YT가 입력된다. 1차 1차원 IDCT 수행 시에는 DCT 계수 행렬 X가 입력되고, 2차 1차원 IDCT 수행 시에는 전치 행렬 YT가 입력된다.
멀티플렉서(501)의 출력은 1차원 IDCT 블록(502)에 입력된다. 롬(503)은 멀티플렉서(501)로부터 입력된 역양자화된 DCT 계수 행렬 X의 원소들의 인덱스를 입력받아 IDCT 커널 행렬 C의 해당 원소들을 1차원 IDCT 블록(502)에 제공한다. 1차원 IDCT 블록(502)에서는 입력된 DCT 계수 행렬 X와 IDCT 커널 행렬 C를 승산하여 1차 1차원 IDCT가 이루어진다.
1차원 IDCT 행렬 Y는 전치 메모리(504)에서 출력될 때 행렬 Y의 전치 행렬 YT로 전치되어 1×2 디멀티플렉서(505)의 제 1 출력이 된다. 이 디멀티플렉서(505)의 제 1 출력은 상술한 멀티플렉서(501)의 제 2 입력으로 피드백된다.
2차 1차원 IDCT를 수행할 때의 멀티플렉서(501)의 출력은 역양자화된 DCT 계수 행렬 X가 아닌 피드백된 전치 행렬 YT이다.
1차원 IDCT 블록(502)에서는 행렬 YT와 IDCT 커널 행렬 C를 승산하여 2차 1차원 IDCT가 이루어진다. 두 번에 걸친 1차원 IDCT 결과는 전치 메모리(504)에서 전치된 다음, 디멀티플렉서(505)의 제 2 출력이 된다. 이 디멀티플렉서(505)의 제 2 출력이 실질적인 2차원 IDCT 행렬 x이며, IDCT 출력버퍼(506)에 입력된다.
도 6은 본 발명에 따른 2차원 IDCT를 위하여 구성된 하드웨어의 블록도로서, 도 5의 하드웨어 구성 가운데 1차원 IDCT 블록(502)을 상세하게 나타낸 도면이다. 도 7은 도 6의 1차원 IDCT 블록(502)의 1차 1차원 IDCT 동작특성을 나타낸 타이밍도이다.
도 6에서, 1차원 IDCT 블록(502)은 도 4(b)의 행렬식을 연산하기 위한 하드웨어 구성으로서, 두 개의 승산 블록(629)(630)과 네 개의 누산 블록(631)(632)(633)(634)으로 구성된다.
두 개의 승산 블록(629)(630)에는 멀티플렉서(501)의 출력이 피승수로서 입력되고, IDCT 커널 롬(635)(636)에 저장되어 있는 IDCT 커널 행렬 C의 서브커널인 C'과 C"의 원소들이 승수로서 입력된다. 각 승산 블록(629)(630)의 출력은 네 개의 누산 블록(631)(632)(633)(634)에 분할 입력된다. 첫 번째 승산 블록(629)의 출력은 두 개의 누산 블록(631)(632)에 입력되며, 두 번째 승산 블록(630)의 출력은 나머지 두 개의 누산 블록(633)(634)에 입력된다.
각 누산 블록(631)(632)(633)(634)의 출력은 36비트 버스라인(628)을 통해 전치 메모리(504)에 입력된다.
1차원 IDCT 수행 시에 전치 메모리(504)에 입력되는 데이타는 1차원 IDCT 계수 행렬 Y(8×8)이다. 이 행렬 Y가 전치 메모리(504)에서 출력될 때에는 최초 입력시의 열 데이타가 행 데이타로 바뀌고, 최초 입력시의 행 데이타가 열 데이타로 바뀌어 디멀티플렉서(505)에 입력된다. 즉, 1차원 IDCT 계수 행렬 Y가 전치 메모리(504)에서 전치 행렬 YT로 변환되는 것이다.
1차원 IDCT 계수 행렬 Y의 전치행렬 YT가 상술한 2차 1차원 IDCT 과정을 거쳐서 전치 메모리(504)에 저장될 때에는 2차원 IDCT 계수 행렬 x의 전치행렬 xT의 형태로 저장된다. 따라서 이때의 전치 메모리(504)에서 출력되어 디멀티플렉서(505)를 통하여 IDCT 출력버퍼(506)에 입력되는 행렬은 2차원 IDCT 계수 행렬 x이다.
상술한 멀티플렉서(501)의 출력은 1차 1차원 IDCT가 수행될 때와 2차 1차원 IDCT가 수행될 때 각각 다른 경로를 통하여 승산 블록(630)에 입력된다. 1차 1차원 IDCT 수행 시에는 멀티플렉서(501)에서 출력되는 DCT 계수 행렬 X의 원소들이 레지스터(607)를 경유하여 첫 번째 승산 블록(629)의 입력보다 한 클럭 늦게 두 번째 승산 블록(630)에 입력된다. 2차 1차원 IDCT 수행 시에는 멀티플렉서(501)에서 출력되는 전치 행렬 YT의 원소들이 레지스터(607)를 경유하지 않고 직접 승산 블록(630)에 입력된다.
레지스터(607)는 첫 번째 IDCT 수행 시에 두 번째 승산 블록(630)의 피승수 입력 시점을 첫 번째 승산 블록(629)의 피승수 입력 시점보다 한 클럭 만큼 지연시키기 위한 것이다. 따라서 1차 1차원 IDCT 수행 시에는 두 개의 승산 블록(629)(630)이 한 사이클 간격을 두고 순차적으로 승산을 수행하고(serial), 2차 1차원 IDCT 수행 시에는 두 승산 블록(629)(630)이 동시에 승산을 수행한다(parallel).
1차 1차원 IDCT 수행 시에 두 승산 블록(629)(630)을 순차적으로 활성화시키는 이유는 상술한 버스라인의 수를 최소화하기 위한 것이다. 1차 1차원 IDCT 수행의 결과인 전치 행렬 YT의 단위 원소는 16비트이다. 두 개의 승산 블록(629)(630)의 출력이 모두 네 개의 누산 블록(631)(632)(633)(634)에 의해 누산되어 1차 1차원 IDCT 수행 결과가 발생하기 때문에, 만약 이를 동시에 연산 처리하면 최대 64비트의 데이타가 발생하여 데이타 버스 역시 64비트의 데이타 버스라인이 요구된다.
그러나 2차 1차원 IDCT의 결과인 xT의 단위 원소는 9비트로 구성되어, 누산의 결과는 최대 36비트이다. 따라서 버스 라인을 36비트로 하고, 1차 1차원 IDCT 수행 시에 두 승산 블록(629)(630)을 순차적으로 활성화시켜서 64비트의 데이타가 32비트씩 두번에 걸쳐 발생하도록 함으로써 필요한 버스라인의 수를 최소화한 것이다.
승산 블록(629)은 피승수 입력단과 승수 입력단에 각각 하나씩의 레지스터(601)(603)를 갖는다. 또 다른 승산 블록(630) 역시 피승수 입력단과 승수 입력단에 각각 하나씩의 레지스터(604)(606)를 갖는다.
1차 1차원 IDCT 수행 시에, 첫 번째 승산 블록(629)은 도 4(b)의 식에서 벡터 A의 원소 A0과 A3, 그리고 벡터 B의 원소 B0과 B3을 발생시키는데 필요한 승산을 수행한다. 역양자화된 DCT 계수 행렬 X의 원소와 IDCT 커널 롬(635)으로부터 제공되는 IDCT 커널 행렬 C의 원소를 해당 인덱스에 따라 승산하여 그 결과를 누산 블록(631)(632)으로 출력한다.
두 번째 승산 블록(630)은 도 4(b)의 식에서 벡터 A의 원소 A1과 A2, 그리고 벡터 B의 원소 B1과 B2를 발생시키는데 필요한 승산을 수행한다. 역양자화된 DCT 계수 행렬 X의 원소와 IDCT 커널 롬(636)으로부터 제공되는 IDCT 커널 행렬 C의 원소를 해당 인덱스에 따라 승산하여 그 결과를 누산 블록(631)(632)으로 출력한다.
두 개의 IDCT 커널 롬(635)(636)에는 IDCT 커널 행렬의 원소에 해당하는 값들이 저장된다. 이 값들은 IDCT 커널 행렬의 행과 열에 따라서 부호(+, -)가 결정된다.본 발명의 가장 큰 목적이 회로의 면적을 줄이는 것이므로, IDCT 커널 롬(635)(636)에 IDCT 커널 행렬 C의 원소들의 절대값만을 저장하고, 각각의 승산 블록(629)(630)의 레지스터(603)(606)에서 부호가 제어되도록 하면 IDCT 커널 롬(635)(636)의 크기를 줄일 수 있다. 이때, IDCT 커널 롬(635)(636)의 원소 출력순서는 멀티플렉서(501)에 입력되는 DCT 계수 행렬 X의 원소들의 인덱스를 고려하여 결정된다.
각각의 누산 블록(631∼634)은 모두 동일한 구조를 갖는다. 먼저 누산 블록(631)을 보면 승산 블록(629)의 출력이 레지스터(609)를 경유하여 2×1 멀티플렉서(620)에 입력된다. 이 멀티플렉서(620)의 출력이 누산기(624)에 입력되어 이전 상태의 값과 누산된다. 이 누산기(624)의 최종적인 누산 결과는 상술한 벡터 A의 원소 A0과 벡터 B의 원소 B0이다.
벡터 A의 원소 A0은 레지스터(610)에 저장되었다가 멀티플렉서(620)의 제 2 입력이 되고, 벡터 B의 원소 B0은 레지스터(608)에 저장된다. 이 두 레지스터(608)(610)에 저장되어 있는 원소 A0과 B0이 누산기(624)에 의해 가산되어 1차 1차원 IDCT 계수 행렬 Y의 원소 Y0이 된다.
또 다른 누산 블록(632) 역시 상술한 누산 블록(631)과 동일하게 동작하여 벡터 A의 원소 A3과 벡터 B의 원소 B3을 발생시킨다. 이미 언급한 바와 같이 도 4(b)에서 IDCT 서브커널 행렬 C'을 보면 각 원소의 절대값에 있어서 점선을 중심으로 상하 대칭성을 갖는다. 이와 같은 대칭성을 이용하면 두 개의 승산 블록 만으로도 네 개의 승산 결과를 발생시킬 수 있다.
도 7의 (1)과 (2)는 멀티플렉서(501)에서 출력되는 DCT 계수 행렬 X의 원소들이 도 6의 레지스터(601)에 입력되는 순서와, IDCT 커널 롬(635)에서 출력되는 IDCT 커널 행렬 C의 원소들이 도 6의 레지스터(603)에 입력되는 순서를 보여준다. 도 6의 1차원 IDCT 블록(502)이 도 4(b)의 행렬식의 연산을 수행하기 위해서는 승산기(629)에 피승수와 승수가 입력되는 순서가 도 7의 (1)과 (2)에 도시되어 있는 순서를 만족해야 한다.
도 7의 (6)과 (7)은 멀티플렉서(501)에서 출력된 DCT 계수 행렬 X의 원소들이 레지스터(607)를 경유하여 도 6의 레지스터(604)에 입력되는 순서와, IDCT 커널 롬(636)에서 출력되는 IDCT 커널 행렬 C의 원소들이 도 6의 레지스터(606)에 입력되는 순서를 보여준다. 도 6의 1차원 IDCT 블록(502)이 도 4(b)의 행렬식의 연산을 수행하기 위해서는 승산기(630)에 피승수와 승수가 입력되는 순서가 도 7의 (6)과 (7)에 도시되어 있는 순서를 만족해야 한다.
승산 블록(629)에서는 도 7의 (1)과 (2)에 나타낸 것과 같은 순서로 입력되는 DCT 계수 행렬 X의 원소와 IDCT 커널 행렬 Y의 원소들을 승산한다. 승산은 데이타가 입력되는 순서대로 이루어진다. 즉, DCT 계수행렬 X의 원소들 가운데 짝수 인덱스의 원소인 X0, X2, X4, X6은 각각 IDCT 서브커널 행렬 C'의 원소인 a, c, a, f와 승산된다. 이때 DCT 계수 행렬 X의 짝수 인덱스의 원소인 X0, X2, X4, X6은 레지스터(601)에 각각 한 클럭동안 확보되어 있어야 한다.
그러나 DCT 계수 행렬 X의 홀수 인덱스의 원소인 X1, X3, X5, X7은 각각 두개씩의 IDCT 서브커널 행렬 C"의 원소들과 승산되어야 하기 때문에 레지스터(603)에 각각 두 클럭동안 확보되어 있어야 한다.
승산 블록(629)에서 출력되는 승산 결과는 두 개의 누산 블록(631)(632)의 레지스터(609)(612)를 통하여 멀티플렉서(620)(621)에 각각 입력된다. 누산 블록(631)에서는 DCT 계수 행렬 X의 짝수 인덱스 원소 X0, X2, X4, X6과 IDCT 서브커널 행렬 C'의 원소 a, c, a, f의 승산 결과가 누산되어 벡터 A의 원소 A0이 발생한다. 이 원소 A0은 누산 블록(631)의 레지스터(610)에 저장된다.
동시에 또 다른 누산 블록(632)에서는 DCT 계수 행렬 X의 홀수 인덱스 원소 X0, X2, X4, X6과 IDCT 서브커널 행렬 C'의 원소 a, c, a, f의 승산 결과가 누산되어 벡터 A의 원소 A3이 발생한다. 이 원소 A3은 누산 블록(632)의 레지스터(613)에 저장된다.
벡터 A의 두 원소 A0과 A3의 누산이 완료된 다음, 누산 블록(631)에서는 DCT 계수 행렬 X의 홀수 인덱스 원소 X1, X3, X5, X7과 IDCT 서브커널 행렬 C"의 원소 b, d, e, g의 승산 결과가 누산되어 벡터 B의 원소 B0이 발생한다. 원소 B0은 누산 블록(631)의 레지스터(608)에 저장된다.
이때 또 다른 누산 블록(632)에서는 DCT 계수 행렬 X의 홀수 인덱스 원소 X1, X3, X5, X7과 IDCT 서브커널 행렬 C"의 원소 g, e, d, b의 승산 결과가 누산되어 벡터 B의 원소 B3이 발생한다. 원소 B3은 누산 블록(632)의 레지스터(611)에 저장된다.
이와 같이 벡터 A의 두 원소 A0과 A3, 벡터 B의 원소 B0, B3이 발생하면, 누산 블록(631)에서는 원소 A0과 원소 B0이 가산되어 1차원 IDCT 계수 행렬 Y의 원소 Y0이 발생한다. 이 원소 Y0은 레지스터(608)에 저장된다. 만약 누산 블록(631)에서 상술한 두 원소 A0과 B0이 감산되면 1차원 IDCT 계수 행렬 Y의 원소 Y4가 발생한다.
이때 또 다른 누산 블록(632)에서는 원소 A3과 원소 B3이 가산되어 1차원 IDCT 계수 행렬 Y의 원소 Y3이 발생한다. 이 원소 Y3은 레지스터(611)에 저장된다. 만약 누산 블록(632)에서 상술한 두 원소 A3과 B3이 감산되면 1차원 IDCT 계수 행렬 Y의 원소 Y7이 발생한다.
두 번째 승산 블록(630)에는 DCT 계수 행렬 X의 원소들과 IDCT 커널행렬 C의 원소들이 첫 번째 승산 블록(629)의 경우보다 한 클럭 늦게 입력된다.
승산 블록(630)에서는 도 7의 (6)과 (7)에 나타낸 것과 같은 순서로 입력되는 DCT 계수 행렬 X의 원소와 IDCT 커널 행렬 Y의 원소들을 승산한다. 승산은 데이타가 입력되는 순서대로 이루어진다. 즉, DCT 계수행렬 X의 원소들 가운데 짝수 인덱스의 원소인 X0, X2, X4, X6은 각각 IDCT 서브커널 행렬 C'의 원소인 a, f, a, c와 승산된다. 이때 DCT 계수 행렬 X의 짝수 인덱스의 원소인 X0, X2, X4, X6은 레지스터(604)에 각각 한 클럭동안 확보되어 있어야 한다.
그러나 DCT 계수 행렬 X의 홀수 인덱스의 원소인 X1, X3, X5, X7은 각각 두개씩의 IDCT 서브커널 행렬 C"의 원소들과 승산되어야 하기 때문에 레지스터(606)에 각각 두 클럭동안 확보되어 있어야 한다.
승산 블록(630)에서 출력되는 승산 결과는 두 개의 누산 블록(633)(634)의 레지스터(615)(618)를 통하여 멀티플렉서(622)(623)에 각각 입력된다. 누산 블록(633)에서는 DCT 계수 행렬 X의 짝수 인덱스 원소 X0, X2, X4, X6과 IDCT 서브커널 행렬 C'의 원소 a, f, a, c의 승산 결과가 누산되어 벡터 A의 원소 A1이 발생한다. 이 원소 A1은 누산 블록(633)의 레지스터(616)에 저장된다.
동시에 또 다른 누산 블록(634)에서는 DCT 계수 행렬 X의 홀수 인덱스 원소 X0, X2, X4, X6과 IDCT 서브커널 행렬 C'의 원소 a, f, a, c의 승산 결과가 누산되어 벡터 A의 원소 A2가 발생한다. 이 원소 A2는 누산 블록(634)의 레지스터(619)에 저장된다.
벡터 A의 두 원소 A1과 A2의 누산이 완료된 다음, 누산 블록(633)에서는 DCT 계수 행렬 X의 홀수 인덱스 원소 X1, X3, X5, X7과 IDCT 서브커널 행렬 C"의 원소 d, g, b, e의 승산 결과가 누산되어 벡터 B의 원소 B1이 발생한다. 원소 B1은 누산 블록(633)의 레지스터(614)에 저장된다.
이때 또 다른 누산 블록(634)에서는 DCT 계수 행렬 X의 홀수 인덱스 원소 X1, X3, X5, X7과 IDCT 서브커널 행렬 C"의 원소 e, b, g, d의 승산 결과가 누산되어 벡터 B의 원소 B2가 발생한다. 원소 B2는 누산 블록(634)의 레지스터(617)에 저장된다.
이와 같이 벡터 A의 두 원소 A1과 A2, 벡터 B의 원소 B1, B2가 발생하면, 누산 블록(631)에서는 원소 A1과 B1이 가산되어 1차원 IDCT 계수 행렬 Y의 원소 Y1이 발생한다. 이 원소 Y1은 레지스터(614)에 저장된다. 만약 누산 블록(633)에서 상술한 두 원소 A1과 B1이 감산되면 1차원 IDCT 계수 행렬 Y의 원소 Y5가 발생한다.
이때 또 다른 누산 블록(634)에서는 원소 A2와 원소 B2가 가산되어 1차원 IDCT 계수 행렬 Y의 원소 Y2가 발생한다. 이 원소 Y2는 레지스터(617)에 저장된다. 만약 누산 블록(634)에서 상술한 두 원소 A2와 B2가 감산되면 1차원 IDCT 계수 행렬 Y의 원소 Y6이 발생한다.
상술한 바와같이 두 개의 승산 블록(629)(630)의 동작이 한 사이클 간격을 두고 순차적으로 이루어진다. 따라서 누산 블록(631)(632)에서 Y0과 Y3이 출력된 다음 한 클럭 뒤에 누산 블록(633)(634)에서 Y1과 Y2가 출력된다.
1차원 IDCT 계수 행렬 Y의 단위 원소는 16비트이므로, 36비트의 버스라인을 통하여 Y0과 Y3의 두 원소가 전치 메모리(504)로 먼저 출력되고, 한 클럭 뒤에 나머지 두 원소 Y1과 Y2가 전치 메모리(504)로 출력된다. 이와 같이 레지스터(607)의 지연 작용에 의해 총 64비트의 데이타가 단지 36비트의 버스라인을 통하여 충분히 전송될 수 있다.
만약, 레지스터(607)를 사용하지 않고, 대신 데이타 버스라인(628)을 64비트로 증가시키는 것도 가능하다. 상술한 바와같이 레지스터(607)는 1차원 IDCT에서 두 개의 승산 블록(629)(630)을 한 사이클의 간격을 두고 순차적으로 동작시킴으로써 데이타 발생 시점에 차이를 두어 적은 수의 버스라인으로도 데이타의 출력이 가능하도록 한 것이다. 따라서 데이타 버스라인(628)을 64비트로 증가시키고, 레지스터(607) 없이 두 개의 승산 블록(629)(630)을 동시에 동작시키면 64비트의 데이타가 64비트의 데이타 버스라인을 통하여 전달된다.
상술한 바와 같은 동작이 반복되어 1차원 IDCT 계수 행렬 Y(8×1)가 구해진다. 실제의 1차원 IDCT 계수는 8×8의 구조인데, 상술한 동작이 여덟번 반복됨으로써 8×8의 완전한 형태의 1차원 IDCT 계수가 구해진다. 구해진 1차원 IDCT 계수 행렬은 도 6의 전치 메모리(504)에 저장된다.
완전한 형태의 8×8 1차원 IDCT 계수를 도 8(a)에 나타내었다. 도 8(a)에는 1차원 IDCT 계수가 전치 메모리(504)에 기록되는(WRITE) 순서와 읽혀지는(READ) 순서가 도시되어 있다. 전술한 각각의 누산 블록(631∼634)에서 출력되는 8×1의 1차원 IDCT 계수 행렬 Y의 원소들 Y0∼Y7은 전치 메모리(504)에 열 단위(↓)로 기록된다. 그러나 전치 메모리(504)에서 데이타가 읽혀질 때는 행단위(→)로 읽혀진다. 도 8(b)는 완전한 형태의 전치된 8×8 1차원 IDCT 계수 행렬 YT를 보여준다.
도 9(a)는 IDCT 커널 행렬 C와 전치된 1차원 IDCT 계수 행렬의 첫 번째 8×1 벡터 YT를 승산함으로써 구해지는 전치된 2차 1차원 IDCT 계수 행렬 xT의 행렬식을 보여준다. 도 9(a)의 행렬식과 도 4(a)의 행렬식을 비교하면, 두 행렬식의 포맷이 동일한 것을 알 수 있다. 따라서 도 9(a)의 행렬식 역시 도 9(b)와 같이 변형될 수 있다.
도 10은 도 6에 도시한 본 발명에 따른 하드웨어 구성을 이용하여 도 9(b)의 2차 1차원 IDCT 행렬식을 연산할 때의 1차원 IDCT 블록(502)의 동작 특성을 나타낸 타이밍도이다.
2차 1차원 IDCT의 연산 동작은 1차 1차원 IDCT의 연산 동작과 동일하다. 다만, 2차 1차원 IDCT에서는 1차원 IDCT 블록(502)에 DCT 계수 행렬의 원소 X0∼X7대신 전치된 1차원 IDCT 계수 행렬 YT의 원소 Y0∼Y70이 입력된다.
또 1차 1차원 IDCT에서 두 승산 블록(629)(630)이 한 클럭의 시차를 두고 순차적으로 동작하였던 것에 반하여, 2차 1차원 IDCT에서는 두 승산 블록(629)(630)이 동시에 동작하는 것이 다르다(도 10의 (2)와 (3), (6)과 (7) 참조).
도 11(a)는 전치 메모리(504)에 저장된 2차 1차원 IDCT의 결과인 전치된 8×8 2차원 IDCT 계수 xT를 보여준다. 이 전치된 2차원 IDCT 행렬 xT는 전치 메모리(504)에서 읽혀질 때 전치되어 도 11(b)처럼 완전한 형태의 8×8 2차원 IDCT 계수 x로서 IDCT 출력버퍼(506)에 입력된다.
본 발명에 의한 효과로는 승산기와 누산기의 수가 감소하여 전체적인 하드웨어의 크기가 감소하는 것을 들 수 있다. 또한 하드웨어의 크기가 감소함에도 불구하고 MPEG2의 MP@ML 및 CCIR 601의 해상도와 동작속도의 요구조건을 충분히 만족한다.

Claims (7)

  1. N×N 구조의 데이타 블록을 역이산여현변환하기 위한 엠펙 디코더의 역이산여현변환장치에 있어서,
    역이산여현변환 커널 행렬의 원소의 절대값을 저장하는 메모리부와;
    이산여현변환 계수 행렬의 원소 또는 1차원 역이산여현변환 계수 행렬의 전치 행렬의 원소가 피승수로서 입력되고, 상기 역이산여현변환 커널 행렬의 원소가 승수로서 입력되는 N/4개의 승산기와;
    상기 승산기의 출력을 입력받아 누산하는 N/2개의 누산기와;
    상기 누산기의 출력을 입력받아 이를 전치시켜서 상기 1차원 역이산여현변환 계수 행렬 또는 2차원 역이산여현변환 계수 행렬을 출력하는 전치 수단을 포함하여 이루어지는 엠펙 디코더의 역이산여현변환장치.
  2. 청구항 1에 있어서, 상기 승산기는,
    1차 1차원 역이산여현변환시에 상기 이산여현변환 계수 행렬의 원소가 상기 피승수로서 입력되거나, 또는 2차 1차원 역이산여현변환시에 상기 1차원 역이산여현변환 계수 행렬의 전치행렬의 원소가 상기 피승수로서 입력되고, 상기 역이산여현변환 커널의 원소가 상기 승수로서 입력되어, 상기 피승수와 상기 승수를 승산하도록 이루어지는 엠펙 디코더의 역이산여현변환장치.
  3. 청구항 1에 있어서, 상기 누산기는,
    상기 승산기의 출력을 입력받아 누산하여 상기 1차 1차원 역이산여현변환시에 상기 1차원 역이산여현변환 계수 행렬의 각각의 원소를 발생시키고;
    상기 2차 1차원 역이산여현변환시에 2차원 역이산여현변환 계수 행렬의 전치 행렬의 각각의 원소를 발생시키도록 이루어지는 엠펙 디코더의 역이산여현변환장치.
  4. 청구항 1에 있어서, 승산기에 상기 역이산여현변환 커널 행렬의 원소의 절대값이 입력되고, 상기 누산기의 누산 과정에서 상기 역이산여현변환 커널 행렬의 원소의 부호를 적용하도록 이루어지는 엠펙 디코더의 역이산여현변환장치.
  5. 청구항 1에 있어서, 상기 전치 수단은,
    상기 승산기의 출력을 행렬 형태로 저장하고, 저장된 행렬을 전치시켜서 상기 1차원 역이산여현변환 계수 행렬의 원소 또는 상기 2차원 역이산여현변환 계수 행렬의 원소를 출력하는 전치 메모리와;
    상기 1차원 역이산여현변환 계수 행렬을 상기 승산기로 출력하고, 상기 전치 메모리의 출력이 상기 2차원 역이산여현변환 계수 행렬을 상기 역이산여현변환장치의 외부로 출력하도록 이루어지는 엠펙 디코더의 역이산여현변환장치.
  6. N×N 구조의 데이타 블록을 역이산여현변환하기 위한 엠펙 디코더의 역이산여현변환장치에 있어서,
    역이산여현변환 커널의 값을 저장하고, 이산여현변환 계수 행렬의 원소 또는 16비트의 1차원 역이산여현변환 계수 행렬의 전치행렬의 원소를 입력받아 입력된 원소의 인덱스에 해당하는 상기 역이산여현변환 커널의 값을 출력하는 역이산여현변환 커널 저장수단과;
    1차 1차원 역이산여현변환시에 상기 이산여현변환 계수 행렬의 원소가 입력되어 저장되고 2차 1차원 역이산여현변환시에 상기 1차원 역이산여현변환 계수 행렬의 전치행렬의 원소가 저장되는 제 1 레지스터와, 상기 역이산여현변환 커널 저장수단에서 출력되는 상기 역이산여현변환 커널의 원소를 입력받아 저장하고 해당 인덱스에 따라 부호를 제어하는 제 2 레지스터와, 상기 제 1 레지스터와 상기 제 2 레지스터에 저장된 값을 승산하는 승산기를 포함하여 이루어지는 제 1 승산 수단과;
    상기 1차 1차원 역이산여현변환시에 상기 이산여현변환 계수 행렬의 원소가 상기 제 1 레지스터의 입력시점보다 늦게 입력되어 저장되고 상기 2차 1차원 역이산여현변환시에 상기 1차원 역이산여현변환 계수 행렬의 전치행렬의 원소가 저장되는 제 3 레지스터와, 상기 역이산여현변환 커널 저장수단에서 출력되는 상기 역이산여현변환 커널의 원소를 입력받아 저장하고 해당 인덱스에 따라 부호를 제어하는 제 4 레지스터와, 상기 제 3 레지스터와 상기 제 4 레지스터에 저장된 값을 승산하는 승산기를 포함하여 이루어지는 제 2 승산 수단과;
    상기 제 1 승산 수단의 출력이 저장되는 제 5 레지스터와, 상기 제 5 레지스터에 저장된 값 또는 제 6 레지스터에 저장된 값을 선택적으로 출력하는 제 1 멀티플렉서와, 상기 제 2 멀티플렉서의 출력과 제 7 레지스터에 저장된 값이 입력되고 그 출력이 상기 제 6 레지스터 또는 상기 제 7 레지스터에 선택적으로 피드백되는 제 1 누산기를 포함하여 이루어져서, 상기 제 1 승산 수단의 출력을 누산하여 상기 1차 1차원 역이산여현변환시에 상기 1차원 역이산여현변환 계수 행렬의 제 1 행 원소 또는 제 5 행 원소를 발생시키고, 상기 2차 1차원 역이산여현변환시에 각각의 원소가 9비트로 이루어진 2차원 역이산여현변환 계수 행렬의 전치 행렬의 제 1 행 원소 또는 제 5 행 원소를 발생시키는 제 1 누산 수단과;
    상기 제 1 승산 수단의 출력이 저장되는 제 8 레지스터와, 상기 제 8 레지스터에 저장된 값 또는 제 9 레지스터에 저장된 값을 선택적으로 출력하는 제 2 멀티플렉서와, 상기 제 3 멀티플렉서의 출력과 제 10 레지스터에 저장된 값이 입력되고 그 출력이 상기 제 9 레지스터 또는 상기 제 10 레지스터에 선택적으로 피드백되는 제 2 누산기를 포함하여 이루어져서, 상기 제 1 승산 수단의 출력을 누산하여 상기 1차 1차원 역이산여현변환시에 상기 1차원 역이산여현변환 계수 행렬의 제 4 행 원소 또는 제 8 행 원소를 발생시키고, 상기 2차 1차원 역이산여현변환시에 상기 2차원 역이산여현변환 계수 행렬의 전치 행렬의 제 4 행 원소 또는 제 8 행 원소를 발생시키는 제 2 누산 수단과;
    상기 제 2 승산 수단의 출력이 저장되는 제 11 레지스터와, 상기 제 11 레지스터에 저장된 값 또는 제 12 레지스터에 저장된 값을 선택적으로 출력하는 제 3 멀티플렉서와, 상기 제 4 멀티플렉서의 출력과 제 13 레지스터에 저장된 값이 입력되고 그 출력이 상기 제 12 레지스터 또는 상기 제 13 레지스터에 선택적으로 피드백되는 제 3 누산기를 포함하여 이루어져서, 상기 제 2 승산 수단의 출력을 누산하여 상기 1차 1차원 역이산여현변환시에 상기 1차원 역이산여현변환 계수 행렬의 제 2 행 원소 또는 제 6 행 원소를 발생시키고, 상기 2차 1차원 역이산여현변환시에 상기 2차원 역이산여현변환 계수 행렬의 전치 행렬의 제 2 행 원소 또는 제 6 행 원소를 발생시키는 제 3 누산 수단과;
    상기 제 2 승산 수단의 출력이 저장되는 제 14 레지스터와, 상기 제 14 레지스터에 저장된 값 또는 제 15 레지스터에 저장된 값을 선택적으로 출력하는 제 4 멀티플렉서와, 상기 제 5 멀티플렉서의 출력과 제 16 레지스터에 저장된 값이 입력되고 그 출력이 상기 제 15 레지스터 또는 상기 제 16 레지스터에 선택적으로 피드백되는 제 4 누산기를 포함하여 이루어져서, 상기 제 2 승산 수단의 출력을 누산하여 상기 1차 1차원 역이산여현변환시에 상기 1차원 역이산여현변환 계수 행렬의 제 3 행 원소 또는 제 7 행 원소를 발생시키고, 상기 2차 1차원 역이산여현변환시에 상기 2차원 역이산여현변환 계수 행렬의 전치 행렬의 제 3 행 원소 또는 제 7 행 원소를 발생시키는 제 4 누산 수단과;
    상기 제 1 누산 수단 내지 상기 제 4 누산 수단에서 출력되는 상기 1차원 역이산여현변환 계수 행렬 또는 상기 2차원 역이산여현변환 계수 행렬의 전치 행렬을 입력받아 저장하고, 상기 1차원 역이산여현변환 계수 행렬 또는 상기 2차원 역이산여현변환 계수 행렬을 전치시켜서 상기 제 1 승산 수단과 상기 제 2 승산 수단으로 출력하는 전치 수단을 포함하여 이루어지는 엠펙 디코더의 역이산여현변환장치.
  7. 청구항 6에 있어서, 상기 이산여현변환 계수 행렬 및 상기 1차원 역이산여현변환 계수 행렬의 전치행렬의 짝수 인덱스의 원소들이 홀수 인덱스의 원소들보다 먼저 상기 제 1 승산 수단 내지 상기 제 2 승산 수단에 입력되는 것이 특징인 엠펙 디코더의 역이산여현변환장치.
KR1019980028304A 1998-07-14 1998-07-14 엠펙디코더의 역이산여현변환장치 KR100275933B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019980028304A KR100275933B1 (ko) 1998-07-14 1998-07-14 엠펙디코더의 역이산여현변환장치
US09/287,367 US6327602B1 (en) 1998-07-14 1999-04-07 Inverse discrete cosine transformer in an MPEG decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980028304A KR100275933B1 (ko) 1998-07-14 1998-07-14 엠펙디코더의 역이산여현변환장치

Publications (2)

Publication Number Publication Date
KR20000008477A true KR20000008477A (ko) 2000-02-07
KR100275933B1 KR100275933B1 (ko) 2000-12-15

Family

ID=19544077

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980028304A KR100275933B1 (ko) 1998-07-14 1998-07-14 엠펙디코더의 역이산여현변환장치

Country Status (2)

Country Link
US (1) US6327602B1 (ko)
KR (1) KR100275933B1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957350B1 (en) 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US6493737B1 (en) * 1998-06-29 2002-12-10 Stmicroelectronics S.R.L. Method and circuit for computing the discrete cosine transform (DCT) in microcontrollers
JP3934290B2 (ja) * 1999-09-30 2007-06-20 株式会社東芝 離散コサイン変換処理装置、逆離散コサイン変換処理装置及び離散コサイン変換処理装置・逆離散コサイン変換処理装置
US6675185B1 (en) * 2000-06-07 2004-01-06 International Business Machines Corporation Hybrid domain processing of multi-dimensional transformed data
US6895421B1 (en) 2000-10-06 2005-05-17 Intel Corporation Method and apparatus for effectively performing linear transformations
US8374237B2 (en) 2001-03-02 2013-02-12 Dolby Laboratories Licensing Corporation High precision encoding and decoding of video images
US8111754B1 (en) 2001-07-11 2012-02-07 Dolby Laboratories Licensing Corporation Interpolation of video compression frames
US7266150B2 (en) 2001-07-11 2007-09-04 Dolby Laboratories, Inc. Interpolation of video compression frames
US20030112863A1 (en) 2001-07-12 2003-06-19 Demos Gary A. Method and system for improving compressed image chroma information
US7024441B2 (en) * 2001-10-03 2006-04-04 Intel Corporation Performance optimized approach for efficient numerical computations
US7127482B2 (en) * 2001-11-19 2006-10-24 Intel Corporation Performance optimized approach for efficient downsampling operations
KR100451731B1 (ko) * 2001-12-18 2004-10-08 엘지전자 주식회사 역 이산 코사인 변환 장치
US20030202603A1 (en) * 2002-04-12 2003-10-30 William Chen Method and apparatus for fast inverse motion compensation using factorization and integer approximation
US7190724B2 (en) * 2002-04-12 2007-03-13 Seiko Epson Corporation Method and apparatus for transform domain video processing
TWI224931B (en) * 2003-07-04 2004-12-01 Mediatek Inc Scalable system for inverse discrete cosine transform and method thereof
TWI257054B (en) * 2003-09-03 2006-06-21 Mediatek Inc Rapid and low cost of inverse discrete cosine transform system and method thereof
GB0324369D0 (en) * 2003-10-18 2003-11-19 Koninkl Philips Electronics Nv Method and apparatus for calculating an inverse DCT
US7574468B1 (en) * 2005-03-18 2009-08-11 Verisilicon Holdings (Cayman Islands) Co. Ltd. Digital signal processor having inverse discrete cosine transform engine for video decoding and partitioned distributed arithmetic multiply/accumulate unit therefor
US7539916B2 (en) 2005-06-28 2009-05-26 Intel Corporation BIST to provide phase interpolator data and associated methods of operation
US20070009166A1 (en) * 2005-07-05 2007-01-11 Ju Chi-Cheng Scalable system for discrete cosine transform and method thereof
CN101316367B (zh) * 2008-06-03 2010-06-09 北京大学 一种视频编解码标准中的二维反变换方法及其实现电路
CN102113326A (zh) 2008-08-04 2011-06-29 杜比实验室特许公司 重叠块差异估计和补偿体系结构

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0376683A2 (en) 1988-12-27 1990-07-04 Kabushiki Kaisha Toshiba Discrete cosine transforming apparatus
FR2681962B1 (fr) * 1991-09-30 1993-12-24 Sgs Thomson Microelectronics Sa Procede et circuit de traitement de donnees par transformee cosinus.
KR0150350B1 (ko) * 1994-05-10 1998-10-15 모리시다 요이치 직교변환 프로세서
KR19990022657A (ko) * 1995-06-01 1999-03-25 나시모토 류조 이산코사인변환 연산회로
US5671169A (en) * 1995-06-23 1997-09-23 United Microelectronics Corporation Apparatus for two-dimensional inverse discrete cosine transform
US6167092A (en) * 1999-08-12 2000-12-26 Packetvideo Corporation Method and device for variable complexity decoding of motion-compensated block-based compressed digital video

Also Published As

Publication number Publication date
KR100275933B1 (ko) 2000-12-15
US6327602B1 (en) 2001-12-04

Similar Documents

Publication Publication Date Title
KR100275933B1 (ko) 엠펙디코더의 역이산여현변환장치
KR100880305B1 (ko) 화상 복호 장치
US6157740A (en) Compression/decompression engine for enhanced memory storage in MPEG decoder
CA2062200A1 (en) Decompression processor for video applications
KR20010043396A (ko) 압축된 이미지들을 스케일링하는 방법 및 장치
KR960010487B1 (ko) 움직임 벡터를 이용한 순차주사식 영상포맷변환장치
JP3615241B2 (ja) ビデオデータデコーダのアーキテクチャ
JPH09204417A (ja) 超lsiで実現するための離散余弦逆変換プロセッサ
KR100270799B1 (ko) 이산코사인변환/역이산코사인변환 프로세서
EP0714212A2 (en) Video decoder using concurrent processing and resource sharing
JP4688988B2 (ja) ビデオデータの圧縮方法並びに装置、及び伸張方法並びに装置
KR100246169B1 (ko) 다위상 fir 수평 필터를 포함하는 비디오 디코더
US5854757A (en) Super-compact hardware architecture for IDCT computation
US7076105B2 (en) Circuit and method for performing a two-dimensional transform during the processing of an image
GB2305798A (en) Spatial frequency domain video signal processing
US6493391B1 (en) Picture decoding method and apparatus
US6289053B1 (en) Architecture for decoding MPEG compliant video bitstreams meeting 2-frame and letterboxing requirements
CA2336255A1 (en) Efficient down-scaling of dct compressed images
US6236681B1 (en) Method for decoding MPEG compliant video bitstreams meeting 2-frame and letterboxing requirements
US6504871B1 (en) IDCT processor for use in decoding MPEG compliant video bitstreams meeting 2-frame and letterboxing requirements
Abdelhalim et al. Implementation of 3D-DCT based video encoder/decoder system
US7136890B2 (en) Inverse discrete cosine transform apparatus
US6728313B1 (en) Method and apparatus for performing MPEG II dequantization and IDCT
JP2005184829A (ja) ビデオ圧縮用低パワー高性能変換コプロセッサ
Bakr et al. Implementation of 3D-DCT based video encoder/decoder system

Legal Events

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

Payment date: 20070629

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee