Patent Publication Number: US-7587524-B2

Title: Camera interface and method using DMA unit to flip or rotate a digital image

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
   This application claims priority, under 35 U.S.C. § 119, of Korean Patent Application 2004-01618 filed on Jan. 9, 2004, the entire contents of which are hereby incorporated by reference. 
   FIELD OF THE INVENTION 
   The present invention relates to digital camera systems, and more particularly to a camera interface for implementing an image transform to correct for X-axis, Y-axis, or XY-axes mirroring, using a direct memory access (DMA) unit. 
   DISCUSSION OF RELATED ART 
   Rapid development in the mobile communication industry has enabled consumers to enjoy convenience in sharing information, particularly images, using cellphones and other portable (or mobile) terminals. Since the early days of using the mobile phones only for voice (audio) calls and message transmission, their function has been recently extended even to downloading MP3 music files through of the wireless mobile internet network. Now, in response to consumer demand for imaging and multimedia applications, mobile phones equipped with camera modules have become widely available. 
   Such “phonecams” (cellphones with a camera module) usually include an image sensor and an image signal processor, by which an real image (light originating from a subject) is converted into an electrical signal by the image sensor and then the electrical signal is output as a displayable digital image by the image signal processor. 
   The image sensor is composed of pixels arranged in a two-dimension array (matrix). Each pixel is formed of a photodiode (for converting received light into electric charge) and a read-out cell. The read-out cell of the pixel may employ a capacitor (e.g., a CCD for storing and transporting the charge from the photodiode) and/or a transistor. The image sensor may be composed of charge coupled devices (CCD) or of a complementary metal-oxide-semiconductor (CMOS). In a CCD-based image sensor employing capacitors as the read-out cells, charge is shifted (transferred) along a channel path to read out image data therefrom. In a CMOS image sensor, charges or voltages are read out by operations of row and column decoders. 
   The CMOS image sensors are widely used in mobile phones because of high integration density and low power consumption, compared with the CCD image sensors. CCD image sensors are widely employed in digital still cameras, video cameras, (e.g., closed-circuit televisions, and camcorders) because of fine image quality and high light-sensitivity. 
   However, with technical improvements in the CCD image sensors reducing power consumption and providing high density, it is predictable that CCD image sensors to be widely used in mobile phones, especially in view of the increasing customer demand for higher resolution cameras. 
   In employing the CCD image sensor in a mobile phone, an image upset phenomenon may occur. Such an image upset (e.g., a flip or a rotation) is caused by lenses and/or mirrors and positional variation of the camera module of the mobile phone. Depending on the positional variation of the camera module, there can be an X-axis symmetrical image (i.e., X-axis mirrored image), a Y-axis symmetrical image (i.e., Y-axis mirrored image), or an X/Y-axes symmetrical image (i.e., X/Y-axes mirrored image). Therefore, the image upset may require correction by digitally reversing the mirrored image. 
   The CMOS image sensor can easily be configured to correct for an upset (e.g., flipped or rotated) image by changing the row and column decoders. But, it is difficult to change a CCD image sensor to correct such an upset image because charges (or image signals) therein are detected in the pattern of shift registers directly coupled with the photodiode array and thereby the order of horizontal lines of an output image is fixed. There may be ways to overcome this limitation, e.g., transforming an output image of the CCD image sensor through a frame buffer, by using an image signal processor, or transforming an output image in software after storing it digitally in an external memory. However, a high-capacity frame buffer (e.g., multiple Megapixels) or memory (e.g., multiple megabytes) would be required for correcting the image upset (e.g., flipping or rotation) of a high-resolution image. Using the high-capacity frame buffer in the camera module may cause unnecessary requirements for high-capacity memory and may generate delays in the availability of image data du to the frame buffering processes. Using the external memory in the CCD image sensor may cause frequent unnecessary memory accessing operations, which can hinder he implementation of high-bandwidth, low-power, and small-size mobile phones. 
   SUMMARY OF THE INVENTION 
   The present invention is directed to a camera interface, including a DMA unit adapted to perform an image transformation (e.g., flipping, rotation) to correct for X-axis, Y-axis and XY-axes mirroring of images, appropriate for high-bandwidth, low-power, and small-size mobile devices that include cameras. 
   The present invention provides an image transforming device, particularly using a DMA unit for accomplishing functions of image mirroring (X-axis mirrored image or Y-axis mirrored image) and 180-rotation of an image. 
   DMA is an acronym for Direct Memory Access. This is a particular method of getting information from memory, usually large blocks of memory by addressing it directly rather than through normal buffers and normal protocol. The DMA calling software (sometimes embedded in hardware) must be intelligent enough where to find a particular block of memory. This is a method usually used by fast disk controllers, tape controllers, SCSI controllers and intelligent database operations. It is often 20 times faster than conventional methods of access. 
   Direct memory access (DMA) is a means of having a peripheral device control a processor&#39;s memory bus directly. In burst mode, the DMA controller keeps control of the bus until all the data buffered by the requesting device has been transferred to memory (or when the output device buffer is full, if writing to a peripheral). In a computing environment, “burst mode” refers generically to any situation in which a device is transmitting data repeatedly without waiting for input from another device or waiting for an internal process to terminate before continuing the transfer of data. 
   An image transforming (flipping, rotating) circuit according to an embodiment of the present invention includes: a buffer memory for storing image data to be accessed by direct memory access (DMA) with a first burst transfer length; a data selector for selectively modifying sequences of words and of pixels in each word, of the image data stored in the buffer memory; and an address generator for outputting a frame start address, a line start address, a burst transfer start address, for accessing the image data in the buffer memory. 
   In this embodiment, the data selector includes: a plurality (the number corresponding to the burst transfer length) of pixel-sequence modifying multiplexers selecting between a word stored in the buffer memory and a derived word having a reverse pixel sequence; and a word-sequence modifying multiplexer receiving the selected words from the plurality of pixel-sequence modifying multiplexers and outputting the words in their original (input) sequence or in the reverse sequence. Each of the pixel-sequence modifying multiplexers selects one of the words (having the original or the reverse pixels sequence) in response to a mode selection signal; and the word-sequence modifying multiplexer sequentially outputs the words (in original order or reverse order) in response to outputs of a counter ranging between 0 and L−1 (L is the burst transfer length). According to the active mirror image mode, an initial value of the counter is set to one of 0 and L−1. For example, the initial value of the counter is set to 0 in an X-axis mirror image mode or a normal mode, while it is set to L−1 in an XY-axes mirror image mode or a Y-axis mirror image mode. 
   In the X-axis mirror image mode, the data selector maintains the original sequences of words and of pixels in a word, of the image data stored in the buffer memory; and the address generator establishes the frame start address by subtracting an address corresponding to a horizontal line, from the whole address space of a frame of the image data; and it establishes a new line start address (after terminating a process for a first horizontal line) by subtracting an address, corresponding to two horizontal lines, from a current address. 
   In the Y-axis mirror mode, the data selector reverses the sequences of words and of pixels in a word, of the image data stored in the buffer memory; and the address generator establishes the frame start address by adding an address space corresponding to the burst transfer length, to an address space corresponding to one horizontal line of the image data, establishes the burst transfer start address by subtracting an address space corresponding to a sum of the burst transfer length and a current burst transfer length, from a current address before a burst transfer; and (after terminating a process for one horizontal line) it establishes a line start address by adding address spaces, corresponding to two horizontal lines and a difference between the last two transfer burst lengths of a horizontal line, to a current address. 
   In the XY-axes mirror image mode, the data selector reverses the sequences of words and of pixels in a word, of the image data stored in the buffer memory; and the address generator establishes the frame start address by adding an address space corresponding to the burst transfer length, to the whole address space of a frame of the image data, establishes the burst transfer start address by subtracting an address space corresponding to a sum of the burst transfer length and a current burst transfer length, from a current address before a burst transfer; and (after terminating a process for a horizontal line) establishes the line start address by adding address spaces, corresponding to a difference between the last two burst transfer lengths of a horizontal line, to a current address. 
   In the X-axis mirror mode and XY-axes mirror image mode, when the number of pixels on a horizontal line is not equal to a multiple of the number of pixels corresponding to the burst transfer length, the last burst transfer start address is established by subtracting an address space corresponding to a sum of main and remaining burst transfer lengths, from a current address. 
   In this embodiment, when the number of pixels on one horizontal line is not equal to a multiple of the number of pixels corresponding to the burst transfer length, the burst transfer is performed divided into a main burst transfer and a remaining burst transfer that is the last burst transfer of a horizontal line. 
   Another embodiment of the invention provides a DMA unit for image transform, including: a buffer memory for storing image data to be accessed by DMA having a burst transfer length; a DMA controller for managing a burst DMA a access of the buffer memory; a data selector for modifying sequences of words and of pixels in each word, of the image data stored in the buffer memory, based upon a state of the DMA controller. 
   The DMA unit may further include an address generator for outputting a frame start address, a line start address, a burst transfer start address, for image data supplied from the data selector, based on a condition of the DMA controller; and a bus protocol signal generator for outputting a bus signal with reference to conditions of the DMA controller and a bus. 
   In this embodiment, the DMA controller may include; a DMA-finite state machine (FSM) indicating a DMA transfer state; a channel arbiter managing DMA access priorities for color components; and a fetch-finite state machine (FSM) controlling a data fetch to an external FIFO memory based on the states of the DMA-finite state machine and the channel arbiter. 
   An embodiment of the present invention also provides a camera interface for transferring image data to an external frame memory from a camera module through a system bus, the camera interface being adapted to perform image transformations (e.g., flipping, rotating). The camera interface includes: a pre-processor managing a pre-processing operation with the image data received from the camera module; a color scaler for storing image data in a FIFO memory and for modifying the number of pixels of the image data from the pre-processor; and a DMA unit for loading image data stored in the FIFO memory on the system bus, and for performing an image transformation (e.g., flipping or rotating). 
   The DMA unit may include: a buffer memory for storing the image data provided from the FIFO memory; a DMA controller for managing a DMA burst transfer to the buffer memory; a data selector for modifying sequences of words and of pixels in each word, of the image data stored in the buffer memory, based upon the state of the DMA controller; an address generator outputting a frame start address, a line start address, a burst transfer start address, for image data supplied from the data selector, based on the state of the DMA controller; and a bus protocol signal generator for outputting a bus signal with reference to the states of the DMA controller and of a the bus. 
   An embodiment of the present invention provides a mobile phone including a camera module having an interface that performs image mirror function (e.g, flipping or rotating) using a direct memory access (DMA) unit. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Preferred embodiments of the present invention will be described below in more detail with reference to the accompanying drawings. Each of the drawings illustrates an exemplary embodiment or methods of operation of the present invention and, together with the description, serve to explain principles of the present invention. Like numerals refer to like elements throughout the specification and drawings. In the drawings: 
       FIG. 1  is a block diagram illustrating a camera module and an application processor in a mobile phone in accordance with an embodiment of the present invention; 
       FIG. 2  is a circuit block diagram of a DMA controller shown in  FIG. 1 ; 
       FIG. 3  is a circuit block diagram illustrating the features of data flow and control with a codec DMA unit; 
       FIG. 4  is a state transition diagram of a DMA-finite state machine; 
       FIG. 5  is a flow chart of a channel arbiter; 
       FIG. 6  is a state transition diagram of a fetch-finite state machine for luminance components; 
       FIG. 7  illustrates and compares an original pixel positions of an image captured by the camera module and pixel positions in various mirror image modes; 
       FIG. 8  illustrates pixel positions in the mirrored image modes in a little-endian memory system; 
       FIG. 9  illustrates an address modification during an image transform (X-axis mirroring, flipping) to correct for an X-axis mirrored image; 
       FIG. 10  illustrates an address modification during an image transform (Y-axis mirroring, flipping) to correct for an Y-axis mirrored image; 
       FIG. 11  illustrates the features of modifying the sequences of words and of pixels in each word within a burst transfer length  16  for Y-axis mirroring; 
       FIG. 12  illustrates an address modifying feature affecting the sequences of words and of pixels in each word and the arrangement of DMA addresses for Y-axis mirroring; 
       FIG. 13  illustrates an address modification during an image rotation (mirroring on XY-axes) to correct for an XY-axes mirrored image; 
       FIG. 14  illustrates an address modifying feature affecting the sequences of words and of pixels in each word and the arrangement of DMA addresses in XY-axes mirroring (image rotation); 
       FIG. 15  is a flow chart describing a method of operation of the address generator; 
       FIG. 16  is a detailed diagram of the data selector; 
       FIG. 17  illustrates timings of DMA address modification and the order thereof; and 
       FIG. 18  illustrates pixel data types processed in the camera module. 
   

   DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     FIG. 1  is a block diagram illustrating a camera module  101  and an application processor  111  in a mobile phone in accordance with an embodiment of the present invention. Referring to  FIG. 1 , the camera module  101  comprise an image sensor  103  and an image signal processor (ISP)  105 . The image sensor  103  may be comprised of a CCD image sensor or a CMOS image sensor. The application processor  111  includes a camera interface  113 , a processing unit  123 , a memory interface  125 , and a system bus  129  for operatively interconnecting them. The system bus  129  is for example an advanced high performance (AHB) bus, being connected to an external frame memory  127  that is a synchronous DRAM as an example. The camera interface  113  comprise a pre-processor  115 , a color scaler  117 , and a DMA (controller) unit  119  for performing the image transforming functions. 
   After converting an optical (real) image by receiving light originating from a subject into an electrical signal by the image sensor  103 , the electrical signal is transferred to the image signal processor  105  and then transferred as pixel data to the camera interface  113 . The camera interface  113  continuously collects pixel data, which is received from the camera module  101 , the pixel data being expressed in color components. The pixel data is transformed and then transferred to the system bus  129 . The pixel data loaded on the system bus  129  is stored in the frame memory  127  through the memory interface  125 . An image frame stored in the frame memory  127  may be transferred after being compressed, or displayed on an LCD screen of the mobile phone. 
   The pre-processor  115  of the camera interface  113  converts Y/Cb/Cr pixel data of 4:2:2 format into Y/Cb/Cr pixel data of 4:2:0 format, and operates a windowing function and various pre-processes. The pre-processor  115  also separates the Y/Cb/Cr data into components of luminance (Y) and chrominance (Cb, Cr). In Y/CB/CR defined formats, Y is the luminance and Cb and Cr are the color difference signals. Crudely defining these, Y describes the luminance or monochrome element of the video, and Cb and Cr are B-Y and R-Y respectively, which are the primary colors Blue and Red minus the luminance (Y) element. The separated luminance and chrominance data are transferred to the color scaler  117 . 
   The color scaler  117  includes scaling units for codec and preview routes. The preview color scaler enables a user to watch an image captured by the camera module  101 , on an LCD screen of the mobile phone. The codec scaling units is provided to compress and transfer an image. Each scaling units stores image data into a FIFO memory with an increasing or decreasing the number of pixels supplied from the pre-processor. The preview scaling unit includes a color converter to change Y/Cb/Cr data into R/G/B data. 
   The DMA unit  119  properly modifies image data accepted from the color scaler  117  in compliance with a mirrored image mode and provides the modified image data to the system bus. The DMA unit  119  is transferred to both the codec and preview scaling units. The DMA unit  119  is a specific DMA unit adapted for a predetermined image mirror function (i.e., image restoring function). 
     FIG. 2  is a block diagram of the DMA  119  shown in  FIG. 1 . Referring to  FIG. 2 , the DMA unit  119  is divided into a codec DMA unit  119   a  and a preview DMA unit  119   b . Each DMA unit, e.g.,  119   a  (or  119   b ), comprise: an internal buffer memory  207   a  (or  207   b ) for storing image data; a FIFO memory  118   a  (or  118   b ) of the codec color scaler (or the preview color scaler); an address generator  211   a  (or  211   b ) for changing a system bus address in compliance with a mirrored image mode; and a data selector  213   a  (or  213   b ) for changing an order of image data output from the internal buffer memory  207   a  (or  207   b ) in accordance with a mirrored image mode. The DMA unit  119   a  (or  119   b ) also includes a protocol signal generator  209   a  (or  209   b ) for creating a system protocol signal. The address generator  211   a  (or  211   b ) offers a frame start address, a line start address, and burst transfer start address, for storing image data into the (external) frame memory  127  from the internal buffer memory  207   a  (or  207   b ). The data selector  213   a  (or  213   b ) selects output image data from the internal buffer memory  207   a  (or  207   b ) with modified sequences of words and pixels in a word. 
   An image frame stored in the FIFO memory  118   a  (or  118   b ) is further stored in the internal buffer memory  207   a  (or  207   b ) in order to be accessed from the system bus  129  in a burst format. The image data stored in the internal buffer memory  207   a  (or  207   b ) is transformed in the sequences of words and pixels in accordance with a mirrored image mode and then stored in the external frame memory  127  through the system bus  129  in a burst format. During this, an address for storing the image data in the external frame memory  127  is provided by the address generator  211   a  (or  211   b ). The address selector  211   a  (or  211   b ) provides a frame start address, a line start address, and burst transfer start address, of the image data accessed with burst in compliance with an image mirror mode. 
   A burst transfer length L is a multiple of 2, e.g., 2, 4, 8, or 16. If there is a remainder after dividing the number of horizontal pixels of an image frame to be processed by the number of pixels corresponding to a burst length (i.e., the remainder of pixels is smaller than the number of pixels corresponding to the burst length), the remaining pixels are processed by a remaining burst transfer mode, suitable for the remaining pixel number, in order to enhance bus efficiency. In other words, the burst transfer operation is composed of a main burst transfer mode and the remaining burst transfer mode. Processing the image data in the main burst transfer mode with a predetermined burst length L (e.g., 2, 4, 8, or 16), the last remaining data (smaller than the predetermined burst length) is processed in the remaining burst transfer mode. Since the number of horizontal pixels to be processed is known, information about the main and remaining burst transfer lengths is established by a specific functional register. 
   The last two burst transfer operations, for pixels on a horizontal line of one image frame, might be all transferred in the main burst transfer mode (when the horizontal pixel number is clearly divided by a predetermined burst length without a remainder), or the main burst transfer mode plus the remaining burst transfer mode. The burst transfer length may be predetermined with consideration for the size of a horizontal line in an image frame and the characteristics of a system bus therein. 
   For example, assuming that the number of horizontal pixels is 240 (60 words), after performing seven times a burst transfer with in the burst length  8 , the number of remaining pixels is sixteen, i.e., four words. Therefore, after completing the main burst transfer mode with the burst length  8 , the last remaining pixels of four is processed by the remaining burst transfer mode. 
   As another example, assuming that the number of horizontal pixels is 224 (56 words), all the horizontal pixels can be processed in the main burst transfer mode by performing the burst transfer of length  8  seven times. Alternatively, the 224 horizontal pixels can be processed through the main burst transfer mode of three times with the burst length  16  and next through the remaining burst transfer mode with the burst length  8 . 
   In an X-axis mirror image mode or a normal image mode, the data selector (data selection unit  213   a  (or  213   b )) loads image data of the internal buffer memory  207   a  (or  207   b ) on the system bus, without modifying the sequences of words and of pixels in a word. In a Y-axis mirror image mode or an XY-axis mirror image mode, the data selector) data selection unit  213   a  (or  213   b )) loads image data of the internal buffer memory  207   a  (or  207   b ) on the system bus, with a reversal of the sequences of words and of pixels in a word. 
   In the X-axis mirror image mode, the address generator  211   a  (or  211   b ) establishes a frame start address (for transferring the first horizontal line to be transferred) by subtracting an address space of one horizontal line from the whole address space of one frame, and then after terminating the process for transferring the first horizontal line, establishes a new line start address (for transferring the second horizontal line to be transferred) by subtracting an address space of two horizontal lines from a current address (of the frame). 
   In the Y-axis mirror image mode, the address generator  211   a  (or  211   b ) establishes a frame start address (for transferring the first horizontal line to be transferred) by adding an address space, which is assigned to the burst transfer, to an address space corresponding to one horizontal line. The address generator  211   a  (or  211   b ) establishes a burst transfer start address by subtracting an address space, corresponding to two times the main burst transfer mode, from a current address, preliminarily allowing for an address to be increased from the current address due to the burst transfer before the current burst transfer. The address generator  211   a  (or  211   b ) also establishes a line start address by adding an address space, corresponding to two horizontal lines, and an address space, (corresponding to a difference between the last two burst transfers), to a current address at the time of terminating a process for one horizontal line. 
   On the other hand, in the XY-axis mirror image mode, the address generator  211   a  (or  211   b ) establishes: a frame start address by adding an address, (corresponding to a burst transfer), to the whole address space of one frame; a burst transfer start address by subtracting an address space, (corresponding to two times of the main burst transfer), from a current address, preliminarily allowing for an address to be increased from the current address due to the burst transfer before the burst transfer; and a line start address by adding an address space, (corresponding to a difference between the last two burst transfers of one horizontal line), to a current address at the time of terminating a process for one horizontal line. 
   In the X-axis and XY-axis mirror image modes, unless the number of pixels is divisible by the number of pixels corresponding to the main burst transfer length, the last burst transfer start address is obtained by subtracting an address space, corresponding to a sum of the main and remaining burst transfers, from a current address. 
   The address generator  211   a  (or  211   b ) and the data selector  213   a  (or  213   b ) will be more described further in conjunction with the accompanying drawings. 
   A data fetch to an internal buffer memory  207   a  (or  207   b ) from the FIFO memory  118   a  (or  118   b ) of the color scaler is controlled by a fetch-FSM (finite state machine)  201   a  (or  201   b ); and a DMA transfer status is informed by DMA-FSM (finite state machine)  203   a  (or  203   b ). The codec DMA unit  119   a  has internal buffer memories corresponding to the components Y, Cb, and Cr, and further includes a channel arbiter  205  (not present in the preview DMA unit  119   b ), for managing DMA access operations for luminance data Y and the chrominance data Cb/Cr. The preview DMA unit  119   b  does not need an arbiter for separating the color components in channels because its input data is configured in an RGB format. 
   The channel arbiter  205  of the codec DMA unit  119   a , as a logic circuit for controlling bus occupancy by the luminance and chrominance components Y, Cb, and Cr, manages channel selection (or data selection) and authorization for loading the color data on the bus  129  from the internal buffer memory  207   a , per channels (or colors). As luminance data has more transfer volume in general, the luminance data is processed with higher priority while the chrominance data (Cb, and Cr) is processed with the same priority and selected by a ping-pong transmission type. 
   The fetch-FSM (finite state machine)  201   a  (or  201   b ) controls a fetch operation from the FIFO memory  118   a  (or  118   b ) with reference to the DMA-FSM (finite state machine)  203   a  (or  203   b ) (and the channel arbiter  205  in the case of  119   a ). The fetch-FSM (finite state machine)  203  outputs a read-out control signal only when the FIFO memory  208   a  (or  208   b ) is not empty and the internal buffer memory  207   a  (or  207   b ) completes a DMA transfer operation, and stores data in the internal buffer memory  207   a  (or  207   b ) from the FIFO memory  208   a  (or  208   b ) just by the amount of burst transfer length loaded on the system bus. The burst transfer length and the mirror image mode are determined by preset values in specific functional register  223 . 
     FIG. 3  is a circuit block diagram illustrating the features of data flow and control within the codec DMA unit  119   a  in accordance with an embodiment of the present invention. The DMA-FSM (finite state machine)  203   a  informs the channel arbiter  205 , the address generator unit (AGU)  211   a , the data selection unit (DSU)  213   a , and bus protocol signal generators  209   ai ,  209   aj , and  209   ak , of a DMA transfer state (CurStateDMA). 
   The internal buffer memories  207 _Y,  207 _Cb, and  207 _Cr store data, to be accessed in burst mode, from respective FIFO buffer memories  118 _Y,  118 _Cb, and  118 _Cr assigned to each of the components Y, Cb and Cr. During this, the fetch-FSM (finite state machine)  201   a  controls a data fetch operation from the FIFO memories  118 _Y,  118 _Cb, and  118 _Cr with reference to of the states of the DMA-FSM (finite state machine)  203   a  and the channel arbiter  205 . In other words, the fetch-FSM (finite state machine)  201   a  receives a signal informing that the internal buffer memories  207 _Y,  207 _Cb, and  207 _Cr are in a state of completion of the DMA transfer, from the channel arbiter  205 , and then enables the read-out control signal unless the FIFO memories  118 _Y,  118 _Cb, and  118 _Cr are empty. The read-out control signal enables data to be stored in the internal buffer memories  207 _Y,  207 _Cb, and  207 _Cr from the FIFO memories  118 _Y,  118 _Cb, and  118 _Cr by just the amount of the burst transfer length. And then, the fetch-FSM (finite state machine)  201   a  generates a DMA-ready signal FSM_DMA_ready to inform the DMA-FSM (finite state machine)  203   a  and the channel arbiter  205  of the completion of a fetch operation for pixel data. 
   The channel arbiter  205  communicates with the DMA-FSM (finite state machine)  203   a  and the fetch-FSM (finite state machine)  201   a . The channel arbiter  205  provides a control signal DataSel to a multiplexer  303  corresponding to the burst transfer length and the state (CurStateDMA) of the DMA-FSM (finite state machine)  203   a , which controls operations of selecting a channel (or data) among luminance and chrominance components and of loading data on the system bus  129  from the internal buffer memories  207 _Y,  207 _Cb, and  207 _Cr. After completing the data transfer to the system bus  129 , the channel arbiter  205  sends a DMA-transfer-end signal Y/Cb/CrTransDone to the fetch-FSM (finite state machine)  201   a.    
   The data selection unit (DSU)  213   a  generates signals YSel, CbSel, and CrSel for controlling multiplexers  213 _Y,  213 _Cb, and  213 _Cr each assigned respectively to the components Y, Cb and Cr, corresponding to a state of the DMA-FSM (finite state machine)  203   a . The control signals YSel, CbSel, and CrSel enable the multiplexers  213 _Y,  213 _Cb, and  213 _Cr to modify the sequences of words and of pixels of data stored in the internal buffer memories  207 _Y,  207 _Cb, and  207 _Cr and to output them to a multiplexer  303 . Data output from the multiplexer  303  is loaded on a data bus under the control of a data write-in signal HWDATAout of a data write-in signal generator  305 . 
   The address generator unit (AGU)  211   a  outputs a system bus address HADDRout for writing the output data of the multiplexer  303  into the external frame memory  127  through the data bus, corresponding with a selected mirror image mode and to a state of the DMA-FSM (finite state machine)  203 . 
   The bus protocol signal generators  209   ai ,  209   aj , and  209   ak  respectively output: a bus request signal HBUSREQx; a data transfer pattern signal HTRANSout; and a burst transfer signal HBURDTout; respectively, based upon the state of the DMA-FSM (finite state machine)  203   a.    
     FIG. 4  is a state transition diagram of the DMA-FSM (finite state machine)  203   a  (or  203   b ) of  FIG. 2 . Referring to  FIG. 4 , when the DMA transfer-ready signal FSM_DMA_ready is generated from the fetch-FSM (finite state machine)  201   a  during an idle state IDLE, it transitions to a DMA bus-request state (BusRequest) by way of a DMA arbitration state (Arbitrate). If a bus priority signal HGRANTx and a data transfer end signal HREADYin are enabled while in the bus-request state (BusRequest), it transitions to a DMA transfer-state (TRANSFER). If while in the DMA transfer-state a data transfer is completed and the last data of a burst length is transferred, it returns to the idle state IDLE again. 
     FIG. 5  is a flow chart illustrating the method of operation of the channel arbiter  205 . The luminance data Y is prioritized higher than the chrominance data Cb/Cr. The chrominance data are accessed with the same priority relative to each other, being selected by a ping-pong transmission sequence. In the decision step S 503 , unless the DMA-finite state machine (FSM_DMA  203   a ) is in the arbitration-state (Arbitration), it returns to the idle state. From the idle state IDLE ( 501 ), if decision step S 503  determines that the DMA-finite state machine (FSM_DMA  203   a ) is in the DMA arbitration-state “Arbitration” (i.e., Arbitrate of  FIG. 4 ), decision step S 505  is next performed to confirm whether there is a transfer request for the luminance data Y. If there is no transfer request for the luminance data Y in the step S 505 , the step S 507  is next performed. If there is a transfer request determined in decision step S 505 , step S 509  is performed wherein the FIFO and internal buffer memories corresponding to the luminance data Y are assigned to transfer the luminance data Y and then decision step S 509  is performed. In decision step S 509 , it is determined whether there is: no request for the luminance data Y; a request for the chrominance data Cb; and no request for the chrominance data Cr (Arbiter State=no Y request; Cb request; and No Cr request). If the decision step S 509  results in a positive determination, step S 511  is performed wherein a transfer operation for the chrominance data Cb is performed with the FIFO and internal buffer memories corresponding to the chrominance component Cb and then it goes to decision step S 513 . If decision step S 509  results in a negative determination N, decision step S 513  is performed. In decision step S 513 , it is determined whether there is: no request for the luminance data Y; a request for the chrominance data Cb; a request for the chrominance data Cr; and no transfer for the chrominance data Cb (Arbiter State=no Y request; Cb request; Cr request; and Cb not serviced). If the decision step S 513  results in a positive determination, step S 515  is performed wherein a transfer operation for the chrominance data Cb is performed and then decision step S 517  is performed. If the decision step S 513  results in a negative determination N, decision step S 517  is immediately performed. In the decision step S 517 , it is determined whether there is: no request for the luminance data Y; a request for the chrominance data Cb; a request for the chrominance data Cr; and a transfer for the chrominance data Cr (Arbiter State=no Y request; Cb request; Cr request; and Cb serviced). If the decision step S 517  results in a positive determination, step S 519  is performed wherein a transfer operation for the chrominance data Cr is performed and then decision step S 521  is performed. If the decision step S 517  results in a negative determination N, then decision step S 521  is immediately performed. In the decision step S 521 , it is determined whether there is: no request for the luminance data Y; no request for the chrominance data Cb; and a request for the chrominance data Cr (Arbiter State=No Y request; No Cb request; and Cr request). If the decision step S 521  results in a positive determination, step S 523  is performed wherein a transfer operation for the chrominance data Cr is performed, and then it returns to the idle state IDLE. If the decision step S 521  results in a negative determination N, it directly returns to the idle state IDLE. 
     FIG. 6  ( 6 A+ 6 B+ 6 C+ 6 D) is a state transition diagram of the fetch-FSM (finite state machine FSM_DMA  201   a ) for the luminance component Y, which is the same for the chrominance components Cb and Cr. Referring to  FIG. 6 , it can be seen that the fetch-finite state machine  201   a  controls activation of a fetch operation with data from the FIFO memory to the internal buffer memory  207   a  in conformity to a burst transfer length with reference to the states of the FSM-DMA  203   a  and the channel arbiter  205 . 
   The fetch-finite state machine FSM_DMA  201   a  outputs a read-out control signal FIFO_Y_rd when the FIFO memory is not empty (˜FIFO_Y_empty_sync) and the internal buffer memory is in the state of DMA transfer completion (YTransDone), and fetches data for the internal buffer memory from the FIFO memory by the amount of a burst transfer length (YBurst) to be loaded on the system bus  129 . 
   The address generator  209   a  (or  209   b ) and the data selector  213   a  (or  213   b ) will now be described in more detail. 
   It is assumed herein below that each image data pixel is 1 byte in size and that the system bus can carry 32-bit data. In such a 32-bit bus system, 4 pixels per word are transferred to the external frame memory  123  through the system bus  129 . Alternative embodiments of the present invention may also be adapted to other system configurations such as where each pixel is composed of 10 bits or more (not in the 8-bit unit of one byte), in a 16-bit bus system, or a 64-bit bus system. Further assumed here is that the main burst transfer length L is 16 and that the remaining burst transfer length is 8. During the main burst transfer mode, it transfers image data of 16 words (=64 pixels) in each burst. 
     FIG. 7  illustrates various mirror image modes by comparing an original pixel position of an image captured by the camera module with pixel positions. In  FIG. 7 , it is assumed that a horizontal width of an image is 224 pixels and the number of horizontal lines is 10. There are two ways of burst transfer as aforementioned: one is to transfer all data in the main transfer mode with the burst length  8 ; and the other is to transfer data in the main burst transfer node with the burst length  16  and next in the remaining burst transfer mode with the burst length  8 . The following exemplary embodiment employs the later case. 
   Memory storage conditions shown in  FIG. 7  (Big-endian) are the same with those of  FIG. 8  (little-endian). Referring to  FIG. 8 , in the X-axis mirror image mode, the sequences of words and pixels in a word are maintained without change. But in the Y-axis and XY-axes mirror modes, the sequences of words and pixels in a word are modified. 
   In the X-axis mirror image mode, pixel data are written in one image frame from the last (bottom) horizontal line up line by line towards the upper horizontal line of the frame. In the Y-axis mirror image mode, pixel data are written in one image frame from the last position to the first position of the upper horizontal line of the frame, and then downwards line by line to the bottom of the frame. In the XY-axes mirror image mode, pixel data are written in an image frame upward line by line from the last (bottom) line (as in the X-axis mirror image mode) and from the last position to the first position t in each horizontal line (as in the Y-axis mirror image mode). 
   X-Axis Mirroring Process for X-Axis Mirror Image Mode 
     FIG. 9  illustrates an address variation during an image transform (mirroring on X-axis) to correct for an X-axis mirrored image. As shown in  FIG. 9 , an X-axis mirroring procedure maintains the sequences of words and pixels in a word the same as those of the original image but changes a frame start address and a line start address. In other words, the address generator provides addresses for designating a series of horizontal lines that move up the frame from the bottom of the frame by one line whenever a process for one horizontal line is terminated (i.e., whenever a signal EOL is generated to indicate the End Of one horizontal Line). Therefore, in the X-axis mirror image mode, the address generator first establishes a frame start address by subtracting an address space corresponding to one horizontal line from the whole address space of one image frame. Regarding an address after one horizontal line has been already processed, before beginning a transfer for a new horizontal line, a new line start address is established by subtracting addresses corresponding to two horizontal lines from a current (frame) address after terminating a process for one horizontal line. 
   As illustrated in  FIG. 9 , the whole address space is sized by multiplying the dimensions of the frame (e.g., 224×20=2240). The line start address is set (e.g., to 2016) by subtracting an address space (e.g., 224) corresponding to one horizontal line (i.e., corresponding to 224 pixels of one horizontal line) from the whole address space of the frame (e.g., 2240). Accordingly, 224 pixel data corresponding to the first horizontal line are stored in the external frame memory  127  from the address  2016  to the address  2239  in sequence. Then, a new line start address  1792  is established by subtracting the address space corresponding to two horizontal lines (i.e., address space 224×2 corresponding to 224×2 pixels) from a current address space of the frame  2240  after terminating the data transfer for one horizontal line. Next, 224 pixel data of the second horizontal line are stored in the external frame memory  127  from the address  1792  to the address  2015  in sequence. Such transfer operations are repeated line by line until completing the data transfer process for one entire frame. 
   The line start address may be established in an alternative embodiment of the invention by subtracting an address space corresponding to one horizontal line from the previous line start address after completing a data transfer process for one horizontal line. 
   Y-Axis Mirroring Process for Y-Axis Mirror Image Mode 
     FIG. 10  illustrates an address modification during an image transform (mirroring on Y-axis) to correct for a Y-axis mirror image. As shown in  FIG. 10 , DMA addresses are needed to write data from the end of a (top) horizontal line towards the front. Further, it is necessary to reverse the sequences of words and pixels in a word from an original image within a burst transfer length.  FIG. 11  illustrates a methodology for modifying the sequences of 16 words and pixels in a word within the burst transfer length  16  for Y-axis mirroring. A word sequence W 1 →W 16  must be reversed to W 16 →W 1 , a pixel sequence in a word as well (e.g., a pixel sequence 0, 1, 2, 3 in the first word W 1  should be reversed into 3, 2, 1, 0). 
     FIG. 12  illustrates the effect of the address modifying process on the sequences of words and pixels in a word and a DMA address order in Y-axis mirroring. In  FIG. 12 , the broken lines denote changes of addresses incrementing in sequence due to the burst transfer operation, while the solid lines denote changes of burst transfer start addresses during a data transfer within the unit of burst length. A frame start address  288  (=224+64) is established by adding an address space  64 , corresponding to the burst length  16  (i.e., assigned to 64 pixels corresponding to the burst length  16 ), to an address space  224  corresponding to one (the top) horizontal line (i.e., an address space corresponding to 224 pixels of one horizontal line). A second burst transfer start address is established by subtracting an address space (for 64×2 pixels), corresponding to the sum of the prior burst-16 transfer and a current (second) burst-16 transfer (i.e., a double main burst transfer), from a current address, preliminarily allowing for an address to be increased from the current address due to the main burst transfer before the burst transfer. At this time, if there is a remaining burst transfer, the last burst transfer start address is established by subtracting an address space, corresponding to a sum of the main and remaining burst transfers, from a current address, not subtracting an address space corresponding to the two-times main burst transfer from the current address at the time of terminating the burst transfer. 
   Referring to  FIG. 10 , the first burst transfer start address  160  is established by subtracting the address space  128 , which corresponds to 128 pixels of a double burst length, from the frame start address  288 . Data of 64 pixels are stored in the external frame memory  127  from the address  160  to the address  223  in the burst transfer length  16 . The second burst transfer start address is established as 96 by subtracting the address space  128 , corresponding to 128 pixels (of the previous burst transfer length  16  and the current burst transfer length  16 ) from the current address  224  at the time of terminating the first transfer. 64 pixels transferred by the second burst transfer are stored in the external frame memory  127  from the address  96  to the address  159 . Such a procedure is repeated until completing the data transfer operation for one horizontal line. 
   After the third burst transfer, a further 64 pixels are stored in the external frame memory  127  from the address  32  to the address  95 . At the time of completing the third burst transfer, the current address is 96 and the number of remaining pixels is 32 (smaller than 64 pixels of the burst transfer length  16 ). Thus, the last burst transfer start address is established at 0 by subtracting an address space assigned to a sum of 64 pixels, corresponding to the previous burst transfer length (i.e., the main burst transfer length), and 32 pixels, corresponding to the remaining burst transfer length for the remaining pixels, from the current address  96 . The remaining pixels (32 in number) are transferred in the remaining burst length  8  and then stored in the external frame memory  127  from the addresses  0  to  31 . If the number of the horizontal pixels is divided by the burst transfer length, the last burst transfer start address is set by subtracting an address space, assigned to pixels corresponding to a double burst transfer length, from the current address at the time of terminating the previous burst transfer. 
   In the case of processing an image frame where there is a remainder when dividing the number of the horizontal pixels transferred in the burst transfer length  16 , the burst transfer operation is composed of the main burst transfer modes and the remaining burst transfer mode for the last burst transfer. Therefore, the last burst transfer start address of one horizontal line is established by subtracting an address space, corresponding to a sum of pixels for the main and remaining burst transfer lengths, from a current address at the time of terminating a previous burst transfer. Otherwise, the last burst transfer start address of one horizontal line is established by subtracting an address space, corresponding to pixels of a double main burst transfer length, from a current address, and then adding an address space, corresponding to a difference between pixels of the main and remaining burst transfer lengths, thereto. 
   Similarly, the second line start address is established as 512 by adding the address space  448 , (corresponding to the address space of two horizontal lines), from the current address  32  (an address space corresponding to the number of pixels of the remaining burst length) at the time of termination of the transfer process for one horizontal line, and then adding the address space  32 , (space assigned to pixels corresponding to a difference between the last two burst transfer lengths, i.e., a difference between the main burst length  16  and the remaining burst length  8 ), thereto. If the number of horizontal pixels is divisible by the burst transfer length, (which means the last two burst transfer lengths are the same), the line start address may be set by adding an address space, (corresponding to the space of two horizontal lines), to a current address at the time of terminating a process for one horizontal line. Such a procedure is repeated until the transfer process for one image frame is completed. 
   XY-Axes Mirroring Process for XY-Axes Mirror Mode 
     FIG. 13  illustrates an address modification during an image transform (mirroring on X/Y-axes) to correct for a X/Y-axes mirror image. As shown in  FIG. 13 , mirroring an image on XY-axes requires a sequence of DMA addresses for writing data from the end to the front of each horizontal line, and from the last (bottom) line up to the top line in an image frame. Further, it needs to reverse the sequences of words and pixels in a word in the unit of the burst transfer length. 
     FIG. 14  illustrates an address modifying procedure for establishing the sequences of words and of pixels in a word, and the DMA address arrangement for XY-axes mirroring of an image. In  FIG. 14 , the broken lines denote address modifications incrementing in sequence due to burst transfers, while the solid lines denote modifications of burst transfer start addresses during transfers in the unit of burst length. This XY-axes mirroring process establishes a burst transfer start address similar to the Y-axis mirroring process in that a frame start address begins from the last (bottom) line of a frame and a line start address changes in the upward direction upon every completion of a transfer process for each line. 
   Referring to  FIGS. 13 and 14 , a frame start address is established as  2304  by adding the address space  64 , (corresponding to 64 pixels with the burst length  16 ), to the whole address space  2240  of one image frame. Burst transfer start addresses are set by the same manner as in the Y-axis mirroring process. Thus, the first burst transfer is set to  2176  by subtracting the address space  128 , (corresponding to a double main burst transfer length), from the frame start address  2304 . Then, 64 pixels (in the unit of the burst length  16 ) are stored in the external frame memory  127  from the address  2176  to the address  2239 . As described above in relation to the Y-axis mirroring mode, if the number of the last remaining pixels is smaller then the burst length  16  (i.e., if there is a remaining burst transfer), the last burst transfer start address is established by subtracting an address space, (corresponding to a sum of pixels of the main and remaining burst transfer lengths), from a current address at the time of completing the previous burst transfer. 
   A line start address is established by adding an address space, (corresponding to a difference between the main burst transfer length  16  and the remaining burst transfer length  8 , i.e., a difference between the last two burst transfer lengths), from a current address at the time of completing a process for one horizontal line. If the number of horizontal pixels is divisible by the burst transfer length, the difference between the last two burst transfer lengths will be 0. 
     FIG. 15  ( 15 A+ 15 B) is a flow chart illustrating the method of operation of the address generator  211   a  (or  211   b ). Starting at the idle state IDLE, next the decision step  1501  determines whether there is an enabled frame start signal. If the frame start signal is enabled, a frame start signal is established in accordance with the X-axis mirror image mode, the Y-axis mirror image mode, the XY-axes mirror image mode, or the normal mode, and afterwards the state returns to the idle state IDLE. 
   In the step  1501 , unless the frame start signal is enabled (i.e., data is being transferred), step  1505  is performed to determine that a current process reached the end of line in the X-axis mirror mode. If the step  1505  results in a positive determination Y (i.e., if a current process is terminated for one horizontal line in the X-axis mirror mode), step  1507  is performed wherein a new line start address is established by subtracting an address space, (corresponding to two horizontal lines), from a current address at the time of termination (TAdd&lt;=TAdd−LineWidth×2), and then it returns to the idle state IDLE. If the decision step  1505  results in a negative determination N (i.e., not the end of line or not the X-axis mirror mode), step  1509  is performed wherein to determine whether a current process is on the end of line in the Y-axis mirror mode. If step  1509  results in a positive determination Y (i.e., if a current process is terminated for one horizontal line in the Y-axis mirror mode), step  1511  is performed wherein a new line start address is established by adding an address space, (corresponding to pixels of the double burst transfer length), to a current address at the time of termination, and adding an address space, (corresponding to a difference between pixels of the main and remaining burst transfer lengths), thereto (TAdd&lt;=TAdd+LineWidth×2+MainBurstLength×4−RemainedBurstLength×4), and then it returns to the idle state IDLE. 
   If the decision step  1509  results in a negative determination N (i.e., not the end of line nor the Y-axis mirror mode), step  1513  is performed wherein it is determined whether a current process is on the end of line in the XY-axes mirror mode. If the decision step  1513  results in a positive determination Y (i.e., if a current process is terminated for one horizontal line in the XY-axes mirror mode), step  1515  is performed wherein a new line start address is established by adding an address space, (corresponding to a difference between pixels of the main and remaining burst transfer lengths), to a current address at time of terminating a process for one horizontal line (TAdd&lt;=TAdd+MainBurstLength×4−RemainedBurstLength×4), and then it returns to the idle state IDLE. 
   If the decision step  1513  results in a negative determination N (i.e., not the end of line nor the XY-axes image mode), decision step  1517  is performed wherein it is determined whether a current process is the normal mode of the X-axis mirror mode. If the decision step  1517  results in a positive determination Y (i.e., if a current process is the normal mode or the X-axis mirror mode), decision step  1519  is performed wherein it is determined whether the DMA-finite state machine is in a Transfer state. If the decision step  1519  results in a positive determination Y, (which means a data transfer is carried out in the unit of word), an address is incremented by one word in step  1541  (TAdd&lt;=TAdd+4) and then it returns to the idle state IDLE. If the decision step  1519  results in negative determination N, (which means there is no data transfer), step  1539  is performed so that it returns to the idle state IDLE without changing an address (TAdd&lt;=TAdd). 
   If the decision step  1517  results in a negative determination (i.e., not the normal mode nor the XY-axes image mode), decision step  1521  is performed wherein it is determined whether a current process is either one of the Y-axis mirror mode or the XY-axes mirror mode. If the decision step  1521  results in a positive determination Y (i.e., if a current process is the Y-axis mirror mode or the XY-axes mirror mode), step  1523  is performed wherein it is determined whether the DMA-finite state machine is in the Main Burst transfer mode. If the decision step  1523  results in a positive determination Y, a burst transfer start address is established by subtracting an address space, (corresponding to pixels of a double burst transfer length), from a current address (TAdd&lt;=TAdd−2×BurstLength×4) and then it returns to the idle state IDLE. 
   If the decision step  1523  results in a negative determination N (i.e., not in the main burst transfer mode), step  1529  is performed wherein it is determined whether the DMA-finite state machine is in the Remaining Burst transfer mode. If the decision step  1529  results in a positive determination Y (i.e., the last burst transfer for one horizontal line in the Y-axis mirror mode or the XY-axes mirror mode), a burst transfer start address of on horizontal line is established by subtracting an address space, (corresponding to pixels of the main and remaining burst transfer lengths), from a current address (TAdd&lt;=TAdd−MainBurstLength×4−RemainedBurstLength×4) and then it returns to the idle state IDLE. 
   If the decision step  1529  results in a negative determination N, step  1533  is performed wherein it is determined whether the DMA-finite state machine is in a Transfer state. If the decision step  1533  results in a positive determination Y, (which means a data transfer is carried out in the unit of word), an address is incremented by one word in step  1535  (TAdd&lt;=TAdd+4) and then it returns to the idle state IDLE. If the decision step  1533  results in a negative determination N, (which means there is no data transfer), it returns to the idle state IDLE without changing an address (TAdd&lt;=TAdd). 
     FIG. 16  is a detailed block diagram of the data selector  1600  (e.g., corresponding to  213   a  or  213   b  shown in  FIG. 2 ). The data selector  1600  modifies the sequences of words and pixels in a word, of pixel data supplied from the internal buffer memory  1609  (e.g., corresponding to  207   a  or  207   b  shown in  FIG. 2 ), in compliance with a selected mirror image mode. The internal buffer memory  1609  is designed to be capable of storing image data in correspondence with the burst transfer. The internal buffer memory  1600  may be constructed, for example, of thirty-two (32) flipflops the number thirty-two corresponding to twice the burst transfer length  16 . The data selector  1600  includes a plurality of multiplexers that include sixteen pixel-sequence modifying multiplexers  1601 _ 1  through  1601 _ 16  corresponding to the burst transfer length  16 , and a word-sequence modifying multiplexer  1603 . Each of the pixel-sequence modifying multiplexers  1601 _ 1  through  1601 _ 16  multiplexes a word correspondingly stored in the internal buffer memory  1609  and a derived word having a reverse pixel sequence therein. In other words, each pixel-sequence modifying multiplexer outputs a word with a corresponding four pixel data stored in the reversed pixel sequence. For instance, if the multiplexer  1601 _ 1  outputs a word W 1  (having four pixels in the sequence of 3, 2, 1, and 0), and a word W 1 ′ (having four pixels in the reverse sequence of 0, 1, 2, and 3). The word-sequence modifying multiplexer  1603  multiplexes the sixteen outputs provided from the sixteen pixel-sequence modifying multiplexers  1601 . 
   In the XY-axes mirror mode or the Y-axis mirror mode (i.e., when a mode selection signal Flip_mode is logically high), the reversed sequence of 4 pixels constituting a sequence modified word (e.g., W 1 ′) is output from each pixel-sequence modifying multiplexer. On the other hand, in the X-axis mirror mode or the normal mode (i.e., when a mode selection signal Flip_mode is logically low), each word constituting pixels stored in the internal buffer memory  1609  is output from the each pixel-sequence modifying multiplexer without change of the pixel sequence thereof. 
   The word-sequence modifying multiplexer  1603  varies the output sequences of words supplied from the 16 pixel-sequence modifying multiplexers  1601 _ 1  through  1601 _ 16 . In detail, the word-sequence modifying multiplexer  1603  outputs pixel data arranged in the same sequence as pixel data stored in the internal buffer memory  1609  or in the reverse sequence, in response to an output of the data selection signal Data_select of counter  1605 . The counter  1605  carries out a counting operation in the range from 0 to L−1 (here, L means the burst transfer length, e.g., 16). The initial value of the counter  1605  is set by a counter-initializing multiplexer  1607 . The counter-initializing multiplexer  1607  has input values ranged from 0 to L−1 (e.g., 15), an output of which is selected by the mode selection signal. When the mode selection signal Flip_mode is logically high, (i.e., in the XY-axes mirror mode or the Y-axis mirror mode), the counter-initializing multiplexer  1607  outputs L−1 (e.g., 15) to establish the initial value of the counter  1605  at L−1 (15). Thereafter, the counter  1605  performs a decrementing counting operation by decrementing from L−1 to 0 (e.g., from 15 to 0, in the burst transfer length  16 ), which provides the data selection signal Data Select for the word-sequence modifying multiplexer  1603 . For example, when the counter  1605  outputs  15 , the word-sequence modifying multiplexer  1603  selects and outputs W 16  among the 16 words W 1  through W 16 . When the counter  1605  outputs  14 , the word-sequence modifying multiplexer  1603  selects and outputs W 15  among the 16 words W 1  through W 16  . . . . When the counter  1605  outputs  1 , the word-sequence modifying multiplexer  1603  selects and outputs W 2  among the 16 words W 1  through W 16 . When the counter  1605  outputs 0, the word-sequence modifying multiplexer  1603  selects and outputs W 1  among the 16 words W 1  through W 16 . As a result, the sequence of the output words is arranged in W 16 , W 15 , W 14 , W 13 , . . . , W 2 , and W 1 , in order, which is the reverse from the sequence (W 1 , W 2 , W 3 , . . . , W 15 , and W 16 , in order) stored in the internal buffer memory  1609 . On the other side, in the normal mode, or in the X-axis mirror mode, the mode selection signal Flip_mode into multiplexer  1607  goes to logic low to set the initial value of the counter  1605  at 0. Thus, the counter increments its counting values, from 0 to 15, and provides the count values to the word-sequence modifying multiplexer  1603 . As a result, the word-sequence modifying multiplexer  1603  outputs words in the sequence of W 1 , W 2 , W 3 , . . . , W 15 , and W 16 , which is the same order as stored in the internal buffer memory  1609 . 
   Consequently, when the mode selection signal Flip_mode is logically high (in the XY-axes mirror mode or the Y-axis mirror mode), the sequence of pixels in a word are reversed, as well as the sequence of words. 
     FIG. 17  illustrates timings of DMA address modification and the sequential order thereof. Referring to  FIG. 17 , responding to a falling edge of a frame start signal VSYNC, frame and line start addresses are set by the address generator  211   a  (or  211   b ). All commands set by the specific-functional register are enabled with validity at the falling edges of the frame start signal VSYNC. After establishing the frame and line start addresses, a line transfer start signal HREF is enabled (e.g., logic High). After the line transfer start signal HREF is active (e.g., logic High), a burst transfer start address is generated by the above described method before a burst transfer. By counting the number of burst transfers performed, a line end signal EOL informing the end of one horizontal line is generated and the line transfer start signal HREF becomes inactive (e.g., logic Low). 
   While the aforementioned description is related to a codec DMA unit (i.e.,  119   a  of  FIG. 2 ), the preview DMA unit (i.e.,  119   b  of  FIG. 2 ) can also be implemented with the same structure and manner of operation as described above. But, while the codec DMA unit is configured such that a word is composed of 4 pixels (because one pixel is one byte), the preview DMA unit is configured with an RGB format of 16 bits or 24 bits.  FIG. 18  illustrates such RGB data types to be processed in the camera module. In this case, different from the codec DMA unit, when the RGB format is constructed of 16 bits, a word is composed of two sixteen-bit pixels (each pixel is constituted of 5-bit R, 6-bit G, and 5-bit B). When the RGB format is constructed of 24 bits, a word is composed of one pixel (R, G, and B, each of 8 bits). When the RGB format is constructed of 24 bits, there is no variation in the sequence of pixels in a word in the XY-axes mirror mode or the Y-axis mirror mode. 
   Although the present invention has been described in connection with the embodiment of the present invention illustrated in the accompanying drawings, it is not limited thereto. It will be apparent to those skilled in the art that various substitutions, modifications and changes may be made thereto without departing from the scope and spirit of the invention. 
   According to the present invention stated above, it is possible to reduce the size of a digital camera module by performing image mirror functions with a DMA unit, implementing a high-speed and low-power image transforming system. 
   The present invention may, however, be embodied in different forms and should not be construed as limited to the exemplary embodiments set forth herein. While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the present invention as defined by the following claims.