KR20010023031A - Variable block size 2-dimensional inverse discrete cosine transform engine - Google Patents

Variable block size 2-dimensional inverse discrete cosine transform engine Download PDF

Info

Publication number
KR20010023031A
KR20010023031A KR1020007001644A KR20007001644A KR20010023031A KR 20010023031 A KR20010023031 A KR 20010023031A KR 1020007001644 A KR1020007001644 A KR 1020007001644A KR 20007001644 A KR20007001644 A KR 20007001644A KR 20010023031 A KR20010023031 A KR 20010023031A
Authority
KR
South Korea
Prior art keywords
idct
butterfly
stages
serial
processor
Prior art date
Application number
KR1020007001644A
Other languages
Korean (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 밀러 럿셀 비
Publication of KR20010023031A publication Critical patent/KR20010023031A/en

Links

Classifications

    • 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
    • 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)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

어떠한 변환의 임의적인 혼합도 연산할 수 있는 가변 블록 사이즈의 2-D IDCT 엔진 (10) 이 개시된다. 제 1 의 1-D IDCT 프로세서 (20a) 는 컬럼으로 데이터 블록의 변환을 연산하여 그 중간 결과를 전치 메모리 내에 저장한다. 제 2 의 1-D IDCT 프로세서 (20b) 는 로우로 상기 중간 결과의 변환을 연산한다. 입력 데이터를 정확하게 배열하고, 버퍼플라이 스테이지 전에 입력 데이터를 선택적으로 조합하며, 버터플라이 각 스테이지에서의 가산 및 곱셈을 제어함으로써, 변환의 상이한 혼합이 용이하게 수행될 수 있다. 불필요한 버터플라이는 바이패스 모드로 배치된다. 상기 버터플라이는, 직렬 가산기 (56) 및 비트-직렬 곱셈기를 사용해, 하드웨어 설계가 상당히 간략화되며 버터플라이의 연속적인 스테이지들 사이의 라우팅 요구가 최소화되도록 구현될 수 있다. 완전하게 파이프라인된 구조는 IDCT 엔진으로 하여금 클록 사이클마다 한 개 픽셀의 처리량 속도를 유지할 수 있도록 해 준다.A 2-D IDCT engine 10 of variable block size capable of computing any mix of any transforms is disclosed. The first 1-D IDCT processor 20a computes the transformation of the data block into columns and stores the intermediate result in the transpose memory. The second 1-D IDCT processor 20b computes the conversion of the intermediate result to low. By differently arranging the input data, selectively combining the input data before the buffer ply stage, and controlling the addition and multiplication at each butterfly stage, different mixing of the conversions can be easily performed. Unnecessary butterfly is placed in bypass mode. The butterfly can be implemented using a serial adder 56 and a bit-to-serial multiplier so that the hardware design is considerably simplified and the routing requirements between successive stages of butterfly are minimized. The fully pipelined architecture allows the IDCT engine to maintain a throughput rate of one pixel per clock cycle.

Description

