Abstract:
A fully pipelined VLSI circuit structure for implementing the JPEG baseline image compression standard. The circuit structure exploits the principles of pipelining and parallelism to the maximum extent in order to obtain high speed and throughput. The entire is designed to be implemented on a single VLSI chip to yield a clock rate of about 100 MHz which would allow an input rate of 30 frames per second for 1024×1024 color images.

Description:
TECHNICAL FIELD 
     The present invention relates to VLSI circuit structure for implementing JPEG image compression standard. 
     BACKGROUND 
     Data compression is the reduction or elimination of redundancy in data representation in order to achieve savings in storage and communication costs. Data compression techniques can be broadly classified into two categories: lossless and lossy techniques. In lossless techniques, the exact original data can be recovered while in lossy techniques a close approximation of the original data can be obtained. The lossless methods are also called entropy coding techniques since there is no loss of information content during the process of compression. Lossless techniques are used for text compression and image compression in certain environments such as medical imaging where no loss of information is tolerated and typically the compression ratio is around 3:1. Lossy compression techniques are commonly applied in image and audio compression and depending upon the fidelity required much higher compression ratios can be obtained. 
     Digital images require an enormous amount of space for storage. For example, a color image with a resolution of 1024×1024 picture elements (pixels) with 24 bits per pixel would require 3.15M bytes in uncompressed form. At a video rate of 30 frames per second, this requires a data rate of 94M bytes per second. With the recent advances in video applications such as video teleconferencing, HDTV, home entertainment systems, interactive visualization and multimedia, there is an increasing demand for even higher bandwidth computing and communication systems. Very high speed implementation of efficient image compression techniques will significantly help in meeting that challenge. 
     In recent years, a working group known as Joint Photographic Expert Group (JPEG) consisting of three international standard organizations, International Telegraph and Telephone Consultative Committee (CCITT), International Organization for Standardization (ISO) and International Electrotechnical Commission (IEC), has defined an international standard for coding and compression of continuous-tone still images. This standard is commonly referred to as the JPEG standard. The primary aim of the JPEG standard is to propose an image compression technique that would be application independent and aid VLSI implementation of data compression. 
     SUMMARY OF THE PRESENT INVENTION 
     The Present Invention provides new and useful VLSI circuit structure for implementing JPEG image compression standard on a VLSI chip. The VLSI circuit structure is designed to implement JPEG compression in a manner which achieves fine grain pipelining across the entire circuit, operates at extremely fast timing cycles (eg. at clock cycles of at least 100 MHz). 
     According to the present invention, the VLSI circuit structure comprises (a) a DCT (discrete cosine transform) module, which receives image pixel data signals and transforms those signals to produce DCT output signals in a form suitable for processing by an entropy encoder module, (b) an entropy encoder module which receives and processes the DCT output signals to produce compressed image data signals, and (c) timing control means for providing timing control signals at predetermined timing intervals to control the processing of the input, and processing of the data signals across the DCT and entropy encoder modules. The DCT output signals are transmitted directly from the DCT module to the entropy encoder module, and the VLSI circuit structure is designed such that during each of the predetermined timing intervals (a) image pixel data signals are being input to the DCT module, (b) data is being processed by the DCT module, (c) DCT output signals are being directed to the entropy encoder module, (d) data signals are being processed by the entropy encoder module, and (e) compressed image output data signals. Thus, during normal operation, data signals are being processed in a manner which is fully pipelined across the entire VLSI circuit structure. 
     In this application, the notion of transmission of DCT output signals &#34;directly&#34; from the DCT module to the Entropy Encoder module is important. That phase is intended to mean that there is no requirement for buffering the DCT output signals before they are transmitted to the Entropy Encoder module, because of the way the entropy encoder is designed to process those signals. According to the present invention, the entropy encoder module is designed to process DCT output signals in a manner that is fully pipelined with, and at the same clock frequency as, the DCT module. Thus, the DCT output signals can be input directly to the Entropy Encoder, and the VLSI circuit structure signals as well as the computations can be fully pipelined across the entire VLSI circuit structure. 
     It is also useful to discuss the concept of &#34;fine grain pipelining&#34;, which is utilized in the VLSI circuit structure of the present invention to produce maximum speed and throughput in data processing. The concept provides for breaking down the computation as well as the control logic for each module into as many simple, individual segments as possible, with each segment controlling individual data processing functions for each module as simply and finely as possible. This produces not only a fully pipelined VLSI circuit structure, but a VLSI circuit structure which can operate at very fast speeds, i.e., at clock frequencies of at least 100 MHz. 
     Further features of the present invention will become apparent from the following detailed description and the accompanying drawings and table. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a schematic illustration of an encoder model effecting image compression according to the JPEG compression standard; 
     FIG. 2 is a schematic illustration of a baseline encoder model for effecting image compression according to the JPEG compression standard; 
     FIG. 3 is a schematic illustration of zig zag reordering of DCT output for the encoder model of FIG. 2; 
     FIG. 4 is a schematic illustration of an entropy encoder for effecting image compression according to the JPEG compression standard; 
     FIG. 5 is a schematic illustration of VLSI circuit structure for effecting JPEG compression according to the present invention; 
     FIG. 6 is a schematic illustration of a DCT module for the VLSI circuit structure of FIG. 5; 
     FIGS. 7A and 7B is a schematic illustration of a one dimensional DCT circuit, for the DCT module of FIG. 6; 
     FIG. 8 is a schematic illustration of a transpose buffer for the DCT module of FIG. 6; 
     FIG. 9 is a schematic illustration of a quantization section, for the DCT module of FIG. 6; 
     FIG. 10 is a schematic illustration of the architecture of the entropy encoder module for the VLSI circuit structure of FIG. 5; 
     FIG. 11 is a schematic illustration of the zero runlength coder for the entropy encoder module of FIG. 10; 
     FIG. 12 is a schematic illustration of the category selection function for the entropy encoder module of FIG. 10; 
     FIG. 13 is a schematic illustration of a category selection circuit for the entropy encoder module of FIG. 10; 
     FIG. 14 is a schematic illustration of strip logic for the entropy encoder module of FIG. 10; 
     FIG. 15 is a schematic illustration of a Huffman encoder for the entropy encoder module of FIG. 10; 
     FIG. 16 is a schematic illustration of data packer for the entropy encoder module of FIG. 10, and Table 1 shows Dc and AC coefficients and corresponding categories, according to the JPEG compression standard. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     As discussed above, the present invention relates to a VLSI circuit structure for implementing JPEG image compression standard on a single VLSI chip. The VLSI circuit structure according to the present invention is specifically described below and illustrated in FIGS. 5-16. However, it is believed useful to first provide some background on the JPEG image compression standard. 
     I. The JPEG Compression Standard 
     The basic model for implementing the JPEG compression standard is shown in FIG. 1. The model includes an encoder model 10 and transforms the input image into an abstract representation more suitable for further processing. The encoder model 10 may require parameters stored in some model tables 12 for achieving this transformation. The entropy encoder 14 is a compression procedure which converts the output of the encoder model 10 into a compressed form. Also, the entropy encoder 14 may use tables 16 for storing the entropy codes. Four distinct coding processes were derived based on the above described JPEG model: (i) baseline process, (ii) extended DCT-based process, (iii) lossless process and (iv) hierarchical process. The preferred embodiment of the present invention relates to a VLSI circuit structure which implements the baseline process. 
     The encoder model 10 for the baseline process is shown in FIG. 2. The input image is divided into nonoverlapping blocks of 8×8 pixels and input to the baseline encoder. The pixel values are converted from unsigned integer format to signed integer format and DCT computation is performed on each block. DCT transforms the pixel data into a block of spatial frequencies that are called the DCT coefficients. Since the pixels in the 8×8 neighborhood typically have small variations in gray levels, the output of DCT will result in most of the block energy being stored in the lower spatial frequencies. On the other hand, the higher frequencies will have values equal to or close to zero and hence, can be ignored during encoding without significantly affecting the image quality. The selection of frequencies based on which frequencies are more important and which ones are less important can affect the quality of the final image. JPEG allows for this by letting the user predefine the quantization tables used in the quantization step that follows the DCT computation. The selection of quantization values is important since it affects both the compression efficiency and the reconstructed image quality. 
     The block of DCT coefficients output by the encoder model 10 is rearranged into one dimensional data using zig-zag reordering as shown in FIG. 3. The location (0,0) of each block i contains the DC coefficient for the block represented as DC i . This DC coefficient is replaced by the value ΔDC i  which is the difference between the DC coefficients of block i and block i-1. Since the pixels of adjacent blocks are likely to have similar average energy levels only the difference between the current and previous DC coefficients is used, which is commonly known as differential pulse code modulation (DPCM) technique. It should be noted that the high frequency coefficients that are more likely to be zeroes get grouped at the end of the one dimensional data due to the zig-zag reordering. 
     The entropy encoder 14 details are shown in FIG. 4. The entropy encoder 14 uses variable length encoding based on a statistical model 18 in order to encode the rearranged DCT coefficients. In the entropy encoder 10 the quantized DCT coefficients are converted into a stream of [runlength count, category] pairs. For each pair, there is a corresponding variable length Huffman code which will be used by a Huffman encoder 20 to perform the compression. The Huffman codes are stored in a table. A detailed description of the various steps in the entropy encoder is provided below. 
     In order to achieve better compression results, very often, input images are transformed to a different color space (or color coordinates) representation before being input to the encoder. Although image compression according to the basic JPEG standard is unaffected by the color, since it processes each color independently, it has been shown that by changing the color space, the compression ratio can be significantly improved. This is due to the perception of the human visual system and the less perfect characteristics of the display devices. One of the most appropriate color spaces for image compression according to the JPEG standard has been shown to be YCbCr, where Y is the luminance component and Cb and Cr are the two crominance components. Since the luminance component carries much more information compared to the crominance components, JPEG allows different tables to be used during compression. For additional information on how color could affect compression the reader is referred to [1-6]. 
     The JPEG baseline compression standard uses DCT and the Huffman entropy coding method for achieving compression. There exist different software and hardware approaches towards the implementation of DCT and Huffman coding. The following discussion provides a brief description of these aspects of DCT and Huffman entropy encoding which are believed to provide some useful background for an understanding of the present invention. 
     It should be noted that two-dimensional DCT computation can be implemented as a sequence of two one-dimensional DCT&#39;s which is commonly referred to as the separability property. This approach is simpler to implement in hardware. It was shown by Haralick [R. M. Haralick, &#34;A storage efficient way to implement the discrete cosine transform&#34;, IEEE Trans. Comp., vol. C-25, pp. 764-765, July 1976] that the DCT of N points can be computed using two N-point FFT&#39;s (fast fourier transform&#39;s) by exploiting the symmetry of the inputs. Later, Tseng and Miller [B. D. Tseng, W. C. Miller, &#34;On Computing Discrete Cosine Transform&#34;, IEEE Trans. Comp. Vol. C-27, No. 10, pp. 966-968, 1978] showed that the DCT can be obtained more efficiently by just computing the real part of the first N coefficients of the 2N-point DFT. The computation of 8-point DCT needed for JPEG can be replaced by 16-point DFT (discrete fourier transform) computation followed by scaling. An optimum form for 16-point DFT was developed by Winograd [S. Winograd, &#34;On Computing the Discrete Fouriere Transform&#34;, Mathematics of Computation, Vol. 32, No. 141, pp. 175-199, 1978]. Arai, Agui and Nakagima adapted Winograd&#39;s solution for 8-point DCT reducing the computation by using the symmetry property [Y. Arai, T. Agui, M. Nakajima, &#34;A Fast DCT-SQ Scheme for Images&#34;, Trans. IEICE, Vol. E71, No. 11, pp. 1095-1097, 1988]. The hardware implementation of one-dimensional scaled DCT in applicants&#39; proposed architecture is based on the procedure proposed by Arai et. al. [Y. Arai, T. Agui, M. Nakajima, &#34;A Fast DCT-SQ Scheme for Images&#34;, Trans. IEICE, Vol. E71, No. 11, pp. 1095-1097, 1988]. Their computational flowgraph requires 5 multiplications, 29 additions and 16 two&#39;s complement operations (referred as multiplications by -1 by Axai et. al. [Y. Arai, T. Agui, M. Nakajima, &#34;A Fast DCT-SQ Scheme for Images&#34;, Trans. IEICE, Vol. E71, No. 11, pp. 1095-1097, 1988]). In the next section, applicants describe a modification to this procedure that reduces the number of two&#39;s complement operations required from 16 to 12. 
     A class of VLSI architectures has been proposed for data transformation of tree based codes including Huffman codes [A. Mukherjee, N. Ranganathan, M. Bassiouni, &#34;Efficient VLSI designs for data transformations of tree-based codes&#34;, IEEE Trans. Cir. Sys., vol. 38, pp. 306-314, March 1991]. These architectures use the principle of propagation of a token in a reversed binary tree constructed from the original Huffman codes. Several other architectures have been proposed in the literature for implementing static compression techniques [A. Mukherjee, N. Ranganathan, J. W. Flieder and T. Acharya, &#34;MARVLE: A VLSI Chip for Data Compression Using Tree-Based Codes&#34;, IEEE Tram. VLSI, vol. 1, pp. 203-214, June 1993; M. T. Sun, &#34;VLSI Architecture and Implementation of High Speed Entropy Decoder&#34;, Proc. ISCS, pp. 200-202, 1991]. The codes are fixed prior to the implementation and can not be changed later on which is a disadvantage with the static schemes. A few other VLSI architectures for implementing VLC (variable length coding) using sequential and concurrent VLSI models are described in [M. T. Sun, K. M. Yang, K. H. Tzou, &#34;A High Speed Programmable VLSI for Decoding Variable Length Codes&#34;, Proc. SPIE, vol. 1153, August 1989; S. F. Chang, D. G. Messerschmitt, &#34;Designing High Throughput VLC Decoder: Part I-Concurrent VLSI Architectures&#34;, IEEE Trans. Cir. and Sys. for Video Tech., June 1992; J. L. Sicre, A. Leger, &#34;Silicon complexity of VLC decoder vs. Q-coder&#34;, CCITT February 1989; M. T. Sun, S. M. Lei, &#34;A Parallel VLC Decoder for Advanced Television Applications&#34;, Proc 3rd Int. Workshop on HDTV, August 1989]. In the architecture according to the present invention the Huffman codes are stored in RAM modules so that the codes can be changed depending on the application. 
     Recently, a few special purpose VLSI chips implementing the JPEG baseline compression standard have been built and successfully commercialized. The Intel&#39;s i750 video processor [82750PB Pixel Processor databook, INTEL, Santa Clara, October 1993; 82750DB Display Processor databook, INTEL, Santa Clara, September 1993] consists of two chips, the 82 750PB pixel processor and the 82750DB display processor. The pixel processor can be programmed to implement the JPEG compression standard. The C-CUBE CL550 is a single chip processor for JPEG image compression and decompression [CL550 Users Manual, C-Cube Microsystems, Milpitas, 1992]. The core of the chip is a compression/decompression unit which consists of the FDCT/IDCT, the quantizer, the runlength encoder/decoder and the Huffman encoder/decoder. The chip can operate at up to 35 MHz. The chip can draw dam at rates upto 17.5 million pixels per second and produce compressed data at a rate of approximately 2 million bytes per second. Since the entropy encoder in the chip operates at a slower speed than the DCT module a FIFO buffer is used between the two modules to avoid overflow during compression. Whenever the amount of data in the buffer reaches a certain level a delay signal is generated which stalls the DCT computation as well as the data input to the system. LSI Logic announced a chipset for JPEG compression that consists of L64735 DCT processor, L64745JPEG coder and L74765 color and raster-block converter [JPEG Chipset Tecnical Manual, LSI Logic, Milpitas, January 1993]. The chipset operates at maximum rate of 35 MHz and processes still image data at up to 30 million bytes per second. In July 1993, LSI Logic announced a single chip JPEG coprocessor L64702 designed for graphics and video applications in personal computers, engineering work stations and laser printers [L64702 JPEG Coprocessor Technical Manual, LSI Logic, Milpitas, July 1993]. The chip is capable of compressing and decompressing data at rates up to 8.25 million bytes per second with an operating frequency of 33 MHz. Since these are commercial products the technical manuals available in the public domain on these chips do not give much information on the hardware architecture or the implementation details. 
     The VLSI circuit structure of the present invention is designed to achieve much better speeds by designing a linear static pipeline architecture with no global communication or global control logic. Such an architecture is advantageous in that higher clock speeds can be obtained by decreasing the granularity (fine grain pipelining) of processing in each stage. In other words, the clock period can be reduced by subdividing the data processing functions (and the control logic for each function) into smaller slices or stages. 
     II. The VLSI Circuit Structure of the Present Invention 
     The present invention provides a fully pipelined VLSI circuit structure for implementing the JPEG baseline compression standard. The VLSI circuit structure does not require any global communication or global control logic. Thus, the entire VLSI circuit structure can be sliced into thin stages resulting in a small clock period. The architecture for DCT and for category selection and Huffman coding in the entropy encoder are designed to produce to high speed VLSI implementation. With the VLSI circuit structure of the present invention, it is believed possible to obtain data compression rates of 100 million bytes per second or more. 
     A VLSI circuit structure 22, according to the present invention, is schematically shown in FIG. 5. The circuit structure 22 is organized as a linear multistage pipeline in order to achieve high throughput. The circuit structure 22 basically comprises a DCT module 24, an entropy encoder module 26, and a timing control means 28 (such as a clock with a predetermined frequency which transmits timing control signals to each components of the circuit, at predetermined timing intervals. The DCT module 24 comprises a DCT section 30, a, quantization section 32 and reordering logic section 34. The entropy encoder module 26 shown more fully in FIG. 10 comprises a zero-runlength encoder 60, category selection circuit 62, strip logic 64 (see FIG. 10), Huffman encoder 66 and data packer 68. 
     The image to be compressed is input to the architecture at the rate of one pixel per clock cycle. The input data is processed by the various modules in a linear fashion where each module itself is organized internally as a multistage linear pipe. The compressed data is output by the system at a variable rate depending on the amount of compression achieved. The design of each module is described in detail below. 
     1. DCT Module 
     The DCT module 24: (i) DCT section 30, (ii) quantization section 32 and (iii) zig-zag reordering section 34. 
     The DCT section 24 is shown schematically in FIG. 6. It comprises a level shifter 41, two DCT circuits 42, 43 and a transpose buffer 46. As discussed above, the scaled two-dimensional DCT computation can be separated into two one-dimensional DCT operations and each one-dimensional DCT can be implemented by using modified DFT. The first DCT computation is performed row-wise and the second DCT computation is performed column-wise. 
     A previous proposed DCT computation technique [Y. Arai, T. Agui, M. Nakajima, &#34;A Fast DCT-SQ Scheme for Images&#34;, Trans. IEICE, Vol. E71, No. 11, pp. 1095-1097, 1988] requires 5 multiplications, 29 additions and 16 two&#39;s complement additions. The computation technique is modified according to the present invention, in order to reduce the number of two&#39;s complement operations from 16 to 12, besides the same number of multiplications and additions. The modified computation technique is stated below: 
     Step 1: 
     b 0  =a 0  +a 7  ; b 1  =a 1  +a 6  ; b 2  =a 3  -a 4  ; b 3  =a 1  -a 6  ; b 4  =a 2  +a 5  ; b 5  =a 3  +a 4  ; b 6  =a 2  -a 5  ; b 7  =a 0  -a 7  ; 
     Step 2: 
     c 0  =b 0  +b 5  ; c 1  =b 1  -b 4  ; c 2  =b 2  +b 6  ; c 3  =b 1  +b 4  ; C 4  =b 0  -b 5  ; c 5  =b 3  +b 7  ; c 6  =b 3  +b 6  ; c 7  =b 7  ; 
     Step 3: 
     d 0  =c 0  +c 3  ; d 1  =c 0  -c 3  ; d 2  =c 2  ; d 3  =c 1  +c 4  ; d 4  =c 2  -c 5  ; d 5  =c 4  ; d 6  =c 5  ; d 7  =c 6  ; d 8  =c 7  ; 
     Step 4: 
     e 0  =d 0  ; e 1  =d 1  ; e 2  =m3*d 2  ; e 3  =m1*d 7  ; e 4  =m4*d 6  ; e 5  =d 5  ; e 6  =m1*d 3  ; e 7  =m2*d 4  ; e 8  =d 8  ; 
     Step 5: 
     f 0  =e 0  ; f 1  =e 1  ; f 2  =e 5  +e 6  ; f 3  =e 5  -e 6  ; f 4  =e 3  +e 8  ; f 5  =e 8  -e 3  ; f 6  =e 2  +e 7  ; f 7  =e 4  +e 7  ; 
     Step 6: 
     S 0  =f 0  ; S 1  =f 4  +f 7  ; S 2  =f 2  ; S 3  =f 5  -f 6  ; S 4  =f 1  ; S 5  =f 5  +f 6  ; S 6  =f 3  ; S 7  =f 4  -f 7  ; 
     where: 
     a i  input elements (0≦i≦7) 
     S i  scaled DFT coefficients (0≦i≦7) 
     m i  fixed multipliers: 
     m1=cos (4π/16); 
     m2=cos (6π/16); 
     m3=cos (2π/16)-cos (6π/16); 
     m4=cos (2π/16)+cos (6π/16); 
     The one dimensional DCT circuit structure (e.g. 42) for performing DCT computation according to the applicants&#39; concept is shown in FIGS. 7A and 7B. The circuit consists of six partitions P 1  -P 6  as shown in the figure. Each partition contains a register set (RS) and an arithmetic unit with some associated control logic (e.g. a counter, not shown). Each register set consists of two columns of eight registers each except for the columns RS-d and RS-e which have nine registers per column. The circuit accepts image input data signals at the rate of one pixel per clock cycle and the entire processing is performed as a linear pipe. The applicants&#39; DCT computation techniques described above is embodied in the circuit such that each step in the computation technique corresponds to a partition in the circuit structure. When the left column of register set RS-a is filled with eight data elements, the entire column is copied onto the corresponding registers in the right column. As the adder logic performs the computations as in step 1 of the applicants&#39; DCT computation technique, the left column keeps receiving new input data. A similar process occurs in each of the partitions simultaneously. It takes eight clock cycles to complete all the computations in step 1 which is the same number of cycles needed for filling up the left column. The adders are single stage units while the 16-bit multiplier is a six stage Wallace tree multiplier. 
     The transpose buffer 46 is shown in FIG. 8. The buffer consists of an 8×8 array of register pairs organized as shown in figure. The data is input to the transpose buffer 46 in row-wise fashion until all the 64 registers are loaded. The data in those registers are copied in parallel onto the corresponding adjacent registers which are connected in column-wise fashion. While the data is being read out from the column registers, the row registers will keep receiving further data from the one dimensional DCT circuit 42. Thus, the output of row-wise DCT computation is transposed for column-wise DCT computation by the one dimensional DCT circuit 43. The transpose buffer 46 has a latency of 64 clock cycles. 
     The quantization section 32 is shown in FIG. 9. It consists of a RAM 50 to store the quantization table and a 16-bit multiplier 52. The output of DCT needs to be scaled which is done by multiplying each coefficient with the predefined scaling factor. The quantization step for JPEG compression standard involves multiplying the output of DCT with a set of predefined values from a quantization table. Since both the above steps involve multiplication, according to the applicants&#39; concept the two steps are merged into a single multiplication step by suitably combining the scaling and the quantization parameters. The latency of the quantization section 32 is six clock cycles which equals the number of stages in the multiplier. 
     Each block of data that is output by the quantization section 32 needs to be reordered in a zig-zag fashion before being forwarded to the entropy encoder. In the DCT module 24, this reordering is achieved by a reordering logic section 34 which uses an 8×8 array of register pairs organized in a fashion similar to the transpose buffer 46. 
     2. Entropy Encoder Module 
     The function of the entropy encoder module 26 is to code the quantized coefficients from the DCT module 24, using variable length encoding. The structure for the entropy encoder module 26 is schematically shown in FIG. 10. As can be seen in the figure, the entropy encoder module 26 comprises (i) zero-runlength coder 60 (ii) category selection circuit 62 (iii) strip logic 64 (iv) Huffman encoder 66 and (v) data packer 68. Each block of quantized pixel data consists of one DC coefficient followed by 63 AC coefficients. The manner in which the entropy encoder performs that function is discussed below. 
     The first step is to calculate ΔDC which is the difference between the current DC coefficient and the DC coefficient of the previous block. Also, the JPEG compression standard requires that the DC/AC coefficients are decremented by one if the sign of the coefficient is negative. The next step is to extract the zero-runlength count from the stream of the AC coefficients within that block. The block data is thus converted into a stream of AC coefficients with an associated count value indicating the number of zeros preceding that coefficient. The runlength count is represented as a 4-bit field. When the runlength is greater than 16, two special symbols, ZRL and EOB are used to code the data depending on certain conditions. A zero-runlength symbol ZRL (represented in JPEG as F/0) is inserted within the data whenever a runlength of 16 zeros is encountered. The end-of-block symbol EOB (represented in JPEG as 0/0) is inserted whenever it is detected that the rest of the AC coefficients until the end of the block are zeros. A 4-bit status field is generated corresponding to each coefficient which indicates if the data being output is a DC or AC coefficient, ZRL or EOB symbol. The above steps are performed within the zero-runlength coder 60 (see FIG. 11). 
     The zero-runlength coder section 60 consists of three stages and thus a latency of three cycles. The first stage consists of logic for computing ΔDC while the second stage derives the runlength count and the third stage is used for decrementing negative coefficients. 
     Within the category selection circuit 62 (FIGS. 12, 13), each DC and AC coefficient is associated with a corresponding category depending on the magnitude of the coefficient. The definition of categories as defined by the JPEG standard is shown in Table 1. Each element in the stream of data coming out of the category selection unit consists of coefficients, the corresponding category, the runlength count and the four-bit status. It should be noted that the data stream still contains all 64 coefficients including the streaks of zero coefficients which have been encoded as zero runlength counts. Also if an EOB symbol follows one or more ZRL symbols within the data stream the ZRL symbols are redundant and must be stripped off the data stream. The above functions are performed within the strip logic circuit portion 64 (see also FIG. 14). 
     During the next step shown by the Huffman encoder 66 (see FIG. 15), each data element consisting of &lt;AC/DC coefficient, runlength count, category, status&gt; output by the strip logic circuit portion 64 is converted into a corresponding element: &lt;AC/DC coefficient, category, Huffman code, Huffman code length&gt;. The Huffman code is selected based on the runlength count, category and status fields. The set of Huffman codes are prestored in a table and can be changed depending on the application. The category and the Huffman code length fields are used in the data packer unit to pack the variable length compressed data (comprised of DC/AC coefficient and the Huffman code) into a stream of fixed length compressed data units to be output by the compression chip. 
     The design of category selection circuit 12 is based on a concept which is described here. The category selection is defined as a table in the JPEG compression standard document. A straightforward implementation of category selection would require storing the ranges in memory and comparing the input data with those prestored values which requires complex address decoding and control logic. Described below are some mathematical results which lead to very efficient hardware implementation for category selection. 
     Definition 1. 
     Let x ε X, y ε Y and z ε {0,1} where X and Y are subsets of the set of integers N. For convenience, we define a 1:2 mapping function .o slashed. as follows: 
     
         .o slashed.(y,z)=2y+z                                      (1) 
    
     Using this function, we can generate the set X as 
     
         X={xεN|x=.o slashed.(y,z)}∀yεY.OR right.N, ∀zε{0,1}                      (2) 
    
     It is obvious that by using function .o slashed., we generate the set X with twice the number of elements of the set Y and therefore, in further text, we will refer to this function as the expansion function. 
     Theorem 1. 
     Let C i  be a set of integers defined as 
     
         c.sub.i={ xεN|((-1.2.sup.i)≦x≦(-1.2.sup.i-1 -1))V(2.sup.i-1 ≦x≦2.sup.i -1)}, iεN, i≧1(3) 
    
     Given set C i , the set C i+1  can be expressed as 
     
         C.sub.i+1 ={xεN|x=.o slashed.(y,z)}∀yεC.sub.i, ∀zε{0,1}(4) 
    
     Proof: 
     Let us redefine the function .o slashed.(y,z) into a set of two subfunctions .o slashed. 0  and .o slashed. 1  as follows: 
     
         .o slashed..sub.0 (y)=2.y and .o slashed..sub.1 (y)=2.y+1. 
    
     Using the above two functions, we can generate the following two sets X 0  and X 1  : 
     
         X.sub.0 ={xεN|x=.o slashed..sub.0 (y)} and X.sub.1 ={xεN|x=.o slashed..sub.1 (y)}∀yεY. 
    
     It should be noted that the set X 0  consists of only even numbers while the set X 1  consists of only odd numbers. The set X generated by function .o slashed. as described in Eqn 0.2. is actually a union of sets X 0  and X 1  : 
     
         X=X.sub.0 ∪X.sub.1. 
    
     By applying .o slashed. 0  and .o slashed. 1  to Y=C i  ={-1.2 i , . . . ,-1,2 i-1  -1,2 -1 , . . . ,2 1  -1} we get the following subsets: 
     
         .sub.0 ={-1.2.sup.i+1,-1.2.sup.i+1 +2,-1.2.sup.i+1 +4, . . . ,-1.2.sup.i -2,2.sup.i,2.sup.i 2,2.sup.i +4, . . . ,2.sup.i +4, . . . ,2.sup.i+1 -2} 
    
     and 
     
         X.sub.1 ={-1.2.sup.i+1 +1,-1.2.sup.i+1 +3,-1.2.sup.i+1 +5, . . . ,-1.2.sup.i -1,2.sup.i +1,2.sup.i +3,2.sup.i +5, . . . ,2.sup.i+1 -1} 
    
     and their union is X={-1.2 i+1 , . . . ,-1.2 i  -1,2 i , . . . ,2 i+1  -1} which is actually C i+1 .is a special set consisting of only one element C 0 . 
     Lemma 1. 
     Given the initial set C 1 , we can generate all sets C i  by successively applying the expansion function .o slashed.. 
     The proof is omitted since it follows directly from Theorem 1. 
     Definition 2. 
     Let x be an integer represented in two&#39;s complement form with n bits as x n-1  x n-2 . . . x 0 . A function ρ(x,i) is defined as follows ##EQU1## Theorem 2. 
     Let x be an integer represented in two&#39;s complement form with n bits and let x belong to one of the sets C i , C i-1 , . . . ,C 1  (defined in Theorem 1) or belong to C 0 , where C 0  ={0}. Using function ρ, the membership of element x can be determined as follows: 
     
         ρ(x,i)=0→xεC.sub.i 
    
     
         ρ(x,i)=1→xεC.sub.i-1 or C.sub.i-2. . . or C.sub.0 
    
     Proof: 
     From Theorem 1, it can be seen that all sets C i  can be obtained from the initial set C 1  ={-2,1}. If we represent the elements {-2,1} in n-bit two&#39;s complement binary format, we have: -2=(11 . . . 110) 2  and 1=(00 . . . 001) 2 . In order to obtain the elements of the other sets using the expansion function .o slashed., we multiply these elements by 2 (left shift) and add 0 or 1 to the shifted value. By doing this, we simply move the `leading` binary digit (zero in the case of -2 and one in the case of 1) one position to the left. Thus applying the expansion function .o slashed. repeatedly (i-1) times, the leading zero in case of negative elements or the leading one in case of positive elements will be shifted left to the i-th position. Hence, ##EQU2## Now, since we can distinguish between positive and negative elements in two&#39;s complement representation based on the most significant bit x n-1  and since x belongs to set C j  where j≦i, it means that x belongs to the set C i  if the bits x n-1  and x i-1  are different. If the bits x n-1  and x 1-1  are the same, then x belongs to C j  where j&lt;i. 
     Now, the membership of x in one of the sets C i , C i-1 , . . . ,C 0  can be determined using the following algorithm: 
     j=i; 
     While (ρ(x,j) &amp;&amp; j&gt;0) j--; 
     xεC j   
     The above algorithm is an extension of the result given in Theorem 2. By repeatedly applying the test condition the exact membership of x can be derived. The simple but important results of theorems 1 and 2 are used in deriving an efficient hardware implementation for category selection. The set C i  here represents the set of coefficients in the i-th category as defined in JPEG standard. However, it should be noted that the negative coefficients must be decremented by one before applying the test condition as per the JPEG standard. A flowchart of the category selection concept is shown in FIG. 12 and its implementation as a single stage circuit is shown in FIG. 13. 
     The strip logic 64 shown in FIG. 14 consists of four stages. Each stage has three registers to hold the coefficient, runlength count and category fields corresponding to a data element output by the category selection circuit and a set of one-bit registers to hold the corresponding status. The status bits are decoded and used to strip the zero-valued coefficients and also to strip off the ZRL symbols that precede an EOB symbol. It should be noted that there could be a maximum of three ZRL symbols preceding an EOB symbol. The strip logic acts as a four stage buffer through which the compressed data elements after the removal of zero coefficients travel before being forwarded to the Huffman encoder. The valid bit signal is set to high whenever valid data is being output by the strip logic for Huffman encoding. It should be noted that the ZRL bit needs to be reset whenever a ZRL symbol has been deleted from the data stream. 
     The Huffman encoder module consists of Huffman 64 (FIG. 15) code tables stored in random access memory modules and logic for replacing the category, runlength count pairs with the corresponding Huffman codes. Although the size of the DC coefficient code table is small, the code table storage for AC coefficients is relatively large. In order to keep the clock period small the memory for the code tables is organized as a set of five RAM modules arranged in a linear pipeline fashion. The idea is to reduce the access time by keeping the memory size small. The table is accessed by using the runlength, category pair for addressing. The input data passes through each of the five stages and depending on the address the corresponding Huffman code and the code length are output. The hardware organization is shown in FIG. 15 which is self explanatory. 
     The data packer 68, shown more fully in FIG. 16 is used to convert variable length compressed data into fixed length compressed data stream. The logic consists of registers A and B, two left-shift units, two multiplexers and control logic which includes two registers A-length and B-length. The data packer works as follows. The Huffman code is first loaded into register A left justified. Depending on the length of the Huffman code, the coefficient is loaded through a multiplexer into register A, bit-aligned with the Huffman code. It should be noted that the total length of the Huffman code and the coefficient cannot exceed 26 bits and the length information is loaded into the A-length register. The data in register A is loaded through a left shifter unit and a multiplexer into register B. The loading of new data into register B is controlled using the shifter and the multiplexer which are in turn controlled by the values in the A-length and the B-length registers. Whenever register B has more than 32 bits of information which is indicated by the B-length register value a 32-bit compressed data is output. A similar logic can be used for byte- stuffing required by the JPEG standard. 
     Thus, as seen from the foregoing the present invention provides new and useful VLSI circuit structure for implementing JPEG image compression on a VLSI chip. The VLSI circuit structure is designed to implement JPEG compression in a manner which provides fine grain pipelining across the entire circuit, and operates at extremely fast timing intervals (e.g. at clock cycles at least 100 MHz).