This application claims the benefit of Korean Patent Application No. 10-2008-0090006, filed Sep. 11, 2008 in the Korean Intellectual Property Office, the disclosure of which is incorporated herein by reference.
1. Field of the Invention
Aspects of the invention relate to a Viterbi decoder, and more particularly, to an apparatus and method of generating an optimum reference level of a Viterbi decoder for an input signal.
2. Description of the Related Art
A Viterbi decoder is used to detect a binary signal from an input signal. For example, the Viterbi decoder is used in an optical disk drive to convert a radio frequency (RF) signal read from a disc into a digital signal. The Viterbi decoder detects the binary signal using a difference between the input signal and the reference level of the Viterbi decoder. Thus, in order to ensure high efficiency, the Viterbi decoder uses an optimum reference level for a condition for generating the input signal. If the optimum reference level is not used for the condition for generating the input signal, errors may be included in the binary signal output from the Viterbi decoder.
Aspects of the invention provide an apparatus and method of adaptably generating an optimum reference level of a Viterbi decoder for an input signal.
According to an aspect of the invention, there is provided an apparatus for generating a reference level of a Viterbi decoder, the Viterbi decoder receiving an input signal and outputting an output signal according to the reference level, the apparatus comprising: a first reference level detection unit to detect a first reference level using a first delayed input signal and the output signal of the Viterbi decoder, the delayed input signal being delayed relative to the input signal; a second reference level detection unit to detect second reference levels using the output signal of the Viterbi decoder and a second delayed input signal and a third delayed input signal input one clock cycle after and before the first delayed input signal ; and a control unit to select one of the first reference level and the second reference level as the reference level of the Viterbi decoder using a result of a comparison between a first square level error for the first reference level calculated in the first reference level detection unit and a second square level errors for the second reference levels calculated in the second reference level detection unit.
According an aspect of the invention, the first reference level detection unit obtains the first square level error by squaring a difference between the first reference level and the input signal of the Viterbi decoder, and the second level detection unit obtains the second square level errors by squaring the differences between each of the second reference levels and the input signal of the Viterbi decoder, wherein the control unit selects the reference level to be the one of the first and second reference levels having a smallest of the first and second square level errors.
According to an aspect of the invention, the second reference level detection unit comprises: a first reference level detector to detect one of the second reference levels using the second delayed input signal input one clock cycle after the first delayed input signal; and a second reference level detector to detect the other one of the second reference levels using the third delayed input signal input one clock cycle before the first delayed input signal, and the control unit selects as the reference level the one of the first and second reference levels having the smallest of the first and the second square level errors respectively calculated in the first reference level detection unit and the second reference level detection unit .
According to an aspect of the invention, the first reference level detection unit, the first reference level detector, and the second reference level detector respectively each comprise: a delaying unit to delay the input signal of the Viterbi decoder; a buffer to store the output signal of the Viterbi decoder by a predetermined bit and to output the stored signal; a multiplexer selectively transmits the delayed input signal output from the delaying unit according to the output stored signal output from the buffer; an average value detector group comprising a plurality of average value detectors which detects an average value of the selectively transmitted signal through the multiplexer and to output the detected value, the number of the average value detectors corresponding to a number of reference levels, which can be generated; a memory to store at least one of the reference values output from the average value detector group; and a square level error calculator to calculate the square level error using the one of the reference levels stored in the memory and the input signal of the Viterbi decoder, the delaying unit included in the first reference level detector outputs a signal input one clock cycle after the input signal output from the delaying unit included in the first reference level detection unit, and the delaying unit included in the second reference level detector outputs a signal input one clock cycle before after the input signal output from the delaying unit included in the first reference level detection unit, wherein the square level error calculator uses an ideal reference level from among the reference levels stored in the memory.
According to an aspect of the invention, there is provided a method of generating a reference level of a Viterbi decoder, the Viterbi decoder receiving an input signal and outputting an output signal according to the reference level, the method comprising: receiving the input signal and the output signal from the Viterbi decoder; detecting a first reference level of the Viterbi decoder using a first delayed input signal and the received output signal; detecting second reference levels using the output signal from the Viterbi decoder and a second delayed input signal and a third delayed input signal input one clock cycle after and before the first delayed input signal; respectively calculating a first square level error for the first reference level and second square level errors for the second reference levels; and selecting as the reference level for the Viterbi decoder according to a result of a comparison between the calculated first square level error and the second square level errors, wherein the calculating the first square level error comprises squaring a difference between the detected first reference level and the input signal of the Viterbi decoder, and the calculating the second square level error comprises squaring corresponding differences between the second reference levels and the input signal of the Viterbi decoder.
According to an aspect of the invention, wherein in the selecting as the reference level comprises selecting as the reference level the one of the first and second reference levels corresponding to a smallest one of the first and the second square level errors.
According to an aspect of the invention, wherein the detecting of the second reference levels comprises: detecting one of the second reference levels using the second delayed input signal input one clock cycle after the first delayed input signal; and detecting the other one of the second reference levels using the third delayed input signal input one clock cycle before the first delayed input signal, the second square level errors for the second reference levels comprise a square level error for the second delayed input signal and a square level error for the third delayed input signal, and the selecting of the reference level of the Viterbi decoder comprises selecting as the reference level the one of the first and second reference levels corresponding to the smallest one of the first square level error and the second square level errors.
According an aspect of the invention, there is provided an apparatus for generating a reference level of a Viterbi decoder which converts an input signal to an output signal using the reference level, the apparatus comprising: a first reference level detection unit to detect a first reference level using a first input signal and the output signal of the Viterbi decoder, and to calculate a first error using the detected first reference level and the input signal of the Viterbi decoder; a second reference level detection unit to detect a second reference level other than the first reference level using a second input signal and the output signal, and to calculate a second error using the detected second reference level and the input signal of the Viterbi decoder, the second input signal being temporally different from the first input signal; and a control unit to select the first reference level to be the reference level used by the Viterbi decoder where the calculated second error is more than the calculated first error, and to select the second reference level to be the reference level used by the Viterbi decoder where the calculated second error is not more than the calculated first error.
According an aspect of the invention, there is provided a method of generating a reference level of a Viterbi decoder which converts an input signal to an output signal using the reference level, the method comprising: detecting a first reference level using a first input signal and the output signal of the Viterbi decoder; calculating a first error using the detected first reference level and the input signal of the Viterbi decoder; detecting a second reference level other than the first reference level using a second input signal and the output signal, the second input signal being temporally different from the first input signal; calculating a second error using the detected second reference level and the input signal of the Viterbi decoder; selecting the first reference level to be the reference level used by the Viterbi decoder where the calculated second error is more than the calculated first error; and selecting the second reference level to be the reference level used by the Viterbi decoder where the calculated second error is not more than the calculated first error.
Additional aspects and/or advantages of the invention will be set forth in part in the description which follows and, in part, will be obvious from the description, or may be learned by practice of the invention.
These and/or other aspects and advantages of the invention will become apparent and more readily appreciated from the following description of the embodiments, taken in conjunction with the accompanying drawings of which:
Reference will now be made in detail to the present embodiments of the present invention, examples of which are illustrated in the accompanying drawings, wherein like reference numerals refer to the like elements throughout. The embodiments are described below in order to explain the present invention by referring to the figures.
The Viterbi decoder 110 outputs a binary signal of an input signal using a difference between the input signal and the reference level provided from the apparatus 115 for generating a reference level. For example, the Viterbi decoder 110 may be configured to generate a state metric (or a path metric) by obtaining the difference between the input signal and the reference level using a branch metric generator (not illustrated). If the device 100 is applied to an optical disc drive, the input signal may be defined as a radio frequency (RF) signal, such as that obtained from an optical pickup reading an optical recording medium.
The apparatus 115 includes a first reference level detection unit 120, a second reference level detection unit 130, and a control unit 140. The first reference level detection unit 120 detects a first reference level of the Viterbi decoder 110 using a delayed signal for the input signal of the Viterbi decoder 110 and an output signal of the Viterbi decoder 110. Accordingly, the first reference level detection unit 120 includes a first delaying unit 121, a first buffer 122, a first multiplexer 123, a first average value detector group 124, a first memory 125, and a first square level error calculator 126.
When an input signal is received, the first delaying unit 121 outputs a first delayed input signal. The first delayed input signal is the input signal delayed by at least one clock period. While not limited thereto, the clock period corresponds to the number of a pass memory (not illustrated) of an X-axis included in the Viterbi decoder 110. Thus, a delaying period of the first delaying unit 121 may be defined to have a period proportional to the number of taps of the Viterbi decoder 110.
The first buffer 122 stores an output signal of the Viterbi decoder 110 by a predetermined bit, and outputs the stored signal. For example, when the reference level output from the apparatus 115 is the reference level adaptable for a partial response (PR) level 1, 2, 1, the first buffer 122 may store the output signal of the Viterbi decoder 110 by a three-bit and output the stored signal. The first buffer 122 may be formed of a First In First Out (FIFO) buffer, but need not in all aspects of the invention.
The first multiplexer 123 selectively transmits the first delayed input signal output from the first delaying unit 121 according to the signal output from the first buffer 122. For example, when the signal output from the first buffer 122 is “000,” the first multiplexer 123 transmits the first delayed input signal output from the first delaying unit 121 to a first average value detector 124_1. When the signal output from the first buffer 122 is “111,” the first multiplexer 123 transmits the first delayed input signal output from the first delaying unit 121 to an mth average value detector 124—m. When the signal output from the first buffer 122 is three bits as described above, m becomes 8, since the number of the first through mth average value detectors 124_1 through 124—m correspond to the number of the reference level, which may be generated.
The first through mth average value detectors 124_1 through 124—m detect average values of the signal transmitted from the first multiplexer 123. While not required in all aspects, the first through mth average value detectors 124_1 through 124—m may be configured to obtain an average value for a signal input during a predetermined time period or to obtain an average value for a signal input using a low pass filter.
The first memory 125 stores the average values respectively output from the first through mth average value detectors 124_1 through 124—m. Thus, while not required in all aspects, the first memory 125 may store at least a value and the stored value may be defined as a reference level value adaptable to the input signal.
The first square level error calculator 126 calculates square level errors using the input signal of the Viterbi decoder 110 and the reference level values read from first memory 125. The reference level value read from the first memory 125 is an ideal reference level value from among the reference level values stored in the first memory 125. Accordingly, while not required in all aspects, the first square level error calculator 126 further performs a function for detecting the ideal reference level value from among the reference level values read from the first memory 125. That is, as shown, the value output from the first buffer 122 may be used to identify one of the plurality of reference level values read from the first memory 125 as the ideal reference level value. The ideal reference level value is the value for minimizing an error of the binary signal output from the Viterbi decoder 110.
The function for detecting the one ideal reference level value from the plurality of reference level values read from the first memory 125 may be separated from the first square level error calculator 126 in another embodiment. That is, the first square level error calculator 126 may be realized to perform only a square level operation function, and an element for detecting the one ideal reference level value may be disposed between the first square level error calculator 126 and the first memory 125.
The first square level error calculator 126 may obtain a square level error by squaring the difference between the input signal and the ideal reference level value read from the first memory 125, as shown in Equation 1 below.
Square level error=(input signal−reference level)2 Equation 1
In Equation 1, the reference level is the ideal reference level value from the reference level values read from the first memory 125. The first square level error calculator 126 provides the obtained square level error to the control unit 140.
The second reference level detection unit 130 includes a second delaying unit 131, a second buffer 132, a second multiplexer 133, a second average value detector group 134, a second memory 135, and a second square level error calculator 136, as illustrated in
Specifically, when the input signal is received, the second delaying unit 131 firstly outputs a second delayed input signal delayed by a clock period next to the first delayed input signal output from the first delaying unit 121. For example, when the first delayed input signal corresponds to the PR level 1, 2, 1, the second delayed input signal output from the second delaying unit 131 may correspond to the PR level X, 1, 2. Here, X is an unknown value.
The second buffer 132 stores the output signal of the Viterbi decoder 110 by a predetermined bit and outputs the stored signal, as in the first buffer 122. The second multiplexer 133 selectively transmits the second delayed input signal output from the second delaying unit 131 according to the signal output from the second buffer 132, as in the first multiplexer 123. The second average value detector group 134 detects the average value for the input signal and stores the detected value in the second memory 135, as in the first average value detector group 124. Accordingly, while not required in all aspects, the shown second memory 135 stores the reference level value of the input signal delayed by one clock period next to the input signal for the reference level values stored in the first memory 125. The reference level value stored in the second memory 135 may also be defined as the reference level value adaptable for the input signal. The second memory 135 may store at least one reference level value.
The second square level error calculator 136 calculates an ideal reference level value from the input signal of the Viterbi decoder 110 and the reference level values stored in the second memory 135 as in Equation 1 so as to obtain a square level error and provides the obtained square level error to the control unit 140. Accordingly, while not required in all aspects, the second square level error calculator 136 performs a function for detecting the ideal reference level value from the reference level values stored in the second memory 135 by the output signal of the second buffer 132, as in the first square level error calculator 126. In another embodiment, the second square level error calculator 136 may be realized to perform only a square level operation function and an element for detecting the ideal reference level value may be disposed between the second square level error calculator 136 and the second memory 135, as in the first square level error calculator 126.
The control unit 140 compares the first square level error transmitted from the first reference level detection unit 120 and the second square level error transmitted from the second reference level detection unit 130. As a result, if the first square level error is smaller than the second square level error, the reference level values stored in the first memory 125 and the second memory 135 are maintained.
However, if the first square level error is not smaller than the second square level error, the control unit 140 replaces the reference level value stored in the first memory 125 with the reference level value stored in the second memory 135. That is, the reference level value stored in the first memory 125 is updated to the reference level value stored in the second memory 135.
Then, the second reference level detection unit 130 detects the reference level for the signal input before one clock period with respect to the first delayed input signal output from the first delaying unit 121. That is, when the input signal is received, the second delaying unit 131 firstly outputs a third delayed input signal that is an input signal input one clock cycle prior to the first delayed input signal output from the first delaying unit 121 (i.e., one that is not delayed by one clock cycle as in the first delayed input signal). For example, when the first delayed input signal corresponds to the PR level 1, 2, 1, the third delayed input signal output from the second delaying unit 131 may correspond to the PR level 1, 2, X. Here, X is an unknown value.
The second buffer 132 stores the output signal of the Viterbi decoder 110 by a predetermined bit and outputs the stored signal, as in the first buffer 122. The second multiplexer 133 selectively transmits the third delayed input signal output from the second delaying unit 131 according to the signal output from the second buffer 132, as in the first multiplexer 123. The second average value detector group 134 detects the average value for the input signal and stores the detected value in the second memory 135, as in the first average value detector group 124. Accordingly, the second memory 135 may be updated to the reference level value of the third delayed input signal, which corresponds to the input signal input one clock cycle before the input signal used to generate the reference level values stored in the first memory 125.
When the reference level stored in the first memory 125 is updated to the reference level value of the second delayed input signal input after one clock cycle that is previously stored in the second memory 135, the reference level value currently stored in the second memory 135 becomes the reference level of the third delayed input signal input more than two clock cycles prior to the second delayed input signals used to obtain the reference level values currently stored in the first memory 125.
The second square level error calculator 136 calculates the ideal reference level detected from the input signal of the Viterbi decoder 110 and the reference level currently stored in the second memory 135 as in Equation 1 so as to obtain a square level error and provides the obtained square level error to the control unit 140.
The control unit 140 again compares the first error square level error transmitted from the first reference level detection unit 120 and the second square level error transmitted from the second reference level detection unit 130. As a result, if the first square level error is smaller than the second square level error, the control unit 140 controls the first memory 125 so as to generate the reference level value stored in the first memory 125 as the reference level value of the Viterbi decoder 110. Accordingly, the first memory 125 transmits the stored reference level value to the Viterbi decoder 110.
However, as a result, if the first square level error is not smaller than the second square level error, the control unit 140 replaces the reference level value stored in the first memory 125 with the reference level value stored in the second memory 135. If the reference level stored in the first memory 125 is updated to the reference level value detected for the third delayed input signal input prior to one clock cycle before the first delayed input signal, the first square level error is a value that is calculated again using the updated reference value.
Accordingly, the control unit 140 may control the first reference level detection unit 120 and the second reference level detection unit 130 so as to provide the reference level value having a smallest square level error from among the reference level value detected from the second reference level detection unit 130 using the second delayed input signal input posterior to one clock cycle(+1 clock cycle) with respect to the first delayed input signal, the reference level value detected from the second reference level detection unit 130 using the third delayed input signal input prior to one clock cycle (−1 clock cycle) with respect to the first delayed input signal, and the reference level value detected from the first reference level detection unit 120 using the first delayed input signal, as the reference level of the Viterbi decoder 110. Thus, an optimum reference level adaptable for the input signal is provided to the Viterbi decoder 110 and an error generation rate in the binary signal output from the Viterbi decoder 110 may be reduced.
In
Therefore, the Viterbi decoder 210 and the first reference level detection unit 220 included in the device 200 of
The first reference level detector 231 and the second reference level detector 232 included in the second reference level detection unit 230 are configured similar to the second reference level detection unit 130 of
Accordingly, a memory (not illustrated) included in the first reference level detection unit 220 stores the reference level value that is same as the reference level value stored in the first memory 125 of
The control unit 240 controls the first reference level detection unit 220, the first reference level detector 231, and the second reference level detector 232 so as to generate the reference level value corresponding to the smallest square level error from among three square level errors as the reference level of the Viterbi decoder 210.
That is, when the square level error provided from the first reference level detection unit 220 is the smallest, the control unit 240 controls the first reference level detection unit 220 so as to provide the reference level value stored in the first reference level detection unit 220 as the reference level of the Viterbi decoder 210. However, when the square level error provided from the first reference level detector 231 is the smallest, the control unit 240 replaces the reference level value stored in the first reference level detection unit 220 with the reference level value stored in the first reference level detector 231 and controls the first reference level detection unit 220 and the first reference level detector 231 so as to provide the replacement reference level value as the reference level of the Viterbi decoder 210. The replacing of the reference level may be performed by updating the reference level value stored in the memory (not shown) included in the first reference level detection unit 220 to the reference level value stored in the memory included in the first reference level detector 231.
When the square level error provided from the second reference level detector 232 is the smallest, the control unit 240 replaces the reference level value stored in the first reference level detection unit 220 with the reference level value stored in the third memory 237 included in the second reference level detector 232 and controls the first reference level detection unit 220 and the second reference level detector 232 so as to provide the replacement reference level value as the reference level of the Viterbi decoder 210. The replacing of the reference level may be performed by updating the reference level value stored in the memory included in the first reference level detection unit 220 to the reference level value stored in the third memory 237. The memories mentioned in
In
In operation 303, a first square level error for the first reference level and a second square level error for the second reference level are respectively calculated. That is, an ideal reference level value is detected from the plurality of reference level values as described in
As a result of the comparison between the first square level error and the second square level error, when the first square level error is smaller than the second square level error, in operation 304, the second reference level of the Viterbi decoder 110 is detected, in operation 305, using the signal input before one clock cycle with respect to the delay signal and the output signal used in the first reference level.
Then, in operation 306, the first square level error and the second square level error are calculated. After comparing the calculated first square level error and second square level error, when the first square level error is smaller than the second square level error, in operation 307, the first reference level is generated as the reference level of the Viterbi decoder 110, in operation 308.
As a result of the comparison between the first square level error and the second square level error, when the first square level error is larger than the second square level error, in operation 304, the first reference level is replaced with the second reference level, in operation 309. Then, operation 305 is executed so that the signal input before one clock cycle with respect to the delay signal and the output signal used for detecting the first reference level in operation 302 are used and the second reference level of the Viterbi decoder 110 is detected again.
Then, in operation 306, the first square level error and the second square level error are calculated. Here, the first square level error is calculated using the replacement second reference level obtained in operation 309.
When the first square level error is not smaller than the second square level error, in operation 307, the first reference level is replaced with the second reference level. Here, the second reference level is detected using the signal input before one clock cycle with respect to the delay signal used in the first reference level. That is, in the replacing in operation 310, the second reference level detected in operation 305 (the reference level detected using the signal input before one clock cycle with respect to the delay signal used in the first reference level detected in operation 302) has the smallest square level error from among the first reference level detected in operation 302, the second reference level detected in operation 302, and the second reference level detected in operation 305 and is determined as the optimum reference level adaptable for the input signal.
Accordingly, the reference level generated in operation 308 becomes the reference level detected using the signal input before one clock cycle with respect to the delay signal used in the first reference level. Thus, when the method as in
Thus, in operation 401, when an input signal and an output signal of the Viterbi decoder 210 are received, first, second, and third reference levels are detected in operation 402. Detecting of the first, second, and third reference levels may be performed in parallel, as in
In operation 403, first, second, and third square level errors are calculated using the detected first, second, and third reference levels and the delayed input signals used in detecting the first, second, and third reference levels. As a result of the comparison between the calculated first, second, and third square level errors, if the first square level error is the smallest, in operation 404, the first reference level is generated as the reference level of the Viterbi decoder 210, in operation 405.
As a result of the comparison between the calculated first, second, and third square level errors, if the first square level error is not the smallest, the smaller one is detected from among the second square level error and the third square level error, in operation 406. Then, the reference level corresponding to the smaller square level error is replaced with the first reference level, in operation 407, and the first reference level is generated as the reference level of the Viterbi decoder 210, in operation 405.
As in the embodiment of
While not required in all aspects, all or portions of the invention can also be embodied as computer readable codes on a computer readable recording medium. The computer readable recording medium is any data storage device that can store data which can be thereafter read by a computer system. Examples of the computer readable recording medium include read-only memory (ROM), random-access memory (RAM), CD-ROMs, magnetic tapes, floppy disks, and optical data storage devices. In addition, the computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
Although a few embodiments of the present invention have been shown and described, it would be appreciated by those skilled in the art that changes may be made in this embodiment without departing from the principles and spirit of the invention, the scope of which is defined in the claims and their equivalents.
Number | Date | Country | Kind |
---|---|---|---|
10-2008-0090006 | Sep 2008 | KR | national |