가변 블록 사이즈의 2-차원 역 이산 코사인 변환 엔진{VARIABLE BLOCK SIZE 2-DIMENSIONAL INVERSE DISCRETE COSINE TRANSFORM ENGINE}[0001] DESCRIPTION [0002] VARIABLE BLOCK SIZE 2-DIMENSIONAL INVERSE DISCRETE COSINE TRANSFORM ENGINE [

2-차원 이산 코사인 변환 (DCT) 및 역 이산 코사인 변환 (IDCT) 은 디지털 영상 압축에서의 중요한 신호 처리 동작이다. 이러한 디지털 영상 압축 애플리케이션의 하나가 고선명 TV (HDTV) 의 영역이다. HDTV 에서, 아날로그 비디오 파형은 아날로그-대-디지털 변환기 (ADC) 에 의해 조건이 설정되고 이산화된다. 그 다음 얻어진 샘플 데이터는 고화질을 유지하면서 전송 및/또는 저장되어야 할 데이터의 양이 최소화되도록 디지털적으로 처리된다. 통상적으로, 압축 처리의 핵심 요소는, N ×N 블록의 샘플 데이터, 즉 이미지가 시간 영역에서 주파수 영역으로 변환되는 2-D 이산 코사인 변환이다. 변환된 데이터는 하프만 코드 (Hufman code) 같은 블록 코드, 런 랭스 코드 (run length code) 및/또는, 컨벌루션 코드와 리드-솔로몬 코드 (Reed-Solomon code) 같은 오류 정정 코드를 사용하여 추가적으로 처리될 수 있다. 예시적인 HDTV 이미지 압축 기법이, "ADAPTIVE BLOCK SIZE IMAGE COMPRESSION METHOD AND SYSTEM" 이란 동일한 제목의 미국 특허 5,452,104 호, 5,107,345 호 및 5,021891 호 그리고, "INTERFRAME VIDEO ENCODING AND DECODING SYSTEM" 이란 제목의 미국 특허 5,576,767 호에 개시되어 있는데, 4 개의 특허 모두 본 발명의 양수인에게 양도되며 여기에서 참조된다.Two-dimensional discrete cosine transform (DCT) and inverse discrete cosine transform (IDCT) are important signal processing operations in digital image compression. One such digital video compression application is the area of high definition TV (HDTV). In HDTV, analog video waveforms are conditioned and discretized by an analog-to-digital converter (ADC). The obtained sample data is then digitally processed so as to minimize the amount of data to be transmitted and / or stored while maintaining high image quality. Typically, a key element of the compression process is sample data of NxN blocks, i.e., 2-D discrete cosine transform in which the image is transformed from time domain to frequency domain. The converted data may be further processed using an error correcting code such as a block code such as a Huffman code, a run length code, and / or a convolution code and a Reed-Solomon code . U.S. Patent Nos. 5,452,104, 5,107,345 and 5,021,891, entitled " ADAPTIVE BLOCK SIZE IMAGE COMPRESSION METHOD AND SYSTEM ", and U.S. Patent No. 5,576,767, entitled INTERFRAME VIDEO ENCODING AND DECODING SYSTEM, , All of which are assigned to the assignee of the present invention and are incorporated herein by reference.

디지털적으로 인코드된 비디오 파형은 전송 및/또는 저장된다. 수신기에서는, 원래 이미지의 픽셀을 재구성하기 위하여 상기 디지털 신호 처리의 역이 수행된다. 복원된 이미지는, 복원된 이미지를 모니터 또는 TV 상에 디스플레이될 수 있는 아날로그 비디오 파형으로 재변환하는 디지털-대-아날로그 변환기 (DAC) 에 공급된다.The digitally encoded video waveform is transmitted and / or stored. At the receiver, the inverse of the digital signal processing is performed to reconstruct the pixels of the original image. The reconstructed image is supplied to a digital-to-analog converter (DAC) that reconverts the reconstructed image to an analog video waveform that can be displayed on a monitor or TV.

디코딩 처리에서의 중요한 요소는, 주파수 영역 데이터를 다시 시간 영역으로 변환하는 역 이산 코사인 변환이다. 실시간으로 원래의 이미지를 재구성하기 위하여, IDCT 엔진은 높은 출력 속도로 동작할 것이 요구된다. 거기에 더하여, 통상적으로 IDCT 엔진은 소모품 내에 배치되기 때문에, 비용이 주요한 고려의 대상이 된다. IDCT 엔진은 최소의 복잡도로 고속에서 동작하도록 설계되어야 한다.An important factor in the decoding process is the inverse discrete cosine transform that transforms the frequency domain data back into the time domain. In order to reconstruct the original image in real time, the IDCT engine is required to operate at a high output speed. In addition, since the IDCT engine is typically placed in a consumable, cost is a major consideration. The IDCT engine should be designed to operate at high speed with minimal complexity.

통상적으로 디지털 이미지 압축 시스템은 프레임에 기초하여 비디오 신호를 처리한다. 각 비디오 프레임은 N ×N 블록으로 더 나누어진다. 대개의 압축 시스템에서, DCT 및 IDCT 엔진의 구현을 간편하게 하기 위해 상기 블록 사이즈는 시스템 설계에 의해 고정된다.A digital image compression system typically processes video signals based on a frame. Each video frame is further divided into NxN blocks. In most compression systems, the block size is fixed by the system design in order to simplify the implementation of the DCT and IDCT engines.

가변 블록 사이즈의 허용은, 소정의 조건 하에서 압축 시스템의 성능을 높여이미지의 최적 압축을 가능케하며 그리고/또는 복원된 이미지의 질을 향상시킨다. 소정의 이미지 특성을 이용하기 위하여 가변 블록 사이즈를 사용할 수 있다. 종래 기술에서는, 다양한 사이즈의 변환 프로세서 뱅크를 사용하여 가변 블록 사이즈의 DCT 및 IDCT 엔진을 설계한다. 각 프로세서는 동일한 데이터 블록에 대하여 상이한 블록 사이즈의 변환을 연산한다. 그 다음 다양한 프로세서로부터의 변환은 소망의 복합 변환 블록으로 조합된다. 이러한 양태는 요구되는 하드웨어의 양이 크고, 다양한 하드웨어 블록을 조정하기가 복잡하기 때문에 취급하기 힘들 수 있다.Allowing a variable block size increases the performance of the compression system under certain conditions to enable optimal compression of the image and / or improve the quality of the reconstructed image. A variable block size may be used to take advantage of certain image characteristics. In the prior art, DCT and IDCT engines of varying block sizes are designed using varying sized transform processor banks. Each processor computes a different block size conversion for the same data block. The transforms from the various processors are then combined into the desired composite transform block. This aspect can be difficult to handle because of the large amount of hardware required and complexity of coordinating various hardware blocks.

본 발명은 디지털 신호 처리에 관한 것이다. 보다 구체적으로, 본 발명은 신규하고 향상된 가변 블록 사이즈의 2-차원 (2-D) 역 이산 코사인 변환 (IDCT) 엔진에 관한 것이다.The present invention relates to digital signal processing. More specifically, the present invention relates to a new and improved variable block size two-dimensional (2-D) inverse discrete cosine transform (IDCT) engine.

도 1 의 (a), (b) 및 (c) 는 각각 본 발명의 예시적인 N ×N 이미지, 분할된 이미지, 및 상기 분할된 이미지에 대응되는 트리 다이어그램의 도면;Figures 1 (a), 1 (b) and 1 (c) are views of an exemplary N × N image of the present invention, a segmented image, and a tree diagram corresponding to the segmented image;

도 2 는 본 발명의 예시적인 가변 블록-사이즈의 2-D IDCT 엔진의 블록도;Figure 2 is a block diagram of an exemplary variable block-sized 2-D IDCT engine of the present invention;

도 3a 내지 3d 는 각각 본 발명의 2-포인트 IDCT 격자, 4-포인트 IDCT 격자, 8-포인트 IDCT 격자 및 16-포인트 IDCT 격자의 예시적인 도면;Figures 3a-3d are illustrations of a two-point IDCT grating, a four-point IDCT grating, an eight-point IDCT grating, and a sixteen-point IDCT grating, respectively, of the present invention;

도 4 는 본 발명의 예시적인 1-D IDCT 프로세서의 블록도;4 is a block diagram of an exemplary 1-D IDCT processor of the present invention;

도 5 의 (a) 및 (b) 는 각각 본 발명의 직렬 버터플라이의 그래프적인 도면과 예시적인 실시예의 블록도;Figures 5 (a) and 5 (b) are block diagrams of an exemplary embodiment and a graphical illustration of a serial butterfly of the present invention, respectively;

도 6 의 (a) 및 (b) 는 각각 본 발명의 예시적인 비트-직렬 곱셈기의 워드-와이드 표현과 비트-와이드 표현의 블록도;Figures 6 (a) and 6 (b) are block diagrams of a word-wide representation and a bit-wide representation of an exemplary bit-serial multiplier of the present invention;

도 7 은 본 발명의 예시적인 직렬 가산기의 블록도; 및7 is a block diagram of an exemplary serial adder of the present invention; And

도 8 은 본 발명의 예시적인 I/O 버퍼의 블록도이다.8 is a block diagram of an exemplary I / O buffer of the present invention.

* 도면의 주요부분에 대한 부호의 설명 *Description of the Related Art [0002]

2, 4 : 데이터 블록 10 : 2-D IDCT 엔진2, 4: Data block 10: 2-D IDCT engine

20 : IDCT 프로세서 22 : 메모리 소자20: IDCT processor 22: memory element

26 : 제어기 52 : I/O 버퍼26: controller 52: I / O buffer

54, 60, 64, 68 : 라우팅 크로스바 56, 160 : 직렬 가산기54, 60, 64, 68: routing crossbar 56, 160: serial adder

58 : 직렬 버터플라이의 제 1 스테이지58: first stage of serial butterfly

62 : 직렬 버터플라이의 제 2 스테이지62: second stage of serial butterfly

66 : 직렬 버터플라이의 제 3 스테이지66: Third stage of serial butterfly

70 : 직렬 버터플라이의 제 4 스테이지70: Fourth stage of serial butterfly

100 : 16-포인트 IDCT 격자 104 : 8 개의 2-포인트 IDCT100: 16-point IDCT grid 104: 8 two-point IDCT

106 : 4 개의 4-포인트 IDCT 108 : 2 개의 8-포인트 IDCT106: four four-point IDCT 108: two eight-point IDCT

110 : 1 개의 16-포인트 IDCT 112 : 직렬 가산110: one 16-point IDCT 112: serial addition

148 : 지연 소자 140 : 직렬 버터플라이148: delay element 140: serial butterfly

150 : 비트-직렬 곱셈기150: bit-serial multiplier

200 : 논리 회로 210, 244 : 가산기200: logic circuit 210, 244: adder

212, 262, 266 : 래치 214, 246, 264 : 레지스터212, 262, 266: latches 214, 246, 264:

202, 204, 240 : AND 게이트 242 : XOR 게이트202, 204, 240: AND gate 242: XOR gate

268 : 출력 버퍼268: Output buffer

본 발명은 신규하고 향상된 가변 블록 사이즈의 2-차원 (2-D) 역 이산 코사인 변환 (IDCT) 엔진이다. 본 발명에 의하면, N ×N 블록은 제 1 의 1-D IDCT 프로세서에 의해 컬럼으로 변환된다. 상기 제 1 의 IDCT 프로세서로부터의 중간 결과는 일시적으로 전치 (transposition) 메모리에 저장된다. 일단 모든 컬럼이 처리되고 나면, 상기 중간 결과는 제 2 의 1-D IDCT 프로세서에 의해 로우로 변환된다. 상기 제 2 의 IDCT 프로세서로부터의 출력이 상기 IDCT 엔진의 변환된 출력을 구성한다.The present invention is a new and improved variable block size two-dimensional (2-D) inverse discrete cosine transform (IDCT) engine. According to the present invention, the NxN block is converted into a column by the first 1-D IDCT processor. The intermediate result from the first IDCT processor is temporarily stored in a transposition memory. Once all the columns have been processed, the intermediate result is converted to low by the second 1-D IDCT processor. The output from the second IDCT processor constitutes the transformed output of the IDCT engine.

본 발명의 목적은 N ×N 데이터 블록 내의 어떠한 임의적인 변환의 혼합도 연산할 수 있는 2-D IDCT 엔진을 공급하는 것이다. 예시적인 실시예에서, 각 데이터 블럭은 하나의 16 ×16 변환, 또는 8 ×8 변환, 4 ×4 변환 및/또는 2 ×2 변환의 어떠한 조합의 혼합이다. 예시적인 실시예에서, 21-비트 제어 신호는 원하는 부분을 정확하게 나타내며, 적절한 변환의 조합을 연산할 것을 IDCT 엔진에 통보한다. 본 발명에서는, 입력 데이터를 정확하게 배열하고, 버터플라이 스테이지 전에 상기 데이터를 선택적으로 조합하며, 버터플라이 각 스테이지에서의 가산과 곱셈을 제어함으로써, 상이한 조합의 변환도 용이하게 수행될 수 있다. 불필요한 버터플라이는 바이패스 모드에 위치된다.It is an object of the present invention to provide a 2-D IDCT engine capable of computing any arbitrary combination of transformations in NxN data blocks. In an exemplary embodiment, each data block is a 16x16 transform, or a mix of any combination of 8x8 transform, 4x4 transform, and / or 2x2 transform. In the exemplary embodiment, the 21-bit control signal accurately represents the desired portion and notifies the IDCT engine to compute the appropriate combination of transformations. In the present invention, different combinations of transformations can be easily performed by arranging the input data accurately, selectively combining the data before the butterfly stage, and controlling addition and multiplication at each butterfly stage. Unnecessary butterfly is placed in bypass mode.

본 발명의 다른 목적은, 직렬 연산에 대비함으로써 2-D IDCT 엔진의 설계를 간략화하는 것이다. 직렬 가산기 및 비트-직렬 곱셈기는, 한번에 하나의 데이터 비트에 대해서만 연산이 수행되기 때문에, 상기 설계를 상당히 간략화한다. 직렬 연산은 또한 연속적인 버터플라이 스테이지 사이의 라우팅 크로스바를 상당히 간략화한다. 본 발명의 IDCT 엔진의 파이프라인 구조로 인해, 처리량 속도는 클록 사이클마다 하나의 변환된 포인트, 즉 픽셀의 속도를 유지한다. 이는 병렬 연산에서와 동일한 처리량 속도이다. 연산의 직렬 특성으로 인해 처리 지연이 증가될 뿐이다.Another object of the present invention is to simplify the design of the 2-D IDCT engine by preparing for serial operations. Serial adders and bit-serial multipliers greatly simplify the design because the operation is performed on only one data bit at a time. The serial operation also greatly simplifies the routing crossbar between successive butterfly stages. Due to the pipelined architecture of the IDCT engine of the present invention, the throughput rate maintains the rate of one transformed point, i.e., pixel, per clock cycle. This is the same throughput rate as in parallel operations. The processing delay is only increased due to the serial nature of the operation.

본 발명의 또 다른 목적은 메모리 요구를 최소화하는 것이다. 2-D IDCT 의 경우, 데이터 블록은 우선 1-D IDCT 프로세서에 의해 컬럼으로 변환되고, 그 중간 결과는 전치 메모리에 컬럼으로 일시 저장된다. 모든 컬럼이 변환된 후에야 제 2 의 1-D 변환이 수행된다. IDCT 엔진의 파이프라인 구조로 인해, 중간 결과는 메모리에 컬럼으로 기입됨과 동시에 메모리로부터 로우로 판독된다. 나중에 필요한 데이터가 담겨 있는 메모리 장소에 중복 기입되는 것을 막기 위해, 상기 메모리는 연속적인 N ×N 블록에 대해 전치, 즉 우선 컬럼과 우선 로우 사이에서 교체한다. 판독-수정-기입 사이클을 사용하면, 동일한 클록 사이클 내에 중간 결과가 하나의 메모리 장소로부터 판독되고, 새로운 결과가 동일한 메모리 장소에 기입된다. 전치 메모리는 메모리 요구를 하나의 N ×N 데이터 블록과 동일한 사이즈의 메모리 뱅크 하나로 감축시킨다.Yet another object of the present invention is to minimize memory requirements. For 2-D IDCT, the data block is first converted to a column by the 1-D IDCT processor, and the intermediate result is temporarily stored as a column in the transpose memory. The second 1-D conversion is performed only after all the columns have been converted. Due to the pipelined architecture of the IDCT engine, the intermediate result is written to the memory as a column and simultaneously read out of memory as low. In order to prevent later overwriting of the memory location containing the necessary data, the memory replaces the preceding, i.e., first, column and priority row for the consecutive NxN blocks. Using a read-modify-write cycle, intermediate results are read from one memory location in the same clock cycle, and new results are written to the same memory location. The transpose memory reduces the memory request to one NxN data block and one memory bank of the same size.

이산 코사인 변환 (DCT) 및 역 이산 코사인 변환 (IDCT) 은 중요한 상보적 디지털 신호 처리 동작이다. DCT 는 다음의 수학식 1 에 의해 샘플 데이터를 시간 영역에서 주파수 영역으로 변환한다:Discrete cosine transform (DCT) and inverse discrete cosine transform (IDCT) are important complementary digital signal processing operations. The DCT transforms the sample data from the time domain to the frequency domain by the following equation:

여기서 N 은 변환의 차원이고,이며, k = 1, 2, 3 ‥‥ N-1 에 대한 C(k)= 1 이다. 통상적으로 DCT 는 연속적인 디지털 신호 처리 동작의 하나로서 샘플 데이터에 대해 수행된다. 양자화, 데이터 압축 및 오류 정정 코딩을 포함하는 다른 동작들은 변환된 데이터에 대해 수행된다. 예시적인 디지털 이미지 압축 기술에 관한 논의가, 상술된 미국 특허 5,452,104 호에 상세히 설명되어 있다.Where N is the dimension of the transformation, , And C (k) = 1 for k = 1, 2, 3, ..., N-1. The DCT is typically performed on the sample data as one of the successive digital signal processing operations. Other operations, including quantization, data compression, and error correction coding, are performed on the transformed data. A discussion of exemplary digital image compression techniques is described in detail in the aforementioned U.S. Patent No. 5,452,104.

IDCT 는 다음의 수학식 2 에 의해, 상기 데이터를 주파수 영역에서 시간 영역으로 재변환한다:The IDCT recomputes the data from the frequency domain to the time domain by the following equation:

DCT 및 IDCT 변환은 분리 가능한 변환이다. 이는 하나의 2-D 변환이 2 개의 1-D 변환으로 나누어질 수 있다는 것을 의미한다. 우선 데이터 블록의 컬럼에 대해 1-D IDCT 를 수행함으로써, 데이터 블록에 대한 2-D IDCT 변환을 수행할 수 있다. 제 1 의 IDCT 변환으로부터의 중간 결과는 메모리 소자에 일시 저장된다. 그 다음 상기 중간 결과의 로우에 대해 제 2 의 IDCT 변환이 수행된다. 제 2 의 IDCT 변환으로부터의 출력이 원래 이미지의 복원된 픽셀을 구성한다.The DCT and IDCT transforms are separable transforms. This means that one 2-D conversion can be divided into two 1-D conversions. By performing a 1-D IDCT on the columns of the data block, a 2-D IDCT transformation on the data block can be performed. The intermediate result from the first IDCT conversion is temporarily stored in the memory element. A second IDCT transform is then performed on the intermediate result row. The output from the second IDCT transform constitutes the reconstructed pixel of the original image.

도면을 참조하면, 도 1 의 (a) 는 예시적인 데이터 블록의 도면을 나타낸다.데이터 블록 (2) 은 N ×N 의 사이즈인데, 여기서 N 은 2 의 거듭제곱, 즉이고, x 는 1, 2, 3 ‥‥ 의 정수이다. 이 조건이 만족될 경우, 수학식 1 및 2 는 상당히 간략화될 수 있다. 예시적인 실시예에서, N 은 16 이지만, 본 발명은 다른 값의 N 으로도 용이하게 확장될 수 있다.Referring now to the drawings, Figure 1 (a) shows a drawing of an exemplary data block. Data block 2 has a size of N by N, where N is a power of 2 And x is an integer of 1, 2, 3, .... If this condition is satisfied, equations (1) and (2) can be considerably simplified. In the exemplary embodiment, N is 16, but the present invention can be easily extended to other values of N. [

도 2 는 본 발명의 2-D IDCT 엔진 (10) 의 예시적인 블록도이다. 예시적인 실시예에서, IDCT 계수를 구성하는 입력 데이터 블록은 컬럼으로 IDCT 프로세서 (20a) 에 공급된다. IDCT 프로세서들 (20a 및 20b) 은, 수학식 2 에 따라 입력 데이터에 대한 IDCT 변환을 수행하는, 똑같은 1-D IDCT 프로세서이다. IDCT 프로세서 (20a) 로부터의 중간 결과는, 상기 결과가 컬럼으로 일시 저장되는 메모리 소자 (22) 에 공급된다. 그 다음 상기 중간 결과는 로우로 IDCT 프로세서 (20b) 에 공급된다. IDCT 프로세서 (20b) 는 1-D IDCT 변환을 수행하여, 변환된 출력, 즉 복원된 이미지를 연속적인 디지털 신호 처리 블록 (도 2 에 도시되지 않음) 에 공급한다. 예시적인 실시예에서, 입력 데이터 블록은 컬럼으로 IDCT 프로세서 (20a) 에 공급되고, 그 중간 결과는 로우로 IDCT 프로세서 (20b) 에 공급된다. 대신에, 데이터 블록이 IDCT 프로세서 (20a) 에 로우로 그리고 IDCT 프로세서 (20b) 에 컬럼으로 공급될 수도 있다. 예시적인 실시예에서, IDCT 프로세서들 (20a 및 20b) 은 양쪽 IDCT 프로세서들 (20) 모두가 동시에 활성화되도록 파이프라인된다.2 is an exemplary block diagram of a 2-D IDCT engine 10 of the present invention. In an exemplary embodiment, the input data block that constitutes the IDCT coefficients is supplied to the IDCT processor 20a as a column. IDCT processors 20a and 20b are the same 1-D IDCT processors that perform IDCT transforms on input data according to equation (2). The intermediate result from the IDCT processor 20a is supplied to the memory element 22 in which the result is temporarily stored as a column. The intermediate result is then supplied to the IDCT processor 20b as low. The IDCT processor 20b performs a 1-D IDCT transformation and supplies the transformed output, i. E., The reconstructed image, to a continuous digital signal processing block (not shown in Fig. 2). In an exemplary embodiment, the input data block is supplied to the IDCT processor 20a as a column, and the intermediate result is supplied to the IDCT processor 20b as a low. Instead, a block of data may be supplied to the IDCT processor 20a row low and to the IDCT processor 20b column. In the exemplary embodiment, IDCT processors 20a and 20b are pipelined to enable both IDCT processors 20 to be active at the same time.

상기 IDCT 의 중요한 특징은 입력 데이터 포인트의 배열, 데이터 포인트의 선택적 조합에 대한 합의 연산 및, 2 개의 소형 변환의 출력에 대한 직렬 버터플라이의 수행을 통해, 대형 변환을 만들어 낼 수 있다는 것이다. 직렬 버터플라이 동작은 이하에서 상세히 설명된다. 따라서, 16-포인트 IDCT 는 8-포인트 IDCT 2 개의 버터플라이이고, 8-포인트 IDCT 각각은 4-포인트 IDCT 2 개의 버터플라이이며, 4-포인트 IDCT 각각은 2-포인트 IDCT 2 개의 버터플라이이다. IDCT 의 이러한 특징은 업계에 공지되어 있으며, 격자 도면으로 잘 표현되어 있다. 2-포인트 IDCT 의 격자 도면이 도 3a 에, 4-포인트 IDCT 의 격자 도면이 도 3b 에, 그리고 8-포인트 IDCT 의 격자 도면이 도 3c 에 도시되어 있다. 2-포인트 IDCT 는 단일 버터플라이 스테이지로 구성된다. 도 3a 및 3b 에 도시된 대로, 4-포인트 IDCT 는 2-포인트 IDCT 2 개의 스테이지, 상기 2-포인트 IDCT 스테이지 이전의 직렬 가산 스테이지 및, 상기 2-포인트 IDCT 스테이지 이후의 버터플라이 스테이지로 구성된다. 마찬가지로, 도 3b 및 3c 에 도시된 대로, 8-포인트 IDCT 는 4-포인트 IDCT 2 개의 스테이지, 상기 4-포인트 IDCT 스테이지 이전의 직렬 가산 스테이지 및, 상기 4-포인트 IDCT 스테이지 이후의 버터플라이 스테이지로 구성된다.An important feature of the IDCT is that it can produce large transforms by performing an array of input data points, a sum operation on an optional combination of data points, and a serial butterfly on the output of two small transforms. The serial butterfly operation is described in detail below. Thus, a 16-point IDCT is an 8-point IDCT two butterflies, each of an 8-point IDCT is a 4-point IDCT 2 butterflies, and a 4-point IDCT is a 2-point IDCT 2 butterflies. This feature of the IDCT is well known in the art and is well represented in the grid drawings. A lattice diagram of a 2-point IDCT is shown in Figure 3a, a lattice diagram of a 4-point IDCT is shown in Figure 3b, and a lattice diagram of an 8-point IDCT is shown in Figure 3c. The two-point IDCT consists of a single butterfly stage. As shown in FIGS. 3A and 3B, the four-point IDCT consists of two stages of two-point IDCT, a serial addition stage before the two-point IDCT stage, and a butterfly stage after the two-point IDCT stage. Likewise, as shown in Figures 3b and 3c, the 8-point IDCT consists of two stages of 4-point IDCT, a serial addition stage before the 4-point IDCT stage, and a butterfly stage after the 4-point IDCT stage do.

본 발명의 16-포인트 IDCT 격자 (100) 의 도면이 도 3d 에 도시되어 있다. 격자 (100) 는 B.G. Lee 에 의해 유도되었으며, K.R. Rao 가 쓴 "Discrete Cosine Transform : Algorithms, Advantages, and Applications (Academic Press, 1990)" 이란 제목의 책에 상세히 설명되어 있다. 16-포인트 IDCT 격자 (100) 는, 직렬 가산의 스테이지 3 개 및 직렬 버터플라이의 스테이지 4개로 구성되는데, 버터플라이의 각 스테이지는 8 개의 직렬 버터플라이를 구비한다. 종래 기술의 IDCT 프로세서에서는, 연속적인 스테이지들 사이의 상호 연결이 고정되어 있어, 상기 IDCT 프로세서가 16-포인트 IDCT 변환만을 수행하도록 제한된다. 본 발명에서는, 가변형의 격자 상호-접속으로 상기 스테이지들이 상호 접속된다.A diagram of a 16-point IDCT grating 100 of the present invention is shown in FIG. The grating 100 may be formed by the method of B.G. Lee, < / RTI > It is described in detail in a book titled "Discrete Cosine Transform: Algorithms, Advantages, and Applications" (Academic Press, 1990) by Rao. The 16-point IDCT grid 100 consists of three stages of serial addition and four stages of serial butterfly, each stage of butterfly having eight serial butterflies. In the prior art IDCT processor, the interconnection between consecutive stages is fixed, so that the IDCT processor is limited to perform only 16-point IDCT transformations. In the present invention, the stages are interconnected in a variable grid interconnection.

도 3d 에 도시된 대로, 16-포인트 IDCT (110) 는 8-포인트 IDCT 2 개 (108) 의 버터플라이로서, 하부의 8-포인트 IDCT 로의 데이터 포인트는 선택적으로 조합된다. 2 개의 8-포인트 IDCT (108) 는 4-포인트 IDCT 4 개 (106) 의 버터플라이로서, 하부의 4-포인트 IDCT 로의 데이터 포인트는 선택적으로 조합된다. 4 개의 4-포인트 IDCT (106) 는 2-포인트 IDCT 8 개 (104) 의 버터플라이로서, 하부의 2-포인트 IDCT 로의 데이터 포인트는 선택적으로 조합된다. 직렬 버터플라이의 바이패스 모드와 조합되어 있는 가변형의 격자 상호-접속으로 인해, 본 발명의 2-D IDCT 엔진 (10) 은 N ×N 블록 내의 어떠한 변환의 임의적인 혼합도 연산할 수 있다. 입력 데이터를 정확하게 배열하고, 버터플라이 스테이지 전에 상기 입력 데이터를 선택적으로 결합하며, 격자의 각 스테이지에서의 가산 및 곱셈을 제어함으로써, 2-포인트, 4-포인트, 8-포인트 및 16-포인트 IDCT 변환의 어떠한 조합도 수행될 수 있다. 예를 들어, IDCT 프로세서 (20) 는 2 개의 8-포인트 변환, 8 개의 2-포인트 변환, 1 개의 8-포인트 변환과 2 개의 4-포인트 변환, 또는 1 개의 8-포인트, 1 개의 4-포인트 및 2 개의 2-포인트 변환을 수행할 수 있다 본 발명에서는, 상이한 변환 출력을 조립하여 복합 변환 블록을 만들어 내는 조합 스테이지가 필요없는데, IDCT 엔진 (100) 이 적절한 변환의 혼합을 수행하도록 구성되었을 때 자동적으로 이러한 일이 행해지기 때문이다. 소형 변환이 연산될 때마다, 보다 고차의 변환을 수행하는, 불필요한 직렬 가산기와 버터플라이는 지연 래치로 복귀한다. 따라서, 각 IDCT 프로세서 (20) 로부터의 출력은 변환의 혼합에 관계없이 시간적으로 정렬된다.As shown in Figure 3D, the 16-point IDCT 110 is a butterfly of two 8-point IDCTs 108, with the data points to the lower 8-point IDCT being optionally combined. Two 8-point IDCTs 108 are butterflies of four 4-point IDCTs 106, the data points to the lower 4-point IDCTs being optionally combined. The four four-point IDCT 106 is a butterfly of eight two-point IDCT 104, with the data points to the bottom two-point IDCT being optionally combined. Due to the variable grid interconnection coupled with the bypass mode of the serial butterfly, the 2-D IDCT engine 10 of the present invention can calculate any mix of any transform in the NxN block. Point, 4-point, 8-point, and 16-point IDCT transforms by precisely aligning the input data, selectively combining the input data before the butterfly stage, and controlling addition and multiplication at each stage of the grating Any combination of < / RTI > For example, the IDCT processor 20 may include two 8-point transforms, eight 2-point transforms, one 8-point transform and two 4-point transforms, or one 8- And two two-point transformations can be performed. In the present invention, there is no need for a combinatorial stage to assemble the different transform outputs to produce a composite transform block. When the IDCT engine 100 is configured to perform a mixture of appropriate transforms This is done automatically. Each time a small conversion is computed, unwanted serial adders and butterflies, which perform a higher order conversion, return to the delay latch. Thus, the output from each IDCT processor 20 is temporally aligned regardless of the mix of transforms.

예시적인 실시예에서, 직렬 버터플라이는 2 개의 입력 비트 스트림에 대해 동작하며, 2 개의 출력 비트 스트림을 공급한다. 상기 직렬 버터플라이는 상당히 단순화된 하나의 비트-직렬 곱셈기와 2 개의 직렬 가산기로 구성된다. IDCT 프로세서 (20) 의 직렬 구조로 인해, 직렬 버터플라이의 연속적인 스테이지들 사이의 라우팅 크로스바는 1-비트 와이드의 데이터 버스만으로 구현될 수 있게 된다.In an exemplary embodiment, a serial butterfly operates on two input bit streams and provides two output bit streams. The serial butterfly consists of a significantly simplified bit-serial multiplier and two serial adders. Due to the serial structure of the IDCT processor 20, the routing crossbar between successive stages of serial butterfly can be implemented with only a one-bit wide data bus.

예시적인 실시예에서, IDCT 엔진 (10) 은 256 클록 사이클에 16 ×16 블록의 변환을 연산한다. 각 클록 사이클 동안, 하나의 IDCT 계수가 IDCT 엔진 (10) 에 공급되고, IDCT 엔진 (10) 으로부터 하나의 출력 픽셀이 추출된다. IDCT 프로세서들 (20a 및 20b) 은 양쪽 프로세서가 동시에 활성화되도록 파이프라인된다. 각 클록 사이클 동안, IDCT 프로세서 (20) 각각은 하나의 입력 데이터 포인트를 수신하여 변환된 데이터 포인트 하나를 공급한다.In an exemplary embodiment, the IDCT engine 10 computes a transformation of a 16x16 block in 256 clock cycles. During each clock cycle, one IDCT coefficient is supplied to the IDCT engine 10, and one output pixel is extracted from the IDCT engine 10. [ IDCT processors 20a and 20b are pipelined to enable both processors to be active at the same time. During each clock cycle, each IDCT processor 20 receives one input data point and supplies one transformed data point.

Ⅰ. IDCT 프로세서Ⅰ. IDCT Processor

본 발명의 IDCT 프로세서 (20) 의 예시적인 블록도가 도 4 에 도시되어 있다. 클록 사이클마다 하나의 데이터 포인트 및 I/O 버퍼 (52) 마다 하나의 데이터 포인트로, 16 클록 사이클 마다 (N=16), 16 개의 I/O 버퍼 (52) 는 16 개의 입력 데이터 포인트를 수신한다. 데이터 포인트가 I/O 버퍼 (52) 에 로드되는 순서는 수행되고 있는 변환의 혼합에 종속되며, 4-비트 WRITE_ENABLE 신호를 통해 제어기 (26) 에 의해 제어된다. 각각의 데이터 포인트는, WRITE_ENABLE 에 기초하여 적절한 I/O 버퍼 (52) 에 병렬로 로드되는 q-비트로 구성된다. 그 다음 I/O 버퍼 (52) 는 라우팅 크로스바 (54) 를 통해 LSB 를 시작으로 클록 사이클마다 한 비트씩 16 데이터 포인트를 직렬 가산기 (56) 로 다같이 직렬로 시프트한다. I/O 버퍼 (52) 는 이하에 설명되는 바와 같이 병렬-대-직렬 시프트 레지스터로서 구현될 수 있다.An exemplary block diagram of an IDCT processor 20 of the present invention is shown in FIG. The 16 I / O buffers 52 receive 16 input data points every 16 clock cycles (N = 16), with one data point per clock cycle and one data point per I / O buffer 52 . The order in which the data points are loaded into the I / O buffer 52 depends on the mix of conversions being performed and is controlled by the controller 26 via the 4-bit WRITE_ENABLE signal. Each data point consists of q-bits that are loaded in parallel into the appropriate I / O buffer 52 based on WRITE_ENABLE. The I / O buffer 52 then shifts 16 data points to the serial adder 56, in serial, by one bit per clock cycle starting at the LSB through the routing crossbar 54. The I / O buffer 52 may be implemented as a parallel-to-serial shift register as described below.

직렬 가산기 (56) 는 상기 데이터 비트를 수신하여 이하에 기술된 방식으로 상기 비트들의 직렬 가산을 수행한다. 직렬 가산기 (56) 는, 예시적인 실시예에서, 7-비트로 구성된 ADD_ENABLE 에 의해 인에이블되며, 도 3d 의 격자 (100) 에 도시된, 처음 3 개의 가산 스테이지에 해당된다. 각각의 직렬 가산은 원으로 싸인 점 (112 ; 간략화를 위해 원으로 싸인 점 하나에 대해서만 참조부호를 붙임) 으로 표현된다. 제 1 스테이지에는, 인에이블/디스에이블에 4 비트를 요하는 7 개의 직렬 가산 (112) 이 있다. 제 2 스테이지에는, 제어를 위해 2 비트를 요하는, 직렬 가산 (112) 3 개의 세트 2 개가 있다. 그리고 제 3 스테이지에는, 제어를 위해 1 비트를 요하는, 단일 직렬 가산 (112) 의 세트 4 개가 있다. 7-비트 ADD_ENABLE 신호를 사용하여, 직렬 가산기 (56) 는 도 3d 의 격자 (100) 의 처음 3 개 스테이지에서 요하는 대로의 직렬 가산 (112) 을 연산하도록 제어될 수 있다. 도 4 의 16 개 직렬 가산기 (56) 의 뱅크는 격자 (100) 의 처음 3 개 스테이지에 의해 요구되는 기능을 상징적으로 나타낸다.The serial adder 56 receives the data bits and performs the serial addition of the bits in the manner described below. The serial adder 56 is enabled by the 7-bit ADD_ENABLE in the illustrative embodiment, and corresponds to the first three additive stages shown in the lattice 100 of FIG. Each serial sum is represented by a circle (112) (only one point enclosed in a circle for simplicity). In the first stage, there are seven serial additions 112 that require four bits for enable / disable. In the second stage there are two sets of three serial additions 112 that require two bits for control. And in the third stage there are four sets of single serial additions 112 that require one bit for control. Using the 7-bit ADD_ENABLE signal, the serial adder 56 can be controlled to compute the serial addition 112 as required at the first three stages of the grid 100 of Figure 3d. The banks of the 16 serial adders 56 of FIG. 4 symbolically represent the functions required by the first three stages of the grid 100.

직렬 가산기 (56) 로부터의 출력은, 도 3d 의 2-포인트 IDCT 8 개 (104) 내에 도시된 기능을 수행하는, 8 개 직렬 버터플라이의 제 1 스테이지 (58) 에 공급된다. 각각의 직렬 버터플라이는 도 5 (b) 의 블록도로 도시된다. 직렬 버터플라이는 2 개의 직렬 스트림 입력 (X1 및 X2) 을 수신하여 2 개의 직렬 출력 (Z1=X1+CㆍX2 및 Z2=X1-CㆍX2) 을 발생하는데, 여기서 C 는 IDCT 격자 (100) 내의 버터플라이 위치에 따라 정의된 고정 스칼라이다. 직렬 버터플라이의 예시적인 구현이 이하에 상세히 설명된다. 예시적인 실시예에서, 직렬 버터플라이의 제 1 스테이지 (58) 는 IDCT 프로세서 (20) 가 적어도 2-포인트 변환을 수행하도록 항상 인에이블되어 있다. 제 1 스테이지 (58) 로부터의 출력은 라우팅 크로스바 (60) 를 통해 직렬 버터플라이의 제 2 스테이지 (62) 로 공급된다. IDCT 격자 (100) 에 의해 도시된 대로, 라우팅 크로스바 (60) 는 처음의 2 개 스테이지를 상호 연결한다. 예시적인 실시예에서, 직렬 버터플라이의 제 2 스테이지 (62) 는 4-포인트 변환을 제공하도록 선택적으로 인에이블될 수 있다. 4 개 세트의 버터플라이가 있기 때문에 (도 3d 참조), 각 세트를 개별적으로 인에이블하기 위해서는 4-비트 제어가 필요하다. 상기 4-비트 제어는 도 4 에서 MAP 으로 표시된 제어 신호의 일부이다.The output from the serial adder 56 is fed to a first stage 58 of eight serial butterflies, which performs the functions shown in the eight two-point IDCTs 104 of Figure 3d. Each serial butterfly is shown in the block diagram of Fig. 5 (b). The serial butterfly receives two serial stream inputs X1 and X2 to generate two serial outputs (Z1 = X1 + C X2 and Z2 = X1-C X2), where C is the IDCT grid 100, Lt; RTI ID = 0.0 > scalar < / RTI > An exemplary implementation of a serial butterfly is described in detail below. In an exemplary embodiment, the first stage 58 of serial butterfly is always enabled so that the IDCT processor 20 performs at least two-point conversion. The output from the first stage 58 is fed through the routing crossbar 60 to the second stage 62 of the serial butterfly. As shown by the IDCT grid 100, the routing crossbar 60 interconnects the first two stages. In an exemplary embodiment, the second stage 62 of serial butterflies may be selectively enabled to provide a four-point conversion. Because there are four sets of butterflies (see Figure 3d), 4-bit control is required to enable each set individually. The 4-bit control is part of the control signal labeled MAP in FIG.

직렬 버터플라이의 제 2 스테이지 (62) 로부터의 출력은 라우팅 크로스바 (64) 를 통해 제 3 스테이지 (66) 에 공급된다. 도 3d 의 8-포인트 IDCT 2 개 (108) 내에 도시된 바와 같이, 제 3 스테이지 (66) 는 직렬 버터플라이 4 개의 세트 2 개로 구성된다. 각 세트는 2-비트 제어에 의해 개별적으로 인에이블될 수 있다. 제 3 스테이지 (66) 로부터의 출력은 라우팅 크로스바 (68) 를 통해 제 4 스테이지 (70) 에 공급된다. 도 3d 의 16-포인트 IDCT (110) 내에 도시된 바와 같이, 제 4 스테이지 (70) 는 직렬 버터플라이 8 개의 세트 하나로 구성된다. 상기 직렬 버터플라이는 1-비트 제어에 의해 선택적으로 인에이블될 수 있다. 제 4 스테이지 (70) 로부터의 직렬 변환된 데이터는 IDCT 프로세서 (20) 로부터의 출력을 구성한다.The output from the second stage 62 of the serial butterfly is supplied to the third stage 66 via the routing crossbar 64. As shown in the two 8-point IDCTs 108 in Figure 3d, the third stage 66 consists of two sets of four serial butterflies. Each set can be individually enabled by a two-bit control. The output from the third stage 66 is supplied to the fourth stage 70 via the routing crossbar 68. As shown in the 16-point IDCT 110 of Figure 3d, the fourth stage 70 consists of eight sets of serial butterflies. The serial butterfly can be selectively enabled by a one-bit control. The serialized data from the fourth stage 70 constitutes the output from the IDCT processor 20.

제 4 스테이지 (70) 로부터의 직렬 변환된 1-비트 데이터는 직렬-대-병렬 출력 버퍼의 뱅크로 라우트된다. 예시적인 실시예에서, 각 클록 사이클 동안 하나의 출력 워드가 공급되는 워드 직렬 형태로, IDCT 프로세서 (20) 는 IDCT 출력을 공급한다. 이하에 상세히 설명되는 바와 같이, 출력 버퍼는 입력 버퍼와 결합되어 I/O 버퍼 (52) 를 형성할 수 있다.The serial-converted 1-bit data from the fourth stage 70 is routed to a bank of serial-to-parallel output buffers. In an exemplary embodiment, the IDCT processor 20 provides an IDCT output, in word-serial form, in which one output word is supplied for each clock cycle. As will be described in greater detail below, the output buffer may be combined with an input buffer to form an I / O buffer 52.

Ⅱ. 제어기Ⅱ. Controller

도 2 를 참조하면, 제어기 (26) 는 IDCT 프로세서들 (20a 및 20b) 과 메모리 소자 (22) 에 제어 신호를 공급한다. 이들 제어 신호는 IDCT 프로세서들 (20a 및 20b) 과 메모리 소자 (22) 를 동기화하며, 재구성된 복합 이미지를 결정한다. 제어기 (26) 는 ADRESS 입력과 PQR 입력을 수신한다. ADRESS 입력은 제어기 (26) 에 데이터 블록의 시작을 통보한다. PQR 입력은, 제어기 (26) 에 원하는 블록 분할을 통보하는 3 개의 명령 (P, Q 및 R) 으로 구성된다. 예시적인 실시예에서, R 은 16 ×16 블록이 그 보다 작은 8 ×8 변환 블록으로 분할되어야 함을 나타내는 "1" 과 같고, Q 는 상기 8 ×8 블록이 그 보다 작은 4 ×4 변환 블록으로 분할되여야 함을 나타내는 "1" 과 같으며, P 는 상기 4 ×4 블록이 그 보다 작은 2 ×2 변환 블록으로 분할되어야 함을 나타내는 "1" 과 같다. 예시적인 실시예에서, 각 블록은 이미지 내의 다른 블록에 관계없이 개별적으로 분할될 수 있다. 따라서, 16 ×16 데이터 블록 내에는 하나의 16 ×16 변환 블록만이 존재할 수 있으므로, R 에 대해서는 1-비트 제어가 요구되고, 16 ×16 데이터 블록 내에는 4 개의 8 ×8 변환 블록이 존재할 수 있으므로, Q 에 대해서는 4-비트 제어가 요구되며, 16 ×16 데이터 블록 내에는 16 개의 4 ×4 변환 블록이 존재할 수 있으므로, P 에 대해서는 16-비트 제어가 요구된다. 데이터 블록 (4) 의 예시적인 분할이 도 1 (b) 에 도시되어 있고, 상기 이미지 분할에 대응되는 PQR 제어의 도식적인 실례, 예를 들어 트리 다이어그램 (6) 이 도 1 (c) 에 도시되어 있다. 21-비트 제어 PQR 은 직렬 또는 병렬로 제어기 (26) 에 공급될 수 있다.2, the controller 26 provides control signals to the IDCT processors 20a and 20b and the memory device 22. [ These control signals synchronize the IDCT processors 20a and 20b and the memory element 22 and determine a reconstructed composite image. The controller 26 receives the ADRESS input and the PQR input. The ADRESS input informs the controller 26 of the start of the data block. The PQR input consists of three instructions (P, Q and R) that notify the controller 26 of the desired block division. In the exemplary embodiment, R is equal to " 1 " which indicates that a 16x16 block is to be divided into smaller 8x8 transform blocks, and Q is a 4x4 transform block in which the 8x8 block is smaller 1 " indicating that the 4x4 block should be divided, and P is equal to " 1 " indicating that the 4x4 block should be divided into smaller 2x2 transform blocks. In an exemplary embodiment, each block may be divided independently of the other blocks in the image. Thus, since there can be only one 16x16 transform block in a 16x16 data block, one-bit control is required for R, and there can be four 8x8 transform blocks in a 16x16 data block. Therefore, 4-bit control is required for Q, and 16 4-by-4 conversion blocks may exist in 16-by-16 data blocks. Therefore, 16-bit control is required for P. An exemplary segmentation of the data block 4 is shown in Fig. 1 (b) and a diagrammatic illustration of the PQR control corresponding to the image segmentation, for example tree diagram 6, is shown in Fig. 1 (c) have. The 21-bit control PQR may be supplied to the controller 26 in series or in parallel.

PQR 입력은 원하는 블록 분할의 2-D 표현이다. 제어기 (26) 는 PQR 입력을 1-D 의 컬럼 및 로우 제어 신호로 분해한다. 그 다음 이들 컬럼 및 로우 제어 신호는, IDCT 프로세서들 (20a 및 20b) 로 하여금 적절한 변환의 혼합을 수행하도록 지시하는 제어 신호를 발생하는데 사용된다. 도 1 (b) 에 도시된 예시적인 분할 (4) 의 경우, 제어기 (26) 는 IDCT 프로세서 (20a) 에 데이터의 첫번째 4 개 컬럼에 대해 2 개의 4-포인트 변환과 1 개의 8-포인트 변환을 수행하도록 지시한다. 데이터의 다음 2 개 컬럼에 대해, 제어기 (26) 는 IDCT 프로세서 (20a) 에 1 개의 4-포인트 변환, 2 개의 2-포인트 변환 및 1 개의 8-포인트 변환을 수행할 것을 지시한다. 모든 컬럼이 처리될 때까지 프로세스는 계속된다. IDCT 프로세서 (20a) 로부터의 중간 결과는 메모리 소자 (22) 에 컬럼으로 저장된다.The PQR input is a 2-D representation of the desired block partition. The controller 26 decomposes the PQR input into a 1-D column and a row control signal. These column and row control signals are then used to generate a control signal that directs the IDCT processors 20a and 20b to perform a mix of appropriate conversions. In the case of the exemplary partition 4 shown in Fig. 1 (b), the controller 26 provides the IDCT processor 20a with two 4-point transforms and one 8-point transform for the first four columns of data . For the next two columns of data, the controller 26 instructs the IDCT processor 20a to perform one four-point conversion, two two-point conversion, and one eight-point conversion. The process continues until all the columns have been processed. The intermediate result from the IDCT processor 20a is stored as a column in the memory element 22. [

비슷한 방식으로, 제어기 (26) 는 IDCT 프로세서 (20b) 에 메모리 소자 (22) 로부터의 중간 결과의 로우에 대해 변환의 적절한 혼합을 수행할 것을 지시한다. IDCT 프로세서 (20a) 에 의해 모든 컬럼이 처리되고 난 후, 제어기 (26) 는 IDCT 프로세서 (20b) 에 중간 결과의 첫번째 4 개 로우에 대해 2 개의 4-포인트 변환과 1 개의 8-포인트 변환을 수행할 것을 지시한다. 다음의 2 개 로우에 대해, 제어기 (26) 는 IDCT 프로세서 (20b) 에 1 개의 4-포인트 변환, 2 개의 2-포인트 변환 및 1 개의 8-포인트 변환을 수행할 것을 지시한다. 이번에도, 모든 로우가 처리될 때까지 프로세스는 계속된다.In a similar manner, the controller 26 directs the IDCT processor 20b to perform an appropriate mixing of the transforms for the intermediate result rows from the memory element 22. [ After all the columns have been processed by the IDCT processor 20a, the controller 26 performs two 4-point transforms and one 8-point transform on the first 4 rows of the intermediate result to the IDCT processor 20b . For the next two rows, the controller 26 instructs the IDCT processor 20b to perform one four-point conversion, two two-point conversion, and one eight-point conversion. Again, the process continues until all rows have been processed.

도 4 를 참조하면, IDCT 프로세서들 (20a 및 20b) 을 위해, 제어기 (26) 에 의해 발생된 제어 신호는 WRITE_ENABLE, READ_ENABLE, ADD_ENABLE 및 MAP 를 포함한다. WRITE_ENABLE 은 입력 데이터 포인트가 정확한 순서 (도 3d 참조) 로 정렬되도록, 입력 데이터 포인트의 적절한 I/O 버퍼 (52) 로의 기입을 제어한다. READ_ENABLE 은 변환된 데이터가 IDCT 프로세서 (20) 로부터 판독되는 순서를 제어한다. 예시적인 실시예에서, 변환된 데이터는 IDCT 프로세서 (20) 로부터 순차적으로 판독될 수 있다. ADD_ENABLE 은, 격자 (100) 의 앞부분 3 개 스테이지에서 가산을 수행하는 직렬 가산기 (56) 의 제 1 세트를 제어한다. ADD_ENABLE 은 원하는 변환의 혼합에 종속되며, PQR 입력에 따라 발생된다. MAP 는, 원하는 변환의 혼합을 발생하는 직렬 버터플라이의 마지막 3 개 스테이지들 (62, 66 및 70) 을 제어한다. MAP 또한 PQR 입력에 따라 발생된다. 버터플라이의 4 개 세트 각각을 개별적으로 인에이블 또는 디스에이블하기 위해, 제 2 스테이지 (62) 에는 4 개의 제어 비트가 필요하다 (도 3d 참조). 마찬가지로, 제 3 스테이지 (66) 에는 2 개의 제어 비트가 필요하고, 제 4 스테이지 (70) 에는 1 개의 제어 비트가 필요하다. 예시적인 실시예에서, IDCT 프로세서 (20) 는 적어도 2-포인트 변환을 항상 수행하고 있기 때문에, 제 1 스테이지 (58) 에 대해서는 제어 신호가 필요하지 않다. 그러나, 원하거나 필요하다면, 제 1 스테이지 (58) 의 바이패스를 제공하기 위해 제어 신호가 발생될 수도 있다. 본 발명의 2-D 변환은 2 개의 1-D 변환을 사용해 직렬로 수행되기 때문에, 제어기 (26) 는, 입력 데이터와 제어 신호를 동기화하기 위해, IDCT 프로세서 (20b) 에 대한 제어 신호를 IDCT 프로세서 (20a) 에 대해 상대적으로 지연시킨다.4, for IDCT processors 20a and 20b, the control signals generated by controller 26 include WRITE_ENABLE, READ_ENABLE, ADD_ENABLE, and MAP. WRITE_ENABLE controls the writing of the input data point to the appropriate I / O buffer 52 so that the input data points are aligned in the correct order (see FIG. 3D). READ_ENABLE controls the order in which the converted data is read from the IDCT processor 20. [ In an exemplary embodiment, the transformed data may be read out sequentially from the IDCT processor 20. [ ADD_ENABLE controls a first set of serial adders 56 that perform additions at the first three stages of the grid 100. ADD_ENABLE is dependent on the mix of desired transformations and is generated in accordance with the PQR input. The MAP controls the last three stages (62, 66 and 70) of the serial butterfly that generate the desired mix of transforms. The MAP is also generated according to the PQR input. In order to enable or disable each of the four sets of butterflies separately, four control bits are required in the second stage 62 (see FIG. 3D). Similarly, two control bits are required for the third stage 66, and one control bit is needed for the fourth stage 70. [ In the exemplary embodiment, since the IDCT processor 20 is always performing at least two-point conversion, no control signal is needed for the first stage 58. [ However, a control signal may be generated to provide a bypass of the first stage 58, if desired or necessary. Since the 2-D conversion of the present invention is performed in series using two 1-D conversions, the controller 26 sends a control signal for the IDCT processor 20b to the IDCT processor 20b in order to synchronize the input data and the control signal. (20a). ≪ / RTI >

제어기 (26) 는 조합 논리와 상태 머신의 조합으로 구현될 수 있다. 다른 방법으로, 마이크로 코드를 실행하는 마이크로-컨트롤러 또는 마이크로-프로세서를 사용하여 제어기 (26) 가 구현될 수도 있다. 여기에서 설명된 기능을 수행하는제어기 (26) 의 상이한 구현은 본 발명의 범위 내에 있다.Controller 26 may be implemented as a combination of combinatorial logic and state machine. Alternatively, the controller 26 may be implemented using a micro-controller or micro-processor that executes microcode. Different implementations of the controller 26 that perform the functions described herein are within the scope of the present invention.

Ⅲ. 전치 메모리Ⅲ. Transposition memory

예시적인 실시예에서, 메모리 소자 (22) 는 전치 메모리로서 구현될 수 있다. 입력 데이터 블록의 컬럼에 대해 1-D 변환을 수행하여, 그 중간 결과를 저장하고, 상기 중간 결과의 로우에 대해 1-D 변환을 수행함으로써, 2-D 변환이 실현된다. 모든 컬럼이 변환되기까지는 로우에 대한 1-D 변환이 수행될 수 없다. 예시적인 실시예에서, 2 개의 1-D 변환은 양자가 동시에 동작하도록 파이프라인된다.In an exemplary embodiment, the memory element 22 may be implemented as a transpose memory. A 2-D conversion is realized by performing a 1-D conversion on a column of the input data block, storing the intermediate result, and performing a 1-D conversion on the row of the intermediate result. 1-D conversion to the row can not be performed until all the columns have been converted. In an exemplary embodiment, the two 1-D transforms are pipelined so that they both operate simultaneously.

도 1 (a) 에 도시된 바와 같이, 메모리 소자 (22) 는 메모리의 블록으로 구현될 수 있다. IDCT 프로세서 (20a) 로부터의 중간 결과가 메모리 소자 (22) 에 컬럼으로 먼저 기입된다고 가정한다. 모든 컬럼이 IDCT 프로세서 (20a) 에 의해 처리될 때까지, IDCT 프로세서 (20b) 는 중간 결과의 로우에 대해 동작할 수 없다. 일단 메모리 소자 (22) 의 마지막 컬럼이 채워지고 나면, 그 중간 결과가 IDCT 프로세서 (20b) 에 로우로 공급된다. 그러나, 파이프라인의 구조로 인해, IDCT 프로세서 (20a) 는 IDCT 프로세서 (20b) 에 의해 만회된 데이터의 각 로우에 대해 데이터의 한 컬럼을 공급한다. IDCT 프로세서 (20b) 가 선행 컬럼에서의 몇몇 데이터 포인트를 여전히 필요로 하기 때문에, 데이터의 이러한 컬럼은 선행 컬럼에 중복 기입될 수 없다. 이러한 문제를 해결하기 위하여, 중간 결과의 신규 컬럼은 IDCT 프로세서 (20b) 에 의해 방금 만회된 데이터의 로우에 걸쳐 기입된다. 사실상, 메모리 소자 (22) 는 판독-수정-기입 능력을 사용하여, 동일한 클록 사이클에 대해 동일한 메모리 장소로부터 판독하고 동일한 메모리 장소에 기입하도록 구현될 수 있다. 하나의 클록 사이클 내에, IDCT 프로세서 (20b) 에 의해 메모리 소자 (22) 의 한 장소로부터 하나의 데이터가 판독되고, IDCT 프로세서 (20a) 에 의해 동일한 장소에 기입될 수 있다. 이런 식으로 구현되어, 메모리 소자 (22) 는 전치 즉, 연속적인 16 ×16 블록에 대해 우선 컬럼과 우선 로우 사이에서 교체한다. 전치는 메모리 요구를 단지 하나의 메모리 뱅크로 감축한다.As shown in Fig. 1 (a), the memory element 22 may be implemented as a block of memory. It is assumed that the intermediate result from the IDCT processor 20a is first written to the column in the memory element 22. Until all the columns are processed by the IDCT processor 20a, the IDCT processor 20b can not operate on the intermediate result rows. Once the last column of memory element 22 is filled, the intermediate result is supplied low to IDCT processor 20b. However, due to the structure of the pipeline, the IDCT processor 20a supplies one column of data for each row of data retrieved by the IDCT processor 20b. Since the IDCT processor 20b still needs some data points in the preceding column, such columns of data can not be overwritten in the preceding column. To solve this problem, a new column of intermediate results is written over the row of data just retrieved by the IDCT processor 20b. In effect, the memory element 22 can be implemented to read from the same memory location and write to the same memory location for the same clock cycle, using the read-modify-write capability. Within one clock cycle, one piece of data can be read from one location in the memory device 22 by the IDCT processor 20b and written to the same location by the IDCT processor 20a. Implemented in this way, the memory element 22 swaps between the column and the priority row for the transpose, that is, the contiguous 16x16 block. Transposition reduces the memory requirement to just one memory bank.

제어기 (26) 에 의해, 메모리 소자 (22) 를 전치 메모리로 구현하는 제어 신호가 공급된다. 제어기 (26) 는 필요한 타이밍 정보를 가지며, IDCT 프로세서들 (20a 및 20b) 을 입력 데이터 블록과 동기화할 수 있다.The controller 26 is supplied with a control signal that implements the memory element 22 into the transitional memory. The controller 26 has the necessary timing information and can synchronize the IDCT processors 20a and 20b with the input data block.

메모리 소자 (22) 는 기억 소자 즉, RAM 메모리 장치, 래치, 또는 다른 형태의 메모리 장치와 같이 업계에 공지된 메모리 장치 중의 어떤 것으로도 구현될 수 있다.The memory element 22 may be implemented as any of the memory devices known in the art, such as a memory device, a RAM memory device, a latch, or other type of memory device.

Ⅳ. 직렬 버터플라이IV. Serial Butterfly

직렬 버터플라이가 도 5 의 (a) 및 (b) 에 도시되어 있다. 도 5 의 (a) 는 직렬 버터플라이의 도식적 예이며, 도 5 의 (b) 는 동일한 직렬 버터플라이의 블록도이다. 직렬 버터플라이 (140) 는 2 개의 입력 (X1 및 X2) 에 대해 동작한다. 신호 경로의 상하가 정렬되도록, 입력 (X1) 은 지연 소자 (148) 에 의해 지연된다. 입력 (X2) 은 비트-직렬 곱셈기 (150) 에 의해만큼 배율된다.를 나타낸다. 지연 소자 (148) 및 곱셈기 (150) 로부터의 출력은 직렬 가산기들 (160a 및 160b) 에 공급된다. 직렬 가산기 (160a) 는 곱셈기 (150) 로부터의 출력을 지연 소자 (148) 로부터의 출력에 가산하며, 직렬 가산기 (160b) 는 지연 소자 (148) 로부터의 출력에서 곱셈기 (150) 로부터의 출력을 감산한다. 직렬 가산기들 (160a 및 160b) 로부터의 출력은 각각 직렬 버터플라이 출력 (Z1 및 Z2) 을 구성한다. 본 발명에서, Y1 및 Y2 각각이 Z1 및 Z2 로 통과될 수 있도록 하기 위해, 직렬 가산기들 (160a 및 160b) 은 오프될 수 있게 설계된다. 예시적인 실시예에서, 직렬 버터플라이 (140) 는 2 개의 입력 스트림에 대해 동작하며, 2 개의 출력 비트 스트림을 공급한다.A serial butterfly is shown in Figures 5 (a) and 5 (b). Figure 5 (a) is a schematic illustration of a serial butterfly, and Figure 5 (b) is a block diagram of the same serial butterfly. The serial butterfly 140 operates on two inputs X1 and X2. The input X1 is delayed by the delay element 148 so that the top and bottom of the signal path are aligned. The input X2 is input to the bit-to-serial multiplier 150 . silver . The output from the delay element 148 and the multiplier 150 is supplied to the serial adders 160a and 160b. The serial adder 160a adds the output from the multiplier 150 to the output from the delay element 148 and the serial adder 160b subtracts the output from the multiplier 150 from the output from the delay element 148. [ do. The outputs from serial adders 160a and 160b constitute serial butterfly outputs Z1 and Z2, respectively. In the present invention, serial adders 160a and 160b are designed to be off so that each of Y1 and Y2 can pass through Z1 and Z2. In an exemplary embodiment, serial butterfly 140 operates on two input streams and provides two output bit streams.

비트-직렬 곱셈기 (150) 의 예시적인 블록도가 도 6 의 (a) 및 (b) 에 도시되어 있다. 도 6 (a) 는 워드-와이드 표현의 비트-직렬 곱셈기 (150) 를 나타내며, 도 6 (b) 는 비트-와이드 표현의 동일한 곱셈기 (150) 를 나타낸다. C 를 사용한 X 의 비트-직렬 곱셈은, 중간 결과항에 연속적으로 C 를 가산하고 그 결과를 하나의 2 진 비트 위치만큼 시프트함으로써 실현된다. 이것이 도 6 (a) 의 블록도에 도시되어 있다. 래치 (212) 는 16 클록 사이클마다 그 중 한 사이클 동안 인에이블되는 LD 신호에 의해 지워져, 다음 곱셈을 준비하게 된다. LD 신호는 또한 직전에 완료된 곱셈의 결과항을 가산기 (210) 로부터 병렬-대-직렬 시프트 레지스터 (214) 에 로드한다. 그 다음 상기 결과항은 다음 곱셈 동안 레지스터 (214) 로부터 직렬로 시프트 출력된다.An exemplary block diagram of a bit-serial multiplier 150 is shown in Figures 6 (a) and 6 (b). Figure 6 (a) shows a bit-serial multiplier 150 of a word-wide representation, and Figure 6 (b) shows the same multiplier 150 of bit-wide representation. The bit-serial multiplication of X using C is realized by successively adding C to the intermediate result term and shifting the result by one binary bit position. This is shown in the block diagram of Fig. 6 (a). The latch 212 is cleared by the LD signal enabled for one of the sixteen clock cycles, thereby preparing for the next multiplication. The LD signal also loads the result term of the last completed multiplication from the adder 210 into the parallel-to-serial shift register 214. The result term is then shifted out serially from register 214 during the next multiplication.

예시적인 실시예에서, 입력 데이터 (X), 상수 (C) 및 결과 (Y) 의 정밀도는 16-비트이다. 16-비트의 정밀도는 "IEEE Standard 1180-1990 : Specifications for the Implementations of 8 ×8 Inverse Discrete Cosine Transform" 에 의해 규정된 것보다 작은 산술 오차를 얻게 한다. 상기 16-비트 표현은 하나의 부호 비트, 9 개의 크기 비트 및 6 개의 소수 비트로 구성될 수 있다. 16-비트 이하나 이상의 다른 표현이 예측될 수 있으며, 이는 본 발명의 범위 내에 있다.In the exemplary embodiment, the precision of the input data X, the constant C, and the result Y is 16-bit. 16-bit precision results in a smaller arithmetic error than that specified by " IEEE Standard 1180-1990: Specifications for the Implementations of 8x8 Inverse Discrete Cosine Transform ". The 16-bit representation may consist of one sign bit, nine size bits and six decimal bits. Other expressions of less than or equal to 16-bits may be predicted and are within the scope of the present invention.

예시적인 실시예에서, 가산기 (210), 래치 (212) 및 레지스터 (214) 모두는 16-비트로 구현된다. 각 클록 사이클 동안, X 의 한 비트는 LSB 비트를 우선으로하여 비트-직렬 곱셈기 (150) 로 시프트된다. 입력 비트와 LD 신호에 따라, 래치 (212) 내에 저장되어 있는 중간 결과항에 상수 C 가 가산된다. 논리 회로 (200) 내에서, AND 게이트 (204) 는 입력 비트와 LD 신호에 근거하여 중간 결과항에 C 를 가산해야 할지를 결정한다. 그 다음 가산기 (210) 로부터의 중간 결과항은 비트 위치 D[14...0] 로 한 비트 위치만큼 시프트되어 래치 (212) 내에 다시 저장된다. 가산기 (210) 로부터의 LSB 비트는 버려지고, 래치 (212) 에서의 MSB 비트는, 예를 들어, D[15]=Co[15] (여기서 Co[15] 는 가산기 (210) 의 MSB 로부터의 캐리-아웃이다) 로 부호 확장된다. 도 6 (a) 에 도시된 대로, 비트-직렬 곱셈기 (150) 는 어큐뮬레이터와 동일한 양의 하드웨어를 사용하여 구현될 수 있는데, 이는 IC 설계를 위해 아주 경제적 (compact) 이다.In an exemplary embodiment, adder 210, latch 212, and register 214 are both implemented in 16-bits. During each clock cycle, one bit of X is shifted to the bit-to-serial multiplier 150 with the LSB bit first. The constant C is added to the intermediate result term stored in the latch 212 in accordance with the input bit and the LD signal. In the logic circuit 200, the AND gate 204 determines whether to add C to the intermediate result term based on the input bit and the LD signal. The intermediate result term from adder 210 is then shifted by one bit position to bit position D [14 ... 0] and stored again in latch 212. The LSB bits from the adder 210 are discarded and the MSB bits in the latch 212 are shifted from the MSB of the adder 210 to the MSB of the adder 210, for example, D [15] = Co [ Carry-out). As shown in FIG. 6 (a), the bit-serial multiplier 150 can be implemented using the same amount of hardware as the accumulator, which is very compact for IC design.

비트-직렬 곱셈기 (150) 가 도 6 (b) 에 더욱 상세히 도시되어 있다. 가산기 (210), 래치 (212) 및 레지스터 (214) 가 비트 형태로 도시되어 있다. 입력 비트 (X) 와 LD 신호에 따라, 래치 (212) 에 저장되어 있는 중간 결과항에 상수 (C) 가 가산될 수 있다. 각각의 가산기 (210) 는 다음 하위 비트의 래치 (212) 로부터 캐리-인 (Ci) 입력을 수신하고, 다음 상위 비트의 가산기 (210) 캐리-아웃 (Co) 출력을 공급한다. 이것이 가산기의 표준 캐리 체인이다.The bit-serial multiplier 150 is shown in greater detail in Figure 6 (b). The adder 210, the latch 212 and the register 214 are shown in bit form. Depending on the input bit X and the LD signal, a constant C may be added to the intermediate result term stored in the latch 212. Each adder 210 receives a carry-in (Ci) input from the latch 212 of the next lower bit and provides an adder 210 carry-out (Co) output of the next higher bit. This is the standard carry chain of adders.

LSB 비트의 간략한 절단 (truncation) 은 2 의 보수 출력의 결과항에 약한 음의 바이어스를 발생한다. 마지막 가산기 (210a) 에 두번째 LSB 를 가산함으로써, 이러한 약한 음의 바이어스는 오프셋될 수 있는데, 이는 출력 결과항에 1/2 LSB 의 양의 오프셋을 발생시킨다. 연속적인 곱셈기 (150) 전체에 걸쳐 절단과 양의 오프셋을 교체하는 것을 통해, 전체적인 오프셋이 최소화될 수 있다. 상기 오프셋은, 원하는 결과에 따라 하이 또는 로우로 고정 배선될 수 있는 ROUND 신호에 의해 제어된다.The truncation of the LSB bits produces a weak negative bias on the resultant of the two's complement output. By adding the second LSB to the last adder 210a, this weak negative bias can be offset, which results in a positive offset of 1/2 LSB in the output result term. By replacing the cutoff and positive offsets throughout the successive multipliers 150, the overall offset can be minimized. The offset is controlled by a ROUND signal that can be hard wired high or low depending on the desired result.

직렬 가산기 (160) 의 예시적인 블록도가 도 7 (a) 에 도시되어 있다. 직렬 가산기 (160) 는, LSB 비트를 우선으로하여 2 개의 입력 (Y1 및 Y2) 을 직렬로 수신한다. 직렬 가산기 (160) 는 2 개의 입력을 가산하거나 (Y1+Y2), 다음 입력으로부터 하나의 입력을 감산하거나 (Y1-Y2) 또는 하나의 입력을 출력으로 바이패스 (Z=Y2) 할 수 있다. 상기 가산 또는 감산은 IDCT 격자 내의 직렬 가산기 (160) 의 위치, 예를 들어 직렬 가산기 (160) 가 버터플라이의 상부 레그 또는 하부 레그에 위치되었는지에 의존한다. 상기 바이패스 모드는 본 발명의 IDCT 프로세서 (20) 로 하여금 변환의 상이한 혼합을 수행할 수 있도록 한다.An exemplary block diagram of serial adder 160 is shown in FIG. 7 (a). The serial adder 160 receives two inputs Y1 and Y2 in series with the LSB bit as a priority. The serial adder 160 may add two inputs (Y1 + Y2), subtract one input from the next input (Y1-Y2), or bypass one input to the output (Z = Y2). The addition or subtraction depends on the location of the serial adder 160 in the IDCT grid, e.g., whether the serial adder 160 is located in the upper leg or the lower leg of the butterfly. The bypass mode allows the IDCT processor 20 of the present invention to perform different mixing of conversions.

입력들 (Y1 및 Y2) 은 각각 AND 게이트 (240) 및 XOR 게이트 (242) 에 직렬로 공급된다. ADD_EN 이 또한 AND 게이트 (240) 에 공급된다. ADD_EN 이 로우일 경우, AND 게이트 (240) 로부터의 출력은 로우이며, Y1 은 가산기 (244) 로 공급되지 않는다. ADD_EN 이 하이일 경우, Y1 은 가산기 (244) 로 공급된다. INVERT 신호가 XOR 게이트 (242) 및 레지스터 (246) 에 공급된다. 감산을 수행하기 위해, 입력 (Y2) 은 음수로 변환되어 다른 연산자에 가산된다. 2 의 보수를 음수로 변환하는 것은 원래 수의 모든 비트를 반전하여 LSB 비트 위치에 1 을 가산할 것을 요한다. 상기 비트의 반전은, INVERT 신호가 하이일 경우, XOR 게이트 (242) 에 의해 수행된다. LD 신호가 인에이블되고 INVERT 신호가 하이일 경우, 상기 직렬 가산을 시작할 때 1 을 저장하고 이 값을 가산기 (244) 의 캐리-인 (Ci) 에 가산함으로써, 입력 수의 LSB 비트 위치에 1 이 가산된다.The inputs Y1 and Y2 are supplied in series to the AND gate 240 and the XOR gate 242, respectively. ADD_EN is also supplied to the AND gate 240. [ When ADD_EN is low, the output from AND gate 240 is low and Y1 is not supplied to adder 244. [ When ADD_EN is high, Y1 is supplied to the adder 244. [ The INVERT signal is supplied to the XOR gate 242 and the register 246. To perform the subtraction, the input Y2 is converted to a negative number and added to another operator. Converting two's complement to a negative number requires inverting all bits of the original number and adding 1 to the LSB bit position. The inversion of the bit is performed by the XOR gate 242 when the INVERT signal is high. When the LD signal is enabled and the INVERT signal is high, 1 is stored at the start of the serial addition and added to the carry-in (Ci) of the adder 244 so that 1 is added to the LSB bit position of the input number Is added.

각각의 연속적인 클록 사이클 동안, 선행하는 1-비트 가산으로부터의 캐리-아웃 (Co) 은 레지스터 (246) 에 저장된다. 상기 캐리-아웃은 두 입력 (Y1 및 Y2) 으로부터의 비트의 다음 세트와 가산된다. 가산기 (244) 로부터의 합출력 (S) 은 직렬 가산기 (160) 로부터의 출력을 나타낸다.For each successive clock cycle, the carry-out (Co) from the preceding 1-bit addition is stored in register 246. [ The carry-out is added to the next set of bits from the two inputs Y1 and Y2. The sum output S from the adder 244 represents the output from the serial adder 160. [

상수 (C) 는 고정 배선되거나 마스크 프로그램될 수 있다. 예시적인 실시예에서, 버터플라이의 제 1 스테이지 (58) 는 항상 수행되기 때문에, 상기 스테이지 동안, 비트-직렬 곱셈기 (150) 에 대한 상기 상수 (C) 는 고정 배선될 수 있다. 그러나, 버터플라이의 나머지 스테이지 (62, 66 및 70) 동안, 상기 상수 (C) 는, 직렬 버터플라이 (140) 가 바이패스 모드에 놓일 경우, 곱셈기 (150) 로 하여금 입력 (X2) 과또는 입력 (X2) 과 1 의 곱을 수행하도록 하기 위해 마스크 프로그램될 수 있다. 곱셈기 (150) 는 또한 입력 (X2) 의 배율화 또는 정규화를 수행하기 위해 다른 값의 C 로 로드될 수도 있다.The constant C may be fixedly wired or mask programmed. In the exemplary embodiment, since the first stage 58 of the butterfly is always performed, the constant C for the bit-to-serial multiplier 150 may be fixedly wired during the stage. However, during the remaining stages 62, 66, and 70 of the butterfly, the constant C causes the multiplier 150 to switch between the input X2 and the input X2 when the serial butterfly 140 is placed in the bypass mode. Or to perform a multiplication of the input X2 by one. The multiplier 150 may also be loaded with different values of C to perform the scaling or normalization of the input X2.

도 7 에 도시된 대로, 직렬 가산기 (160) 는 2 개 입력의 가산, 감산 또는 바이패스를 수행할 수 있다. 직렬 가산기 (160) 는 직렬 버터플라이 (140) 에 의해 요구되는 기능을 수행하도록 변경될 수 있다. 예를 들어, 도 5 (b) 를 참조하면, 직렬 가산기 (160a) 는 가산 또는 바이패스만을 수행한다. 따라서, 도 7 의 직렬 가산기 (160) 는, XOR 게이트 (242) 를 제거하여 Y1 을 가산기 (244) 의 입력 (B) 에 직접 공급하며, Y2 를 AND 게이트 (240) 에 공급하도록 변경될 수 있다. 가산기 (160a) 가 가산만을 수행하기 때문에, INVERT 신호는 제거될 수 있다. 마찬가지로, 직렬 가산기 (160b) 는 감산 또는 바이패스만을 수행한다. 따라서, 직렬 가산기 (160) 의 INVERT 신호는 하이 레퍼런스에 연결될 수 있다.As shown in FIG. 7, the serial adder 160 may perform addition, subtraction, or bypass of two inputs. The serial adder 160 may be modified to perform the function required by the serial butterfly 140. For example, referring to FIG. 5B, the serial adder 160a performs addition or bypass only. 7 may be modified to remove XOR gate 242 to supply Y1 directly to input B of adder 244 and to supply Y2 to AND gate 240 . Since the adder 160a performs addition only, the INVERT signal can be eliminated. Likewise, serial adder 160b performs only subtraction or bypass. Thus, the INVERT signal of serial adder 160 may be coupled to a high reference.

직렬 가산기 (160) 는 또한, 도 3d 에 도시된 격자 (100) 의 처음 3 개 스테이지에 의해 요구되는 직렬 가산 (112) 을 구현하는, 도 4 의 직렬 가산기 (56) 에 의해 요구되는 직렬 가산 및 바이패스를 수행하는데 사용될 수 있다.The serial adder 160 also includes a serial addition that is required by the serial adder 56 of Figure 4, which implements the serial addition 112 required by the first three stages of the grating 100 shown in Figure 3d, and It can be used to perform bypass.

도 5 (b) 를 참조하면, 래치의 연속을 사용하여 지연 소자 (148) 가 구현될 수 있다. 래치의 수는 곱셈기 (150) 의 처리 지연을 매치하도록 선택된다.Referring to Fig. 5 (b), the delay element 148 may be implemented using a series of latches. The number of latches is selected to match the processing delay of the multiplier 150.

Ⅴ. I/O 버퍼Ⅴ. I / O buffer

예시적인 실시예에서, 각 IDCT 프로세서 (20) 내의 16 개 I/O 버퍼 (52) 의 뱅크는 입력 데이터를 수신하고, 변환된 데이터를 공급한다. IDCT 프로세서 (20) 로부터의 입력 및 출력은 워드 직렬 형태, 즉 클록 사이클마다 하나의 완성된 데이터 포인트로 공급된다. 16 데이터 포인트가 16 클록 사이클에 16 I/O 버퍼 (52) 로 로드된다. 일단 모든 I/O 버퍼가 로드되고 나면, 상기 16 데이터 포인트는 비트 직렬 형태, 즉 클록 사이클마다 하나의 비트로 IDCT 격자에 공급된다. 각 클록 사이클 동안, I/O 버퍼 (52) 는 또한 직렬 버터플라이의 마지막 스테이지 (70) 로부터 변환된 데이터 비트를 수신한다. 변환된 데이터는 직렬로 I/O 버퍼 (52) 에 공급된다.In an exemplary embodiment, the banks of the 16 I / O buffers 52 in each IDCT processor 20 receive input data and supply the converted data. The inputs and outputs from the IDCT processor 20 are supplied in word serial form, i.e., one complete data point per clock cycle. 16 data points are loaded into 16 I / O buffers 52 in 16 clock cycles. Once all of the I / O buffers have been loaded, the 16 data points are fed into the IDCT grid in bit serial form, one bit per clock cycle. During each clock cycle, the I / O buffer 52 also receives the converted data bits from the last stage 70 of the serial butterfly. The converted data is supplied to the I / O buffer 52 in series.

I/O 버퍼 (52) 하나의 예시적인 블록도가 도 8 에 도시되어 있다. I/O 버퍼 (52) 는 16-비트 래치 (262), 16-비트 병렬-대-직렬 시프트 레지스터 (264), 16-비트 래치 (266) 및 출력 버퍼 (268) 로 구성된다. IDCT 입력은 16 I/O 버퍼 (52) 내의 모든 래치들 (262) 에 공급된다. 제어 신호 (WR(w)) 에 의해 지시되었을 때, 각각의 I/O 버퍼 (52) 는 상기 IDCT 입력을 래치한다. 제어기 (26) 로부터 비롯된 WRITE_ENABLE 신호에서 WR(w) 가 디코드된다. 각 I/O 버퍼 (52) 내의 래치 (262) 는 16 클록 사이클마다 그 중 하나 동안만 인에이블된다. 래치 (262) 에 의해 16 데이터 포인트가 래치되고 난 후, LD 신호가 인에이블되고, 래치 (262) 내에 저장되어 있는 값은 레지스터 (264) 에 공급된다.An exemplary block diagram of one of the I / O buffers 52 is shown in FIG. The I / O buffer 52 is comprised of a 16-bit latch 262, a 16-bit parallel-to-serial shift register 264, a 16-bit latch 266 and an output buffer 268. The IDCT input is supplied to all the latches 262 in the 16 I / O buffer 52. When indicated by the control signal WR (w), each I / O buffer 52 latches the IDCT input. WR (w) is decoded in the WRITE_ENABLE signal originating from the controller 26. [ The latch 262 in each I / O buffer 52 is enabled for only one of them every 16 clock cycles. After the 16 data points are latched by the latch 262, the LD signal is enabled and the value stored in the latch 262 is supplied to the register 264.

각각의 I/O 버퍼 (52) 에 대해, LSB 레지스터 (264a) 는, LSB 비트의 시프트 출력을 우선으로하여 클록 사이클마다 하나의 비트로, 상기 데이터 포인트를 직렬로 라우팅 크로스바 (54) 에 시프트한다. 각 클록 사이클 동안, LSB 시프트 입력을 우선으로하여 클록 사이클마다 하나의 비트로, 변환된 데이터 비트 하나가 MSB 레지스터 (264q) 에 직렬로 시프트된다. 16 클록 사이클 후, 16 데이터 비트 모두는 라우팅 크로스바 (54) 로 시프트 출력되고, 변환된 데이터 비트 16 모두는 레지스터 (264) 로 시프트된다. 16 클록 사이클마다, LD 신호는 레지스터 (264) 를 다음 데이터 포인트로 로드하며, 변환된 데이터 포인트로 래치 (266) 를 로드한다. 상기 변환된 데이터는 출력 버퍼 (268) 를 통해 판독될 때까지 래치 (266) 내에 저장된다. 클록 사이클마다 하나의 변환된 데이터 포인트로, 변환된 데이터가 상기 16 I/O 버퍼 (52) 로부터 직렬로 공급되도록, 출력 버퍼 (268) 는 선택적으로 인에이블된다. 상기 판독의 순서는 READ_ENABLE 로부터 디코드되는 RD(w) 신호에 의해 제어된다.For each I / O buffer 52, the LSB register 264a shifts the data points in series to the routing crossbar 54, with one bit per clock cycle, prioritizing the shift output of LSB bits. During each clock cycle, one converted bit of data is shifted serially into the MSB register 264q, one bit per clock cycle, with the LSB shift input as priority. After 16 clock cycles, all of the 16 data bits are shifted out to the routing crossbar 54, and all of the converted data bits 16 are shifted to the register 264. Every 16 clock cycles, the LD signal loads the register 264 to the next data point and loads the latch 266 with the converted data point. The converted data is stored in the latch 266 until it is read through the output buffer 268. The output buffer 268 is selectively enabled so that the converted data is serially supplied from the 16 I / O buffer 52, with one converted data point per clock cycle. The order of reading is controlled by an RD (w) signal decoded from READ_ENABLE.

도 8 의 블록도는 I/O 버퍼 (52) 의 일구현을 나타낸다. 여기에서 설명된 바와 같은 동일한 기능을 수행하는 다른 구현을 기대할 수 있으며, 이는 본 발명의 범위 내에 있다.The block diagram of FIG. 8 shows one implementation of the I / O buffer 52. Other implementations that perform the same function as described herein can be expected and are within the scope of the present invention.

본 발명이 2-D IDCT 엔진에 대해 설명되긴 했지만, 본 발명의 개념은 이산 푸리에 변환 (DFT), 역 이산 푸리에 변환 (IDFT), 고속 푸리에 변환 (FFT), 역 고속 푸리에 변환 (IFFT), 이산 코사인 변환 (DCT) 및 하다마르 변환 (Hadamard transform) 과 같은 다른 변환들로 확장될 수 있다. 따라서, 여기에서 설명된 본 발명의 개념을 다른 변환들에 적용하는 것은 본 발명의 범위 내에 있다.Although the present invention has been described with respect to a 2-D IDCT engine, the concepts of the present invention are applicable to discrete Fourier transform (DFT), inverse discrete Fourier transform (IDFT), fast Fourier transform (FFT), inverse fast Fourier transform Can be extended to other transforms such as cosine transform (DCT) and Hadamard transform. It is therefore within the scope of the present invention to apply the inventive concept described herein to other transformations.

바람직한 실시예들에 대한 상술된 설명은 당업자라면 누구나 본 발명을 활용 또는 사용할 수 있도록 하기 위하여 제공된다. 이러한 실시예들에 대한 다양한 변경이 당업자에게 명백할 것이며, 여기에서 정의된 기본적인 원리는 발명적 재능을 사용하지 않고도 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 여기에서 도시된 실시예들에 한정되지 않으며, 여기에서 개시된 원리와 특징에 모순되지 않는 가장 넓은 범위에 맞추어져야 한다.The foregoing description of the preferred embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the basic principles defined herein may be applied to other embodiments without the use of the inventive faculty. Accordingly, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and features disclosed herein.

상술된 본 발명의 가변 블록 사이즈의 2-D IDCT 엔진을 사용하면, 입력 데이터를 정확하게 배열하고, 버터플라이 스테이지 전에 상기 데이터를 선택적으로 조합하며, 버터플라이 각 스테이지에서의 가산과 곱셈을 제어하는 것을 통해, 상이한 조합의 변환도 용이하게 수행할 수 있다.Using the variable block size 2-D IDCT engine of the present invention described above, it is possible to precisely arrange the input data, selectively combine the data before the butterfly stage, and control addition and multiplication in each butterfly stage Through which different combinations of transformations can be easily performed.

게다가, 본 발명은 직렬 연산에 대비한 것이고, 직렬 가산기 및 비트-직렬 곱셈기는 한번에 하나의 데이터 비트에 대해서만 연산이 수행되기 때문에, 2-D IDCT 엔진의 설계가 상당히 간략해질 수 있다. 직렬 연산은 또한 연속적인 버터플라이 스테이지 사이의 라우팅 크로스바를 상당히 간략화할 수 있다. 그러면서도 본 발명은, IDCT 엔진의 파이프라인 구조로 인해, 병렬 연산에서와 동일한 처리량 속도를 유지할 수 있다. 다만, 연산의 직렬 특성으로 인해 처리 지연이 증가될 뿐이다.In addition, since the present invention is against serial operations, the design of the 2-D IDCT engine can be considerably simplified since serial adders and bit-serial multipliers only perform operations on one data bit at a time. Serial operation can also significantly simplify the routing crossbar between successive butterfly stages. However, the present invention can maintain the same throughput rate as in a parallel operation due to the pipelined architecture of the IDCT engine. However, the processing delay is only increased due to the serial characteristics of the operation.

본 발명의 2-D IDCT 의 경우, 전치 메모리와 판독-수정-기입 사이클을 사용하는 것을 통해, 동일한 클록 사이클 내에 중간 결과가 하나의 메모리 장소로부터 판독되고, 새로운 결과가 동일한 메모리 장소에 기입될 수 있게 한다. 따라서, 전치 메모리는 메모리 요구를 하나의 N ×N 데이터 블록과 동일한 사이즈의 메모리 뱅크 하나로 감축시킬 수 있다.In the case of the 2-D IDCT of the present invention, through the use of transpose memory and read-modify-write cycles, intermediate results can be read from one memory location in the same clock cycle and new results can be written to the same memory location Let's do it. Thus, the transpose memory can reduce the memory request to one N × N data block and one memory bank of the same size.

Claims (20)

복수의 입력 데이터 포인트 및 제 1 제어 신호를 수신하는 가산기들의 뱅크로서, 상기 제 1 제어 신호는 상기 가산기들의 뱅크로 하여금 상기 입력 데이터 포인트의 선택된 조합에 대해 가산을 수행할 것을 지시하는, 상기 가산기들의 뱅크;A first bank of adders for receiving a plurality of input data points and a first control signal, the first control signal instructing a bank of adders to perform an addition on a selected combination of the input data points; A bank; 버터플라이의 복수 스테이지; 및Multiple stages of butterfly; And 상기 가산기들의 뱅크와 버터플라이의 제 1 스테이지 사이 및, 연속적인 버터플라이 스테이지들 사이에 삽입된 복수의 라우팅 크로스바를 구비하며;A plurality of routing crossbars inserted between the bank of adders and the first stage of the butterfly and between successive butterfly stages; 상기 버터플라이의 복수 스테이지는, 상기 버터플라이의 복수 스테이지로 하여금 상기 버터플라이의 복수 스테이지로의 선택된 입력에 대해 버터플라이 동작을 수행할 것을 지시하는 제 2 제어 신호를 수신하는 것을 특징으로 하는 가변 블록 사이즈의 IDCT 프로세서.Wherein the plurality of stages of the butterfly receive a second control signal instructing the plurality of stages of the butterfly to perform a butterfly operation on the selected input to the plurality of stages of the butterfly, Size IDCT processor. 제 1 항에 있어서, 상기 가산기들의 뱅크 및 상기 버터플라이의 복수 스테이지가 직렬 가산기 및 비트-직렬 곱셈기를 사용해 구현되는 것을 특징으로 하는 가변 블록 사이즈의 IDCT 프로세서.2. The IDCT processor of claim 1, wherein the bank of adders and the plurality of stages of the butterfly are implemented using a serial adder and a bit-serial multiplier. 제 2 항에 있어서,3. The method of claim 2, 상기 복수의 입력 데이터 포인트를 워드 직렬 형태로 수신하며, 상기 가산기들의 뱅크에 상기 입력 데이터 포인트를 비트 직렬 형태로 공급하는 I/O 버퍼의 뱅크를 더 구비하는 것을 특징으로 하는 가변 블록 사이즈의 IDCT 프로세서.Further comprising a bank of I / O buffers for receiving the plurality of input data points in word serial form and supplying the input data points in bit serial form to a bank of adders, . 제 3 항에 있어서, 상기 버터플라이의 복수 스테이지는, 모든 스테이지가 동시에 활성화되도록 파이프라인되는 것을 특징으로 하는 가변 블록 사이즈의 IDCT 프로세서.4. The IDCT processor of claim 3, wherein the plurality of stages of butterfly are pipelined such that all stages are simultaneously activated. 제 4 항에 있어서, 상기 비트-직렬 곱셈기의 피승수는 마스크를 사용해 프로그램될 수 있는 것을 특징으로 하는 가변 블록 사이즈의 IDCT 프로세서.5. The IDCT processor of claim 4, wherein the multiplicand of the bit-serial multiplier can be programmed using a mask. 입력 데이터 포인트를 수신하는 제 1 의 IDCT 프로세서;A first IDCT processor for receiving an input data point; 상기 제 1 의 IDCT 프로세서에 접속된 메모리 소자;A memory element connected to the first IDCT processor; 상기 메모리 소자에 접속된 제 2 의 IDCT 프로세서; 및A second IDCT processor connected to the memory device; And 상기 제 1 의 IDCT 프로세서, 상기 제 2 의 IDCT 프로세서 및 상기 메모리 소자에 접속되어 제어 신호를 공급하는 제어기로서, 입력 신호를 수신하여 상기 입력 신호에 따라 상기 제어 신호를 발생하는, 상기 제어기를 구비하는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.And a controller connected to the first IDCT processor, the second IDCT processor and the memory device for supplying a control signal, the controller receiving the input signal and generating the control signal in accordance with the input signal Dimensional IDCT engine of variable block size. 제 6 항에 있어서, 상기 IDCT 프로세서는:7. The apparatus of claim 6, wherein the IDCT processor comprises: 상기 복수의 입력 데이터 포인트 및 제 1 제어 신호를 수신하는 가산기들의 뱅크로서, 상기 제 1 제어 신호는 상기 가산기들의 뱅크로 하여금 상기 입력 데이터 포인트의 선택된 조합에 대해 가산을 수행할 것을 지시하는, 상기 가산기들의 뱅크;Wherein said first control signal instructs a bank of adders to perform an addition on a selected combination of said input data points, wherein said adder receives a plurality of input data points and a first control signal, The bank of; 버터플라이의 복수 스테이지; 및Multiple stages of butterfly; And 상기 가산기들의 뱅크와 버터플라이의 제 1 스테이지 사이 및, 연속적인 버터플라이 스테이지들 사이에 삽입된 복수의 라우팅 크로스바를 구비하며;A plurality of routing crossbars inserted between the bank of adders and the first stage of the butterfly and between successive butterfly stages; 상기 버터플라이의 복수 스테이지는, 상기 버터플라이의 복수 스테이지로 하여금 상기 버터플라이의 복수 스테이지로의 선택된 입력에 대해 버터플라이 동작을 수행할 것을 지시하는 제 2 제어 신호를 수신하는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.Wherein the plurality of stages of the butterfly receive a second control signal instructing the plurality of stages of the butterfly to perform a butterfly operation on the selected input to the plurality of stages of the butterfly, Sized two-dimensional IDCT engine. 제 7 항에 있어서, 상기 가산기들의 뱅크 및 상기 버터플라이의 복수 스테이지는 직렬 가산기 및 비트-직렬 곱셈기를 사용해 구현되는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.8. The variable block size two-dimensional IDCT engine of claim 7, wherein the bank of adders and the plurality of stages of the butterfly are implemented using a serial adder and a bit-serial multiplier. 제 8 항에 있어서, 상기 IDCT 프로세서는:9. The method of claim 8, wherein the IDCT processor comprises: 상기 복수의 입력 데이터 포인트를 워드 직렬 형태로 수신하며, 상기 가산기들의 뱅크에 상기 입력 데이터 포인트를 비트 직렬 형태로 공급하는 I/O 버퍼의 뱅크를 더 구비하는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.Further comprising a bank of I / O buffers for receiving the plurality of input data points in word serial form and supplying the input data points in bit serial form to a bank of the adders. Dimensional IDCT engine. 제 9 항에 있어서, 상기 IDCT 프로세서는 양쪽 모두의 IDCT 프로세서가 동시에 활성화되도록 파이프라인되는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.10. The two-dimensional IDCT engine of claim 9, wherein the IDCT processor is pipelined such that both IDCT processors are simultaneously activated. 제 10 항에 있어서, 상기 제 1 스테이지의 버터플라이는 항상 인에이블되어 있는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.11. The two-dimensional IDCT engine of claim 10, wherein the butterfly of the first stage is always enabled. 제 11 항에 있어서, 상기 비트-직렬 곱셈기의 피승수는 마스크를 사용하여 프로그램될 수 있는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.12. The two-dimensional IDCT engine of claim 11, wherein the multiplicand of the bit-serial multiplier can be programmed using a mask. 제 12 항에 있어서, 상기 IDCT 엔진은 클록 사이클마다 출력 픽셀 하나의 처리량 속도를 갖는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.13. The two-dimensional IDCT engine of claim 12, wherein the IDCT engine has a throughput rate of one output pixel per clock cycle. 제 13 항에 있어서, 상기 직렬 가산기 및 비트-직렬 곱셈기는 8-비트 보다 큰 해상도를 갖는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.14. The two-dimensional IDCT engine of claim 13, wherein the serial adder and the bit-serial multiplier have a resolution greater than 8-bits. 제 14 항에 있어서, 상기 직렬 가산기 및 비트-직렬 곱셈기는 16-비트 보다 큰 해상도를 갖는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.15. The two-dimensional IDCT engine of claim 14, wherein the serial adder and the bit-serial multiplier have a resolution greater than 16-bits. 제 15 항에 있어서, 상기 메모리 소자는 전치 메모리로 구성되는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 엔진.16. The two-dimensional IDCT engine of claim 15, wherein the memory element comprises a transitional memory. 복수의 입력 데이터 포인트의 1-차원 IDCT 변환을 수행하는 제 1 의 IDCT 변환 수단;First IDCT transformation means for performing a one-dimensional IDCT transformation of a plurality of input data points; 상기 제 1 의 IDCT 변환 수단으로부터의 중간 결과를 저장하는 메모리 수단;Memory means for storing an intermediate result from the first IDCT conversion means; 상기 중간 결과의 1-차원 IDCT 변환을 수행하는 제 2 의 IDCT 변환 수단; 및Second IDCT transformation means for performing the one-dimensional IDCT transformation of the intermediate result; And 제어 신호를 상기 제 1 의 IDCT 변환 수단, 상기 제 2 의 IDCT 변환 수단 및 상기 메모리 수단에 공급하는 제어기 수단으로서, 입력 신호를 수신하여 상기 입력 신호에 따라 상기 제어 신호를 발생하는, 상기 제어기 수단을 구비하는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 변환을 수행하는 장치.Controller means for supplying a control signal to said first IDCT conversion means, said second IDCT conversion means and said memory means, said controller means receiving an input signal and generating said control signal in accordance with said input signal, Dimensional IDCT transformation of the variable block size. 제 17 항에 있어서, 상기 IDCT 변환 수단은:18. The apparatus as claimed in claim 17, wherein the IDCT conversion means comprises: 상기 복수의 입력 데이터 포인트 및 제 1 제어 신호를 수신하는 가산 수단의 스테이지로서, 상기 제 1 제어 신호는 상기 가산 수단으로 하여금 상기 입력 데이터 포인트의 선택된 조합에 대해 가산을 수행할 것을 지시하는, 상기 가산 수단의 스테이지;Wherein said first control signal indicates to said adder means to perform addition on a selected combination of said input data points, said adder means receiving said plurality of input data points and a first control signal, Stage of means; 입력 데이터의 쌍에 대하여 버터플라이 동작을 수행하는 버터플라이 수단의 복수 스테이지; 및A plurality of stages of butterfly means for performing a butterfly operation on a pair of input data; And 상기 가산 수단의 스테이지와 상기 버터플라이 수단의 복수 스테이지 사이의 신호를 라우팅하는 라우팅 수단을 구비하며;And routing means for routing a signal between a stage of the addition means and a plurality of stages of the butterfly means; 상기 버터플라이 수단의 복수 스테이지는, 상기 버터플라이 수단의 복수 스테이지로 하여금 상기 버터플라이 수단의 복수 스테이지로의 선택된 입력 쌍에 대해 버터플라이 동작을 수행할 것을 지시하는 제 2 제어 신호를 수신하는 것을 특징으로 하는 가변 블록 사이즈의 2-차원 IDCT 변환을 수행하는 장치..Characterized in that a plurality of stages of the butterfly means receive a second control signal instructing a plurality of stages of the butterfly means to perform a butterfly operation on the selected input pair to the plurality of stages of the butterfly means Dimensional IDCT transform of a variable block size. 입력 데이터 포인트를 수신하는 제 1 의 변환 프로세서;A first transform processor for receiving an input data point; 상기 제 1 의 변환 프로세서에 접속된 메모리 소자;A memory element connected to the first conversion processor; 상기 메모리 소자에 접속된 제 2 의 변환 프로세서; 및A second conversion processor connected to the memory element; And 상기 제 1 의 변환 프로세서, 상기 제 2 의 변환 프로세서 및 상기 메모리 소자에 접속되어 제어 신호를 공급하는 제어기로서, 입력 신호를 수신하여 상기 입력 신호에 따라 제어 신호를 발생하는, 상기 제어기를 구비하는 것을 특징으로 하는 변환 엔진.And a controller connected to the first conversion processor, the second conversion processor and the memory element for supplying a control signal, the controller receiving the input signal and generating a control signal in accordance with the input signal Features a conversion engine. 제 19 항에 있어서, 상기 변환 프로세서는:20. The apparatus of claim 19, wherein the conversion processor comprises: 버터플라이 복수 스테이지; 및Butterfly multiple stage; And 연속적인 버터플라이 스테이지들 사이에 삽입된 복수의 라우팅 크로스바를 구비하며;A plurality of routing crossbars inserted between successive butterfly stages; 상기 버터플라이의 복수 스테이지는, 상기 버터플라이의 복수 스테이지로 하여금 상기 버터플라이의 복수 스테이지로의 선택된 입력에 대해 버터플라이 동작을 수행할 것을 지시하는 제 2 제어 신호를 수신하는 것을 특징으로 하는 변환 엔진.Wherein the plurality of stages of the butterfly receive a second control signal instructing the plurality of stages of the butterfly to perform a butterfly operation on the selected input to the plurality of stages of the butterfly, .
KR1020007001644A 1997-08-25 1998-08-24 Variable block size 2-dimensional inverse discrete cosine transform engine KR20010023031A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US91809097A 1997-08-25 1997-08-25
US08/918,090 1997-08-25
PCT/US1998/017423 WO1999010818A1 (en) 1997-08-25 1998-08-24 Variable block size 2-dimensional inverse discrete cosine transform engine

Publications (1)

Publication Number Publication Date
KR20010023031A true KR20010023031A (en) 2001-03-26

Family

ID=25439787

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007001644A KR20010023031A (en) 1997-08-25 1998-08-24 Variable block size 2-dimensional inverse discrete cosine transform engine

Country Status (5)

Country Link
EP (1) EP1018082A1 (en)
KR (1) KR20010023031A (en)
CN (1) CN1268231A (en)
AU (1) AU9030298A (en)
WO (1) WO1999010818A1 (en)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003198504A (en) * 2001-12-27 2003-07-11 Mitsubishi Electric Corp Despreading processing method, despread code assignment method, terminal for moving object and base station
JP2003223433A (en) * 2002-01-31 2003-08-08 Matsushita Electric Ind Co Ltd Method and apparatus for orthogonal transformation, encoding method and apparatus, method and apparatus for inverse orthogonal transformation, and decoding method and apparatus
US7096245B2 (en) 2002-04-01 2006-08-22 Broadcom Corporation Inverse discrete cosine transform supporting multiple decoding processes
US7725516B2 (en) * 2005-10-05 2010-05-25 Qualcomm Incorporated Fast DCT algorithm for DSP with VLIW architecture
US9110849B2 (en) 2009-04-15 2015-08-18 Qualcomm Incorporated Computing even-sized discrete cosine transforms
CN101605259B (en) * 2009-05-31 2012-11-21 华亚微电子(上海)有限公司 Device and method for transforming coding and decoding for multimedia data
US9069713B2 (en) 2009-06-05 2015-06-30 Qualcomm Incorporated 4X4 transform for media coding
US8762441B2 (en) 2009-06-05 2014-06-24 Qualcomm Incorporated 4X4 transform for media coding
CN101646080B (en) * 2009-06-18 2013-09-25 杭州高特信息技术有限公司 Method for fast switching parallel pipeline IDCT based on AVS and device thereof
US9081733B2 (en) * 2009-06-24 2015-07-14 Qualcomm Incorporated 16-point transform for media data coding
US9118898B2 (en) 2009-06-24 2015-08-25 Qualcomm Incorporated 8-point transform for media data coding
US9075757B2 (en) 2009-06-24 2015-07-07 Qualcomm Incorporated 16-point transform for media data coding
US8451904B2 (en) 2009-06-24 2013-05-28 Qualcomm Incorporated 8-point transform for media data coding
CN102065309B (en) * 2010-12-07 2012-12-05 青岛海信信芯科技有限公司 DCT (Discrete Cosine Transform) realizing method and circuit
US9824066B2 (en) * 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding
US20160044314A1 (en) * 2014-08-08 2016-02-11 Qualcomm Incorporated System and method for reusing transform structure for multi-partition transform

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2608808B1 (en) * 1986-12-22 1989-04-28 Efcis INTEGRATED CIRCUIT FOR DIGITAL SIGNAL PROCESSING

Also Published As

Publication number Publication date
EP1018082A1 (en) 2000-07-12
WO1999010818A1 (en) 1999-03-04
AU9030298A (en) 1999-03-16
CN1268231A (en) 2000-09-27

Similar Documents

Publication Publication Date Title
US4791598A (en) Two-dimensional discrete cosine transform processor
KR20010023031A (en) Variable block size 2-dimensional inverse discrete cosine transform engine
US5325215A (en) Matrix multiplier and picture transforming coder using the same
US7117236B2 (en) Parallel adder-based DCT/IDCT design using cyclic convolution
KR100311251B1 (en) 2D Discrete Cosine Converter, 2D Inverse Discrete Cosine Converter, and Digital Signal Processing Equipment
US4821224A (en) Method and apparatus for processing multi-dimensional data to obtain a Fourier transform
US5331585A (en) Orthogonal transformation processor for compressing information
US5867601A (en) Inverse discrete cosine transform processor using parallel processing
Carlach et al. TCAD: a 27 MHz 8* 8 discrete cosine transform chip
KR20010067275A (en) Method and apparatus for arithmetic operations on vectored data
JP6357345B2 (en) Data processing apparatus and method for performing conversion between spatial domain and frequency domain when processing video data
US6003058A (en) Apparatus and methods for performing arithimetic operations on vectors and/or matrices
US6460061B1 (en) 2-dimensional discrete cosine transform using a polynomial transform
JPH07121507A (en) Discrete cosine transforming unit
US5359549A (en) Orthogonal transformation processor for compressing information
KR19980041724A (en) Inverse Discrete Cosine Transformation Method
US5847980A (en) Product-summing arithmetic circuit
US5671169A (en) Apparatus for two-dimensional inverse discrete cosine transform
US5999958A (en) Device for computing discrete cosine transform and inverse discrete cosine transform
JP3575991B2 (en) Orthogonal transform circuit
JP3970442B2 (en) Discrete cosine transform device and inverse discrete cosine transform device
KR960014197B1 (en) Distributed arithmetic unit
JP2790911B2 (en) Orthogonal transform operation unit
JP3977003B2 (en) Discrete cosine transform / inverse discrete cosine transform method and apparatus
Bhattacharya et al. A VLSI implementation of the inverse discrete cosine transform

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid