Abstract:
A method is proposed for utilizing a memory of a de-interleaving unit comprising the steps of determining a size of the memory according to a maximal symbol number of a data frame, a delay value, an adjustable parameter, and a half of a total symbol number of the data frame; accessing the memory according to a write memory address determined by a first algorithm during data buffering; and accessing the memory according to a read memory address determined by a second algorithm during data retrieving. The conventional access method has the drawback of ineffective use of the memory space of the de-interleaving unit, while the proposed method uses only about half the memory space for implementation.

Description:
CROSS-REFERENCE TO RELATED APPLICATION  
       [0001]    This application is a continuation-in-part (CIP) application of the application “METHOD OF ACCESSING MEMORY OF DE-INTERLEAVING UNIT” with the application Ser. No. 10/173,234 filed Jun. 14, 2002, and this application claims the priority benefit of Taiwan application serial no. 90120811, filed Aug. 24, 2001. 
     
    
     
       BACKGROUND OF THE INVENTION  
         [0002]    1. Field of the Invention  
           [0003]    This invention relates to a method for utilizing a memory of a de-interleaving unit in an optical disc drive device.  
           [0004]    2. Description of Related Art  
           [0005]    To increase the reliability of read operation on a CD-ROM (Compact-Disc Read-Only-Memory) drive, data are interleaved before they are recorded on a CD-ROM disc. Therefore, the read operation in the CD-ROM drive should include a de-interleaving procedure. FIG. 1 is a schematic diagram showing a series of functional units involved in a read operation in the CD-ROM drive, which includes an EFM demodulation unit  102 , a C1 decoding unit  104 , a de-interleaving unit  106 , and a C2 decoding unit  108 . The EFM demodulation unit  102  is capable of demodulating data on the disc into a stream of 8-bit data. After the C1 decoding unit  104  receives a frame of 32 bytes (8-bit) data from the EFM demodulation unit  102 , it decodes them into a frame of 28 bytes data and then transfers these decoded data to the de-interleaving unit  106  for de-interleaving. The de-interleaving unit  106  then transfers the de-interleaved data to the C2 decoding unit  108 . During the de-interleaving procedure, each frame includes 28 bytes of data.  
           [0006]    The de-interleaving unit  106  includes a memory unit for the de-interleaving process. FIG. 2 shows the memory allocation for the memory of the de-interleaving unit  106 . Referring to FIG. 2 together with FIG. 1, the address range is from 0 to 3051. The 28 8-bit (byte) data in the first frame from the C1 decoding unit  104  are respectively denoted by (f1, 0), (f1, 1), . . . , (f1, 27). When the C1 decoding unit  104  transfers the first frame to the de-interleaving unit  106 , data in the first frame are written into the memory of the de-interleaving unit  106  in such a manner according to the conventional access method as following. The first data (f0, 0) is written into Row 108 Column 0 (i.e., the address 3024); the second data (f0, 1) is written into Row 104 Column 1 (i.e., the address 2913); and so forth, the last data (f0, 27) is written into Row 0 Column 26 (i.e., the address 27).  
           [0007]    After the first frame is written completely, the second frame is then written into the de-interleaving unit  106 . In the following, the 28 8-bit data in the second frame from the C1 decoding unit  104  are respectively denoted by (f1, 0), (f1, 1)., (f1, 27). When the C1 decoding unit  104  transfers the second frame to the de-interleaving unit  106 , data in the second frame are written into the memory of the de-interleaving unit  106  in such a manner according to conventional access method that the first data (f1, 0) is written into Row 109 Column 0 (i.e., the address 0); the second data (f1, 1) is written into Row 105 Column 1 (i.e., the address 2914); and so forth the last data (f1, 27) is written into the Row 1 Column 26 (i.e., the address 55). The similar procedure is repeated for each of the subsequent frames.  
           [0008]    When a certain row in the memory of the de-interleaving unit  106  is fully rewritten by the decoded data, the de-interleaving unit  106  will then output all the data stored in that row to the C2 decoding unit  108 . For example, when Row 108 is fully rewritten, the de-interleaving unit  106  will output all the data stored in Row 108 to the C2 decoding unit  108 . In other words, when address 3051 (Row 108 Column 27) is rewritten by (f108, 27), all data stored in Row 108, including (f0, 0), (f4, 1), (f8, 2), . . . , and (f108, 27) will be transferred to the C2 decoding unit  108 .  
           [0009]    [0009]FIG. 9B is a schematic diagram showing the method for determining a size of a memory of a de-interleaving unit based on the prior art. Since the data buffering and the data retrieving procedures are frame by frame progressed individually, and the data retrieving procedures always starts on till the data buffering procedure completed, thus the required size of the memory of the de-interleaving will be [(2B−1)*D]*2B, wherein the [(2B−1)*D] is the maximal delay taken for preserving the size of the memory for the buffered data to be retrieved. For example, letting B=14, D=4, N=1, and length of each symbol of a data frame is 1 byte, the size of the memory of the de-interleaving unit will be (27*4)*28=3024 bytes.  
           [0010]    One drawback to the forgoing memory access scheme, however, is that the memory of the de-interleaving unit  106  is ineffectively utilized. In other words, some memory locations reserved are unused during the de-interleaving process since the memory always be allocated by a maximum.  
         SUMMARY OF THE INVENTION  
         [0011]    This invention providing a method for utilizing a memory of a de-interleaving unit, the steps of the method comprising: determining a size of the memory according to a maximal symbol number of a data frame, a delay value, an adjustable parameter, and a half of a total symbol number of the data frame; accessing the memory according to a write memory access index determined by a first algorithm during data buffering; and accessing the memory according to a read memory access index determined by a second algorithm during data retrieving.  
           [0012]    The step of determining a size of the memory according to a maximal symbol number of a data frame, a delay value, an adjustable parameter, and a half of a total symbol number of the data frame further comprising: multiplying the maximal symbol number of a data frame by said delay value for obtaining a first temporary result; adding the first temporary result and a two times of the adjustable parameter up for obtaining a second temporary result, wherein said adjustable parameter is less than or equal to half of said first temporary result; and multiplying the second temporary result by the half of said total symbol number of the data frame for obtaining the size of the memory.  
           [0013]    This invention utilizing several parameters for write into and read from the memory of the de-interleaving unit. A Write Memory Address WMA of each symbol for locating a decoded data in the memory of the de-interlacing unit based on a Write Frame Index WFIDX and a Control Word Count CWCNT for data buffering, whereas a Read Memory Address RMA of each symbol for retrieving an encoded data in the memory of the de-interlacing unit based on a Read Frame Index RFIDX and a Control Word Count CWCNT for data retrieving.  
           [0014]    This invention performing a write memory address calculating procedure for determining a value of the write memory address of each symbol during the write frame index is less than the total symbol number of the data frame and the code word count is less than a second temporary result, whereas the invention performing a read memory address calculating procedure for determining a value of the read memory address of each symbol when the read frame index is less than the total symbol number of the data frame and the code word count is less than the second temporary result.  
           [0015]    This invention also providing a method for determining a size of a memory of a de-interleaving unit, the steps of the method comprising: multiplying a maximal symbol number of a data frame by a delay value for obtaining a first temporary result; adding the first temporary result and a two times of an adjustable parameter up for obtaining a second temporary result, wherein said adjustable parameter is less than or equal to half of said first temporary result; and multiplying the second temporary result by a half of a total symbol number of the data frame for obtaining the size of the memory of the de-interleaving unit.  
           [0016]    The mentioned method according to the invention reduced the required memory space in the de-interleaving unit by half as compared to the prior art for performing a de-interleaving process and is therefore more cost-effective than the prior art. 
       
    
    
     BRIEF DESCRIPTION OF DRAWINGS  
       [0017]    The invention can be more fully understood by reading the following detailed description of the preferred embodiments, with reference made to the accompanying drawings, wherein:  
         [0018]    [0018]FIG. 1 (PRIOR ART) is a schematic diagram showing a series of functional units involved in a read operation in a CD-ROM drive;  
         [0019]    [0019]FIG. 2 (PRIOR ART) is a schematic diagram showing a memory allocation for the memory of de-interleaving unit according to the conventional access method;  
         [0020]    [0020]FIG. 3 is a schematic diagram showing the memory of the de-interleaving unit according to the invention;  
         [0021]    [0021]FIG. 4 is a schematic diagram showing the address mapping for each frame during data buffering;  
         [0022]    [0022]FIG. 5 is a schematic diagram showing the address mapping for each frame during data retrieving;  
         [0023]    [0023]FIG. 6 is a flowchart showing the write memory address calculating procedure of the invention for data buffering;  
         [0024]    [0024]FIG. 7 is a flowchart showing the read memory address calculating procedure of the invention for data retrieving;  
         [0025]    [0025]FIG. 8 is a flowchart showing the method for utilizing a memory of a de-interleaving unit according to the invention;  
         [0026]    [0026]FIG. 9A is a flowchart showing the showing the method for determining a size of a memory of a de-interleaving unit according to the invention;  
         [0027]    [0027]FIG. 9B (PRIOR ART) is a schematic diagram showing the method for determining a size of a memory of a de-interleaving unit; and  
         [0028]    [0028]FIG. 9C is a schematic diagram showing the method for determining a size of a memory of a de-interleaving unit.  
     
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS  
       [0029]    The invention is designed for use to effectively use the memory of the de-interleaving unit for performing a de-interleaving process, so that the required memory can be reduced as compared to the prior art to make the memory utilization more cost-effective than the prior art.  
         [0030]    Since the proposed method determining a size of the memory by multiplying a maximal symbol number of a data frame (denoted by “2B−1”) by a delay value (denote by “D”) for obtaining a first temporary result (denoted by “(2B−1)*D”); adding the first temporary result and a two times of adjustable parameter (denoted by “2N”) up for obtaining a second temporary result (denote by “(2B−1)*D+2N”), wherein the adjustable parameter is less than or equal to half of the first temporary result; and multiplying the second temporary result by a half of the total symbol number of the data frame (denoted by “B”) for obtaining the size of the memory. FIG. 3 is a schematic diagram showing the memory of the de-interleaving unit according to the invention. Letting N is equal to 1 and D is equal to 4, and the memory size of the de-interleaving unit.  106  will be [(2B−1)*D+2N]*B=[27*4+2]*14=1540 bytes, whereas the needed memory size of the prior art will be [(2B—1)*D*2B]=(27*4*28)=3024 bytes, and it&#39;s almost half of that required by the prior art. It&#39;s noted that the N ranges from 1 to half of the first temporary result. That is the N is less than or equal to (2B−1)*D/2. For example, the half of the first temporary result will be 54 as a maximum for the CD-ROM drive according to the specification of the corresponding standard. Moreover, as shown in FIG. 3, the address range is from 0 to 1623 since the second temporary result is 116. In the following, the 28 8-bit data in the first frame from the C1 decoding unit  104  are respectively denoted by (f0, 0), (f0, 1), . . . , (f0, 27). When the C1 decoding unit  104  transfers the first frame to the de-interleaving unit  106 , the data contained in the first frame are written into the memory of the de-interleaving unit  106  according to the method of the invention in such a manner that the first data (f0, 0) is written into Row 0 Column 0 (i.e., the address 0); the second data (f0, 1) is written into Row 9 Column 4 (i.e., the address 116); and so forth until the last data (f0, 27) is written into Row 0 Column 4 (i.e., the address 4). After the first frame is completely written into the memory, the second frame from the C1 decoding unit  104  is then written into the de-interleaving unit  106 . The 28 8-bit data in the second frame from the C1 decoding unit  104  are respectively denoted by (f1, 0), (f1, 1), . . . , (f1, 27). When the C1 decoding unit  104  transfers the second frame to the de-interleaving unit  106 , data in the second frame are written into the memory of the de-interleaving unit  106  according to the method of the invention in such a manner that the first data (f1, 0) is written into Row 0 Column 1 (i.e., the address 1); the second data (f1, 1) is written into Row 9 Column 5 (i.e., the address 117); and so forth until the last data (f1, 27) is written into Row 0 Column 5 (i.e., the address 5). The similar procedure is repeated for each of the subsequent frames.  
         [0031]    [0031]FIG. 4 is a schematic diagram showing the address mapping for each frame during data buffering. In FIG. 4, the term “WR” represents the sequence of the frames to be de-interleaved. That is, WR  0  represents the first frame, and WR  1  represents the second frame and so on. The terms C0˜C27 represent the symbol number of the data frame. The write memory address for each symbol of the first data frame (WR  0 ) is respectively 0, 116, 232, . . . 124 and 4 determined by a first algorithm during data buffering which comprising a write memory address calculating procedure, and the write address for other data frames were shown in FIG. 4.  
         [0032]    After the write operation for some incoming frames is completed, the de-interleaving unit  106  then reads data stored in the memory according to the method of the invention and outputs these data to the C2 decoding unit  108 . FIG. 5 is a schematic diagram showing the address mapping for each frame during data retrieving and determined by a second algorithm during data retrieving which comprising a read memory address calculating procedure. It is to be noted that a certain frame can be read only after the last data in this frame is already rewritten (or updated). For example, as shown in FIG. 5, the data in Row 0 (which includes data in the address 8, 128, 248, . . . 4) can be read only after all data in Row 0 have been rewritten (i.e., the last address (address 4) in this frame is rewritten).  
         [0033]    The write memory address calculating procedure of the method of the invention due to the data buffering based on the parameter WMA for indicating the write memory address in the memory of the de-interleaving unit  106  of each symbol of a data frame; WFIDX for indicating the index of the currently-received frame from the C1 decoding unit  104  is currently being written into the de-interleaving unit  106 ; and CWCNT for indicating the symbol number of the currently-received frame is being written into the e-interleaving unit  106 . FIG. 6 is a flowchart showing the write memory address calculating procedure of the invention for data buffering. As shown in FIG. 6, the step  602  and  604  indicating the write frame index and the code word count setting the initial value to 0 and 1 respectively, and the write memory address stores the copy of the write frame index. Besides, based on the step  636  to  640 , the write memory address calculating procedure lasting during the write frame index is less than the total symbol number of said data frame (e.g.,  28 ) and said code word count is less than said second temporary result (e.g.,  110 ). As to the step  606  to  630 , for example, letting B is 14, D is 4, and N is 1, step  610  shows that WMA will be set to (previous WMA+110) when WFIDX&lt;57 as step  606  and CWCNT&lt;14 as step  608 ; step  614  shows that WMA will be set to (previous WMA+53) when WFIDX&lt;57 as step  606  and CWCNT=14 as step  608 ; step  616  shows that WMA will be set to (previous WMA-114) when WFIDX&lt;57 as step  606  and CWCNT&gt;14 as step  608 ; step  620  shows that WMA will be set to address (previous WMA+110) when WFIDX  57  as step  606  and CWCNT&lt;14 as step  608 ; step  624  shows that WMA will be set to (previous WMA-57) when WFIDX  57  as step  606  and CWCNT=14 as step  608 ; step  624  shows that WMA will be set to (previous WMA-4) when WFIDX  57  as step  606  and CWCNT=[(WFIDX+4−1)/4] as step  608 ; and step  630  shows that WMA will be set to (previous WMA-114) when WFIDX  57  as step  606  and CWCNT≠[WFIDX+4−1)/4] as step  608 .  
         [0034]    After a certain incoming frame is completely written, the de-interleaving unit  106  then reads the data stored in the memory according to the method of the invention and outputs these data to the C2 decoding unit  108 . The read memory address calculating procedure of the method of the invention due to the data retrieving based on the parameter RMA for indicating the read memory address in the memory of the de-interleaving unit  106  of each symbol of a data frame to be accessed; RFIDX for indicating the index of the frame is currently being read from the de-interleaving unit  106 ; and CWCNT for indicating the symbol number of the data frame currently being read. FIG. 7 is a flowchart showing the read memory address calculating procedure of the invention for data retrieving. As shown in FIG. 7, the step  702  and  704  indicating the read frame index and the code word count setting the initial value to 0 and 1 respectively, and the read memory address stores the copy of the read frame index. Besides, based on the step  748  to  752 , the read memory address calculating procedure lasting during the read frame index is less than the total symbol number of said data frame (e.g.,  28 ) and said code word count is less than said second temporary result (e.g.,  110 ). As to the step  706  to  740 , for example, letting B is 14, D is 4, and N is 1, step  710  shows that RMA will be set to (previous RMA+114) when RFIDX&lt;1 as step  706  and CWCNT&lt;14 as step  708 ; step  714  shows that RMA will be set to (previous RMA+57) when RFIDX&lt;1 as step  706  and CWCNT=14 as step  708 ; step  716  shows that RMA will be set to (previous RMA-110) when RFIDX&lt;1 as step  706  and CWCNT&gt;14 as step  708 ; step  722  shows that RMA will be set to (previous RMA+114) when 58&gt;RFIDX≧N as step  706  and step  718 , and CWCNT&lt;14 as step  720 ; step  726  shows that RMA will be set to (previous RMA-53) when 58&gt;RFIDX≧N as step  706  and step  718 , and CWCNT=14 as step  724 ; step  728  shows that RMA will be set to (previous RMA- 110 ) when 58&gt;RFIDX≧N as step  706  and step  718 , and CWCNT&gt;14; step  734  shows that RMA will be set to (previous RMA+4) when RFIDX&gt;58 as step  718 , and CWCNT&lt;14 and CWCNT=[29−(RFIDX+6)/4] as step  732 ; step  736  shows that RMA will be set to (previous RMA+114) when RFIDX&gt;58 as step  718 , and CWCNT&lt;14 and CWCNT≠[29-(RFIDX+6)/4] as step  732 ; step  740  shows that RMA will be set to (previous RMA+57) when RFIDX&gt;58 as step  718 , and CWCNT=14 as step  738 ; and step  740  shows that RMA will be set to (previous RMA+110) when RFIDX&gt;58 as step  718 , and CWCNT&gt;14 as step  738 .  
         [0035]    [0035]FIG. 8 is a flowchart showing the method for utilizing a memory of a de-interleaving unit according to the invention. At first, the method determining a size of the memory according to a maximal symbol number of a data frame, a delay value, an adjustable parameter, and a half of a total symbol number of said data frame in step  810 . Second, accessing the memory according to a write memory address determined by a first algorithm during data buffering in step  830 ; and accessing said memory according to a read memory address determined by a second algorithm during data retrieving in step  850 . Moreover, step  810  further comprising multiplying the maximal symbol number of a data frame (denoted by “2B−1”) by the delay value (denoted by “D”) for obtaining a first temporary result (denoted by “(2B−1)*D”); adding the first temporary result and a two times of said adjustable parameter (denoted by “2N”) up for obtaining a second temporary result (denoted by “(2B−1)*D+2N”), wherein said adjustable parameter is less than or equal to half of said first temporary result; and multiplying the second temporary result by the half of the total symbol number of the data frame (denoted by “B”) for obtaining the size of the memory (denoted by “[(2B−1)*D+2N]*B”). Besides, step  830  further comprising providing and setting an initial value for the write memory address WMA, a write frame index WFIDX, and a code word count CWCNT for writing data to the memory; and performing a write memory address calculating procedure for determining a value of the memory write address of each symbol during the write frame index is less than the total symbol number of the data frame (e.g.,  28 ) and the code word count is less than the second temporary result (e.g.,  110 ). Furthermore, step  850  further comprising providing and setting an initial value for a read memory address RMA, a read frame index RFIDX, and a code word count CWCNT for reading data to the memory of the de-interleaving unit; and performing a read memory address calculating procedure for determining a value of the read memory address of each symbol when the read frame index is less than the total symbol number of the data frame (e.g.,  28 ) and the code word count is less than the second temporary result (e.g.,  110 ).  
         [0036]    [0036]FIG. 9A is a flowchart showing the showing the method for determining a size of a memory of a de-interleaving unit according to the invention. The method multiplying the maximal symbol number of a data frame (denoted by “2B−1”) by the delay value (denoted by “D”) for obtaining a first temporary result (denoted by “(2B−1)*D”) in step  910 ; adding the first temporary result and a two times of said adjustable parameter (denoted by “2N”) up for obtaining a second temporary result (denoted by “(2B−1)*D+2N”) in step  920 , wherein said adjustable parameter is less than or equal to half of the first temporary result (denoted by “(2B−1)*D/2”) and ranges from 1 to 54 for a CD-ROM drive; and multiplying the second temporary result by the half of the total symbol number of the data frame (denoted by “B”) for obtaining the size of the memory (denoted by “[(2B−1)*D+2N]*B”). For example, letting B=14, D=4, N=1, and length of each symbol of a data frame is 1 byte, the size of the memory of the de-interleaving unit will be (27* 4+2)*14=1540 bytes. It&#39;s noted that the adjustable parameter N is provided for adapting the accessing timing of the architecture of the memory of the de-interleaving unit for preventing the data override. Furthermore, FIG. 9C is a schematic diagram showing the method for determining a size of a memory of a de-interleaving unit. Since the invention utilizing the pipeline architecture of the memory of the de-interlacing and corresponding data buffering algorithm and data retrieving algorithm, the required size of the memory of the de-interleaving based on present invention will be [(2B−1)*D+2N]*B since the right part of the area can be reduced and viewed as the bottom part of the area. For example, letting B=14, D=4, N=1, and length of each symbol of a data frame is 1 byte, the size of the memory of the de-interleaving unit will be (27*4+2)*14=1540 bytes.  
         [0037]    The invention can reduce the required memory space in the de-interleaving unit, substantially by half, for performing the de-interleaving process and is therefore more cost-effective than the prior art.  
         [0038]    The invention has been described using exemplary preferred embodiments. However, it is to be understood that the scope of the invention is not limited to the disclosed embodiments. On the contrary, it is intended to cover various modifications and similar arrangements. The scope of the claims, therefore, should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.