The present application relates to the production of digital side tone. Digital side tone is known in the art as sound received in a communication device mouthpiece and reintroduced at a lower decibel level in an earpiece or speaker of the same communication device. Digital side tone is a form of feedback.
Efficient and appropriate processing of digital side tone in communication devices is an important issue. If digital side tone is not provided, a user of a communication device will not hear his voice in the earpiece during communications. This gives the user the sensation that the device is not working. To the contrary, too much digital side tone can create listening discomfort which may cause the user to unnecessarily lower his voice. Conventional communication devices typically process digital side tone internally in a main digital signal processor (DSP). However, a digital side tone implementation in a secondary processing unit external to the DSP, such as an Analog Interface Codec (AIC) including an analog-to-digital converter (ADC) and digital-to-analog converter (DAC), is a more intelligent system design. Such an implementation would minimize the delay in production of the digital side tone, as an AIC is earlier in a processing path when compared with a main DSP. Digital side tone implementation in an AIC further reduces the use of processing resources in the main DSP and relieves the main DSP of performing the digital side tone task.
Embodiments described herein improve upon prior art digital side tone processing by performing digital side tone processing in a secondary processing unit external to a primary processing unit, the secondary processing unit including an ADC, a DAC, a sample buffer, and a mixer. Accordingly, a first embodiment described herein provides a method for producing digital side tone that includes reading “X” samples output from a digital decimator at a rate equal to an output sampling rate of a first interpolator, storing the “X” read samples in a sample buffer, and outputting the “X” read samples as “X” digital side tone samples to the DAC. The method further comprises decimating, in a first decimator, “k·X” samples stored in the sample buffer by a factor “k”, and outputting “X” yielded samples to a second decimator. In the second decimator, the “X” yielded samples are decimated, and a single sample is output to the primary processing unit at a rate equal to the sampling frequency of samples input to the DAC. In the primary processing unit, “k−1” samples are discarded for every “k” samples read by the primary processing unit. In the sample buffer, the “k·X” samples stored in the sample buffer are continually shifted by a factor “X” thereby accommodating additional sets of “X” samples read from the digital decimator per frame. In the first interpolator, a single sample received from the primary processing unit is interpolated by a factor “X” and “X” interpolated samples are output. In the DAC, the “X” interpolated samples are mixed with the “X” digital side tone samples, and “X” side tone mixed samples are output. In the method, the ADC is configured with the digital decimator, the first decimator and the second decimator, and the DAC is configured with the first interpolator. Further, the sampling frequency of samples input to the DAC are an integer multiple “k” of a sampling frequency of samples read from the ADC and “X” is the decimator factor of the second decimator
A second embodiment described herein provides a communication device capable of producing digital side tone that comprises a transceiver, a primary processing unit cooperatively operable with the transceiver and configured for performing communication functions, and a secondary processing unit cooperatively operable with the primary processing unit. The secondary processing unit includes an ADC configured with a first decimator and a second decimator, a DAC configured with a first interpolator, a sample buffer of length “k·X”, and a mixer. In the secondary processing unit, a sampling frequency of samples input to the DAC is an integer multiple “k” of a sampling frequency of samples read from the ADC, and “X” is the decimator factor of the second decimator. The ADC is further configured with a digital decimator that outputs “X” samples at a rate equal to an output sampling rate of the first interpolator. The “X” read samples are stored in the sample buffer, and are also are output as digital side tone samples to the DAC. The ADC is configured so that the first decimator decimates “k·X” samples stored in the sample buffer by a factor “k” and outputs “X” yielded samples to the second decimator. The ADC is configured so that the second decimator decimates the “X” yielded samples and outputs to the primary processing unit a single sample at a rate equal to the sampling frequency of samples input to the DAC. The primary processing unit is configured to discard “k−1” samples for every “k” samples it reads from the second decimator. The sample buffer is configured to continually shift the “k·X” samples stored in the sample buffer by a factor “X” thereby accommodating additional sets of “X” samples read from the digital decimator per frame. The DAC is configured so that the first interpolator interpolates a single sample received from the primary processing unit by a factor “X” and outputs “X” interpolated samples. Finally, the mixer is configured to mix the “X” interpolated samples with the “X” digital side tone samples and to output the results as “X” side tone mixed samples.
A third embodiment described herein describes a computer-readable storage medium comprising instructions for execution by a processor. The instructions include a processor-implemented method for providing digital side tone in a communication device with a primary processing unit and a secondary processing unit. The instructions implement reading “X” samples output from a digital decimator at a rate equal to an output sampling rate of a first interpolator, storing the “X” read samples in a sample buffer, and outputting the “X” read samples as “X” digital side tone samples to a digital-to-analog converter (DAC). The instructions further implement decimating, in a first decimator, “k·X” samples stored in the sample buffer by a factor “k”, and outputting “X” yielded samples to a second decimator. The instructions next implement decimating, in the second decimator, the “X” yielded samples, and outputting to the primary processing unit a single sample at a rate equal to the sampling frequency of samples input to the DAC. The instructions additionally implement discarding “k”−1 samples for every “k” samples read by the primary processing unit, and continually shifting the “k·X” samples stored in the sample buffer by a factor “X” thereby accommodating additional sets of “X” samples read from the digital decimator per frame. The instructions further implement interpolating, in a first interpolator, a single sample received from the primary processing unit by a factor “X” and outputting “X” interpolated samples. The instructions lastly implement mixing, in a mixer, the “X” interpolated samples with the “X” digital side tone samples, and outputting the results as “X” side tone mixed samples. In the computer-implemented method, the secondary processing unit includes an ADC configured with the digital decimator, the first decimator and the second decimator, the DAC configured with the first interpolator, the sample buffer of length “k·X”, and the mixer. Additionally, the sampling frequency of samples input to the DAC is an integer multiple “k” of a sampling frequency of samples read from the ADC and “X” is the decimator factor of the second decimator.
The accompanying figures where like reference numerals refer to identical or functionally similar elements and which together with the detailed description below are incorporated in and form part of the specification, serve to further illustrate various exemplary embodiments and to explain various principles and advantages in accordance with the embodiments.
As further discussed herein below, various inventive principles and combinations thereof are advantageously employed to more efficiently process digital side tone. The instant disclosure (including the entirety of the drawings and the entirety of this specification, including the abstract) is provided to further explain in an enabling fashion the best modes of performing one or more embodiments. The disclosure is further offered to enhance an understanding and appreciation for the novel principles and advantages associated with said embodiments. The disclosure is not intended to be limiting in any manner, and the invention is defined solely by the appended claims including any amendments made during the pendency of this application and all equivalents of those claims as issued.
It is further understood that the use of relational terms such as first and second, and the like, if any, are used solely to distinguish one from another entity, item, or action without necessarily requiring or implying any actual such relationship or order between such entities, items or actions. It is noted that some embodiments may include a plurality of processes or steps, which can be performed in any order, unless expressly and necessarily limited to a particular order; i.e., processes or steps that are not so limited may be performed in any order.
Much of the inventive functionality and many of the inventive principles when implemented, are best supported with or in software or integrated circuits (ICs), such as a digital signal processor and software therefore, and/or application specific ICs. It is expected that one of ordinary skill, notwithstanding possibly significant effort and many design choices motivated by, for example, available time, current technology, and economic considerations, when guided by the concepts and principles disclosed herein will be readily capable of generating such software instructions or ICs with minimal experimentation. Therefore, in the interest of brevity and minimization of any risk of obscuring principles and concepts, further discussion of such software and ICs, if any, will be limited to the essentials with respect to the principles and concepts used by the exemplary embodiments.
As mentioned above, the present disclosure concerns providing digital side tone in communication devices. Such communication devices include digital wireless communications devices, such as cellular phones or two-way radios and the like associated with a communication system such as an Enterprise Network, a cellular Radio Access Network, or the like. Such communication systems may further provide services such as voice and data communications services. Additionally, the present disclosure concerns digital landline communication devices operating over the publicly switched telephone network (PSTN).
In order to more clearly understand the novel and inventive features of the exemplary embodiments described herein, a brief discussion of a related ADC and DAC in a secondary processing unit operable in a communication device is helpful. Referring then to
Referring next to
It should be noted that the ADC engine 507 and the DAC engine 607 operate on the principle that a multiple stage decimation or interpolation achieves better results. However, limited instruction space is a constraint on the number of possible stages such that the ADC engine 507 is commonly configured with two decimators and the DAC engine 607 is similarly configured with two interpolators. As understood in the art, the number of samples processed per frame by both the ADC engine 507 and DAC engine 607 is a function of the values set as the decimating and interpolating factors in the respective decimators and interpolators in the respective engines.
In view of the operation of the ADC 501 and DAC 601, and as discussed in detail below, the various inventive principles and combinations thereof are advantageously employed to reduce delay in producing digital side tone and to additionally free the main DSP of digital side tone processing. As a result, the DSP is available to perform additional processing functions. Referring then to
It should be understood that the first delta-sigma modulator 103, the digital decimator 105, the first decimator 111, and the second decimator 113 are components that resemble the ADC 501. The first decimator 111 and the second decimator 113 further resemble the decimator components of the ADC engine 507. It should additionally be understood that the first interpolator 115, the second interpolator 121, the third interpolator 123, and the second delta-sigma modulator 125 are components that resemble the DAC 601. The first interpolator 115 and the second interpolator 121 further resemble the interpolator components of the DAC engine 607. The components 103-113 (excluding the sample buffer 107 and LPF 108) are hereinafter referred to in this discussion of
A digital side tone implementation in the secondary processing unit 101 is achieved by mixing the digital side tone with the main tone at some particular point in the processing path. It is desirable that the digital side tone response should be different than the main tone output from a DSP in a primary processing unit. Thus the best place to sum the digital side tone is at a point immediately after the first interpolator 115. Thus as is seen in
A key concept in mixing the digital side tone with the main tone is that wherever in the processing path the mixing occurs, the sampling frequency of the digital side tone and the sampling frequency of the main tone must be equal. Additionally the number of digital side tone samples and the number of main tone samples must be equal. In a nutshell, there must be synchronization in the sampling frequencies and number of samples of the digital side tone and the main tone.
When the exemplary DAC sampling rate is an integer multiple “k” greater than the exemplary ADC sampling rate, there is conventionally no way to achieve synchronization in sampling rate and number of samples so as to add the digital side tone with the main tone. Thus the novel method, device, and computer-readable medium disclosed and claimed herein are designed for an environment such as that illustrated in
In order to achieve a synchronization between the exemplary ADC and the exemplary DAC with respect to sampling frequency and number of samples, the exemplary ADC sampling rate must be effectively be made to equal the exemplary DAC sampling rate. This essentially means that the exemplary ADC is programmed to run “k” times faster than expected. That is to say, the exemplary ADC is clocked to output samples “k” times faster than under normal operating conditions. The effect is that the exemplary ADC outputs a sample to the primary processing unit at a 48 kHz rate, such that the exemplary ADC yields “k−1” redundant samples to a primary processing unit. Therefore the primary processing unit is programmed so as to discard “k−1” samples for every “k” samples read.
In the secondary processing unit 101, the values of the decimators, interpolators, the OSRs, and the like are programmed so as to achieve the synchronicity described above given the exemplary ADC sampling rate and the exemplary DAC sampling rate. Specifically, the decimation factor of the first decimator 111 is set to the value of “k,” which in this example is 3 as is illustrated by a downward arrow with the number 3 adjacent to the arrow in the middle of the circle that represents the first decimator 111. The value of the decimation factor of the second decimator 113 is then set which is this example is 5, as is illustrated by a downward arrow with the number 5 adjacent to the arrow in the middle of the square that represents the second decimator 113. This second decimation value is referred to hereinafter as “X”. In summary, the first decimator 111 is set to “k” and the second decimator is set to “X”. The second decimator in this example is also seen to be low latency filter (LLF), but this is not universally true of all secondary processing units in accord with the inventive principles described herein.
The interpolation factor of the first interpolator 115 is also set to “X”. The assignments to remaining variables in the secondary processing unit 101 are as follows: the OSR of the first delta-sigma modulator 103 (AOSR) is set to 65; the decimation factor of the digital decimator is set to 13; the interpolation factor of the second interpolator 121 is set to 2; the interpolation factor of the third interpolator is set to 13; and the OSR of the second delta-sigma modulator 125 (DOSR) is set to 130.
Turning then to the details of the second processing unit 101, the first delta-sigma modulator 103 outputs samples at 3.12 MHz. Thus, 65 samples per frame are output at 3.12 MHz. The digital decimator 105 then decimates the audio samples by 13, resulting in 5 samples being output from the digital decimator 105 at a sampling rate of 240 kHz (3.12 MHz÷13). The 5 output samples are stored in Block C of the sample buffer 107 and are simultaneously output through LPF 108 to the mixer 117.
It should be noted that the number of samples output by the digital decimator 105 is equal to “X”, and the AOSR is set such that “X” samples are output from the digital decimator 105. The total size of the sample buffer 107 is “k·X” samples, there being “k” blocks of “X” samples. Thus in the example of
Block C always receives the “X” samples output from the digital decimator 105 in the current frame, and the “k·X” samples are shifted by “X” samples (that is, by a factor of “X”) every frame. Thus in the example of
Referring then to
In the next frame, indicated by ADC Output O6, samples s15, s16, s17, s18, and s19, as well as the remaining 10 samples (s10-s14 and s20-s24) on the row identified by ADC Output O5, (s10-s14 and s20-s24) are shifted by 5 samples. Thus samples s15, s16, s17, s18, and s19 are shifted to Block A, samples s20, s21, s22, s23, and s24 are shifted to Block B, and samples s10, s11, s12, s13, and s14 are shifted out of the sample buffer 201 entirely. Samples s25, s26, s27, s28, and s29 are output by the digital decimator 105 in the current frame and are stored in Block C. Samples s25, s26, s27, s28, and s29 undergo the same type of shifting described above, and this type of shifting of the “k·X” samples stored in the sample buffer 201 is continual. In
Returning now to the description of
As discussed above, the exemplary ADC is clocked to output samples “k” times faster than under normal operating conditions. In
The primary processing unit reads samples from the sample buffer 201 at modulo 3. That is to say, because 2 of every 3 samples are discarded, the read samples occur at every third output frame. Thus the samples are read from ADC Outputs (O1, O4, O7, etc), or from ADC Outputs (O2, O5, etc), or from ADC Outputs (O3, O6, etc). This is demonstrated in
Turning to the exemplary DAC, a single sample is read from the primary processing unit at a sampling frequency of 48 kHz. The single sample is upsampled by the first interpolator 115 by a factor “X” which in this instance is 5. Thus 5 samples (1·5) are output by the first interpolator 115 at a sampling frequency of 240 kHz (48 kHz·5) to the mixer 117. The mixer 117 thus mixes the 5 digital side tone samples output from Block C of the sample buffer 107 with 5 main tone samples output from the first interpolator 115. Indeed, the sampling frequency of both the digital side tone samples and the main tone samples is 240 kHz. Synchronization in both number of samples and sampling frequency is achieved.
Next, 5 mixed side tone samples are output from the mixer 117 to a BP shaping filter 119 for signal shaping at a sampling frequency of 240 kHz. The shaped mixed side tone samples are then upsampled by a second interpolator 121 by a factor 2. Thus 10 samples (5·2) are output from the second interpolator at a sampling frequency of 480 kHz (240 kHz·2). The third interpolator 123 upsamples the 10 mixed side tone samples by a factor 13, thereby outputting 130 mixed side tone samples (10·13) at a sampling frequency of 6.24 MHz (480 kHz·13). Theses final 130 samples are read by the second delta-sigma modulator 125 and output to the earpiece or communication device speaker. A successful implementation of digital side tone in the secondary processing unit 101 occurs.
Referring now to
Referring now to
The primary processing unit memory 431 may be coupled to the primary processing unit 421 and may comprise a read-only memory (ROM), a random-access memory (RAM), a programmable ROM (PROM), and/or an electrically erasable read-only memory (EEPROM). The primary processing unit memory 431 may include multiple memory locations for storing, among other things, an operating system, data and variables 435 for computer programs executed by the primary processing unit 421. The computer programs cause the primary processing unit 421 to operate in connection with various communication functions 435. The communication functions 435 cause the primary processing unit 421 to undertake communication activity with other communication units and the users of the other communications units. The communication activity referred to above is known in the art and is not detailed herein. The primary processing unit memory 431 additionally includes a miscellaneous database 437 for storing other data not specifically mentioned herein.
The secondary processing unit 413 includes ADC modulator 415, digital decimator 417, sample buffer 418, ADC engine 419, DAC engine 425, interpolator 427, and DAC modulator 429. The components of the secondary processing unit 413 are intended to operate so as to implement a method for providing digital side tone similar to that described in detail above. Additionally, the components of the secondary processing unit 413 are intended to resemble the components of the secondary processing unit 101 illustrated in
The sample buffer 418 in
The secondary processing unit memory 439 may be coupled to the secondary processing unit 413 and may comprise a read-only memory (ROM), a random-access memory (RAM), a programmable ROM (PROM), and/or an electrically erasable read-only memory (EEPROM). The secondary processing unit memory 431 may include multiple memory locations for storing, among other things, filter coefficients and variables 441 for computer programs executed by the secondary processing unit 421. The computer programs cause the primary processing unit 421 to operate in connection with perform digital side tone functions 443. The perform digital side tone functions 443 cause the secondary processing unit 421 to implement a method for providing digital side tone similar to that described in detail above.
The word “buffer” is used herein means an area of memory used for storing data. It may or may not have other attributes such as an input pointer (where new data will be written into the buffer), and output pointer (where the next item will be read from) and/or a count of the space used or free.
The word “decimation” is used herein to mean a technique for reducing the number of samples in a discrete-time signal. The element which implements this technique is referred to herein as a “decimator.” Decimation may be a two-step process that includes a low-pass anti-aliasing filter and downsampling.
The word “frame” is used herein to mean a group or set of samples acquired and processed periodically over a discrete time period.
The word “interpolation” is used herein to mean a technique for increasing the number of samples in a discrete-time signal. The element which implements this technique is referred to herein as an “interpolator.”
The word “mixer” is used herein to mean a linear/nonlinear or time-invarying/time-varying circuit or device that accepts as its input two signals of the same frequency and presents at its output a mixture of the signals at the same frequency.
The word “reading” is used herein to mean obtaining, acquiring, sampling, and/or processing via known techniques in signal processing.
The phrase “sampling rate” is used herein to mean the rate at which samples of an analog signal are taken in order to be converted into digital form. This phrase may be interchangeable with the phrase “sampling frequency,” as is understood in the art.
As mentioned above, this disclosure is intended to explain how to fashion and use various embodiments rather than to limit the true, intended, and fair scope and spirit of said embodiments. The invention is defined solely by the appended claims, as they may be amended during the pendency of this application for patent, and all equivalents thereof. The foregoing description is not intended to be exhaustive or to limit the invention to the precise form disclosed. Modifications or variations are possible in light of the above teachings. The embodiments were chosen and described to provide the best illustration of the principles of the invention and its practical application, and to enable one of ordinary skill in the art to utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. All such modifications and variations are within the scope of the invention as determined by the appended claims, as may be amended during the pendency of this application for patent, and all equivalents thereof, when interpreted in accordance with the breadth to which they are fairly, legally, and equitably entitled.