Abstract:
An apparatus and method for regenerating S/PDIF data is disclosed. The apparatus includes a buffer for buffering sample words of the data units; a decision unit for receiving control words of the data units and outputting a selected control word according to a current control word of a current data unit and a previous control word of a previous data unit; and a transmitter for generating the bitstream of the first digital interconnect format according to the sample words of the data units and the selected control words outputted from the decision unit.

Description:
BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   The invention relates to an apparatus for generating a bitstream, and more particularly, to an apparatus for generating a bitstream utilizing a decision unit and a method thereof. 
   2. Description of the Prior Art 
   Sony/Philips Digital Interface Format (S/PDIF), also known as IEC 958 type II, is a data format for carrying pulse code modulated (PCM) digital audio signals between devices and stereo components. It is most commonly used in CD and DVD players. S/PDIF data utilizes bi-phase mark or ‘Manchester’ coding, which is DC free, self-clocking and capable of working with a changing sampling rate. 
   Please refer to  FIG. 1 .  FIG. 1  is a diagram of a format of S/PDIF data according to the prior art. The data is divided into two sub-frames corresponding to a left and a right channel respectively. Each sub-frame consists of 32 bits. S/PDIF can be described as comprising sample words, i.e. data; and control words, which are the preamble and the status bits. The first 4 bits of the sub-frame (bits  0  to  3 ) are the preamble, used for synchronization. There are 3 different preamble/sync-patterns B, M, and W utilized in the S/PDIF format. Preamble B marks a word containing data for channel A (left) at the start of a block. Preamble M marks a word with data for channel A that is not at the start of a block. Preamble W marks a word containing data for channel B (right, for stereo). 
   Bits  4  to  28  are the audio sample. Bits that are not used are defined to be zero in S/PDIF. Four status bits (bits  28  to  31 ) accompany each sub-frame. Bit  28  (V) is the validity flag, which indicates whether the data received is suitable for conversion to an analog signal. Bit  29  is the user check. Bit  30  is the channel status. Bit  31  is the parity bit (P), which is meant for error correction at the destination, by ensuring the number of ‘1’s and ‘0’s&#39; are even. The validity flag, user bit (U) and channel status (C) are collected to form validity, user and channel status blocks. S/PDIF data is transmitted in blocks of 192 frames, where the preamble B is used to denote the start of a block, i.e. frame  1 . 
   Conventional apparatus for regenerating S/PDIF data extract a sample word and a control word of the data and send them to a FIFO buffer, which is clocked by a pixel clock and an audio clock. The sample word and control word are then sent to a transmitter (data format converter), which reconstructs the data, captures the channel status, and carries out a parity check. 
   In the related art, however, the audio clock sometimes is not transmitted directly to the receiver for decoding the data, but is obtained from the other related clock information as a ratio of one clock to the other, and can therefore have related noise. If noise exists in the audio stream it will cause some ‘0’s&#39; to be erroneously converted to ‘1’s&#39; and vice versa. This means the audio clock cannot be properly locked to the data, causing the data to be distorted, or even preventing the system from playing the data. 
   SUMMARY OF THE INVENTION 
   It is therefore an objective of the present invention to provide an apparatus and a method for generating a bitstream, to solve the above-mentioned problem. 
   Briefly described, an apparatus for generating a bitstream of a first digital interconnect format according to incoming digital data corresponding to a second digital interconnect format is disclosed. The incoming digital data comprise a plurality of data units each having at least a sample word and a control word. The apparatus comprises a buffer for buffering sample words of the data units; a decision unit for receiving control words of the data units and outputting a selected control word according to a current control word of a current data unit and a previous control word of a previous data unit; and a transmitter for generating the bitstream of the first digital interconnect format according to the sample words of the data units and the selected control words outputted from the decision unit. 
   In addition, a method for generating a bitstream of a first digital interconnect format according to incoming digital data corresponding to a second digital interconnect format is disclosed. The incoming digital data comprise a plurality of data units each having at least a sample word and a control word. The method comprises: buffering sample words of the data units; receiving and storing a previous control word into a storage unit; receiving a current control word of the data unit and selectively outputting one of the previous control word and the current control word; determining whether the previous control word in the storage unit is replaced by the current control word according to the at least one previous control word and the current control word; and generating a bitstream of the first digital interconnect format according to the outputted sample words of the data units and the selected control words. 
   These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  is a diagram of a frame of S/PDIF data according to the prior art. 
       FIG. 2  is a diagram of an apparatus for generating S/PDIF data according to an embodiment of the present invention. 
   

   DETAILED DESCRIPTION 
   Please note that the following description is merely one embodiment of the invention and is not a limitation of the invention. Please refer to  FIG. 2 .  FIG. 2  is a diagram of an apparatus  100  for generating S/PDIF data according to an embodiment of the present invention. The process can be carried out in an HDMI interface, which negates the need for converting from digital data to audio and then back to digital again. In other words, the apparatus  100  is implemented in the HDMI interface circuitry. It is well known that the HDMI interface allows video and audio data to be transmitted together. A FIFO  20  clocked by a pixel clock CLK buffers sample words of S/PDIF data. Control words of the S/PDIF data, comprising aforementioned validity flags, user status, and channel status are sent to three decision units respectively. Please note that the validity flag and user data are transmitted in 1-bit blocks, but the channel status is transmitted as a 192-bit block. Although 384 sub-frames will be transmitted in a block and each sub-frame contains one channel status bit, the channel status bit is mostly equal for each pair of sub-frames so only 192 bits of channel status data is transmitted. Similarly, only 1 bit of validity flag and user data respectively will be transmitted in a frame. The skilled person can easily understand operations of other decision units applying to validity flag and user data after reading the following description related to operation of the channel status decision unit  90 . For simplicity, only the channel status decision unit  90  is shown in  FIG. 2 , and the invention will herein be detailed with reference to the channel status decision unit  90  only. 
   In this embodiment, the channel status decision unit  90  comprises a comparator  30 , a temporary storage unit  40 , a channel status multiplexer (MUX)  50 , and a delay circuit  60 . The comparator  30  receives a current 192-bit channel status block of data and compares it with a previous 192-bit channel status block, which has been stored in the temporary storage unit  40 . As mentioned before, noise in the preamble can cause 0&#39;s to be changed to 1&#39;s and vice versa, distorting the data. If the current and the previous channel status blocks are the same, therefore, it can be seen that noise does not exist in this block. If the current 192-bit channel status block and the previous 192-bit channel status block are the same, the comparator  30  will output a logic “1”. If the current 192-bit channel status block and the previous 192-bit channel status block are different, the comparator  30  will output a logic “0”. 
   This logic is then input to the channel status MUX  50 . The operations of (respectively) the validity flag decision unit and user status decision unit are largely the same as the channel status decision unit, except that the validity flag decision unit and user status decision unit both contain temporary storage units having a 1-bit memory, as both the validity flag and user status control words are transmitted in blocks of 1 bit. 
   The channel status MUX  50  has a first data input port  51  for receiving a current 192-bit channel status, a second data input port  52  for receiving a previous 192-bit channel status output, and a control port  53  for receiving the comparison result (logic “0” or logic “1”) from the comparator  30 . A data output port  54  outputs the selected 192-bit channel status. If the multiplexer receives a logic “1” (meaning the current channel status and the previous channel status are the same) it will output the current 192-bit channel status block; if the multiplexer receives a logic “0” (meaning the current channel status and the previous channel status are different) it will output the previous 192-bit channel status output. The outputted 192-bit channel status block is sent to a 192 cycle counter  70 , and the delay circuit  60 . The delay circuit  60  stores the 192-bit channel status and inputs it back to the second data input port  52  as the previous 192-bit channel output. In an event where no previous channel status exists, i.e. the first 192-channel status block in the bitstream, it will be taken to be correct and outputted. The second 192-bit channel status block of the stream of data is then compared with the first 192-bit channel status block. 
   Please note that the components of the channel status decision unit  90  described herein are merely one embodiment and are not a limitation of the present invention. It is clear that the decision unit  90  can be implemented by other components that have the same function of comparing a current control word with a previous control word and selectively outputting one of the two. In addition, the outputted logic levels are defined according to the overall circuit design. For example, in another embodiment, the comparator  30  outputs a logic “0” as the current 192-bit channel status block and the previous 192-bit channel status block are the same, and outputs a logic “1” as the current 192-bit channel status block and the previous 192-bit channel status block are different. Then, the characteristic of the MUX  50  is redefined such that the data output port  54  outputs the current 192-bit channel status when receiving a logic “0” and the previous 192-bit channel status block when receiving a logic “1”. The same objective of selectively outputting the current 192-bit channel status block and the previous 192-bit channel status block referring to the comparison result is obtained. 
   The operation of the validity flag decision unit and the user status decision unit are the same as that described above. The apparatus  100  transmits blocks of data continuously, so once all control words of a block of data (192 frames) have been outputted by the respective multiplexers, the control words will be input to the 192 cycle counter  70 . The 192 cycle counter  70  generates a 192-bit index containing the preamble(s), which is utilized for ordering the control words, according to transmission order of the data units. This process of generating a preamble prevents the S/PDIF data from being coupled with a preamble containing noise. The generated bitstream is further combined with the sample words buffered in the FIFO  20 . 
   Finally, the re-combined bitstream is sent to a S/PDIF transmitter (converter)  80 , where a parity check is performed. As mentioned earlier, the parity check is used to ensure that the number of ‘0’s&#39; and the number of ‘1’s&#39; are both even numbers. This is resolved by the parity check bit converting a ‘0’ into a ‘1’, or vice versa, to solve this problem. The S/PDIF data can then be played correctly. 
   The selective outputting of the current control words or the previous control words ensures that blocks of data corrupted with noise can be discarded. If a current control word differs from a previous control word this indicates that the status of a current block is not good. A preamble coupled with noise can be discarded and a new preamble free from noise can be generated by the utilization of the cycle counter. 
   It is an advantage of the present invention that noise can be efficiently eliminated from a bitstream of S/PDIF data, by the utilization of the decision units. The comparison of previous control words with current control words and the selective outputting of the current or the previous control words enables a system to play audio data encoded according to a S/PDIF standard without the problem of associated noise. 
   Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.