Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
OSCILLATOR REGULATION
Document Type and Number:
WIPO Patent Application WO/2022/238463
Kind Code:
A1
Abstract:
Provided is a method for controlling the bias current, IPIERCE, of an oscillator (3). The method includes acquiring (105) or determining (107) a digital representation encoding a bias current. The method also includes carrying out an algorithm (109) to update the digital representation if the oscillation amplitude is measured, by one or more peak detectors (6), to be outside of upper and lower thresholds. Also provided is an apparatus (1) arranged to control the bias current of an oscillator (3) using this method, the apparatus including one or more peak detectors (6) and a current digital to analogue converter (16).

Inventors:
GARVIK HARALD (NO)
STRANDVIK ERLEND (NO)
Application Number:
PCT/EP2022/062746
Publication Date:
November 17, 2022
Filing Date:
May 11, 2022
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NORDIC SEMICONDUCTOR ASA (NO)
International Classes:
H03B5/12; H03B5/36
Foreign References:
US10418941B22019-09-17
US20080122549A12008-05-29
US20170237441A12017-08-17
US20180054163A12018-02-22
US20130002365A12013-01-03
US8729971B22014-05-20
Attorney, Agent or Firm:
DEHNS (GB)
Download PDF:
Claims:
- 25 -

Claims

1. A method for controlling the bias current of an oscillator, the method comprising: a) acquiring a digital representation encoding a bias current; b) monitoring an oscillation amplitude of the oscillator at a node using one or more peak detectors; c) using the peak detector(s) to carry out a comparison of the oscillation amplitude at the node with an upper amplitude threshold and a lower amplitude threshold, d) if the comparison determines that said oscillation amplitude is greater than said upper amplitude threshold, updating said digital representation to encode a reduced bias current and storing said updated digital representation; e) if the comparison determines that said oscillation amplitude is lower than said lower amplitude threshold updating said digital representation to encode an increased bias current and storing said updated digital representation; and f) repeating steps b) to e) using said updated digital representation as said digital representation.

2. The method of claim 1 , comprising entering a sleep state wherein the peak detector(s) is/are disabled before repeating steps b) to e).

3. The method of claim 2, comprising entering the sleep state without updating the digital representation if the oscillation amplitude is between the upper amplitude threshold and the lower amplitude threshold.

4. The method of claim 3, comprising maintaining the sleep state for a predetermined time, wherein the oscillator comprises a crystal having an inductance and an equivalent series resistance and said predetermined time is within ±20% of the inductance divided by the equivalent series resistance of the crystal. - 26 -

5. The method of any preceding claim, comprising updating the digital representation by incrementing or decrementing said digital representation by a first constant.

6. The method of claim 5, comprising, after updating the digital representation by incrementing or decrementing said digital representation by said first constant, subsequently supplying a bias current to the oscillator encoded by a temporary digital representation comprising the updated digital representation additionally shifted up or shifted down by a second constant, before supplying the bias current encoded by the updated digital representation.

7. The method of claim 5, comprising, after updating the digital representation by incrementing or decrementing said digital representation by said first constant, subsequently: determining a value of a temporary digital representation comprising the updated digital representation additionally shifted up or shifted down by a second constant; and if the value of the temporary digital representation is between a maximum or minimum value, supplying a bias current to the oscillator encoded by the temporary digital representation; or if the value of the temporary digital representation is above a maximum value, supplying a bias current encoded by a temporary digital representation having said maximum value; or if the value of the temporary digital representation is below a minimum value, supplying a bias current encoded by a temporary digital representation having said minimum value; before supplying the bias current encoded by the updated digital representation.

8. The method of claim 6 or 7, comprising changing the temporary digital representation to the updated digital representation after determining, using the one or more peak detector(s), that the oscillation amplitude is within said upper amplitude threshold and said lower amplitude threshold. - 27 -

9. The method of any preceding claim, comprising first carrying out an initial search algorithm to determine a digital representation encoding a bias current which gives an oscillation amplitude within said upper amplitude threshold and said lower amplitude threshold, the initial search algorithm comprising: g) acquiring an initial digital representation encoding a bias current, and setting an active bit as a most significant bit thereof, the most significant bit having a first value; h) monitoring the oscillation amplitude at the node using the one or more peak detectors; i) using the peak detector(s) to carry out a comparison of the oscillation amplitude at the node with the upper amplitude threshold and the lower amplitude threshold at the one or more peak detectors; j) if the comparison determines that said oscillation amplitude is greater than said upper threshold, updating said initial digital representation by inverting the active bit to a second value to encode a reduced bias current and, if said active bit is not a least significant bit, setting a next most significant bit to said first value and setting said next most significant bit as the active bit; k) if the comparison determines that said oscillation amplitude is lower than said lower threshold updating said initial digital representation by maintaining the active bit or setting the active bit to said first value and setting a next most significant bit to said first value to encode an increased bias current and setting said next most significant bit as the active bit; and

L) repeating steps h) to k) using said updated digital representation as said initial digital representation.

10. The method of claim 9, comprising using the digital representation determined by the initial search algorithm as the digital representation in step a).

11. The method of claim 10, wherein the initial digital representation of the initial search algorithm has a median value of a range of possible values.

12. The method of any of claims 9 to 11, comprising the initial search algorithm entering an error state if the comparison determines that said oscillation amplitude is above said upper amplitude threshold and the digital representation has a minimum value of a range of possible values. - 28 -

13. The method of any of claims 9 to 12, comprising the initial search algorithm entering an error state if, after all bits of the digital representation have been the active bit, the digital representation does not bring the oscillation amplitude between the upper and lower thresholds.

14. The method of any of claims 9 to 13, wherein the initial search algorithm comprises, upon determining that the oscillation amplitude is greater than said upper amplitude threshold, temporarily setting the digital representation to a minimum value until the oscillation amplitude at said node has decreased to be below said upper amplitude threshold.

15. The method of any of claims 9 to 14, wherein the initial search algorithm comprises, upon determining that said oscillation amplitude is lower than said lower amplitude threshold, temporarily setting the digital representation to a maximum value until the oscillation amplitude at said node has increased to be higher than said lower amplitude threshold.

16. The method of any of claims 9 to 15, wherein the initial search algorithm comprises entering an error state if, after setting the digital representation to a minimum or maximum value, a predetermined time has passed without the one or more peak detectors determining that the oscillation amplitude at the node is between said lower amplitude threshold and said upper amplitude threshold. 17. The method of any of claims 9 to 16, wherein the initial search algorithm comprises waiting a predetermined time after setting the digital representation to the updated digital representation and before monitoring the oscillation amplitude at the node using the one or more peak detectors. 18. The method of any of claims 9 to 17, wherein the initial search algorithm comprises, waiting for a waiting time for the one or more detectors to determine whether the oscillation amplitude is higher than the upper threshold or lower than the lower threshold and, if said waiting time exceeds a predetermined time, terminating the initial search algorithm. - 29 -

19. The method of any of claims 9 to 18, comprising carrying out the initial search algorithm using software and carrying out the amplitude regulation algorithm using digital hardware.

20. The method of any of claims 9 to 19, comprising triggering the initial search algorithm upon a change of crystal in the oscillator and/or upon a change in load capacitance.

21. The method of any of claims 9 to 20, comprising, prior to the initial search algorithm, setting an initial bias current so that the oscillation amplitude exceeds the upper amplitude threshold.

22. The method of any preceding claim, wherein the bias current is provided by a current analogue to digital converter.

23. The method of any preceding claim, wherein the oscillator is a Pierce oscillator.

24. A method for controlling a bias current of an oscillator having an oscillation amplitude, the method comprising: carrying out an initial search algorithm, to determine a digital representation encoding a bias current for providing an oscillation amplitude between an upper threshold and a lower threshold; applying a bias current to said oscillator using a digitally controlled current generated based on said determined digital representation; and subsequent to the initial search algorithm, carrying out an amplitude regulation algorithm to update the digital representation if the oscillation amplitude is measured, by one or more peak detectors, to be outside of said upper and lower thresholds, the amplitude regulation algorithm being different to the initial search algorithm.

25. An apparatus arranged to control the bias current of an oscillator, the apparatus comprising: one or more peak detectors; and a current digital to analogue converter; - 30 - wherein the apparatus is arranged to: a) acquire a digital representation, for the current digital to analogue converter to receive, said digital representation encoding a bias current for supplying to the oscillator; b) monitor an oscillation amplitude of the oscillator at a node using the one or more peak detectors; and c) use the peak detector(s) to carry out a comparison of the oscillation amplitude at the node with an upper amplitude threshold and a lower amplitude threshold, wherein: d) if the comparison determines that said oscillation amplitude is greater than said upper amplitude threshold, update said digital representation to encode a reduced bias current and store said updated digital representation; e) if the comparison determines that said oscillation amplitude is lower than said lower amplitude threshold, update said digital representation to encode an increased bias current and store updated digital representation; and wherein f) repeat steps b) to e) using said updated digital representation as said digital representation.

Description:
- 1 -

Oscillator Regulation

This invention relates to a method and apparatus for digital amplitude control of oscillators, in particular Pierce oscillators.

Electronic oscillators can convert a direct current (DC) power supply to an alternating current (AC) to provide periodic signals at a certain frequency.

Some electric oscillators use piezoelectric crystals. These oscillators are known as crystal oscillators. In crystal oscillators, the frequency of the periodic signal generated by the circuit is determined by the resonant frequency of the crystal. It is understood in the art that such crystals may have a relatively high Q factor and also have better temperature stability than other types of oscillator circuits. Pierce oscillators are a type of electronic oscillator common in integrated circuit chips which are particularly suited for use as piezoelectric crystal oscillators.

In order to start oscillations in the crystal a current must be supplied. However, changing the current in turn changes the oscillation amplitude in the circuit. It is generally necessary to control the current supplied to the Pierce inverter - referred to herein as the bias current (or IPIERCE) - such that the gain is just above the level where oscillations are maintained. It is not desirable to supply too much current as this simply increases overall power consumption. It is known to use an analogue amplitude regulator to provide a suitable bias current to Pierce oscillators. However, the Applicant has appreciated that existing analogue amplitude regulators typically consume a lot of power. They can also introduce undesirable noise into the circuit causing clock jitter. The present invention seeks to address these shortcomings and from a first aspect, the invention provides a method for controlling the bias current of an oscillator, the method comprising: a) acquiring a digital representation encoding a bias current; 2 b) monitoring an oscillation amplitude of the oscillator at a node using one or more peak detectors; c) using the peak detector(s) to carry out a comparison of the oscillation amplitude at the node with an upper amplitude threshold and a lower amplitude threshold, d) if the comparison determines that said oscillation amplitude is greater than said upper amplitude threshold, updating said digital representation to encode a reduced bias current and storing said updated digital representation; e) if the comparison determines that said oscillation amplitude is lower than said lower amplitude threshold updating said digital representation to encode an increased bias current and storing said updated digital representation; and f) repeating steps b) to e) using said updated digital representation as said digital representation.

Thus it will be seen that, in accordance with the invention, one or more peak detectors are used for digitally controlling the bias current of an oscillator (e.g. a Pierce oscillator). The peak detectors compare the oscillation amplitude at a node with two thresholds. If the peak detectors determine that the oscillation amplitude is not between the upper and lower thresholds, in response, the bias current is updated by updating a digital representation encoding said current (e.g. a current- DAC (IDAC) code). Changing the bias current of the oscillator in turn affects the oscillation amplitude. By using one or more peak detectors with two thresholds, it can be determined if the amplitude is above or below a legal range and the digital representation encoding the bias current can be adjusted accordingly to keep the oscillation amplitude within the legal range. This method may be referred to herein as an amplitude regulation algorithm.

A benefit which may be achieved in accordance with the invention, is that the bias current supplied to the oscillator may be changed if an environmental change occurs at some point. This environmental change could be a change in operating temperature, which in turn would affect the oscillation amplitude at the node, thus, necessitating a new digital representation. The amplitude regulation algorithm may be run for as long as the oscillator runs, to ‘watch’ for such changes and compensate for them by controlling the bias current. - 3 -

Traditionally, analogue amplitude regulators are used to provide the correct bias current to (e.g. Pierce) oscillators. However, methods and apparatus in accordance with the invention control the amplitude in the digital domain. Implementing amplitude control in the digital domain allows for more flexibility for designers as it is possible to develop and adapt amplitude control regulation algorithms in digital hardware or software.

Furthermore, in accordance with the invention, undesirable noise which is usually presented by analogue amplitude control circuits can be removed. Therefore, jitter in clock signals caused by such noise may be reduced.

The Applicant has appreciated that having the one or more peak detectors continuously running draws a significant amount of current which can increase the power consumption of the digital amplitude control circuit. Therefore, in a set of embodiments, a sleep state is entered wherein the peak detector(s) is/are disabled before repeating steps b) to e). Furthermore, in a set of embodiments if the oscillation amplitude is between the upper amplitude threshold and the lower amplitude threshold the sleep state is entered without updating the digital representation. In such a sleep state less current may be consumed compared to existing analogue methods. This is because the peak detector(s) only need to be powered up intermittently. As mentioned above, the bias current supplied to the oscillator may be changed to compensate for an environmental change (e.g. temperature). By intermittently enabling the peak detector(s) between sleep states and running steps b) to e) of the algorithm, these environmental changes may be compensated for, without drawing as much power as typical amplitude control circuits.

In a set of embodiments, the sleep state is maintained for a predetermined time. The magnitude of said predetermined time may be chosen based on the frequency of the oscillator. For example, for a 32 kHz oscillator, the sleep state may be maintained for a predetermined time lasting between 5 ms and 250 ms - e.g. between 40 ms and 140 ms. The longer the sleep state is maintained the further power consumption can be reduced. However, the predetermined time spent in the sleep state set is preferably chosen such that the oscillator is unlikely to go from an 4 acceptable oscillation amplitude (i.e. within the upper and lower thresholds) to a non-functional clock within the time spent in the sleep state. In some example embodiments, wherein the oscillator is a crystal oscillator, the predetermined time may be chosen in relation to crystal parameters. For example, wherein the oscillator comprises a crystal having an inductance and an equivalent series resistance, the predetermined time may be chosen to be approximately equal to (e.g. within ±20%) the Inductance (L) divided by the Equivalent Series Resistance (ESR) of the crystal (or L/ESR) which has been identified by the Applicant to give a suitable time for maintaining the sleep state. The ability to set and optionally change, e.g. in software, the time spent in the sleep state helps to provide flexibility for designing low-power digital amplitude regulation algorithms.

The digital representation may be updated by incrementing or decrementing said digital representation by a first constant. In a set of embodiments, the digital representation is updated by incrementing or decrementing said digital representation by said first constant, then subsequently a bias current is supplied to the oscillator encoded by a temporary digital representation comprising said updated digital representation additionally shifted up or shifted down by a second constant. When updating the digital representation encoding the bias current, temporarily supplying a higher or lower bias current to the oscillator may help to bring the oscillation amplitude within an acceptable range more quickly. The current encoded by the temporary digital representation may be supplied to the oscillator before supplying the current encoded by the updated digital representation.

However, if shifting the digital representation up or down by the first and/or second constant gives a value above a maximum value or below a minimum value, then instead a bias current may be supplied which is encoded by a temporary digital representation having said maximum value or minimum value. Therefore, in a set of embodiments, after updating the digital representation by incrementing or decrementing said digital representation by said first constant, the amplitude regulation algorithm comprises, subsequently: determining the value of a temporary digital representation comprising the updated digital representation additionally shifted up or shifted down by a second constant; and 5 if the value of the temporary digital representation is between a maximum or minimum value, supplying a bias current to the oscillator encoded by the temporary digital representation; or if the value of the temporary digital representation is above a maximum value, supplying a bias current encoded by a temporary digital representation having said maximum value; or if the value of the temporary digital representation is below a minimum value, supplying a bias current encoded by a temporary digital representation having said minimum value; before supplying the bias current encoded by the updated digital representation.

In a set of embodiments, the temporary digital representation is changed to the updated digital representation after determining, using the one or more peak detector(s), that the oscillation amplitude is within said upper amplitude threshold and said lower amplitude threshold. Initially supplying a bias current encoded by the temporary digital representation also helps to ensure that the oscillation amplitude is not outside of the acceptable range for too long.

Prior to digital amplitude regulation, it is necessary to acquire the digital representation. The digital representation may be stored in a memory and acquired from said memory, for example, when the oscillator is powered up. For example, the digital representation may simply be set as a mid-range value - e.g. a median value - or some other fixed value. However, in a set of embodiments, an initial search algorithm is first carried out to determine a digital representation encoding a bias current which gives an oscillation amplitude within said upper amplitude threshold and said lower amplitude threshold, the initial search algorithm comprising: g) acquiring an initial digital representation encoding a bias current, and setting an active bit as a most significant bit thereof, the most significant bit having a first value; h) monitoring the oscillation amplitude at the node using the one or more peak detectors; 6 i) using the peak detector(s) to carry out a comparison of the oscillation amplitude at the node with the upper amplitude threshold and the lower amplitude threshold at the one or more peak detectors; j) if the comparison determines that said oscillation amplitude is greater than said upper threshold, updating said initial digital representation by inverting the active bit to a second value to encode a reduced bias current and, if said active bit is not a least significant bit, setting a next most significant bit to said first value and setting said next most significant bit as the active bit; k) if the comparison determines that said oscillation amplitude is lower than said lower threshold updating said initial digital representation by maintaining the active bit or setting the active bit to said first value and setting a next most significant bit to said first value to encode an increased bias current and setting said next most significant bit as the active bit; and

L) repeating steps h) to k) using said updated digital representation as said initial digital representation.

Therefore, the initial search algorithm may eventually find a suitable digital representation for encoding a bias current giving an oscillation amplitude between said upper and lower thresholds. In a set of embodiments, the initial search algorithm further comprises maintaining the initial digital representation if the comparison determines that said oscillation amplitude is between said upper amplitude threshold and said lower amplitude threshold. Hence, the maintained initial digital representation may encode a suitable bias current for giving an oscillation amplitude which falls within a ‘legal range’ - i.e. defined by the upper and lower thresholds.

In a set of embodiments, the digital representation determined by the initial search algorithm is used as the digital representation set out in accordance with the first aspect of the invention. This means that the amplitude regulation algorithm of the first aspect may be preceded by the initial search algorithm. The initial search algorithm thus provides a digital representation encoding a bias current which is likely to give an oscillation amplitude between the upper and lower thresholds. In other words, the initial search algorithm provides a starting point which is likely to result in a bias current being supplied that is most suitable for the oscillator. - 7 -

The initial search algorithm may be carried out once. The result of the search (i.e, a digital representation) may be stored in the memory for it to be retrieved at start-up. Therefore, a digital representation encoding a bias current may be retrieved from memory in place of the initial search algorithm.

The initial digital representation may have any suitable value. In a set of embodiments, however, the initial search algorithm’s initial digital representation has a median value of a range of possible values. For example, a median value may be achieved if the digital representation is a multi-bit code, wherein the most significant bit is set high and the remaining bits are set low. For example, a 5 bit code has a range of values between 1 and 31, with a median value of 16 which is encoded by 10000 (the most significant bit being 1 and the rest being 0). The median value may correspond to a current that is expected to be the most suitable current for the oscillator.

There may be certain fault conditions that are checked to ensure that the digital representation is not adjusted beyond certain limits. Having such fault conditions may allow for certain issues to be detected. In a set of embodiments, the initial search algorithm enters an error state if the comparison determines that said oscillation amplitude is above said upper amplitude threshold wherein: the digital representation has a minimum value of a range of possible values.

If the digital representation has a minimum value, it can no longer be reduced while maintaining a non-zero current. Therefore, if the peak detector(s) determine that the oscillation amplitude is too high while providing the minimum possible bias current, it can be concluded that an error has occurred.

In a set of embodiments, the initial search algorithm enters an error state if, after all bits of the digital representation have been the active bit (indicating that the search has reached the end), the digital representation does not bring the oscillation amplitude into the ‘legal’ range i.e. between the upper and lower thresholds. For example this would occur where the active bit is a least significant bit and neither setting it to the first nor the second value brings the oscillation amplitude into the ‘legal’ range. This may help to bring attention to a potential problem with the crystal. 8

Upon entering an error state, an error signal may be asserted. This may result in an alert to an operator that there has been a fault.

In a set of embodiments, the initial search algorithm comprises, upon determining that the oscillation amplitude is greater than said upper amplitude threshold, temporarily setting the digital representation to a minimum value until the oscillation amplitude at said node has decreased to be below said upper amplitude threshold. Similarly, in a set of embodiments, the initial search algorithm comprises, upon determining that said oscillation amplitude is lower than said lower amplitude threshold, temporarily setting the digital representation to a maximum value until the oscillation amplitude at said node has increased to be higher than said lower amplitude threshold.

Temporarily setting the digital representation to a maximum or minimum value, in the initial search algorithm, helps to ensure that the oscillation amplitude is quickly brought to a ‘legal range’ - i.e. defined by the upper and lower thresholds. This provides effectively the same advantage as the previously mentioned feature of setting a temporary digital representation in the amplitude regulation algorithm. However, this mechanism may further provide a safety feature that ensures that the peak detector(s) are not triggered when starting another cycle of the initial search algorithm. Without this feature, the oscillation amplitude may quickly become too high or too low.

In a set of embodiments, the initial search algorithm enters an error state if, after setting the digital representation to a minimum or maximum value, a predetermined time has passed without the one or more peak detectors determining that the oscillation amplitude at the node is between said lower amplitude threshold and said upper amplitude threshold. In embodiments where the oscillator is a crystal oscillator, this fault condition may help to signify if a crystal has been incorrectly inserted.

In a set of embodiments, the initial search algorithm comprises waiting a predetermined time, after setting the digital representation to the updated digital representation (supplying the oscillator with a corresponding bias current) and before monitoring the oscillation amplitude at the node using the one or more peak - 9 - detectors. This helps to allow for transients to settle. The transients may be associated with switching the digital representation from the maximum or minimum value to the updated digital representation. Said predetermined time (e.g. for a 32 kHz oscillator) may be between 2 ms and 10 ms - e.g. between 4 ms and 6 ms - e.g. 5 ms.

The initial search algorithm may comprise waiting for the one or more detectors to determine whether the oscillation amplitude is higher than the upper threshold or lower than the lower threshold; and if the time spent waiting exceeds a predetermined time, finishing the search. This may occur after the digital representation is updated and after a bias current represented by said updated digital representation is applied to the oscillator. For example, the algorithm may wait said predetermined time for one of the peak detectors to trigger, indicating a ‘violation’ - e.g. meaning that the oscillation is higher than the upper threshold or lower than the lower threshold. If the time spent waiting for a violation takes longer than said predetermined time, it is likely that the bias current encoded by the digital representation at that point is suitable for providing an oscillation amplitude within said upper and lower thresholds. The predetermined time (e.g. for a 32 kHz oscillator) may be between 1 s and 3 s - e.g. 2 s.

The initial search algorithm may be implemented in software. The amplitude regulation algorithm may be implemented in digital hardware - e.g. in digital hardware made by a digital designer with digital design tools, which in turn means that the algorithm may be specified as register-transfer level (RTL) code.

Preferably, the initial search algorithm is triggered by a change of crystal in the oscillator and/or by a change in load capacitance.

In a set of embodiments, prior to the initial search algorithm, an initial bias current may be set so that the oscillation amplitude exceeds the upper amplitude threshold - e.g. at startup. This ensures that the initial bias current is large enough to start oscillation of the oscillator in a reasonable amount of time. The initial bias current (e.g. for a 32 kHz oscillator) may be between 200 nA and 2000 nA - e.g. 850 nA. 10

Preferably, a first flag is set if the oscillation amplitude at the node is determined by the one or more peak detectors to be higher than the upper amplitude threshold or a second flag is set if the oscillation amplitude at the node is determined by the one or more peak detectors to be lower than the lower amplitude threshold.

In a set of embodiments, the bias current is provided by a current analogue to digital converter (IDAC). The IDAC is typically arranged to output an analogue signal having a current corresponding to the digital representation received (e.g. at its input).

In a set of embodiments, the oscillator is a Pierce oscillator. Therefore, the IDAC may be arranged to provide the bias current to a Pierce oscillator.

The oscillator may comprise a crystal connected between a first crystal terminal and a second crystal terminal. In a set of embodiments, the node at which the oscillation amplitude is monitored is located at one of said first and second terminals. Therefore, the first crystal terminal or the second crystal terminal may be used as a peak detector input.

The combination of finding a suitable digital representation encoding a bias current in an initial search algorithm with a further algorithm being different to the initial search algorithm (e.g. preferably requiring less power) is novel and inventive in its own right. Thus, according to a second aspect the invention provides a method for controlling a bias current of an oscillator having an oscillation amplitude, the method comprising: carrying out an initial search algorithm, to determine a digital representation encoding a bias current for providing an oscillation amplitude between an upper threshold and a lower threshold; applying a bias current to said oscillator using a digitally controlled current generated based on said determined digital representation; and subsequent to the initial search algorithm, carrying out an amplitude regulation algorithm to update the digital representation if the oscillation amplitude is measured, by one or more peak detectors, to be outside of said upper and lower thresholds, the amplitude regulation algorithm being different to the initial search algorithm. - 11

Thus it will be seen that, in accordance with the second aspect of the invention, two different algorithms are used to digitally control the oscillation amplitude of the oscillator. The initial search algorithm first determines the digital representation (e.g. the IDAC code) that yields the correct oscillation amplitude. Then an amplitude regulation algorithm updates (e.g. by stepping the digital representation up or down by a certain amount) every time step that the one or more peak detector(s) trigger. The amplitude regulation algorithm may be run continuously in the background to watch for amplitude changes due to changing temperature.

This invention extends to an apparatus arranged to control the bias current of an oscillator, the apparatus comprising: one or more peak detectors; and a current digital to analogue converter; wherein the apparatus is arranged to: a) acquire a digital representation, for the current digital to analogue converter to receive, said digital representation encoding a bias current for supplying to the oscillator; b) monitor an oscillation amplitude of the oscillator at a node using the one or more peak detectors; and c) use the peak detector(s) to carry out a comparison of the oscillation amplitude at the node with an upper amplitude threshold and a lower amplitude threshold, wherein: d) if the comparison determines that said oscillation amplitude is greater than said upper amplitude threshold, update said digital representation to encode a reduced bias current and store said updated digital representation; e) if the comparison determines that said oscillation amplitude is lower than said lower amplitude threshold, update said digital representation to encode an increased bias current and store updated digital representation; and wherein f) repeat steps b) to e) using said updated digital representation as said digital representation. 12

Features of any aspect or embodiment described herein may, wherever appropriate, be applied to any other aspect or embodiment described herein.

It will be appreciated by those skilled in the art that all aspects and embodiments of the present invention can include, as appropriate, any one or more or all of the preferred and optional features described herein. For example, the amplitude regulation algorithm of the second aspect may correspond to the method of the first aspect.

Where reference is made to different embodiments or sets of embodiments, it should be understood that these are not necessarily distinct but may overlap.

Certain embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings, in which:

FIG. 1 is a schematic showing a digital amplitude control circuit portion in accordance with an embodiment of the invention;

FIG. 2 is a flow-chart showing a method for digitally regulating the amplitude of an oscillator in accordance with an embodiment of the invention;

FIG. 3 is a flow-chart showing the amplitude search algorithm of FIG.2 in more detail; and

FIG. 4 is a flow-chart showing the amplitude regulation algorithm of FIG. 2 in more detail.

Figure 1 shows a block schematic of a digital amplitude control circuit portion 1 comprising a Pierce oscillator 3, in accordance with an embodiment of the invention. The Pierce oscillator 3 comprises an amplifying portion 2 comprising an inverter amplifier 20 (herein referred to as the Pierce inverter). The Pierce inverter 20 is connected to a resistor 22 in parallel, such that the input of the Pierce inverter 20 is connected to one terminal of the resistor 22 and its output is connected to the other terminal of the resistor 22. The resistor 22 sets the DC level and biases the inverter 20 into its linear operating region. The Pierce inverter 20 is also connected (via its input) to a capacitor 24 in series.

A piezoelectric crystal 26 is connected to the amplifying portion 2, in parallel, between two nodes X, and X 0 . Each node (X and X 0 ) is connected to ground via a - 13 - respective capacitor 28, 30. These capacitors 28, 30 could be off-chip, however, in this example, they are on-chip capacitors 28, 30.

The Pierce oscillator 3 is connected (via the node X 0 and the connection 4) to a dual threshold peak detector 6. The peak detector 6 has two signal lines (PD_HIGH, PD_LOW) 8,10 connected to a digital control module 12. The digital control module 12 is connected to a current digital-to-analogue converter (IDAC) 16 (via a five-bit digital connection 14). The output of the IDAC 16 is connected to the (power terminal of the) Pierce inverter 20 via a connection 18 labelled IPIERCE.

The operation of the circuit portion shown in Figure 1 will now be described. The Pierce oscillator 3 uses a feedback loop comprising the Pierce inverter 20 to generate a fixed frequency output. The piezoelectric crystal 26 is used as the frequency selective element. In use, the crystal 26 mechanically vibrates in response to an applied electric field at a frequency slightly above its series resonant frequency.

The Pierce Inverter 20 by itself provides a phase shift of 180 degrees. The capacitors 28, 30 (which connect the terminals of the crystal 26 to ground), form a pi network band-pass filter with the crystal 26. This band-pass filter arrangement provides a 180 degree phase shift (i.e. an inverting gain) and satisfies the Barkhausen criteria. The combination of this 180 degree phase shift together with the negative gain from the Pierce inverter 20 provides positive loop gain and thus positive feedback which results in the desired oscillations.

The components external to the Pierce oscillator 3, enable the oscillation amplitude to be digitally regulated in accordance with embodiments of the invention, the operation of which will now be described with reference to Figure 1.

The peak detector 6 compares the amplitude of the voltage at the node X 0 with pre defined upper and lower thresholds. The nominal thresholds are selected in the design stages by choosing resistor values. The thresholds are trimmable and can be tuned in production testing in order to provide the required operating conditions. Threshold trimming data is stored in a memory (not shown) e.g. a register. - 14 -

A first flag PD_HIGH is asserted by the peak detector 6 on one of the output signal lines 8 if the peak detector 6 determines that a measured amplitude is higher than the upper threshold. A second flag PD_LOW is asserted by the peak detector 6 on the other signal line 10 if the peak detector 6 determines that a measured amplitude is lower than the lower threshold.

The signal lines 8, 10 are input to the digital control module 12 which may be implemented in hardware and/or software and which adjusts the oscillator bias current (IPIERCE) by means of a digital representation, or IDAC code, at its output 14 controlling the current-DAC (IDAC) 16. The digital control module 12 adjusts the bias current based on the flags asserted by the peak detector 6.

In order to implement digital amplitude control, two main algorithms are used. The first is an initial binary search-based algorithm that can quickly go through all the IDAC codes to find the one that yields the correct oscillation amplitude. The second is a simpler algorithm behaving like a digital integrator, stepping the IDAC code up or down by a certain amount every time the peak detector 6 is triggered. This algorithm is run continuously in the background with a long time step to watch for gradual amplitude changes - e.g. due to changing temperature.

The Pierce oscillator 3 forms an oscillating feedback loop around the crystal 26.

The dual threshold peak detector 6 monitors the oscillation amplitude at Xo and sets its output flags accordingly. PD_HIGH is set if the Xo amplitude is higher than a pre-determined upper threshold, and PD_LOW if the Xo amplitude is lower than a pre-determined lower threshold. The aim is to keep the oscillation amplitude between the upper and lower thresholds. That is, to keep both peak detector 6 flags cleared. The peak detector flags are cleared (i.e. unset) when the peak detector 6 determines that the oscillation amplitude is within the ‘legal’ amplitude range - i.e. between the upper and lower threshold oscillation amplitude thresholds. In this example, the peak detector 6 thresholds are trimmable - e.g. they stored in a register and adjusted via editing software.

When the measured amplitude triggers the peak detector 6 to set a flag, the digital control module 12 reads the flag (PD_HIGH or PD_LOW), which in turn controls the current DAC (IDAC) which supplies the current IPIERCE to the inverter 20. A negative - 15 - amplitude control loop is thus formed. The task of the digital control module 12 is to select a lower IDAC code to clear a PD_HIGH flag, and a higher IDAC code to clear a PD_LOW flag.

The IDAC 16 is 5 bits and binary scaled in the implementation shown in Figure 1. The IDAC 16 is therefore provided with a digital representation consisting of a 5 bit IDAC code. The IDAC code is set by the digital control module 12 and is changed according to the algorithms described herein. This IDAC code encodes an output current for supplying to the power terminal of the Pierce inverter 20.

In this example, the system also has an optional startup mode, occuring before the main algorithm(s), which supplies a large current to the Pierce Inverter 20 to achieve faster start-up of the Pierce oscillator 3. This startup mode is shown in Figure 2.

The Pierce oscillator amplitude can in fact be controlled in three different ways all of which are shown in Figure 2. Firstly, a simple startup algorithm (described above) supplies a large current (850 nA) to the crystal 26 - e.g. large enough to begin oscillation in all crystal types in a suitable amount of time -and the resulting amplitude is monitored by the peak detector 6. Providing this large current helps to ensure a successful startup of the Pierce oscillator 3 in a reasonable time frame. The oscillations may successfully start without the startup algorithm, however, it is likely to take longer.

After the startup mode, an initial amplitude search algorithm 107 runs to quickly find a correct IDAC code for steady state operation, unless a previously determined digital representation (IDAC code) is stored in the memory and can be used directly when the oscillator 3 is restarted. After an IDAC code has been found (e.g. from the amplitude search algorithm 107 or by fetching a stored IDAC code from memory), an amplitude regulation algorithm 109 is used to monitor the amplitude intermittently to ensure that the amplitude stays within a ‘legal’ range between the upper and lower thresholds, and to change the IDAC code if it is not.

An overview of the startup, amplitude search and amplitude regulation algorithms is shown in Figure 2. - 16 -

Startup algorithm

The startup algorithm operates in the following way:

At step 101, the node PIERCE_STARTUP is set high. This injects a large current into the crystal 26 and begins oscillation of the Pierce oscillator 3. After 2 s the peak detector 6 is enabled using the PD_EN signal (not shown) and the peak detector begins monitoring the oscillation amplitude at the node X 0 . The system waits for a predetermined amount of time for the peak detector outputs 8, 10 to be considered valid. In this case, the waiting time is set as 2 ms. This helps to ensure that the peak detector 6 has been given sufficient time to provide a valid output.

Thus the outputs of the peak detector 6 are considered valid after additional 2 ms.

As a large current is initially provided in the startup mode, it is expected that the PD_HIGH flag will trigger in response to a high oscillation amplitude. At step 102, the PD_HIGH flag triggers at one of the peak detector outputs 8 which indicates that oscillations have successfully been started and that the startup mode is complete. The algorithm then can proceed to step 105. However, if a predetermined time elapses at step 103 without PD_HIGH being triggered an error state is entered at step 104. This indicates that the oscillator 3 cannot start and may be a sign that the crystal 26 is incorrectly inserted.

Following the startup algorithm, at step 105, either a previous IDAC code is retrieved from memory and is set as the current IDAC code at step 106 (e.g. if known from a previous amplitude search run) or an initial amplitude search algorithm is triggered at step 107.

After the initial amplitude search algorithm 107 determines a suitable IDAC code at step 108, the amplitude regulation algorithm 109 takes over. Alternatively, a suitable IDAC code is retrieved from a memory at step 106 - e.g. from a previous initial amplitude search algorithm with the same load capacitance and crystal. The suitable IDAC code is used as the IDAC code (i.e. the initial bias current) for the amplitude regulation algorithm 109. The operation of the amplitude regulation algorithm will be described in more detail later. - 17 -

Firstly, the operation of the initial amplitude search algorithm will be explained with reference to Figures 1 , 2 and 3.

Initial amplitude search algorithm

As explained above, the initial amplitude search algorithm 107 performs a binary search to quickly find the correct IDAC code before the amplitude regulation algorithm 109 takes control. In short, the initial amplitude search algorithm 107 is used to find the IDAC code which is to be used as the initial condition for the amplitude regulation algorithm 109. In this example, the initial amplitude search algorithm 107 is implemented in software.

As the correct IDAC code primarily depends on the crystal and load capacitance used, it is sufficient to run the amplitude search algorithm 107 once if both remain the same. The initial amplitude search algorithm is preferably run when the circuit portion is on a chip which has been installed on the correct printed circuit board (PCB) with the correct crystal and the correct load capacitance. This helps to ensure that the IDAC code is suited to the actual operating conditions. In this example, a change of crystal or load capacitance re-triggers the amplitude search algorithm. This is because such a change will also alter the required current (and corresponding IDAC code) for providing a suitable oscillation amplitude.

The flowchart of Figure 3 outlines the steps of the initial amplitude search algorithm in more detail. The initial amplitude search algorithm will now be described step-by- step with reference to Figures 1 and 3. Some of the variables used in the flowchart are defined below:

• IDAC: The physical IDAC bus;

• code: The current IDAC code estimate. IDAC may be set equal to ‘code’ during the search, but not always;

• n: The active bit in the binary search;

• MIN: Constant holding minimum IDAC code. Typically 1 (for a 5 bit code); and

• MAX: Constant holding maximum IDAC code. Typically 31 (for a 5 bit code). - 18 -

There are three different running states in the amplitude search algorithm of Figure 3, WAIT_PD_CLEAR 202, WAIT_SETTLING 207 and WAIT_PD_TRIGGER 210. The purpose of each of these states will now be described:

WAIT_PD_CLEAR 202:

This state is entered each time one of the peak detector 6 flags PD_HIGH or PD_LOW has ‘triggered’ (i.e. has been asserted), with the purpose of clearing a triggered flag. That is, if PD_HIGH triggers, then the oscillation amplitude is above the upper threshold. Therefore, the IDAC code is set to a minimum value and a corresponding low bias current is supplied to the Pierce oscillator 3 via the IDAC output 18. The system waits in this state, supplying a low current to the Pierce oscillator 3, until the oscillation amplitude at the node X 0 has decreased and the flag PD_HIGH has cleared. Alternatively, if the flag PD_LOW triggers, this means that the oscillation amplitude is below the lower threshold and the IDAC code is set to a maximum value to supply a corresponding high bias current to the Pierce oscillator 3. The system waits in this state, supplying a high current to the Pierce oscillator 3, until the flag PD_LOW has cleared. This mechanism is a safety feature that ensures that, at the start of each step of the binary search, neither of the flags PD_HIGH or PD_LOW are asserted at the peak detector outputs 8, 10. If one of the flags is not cleared within a predetermined clearing time (i.e. t c iear >T C iear, t c iear being the time spent waiting for the flags to clear), an error state is entered at step 206. The clearing time (Tciear) is set as 100ms in this example.

WAIT_SETTLING 207:

If it is determined that neither of the peak detector flags are triggered at step 203, the IDAC output 18 is set to the current IDAC code estimate (i.e. the parameter ‘code’) at step 204. Upon supplying the bias current (IPIERCE) encoded by the said current IDAC code estimate, the WAIT_SETTLING state is entered at step 207. Here, the system waits a predetermined settling time for transients associated with the switching to die out. The settling time (T se ttie) may be set as 5ms. When t se ttie >T settle (tsettie being the time spent waiting for the output to settle), the algorithm proceeds to step 210.

WAIT PD TRIGGER: - 19 -

In this state a binary search is performed. At step 210, the system waits for either PD_HIGH or PD_LOW to trigger (and takes appropriate actions accordingly). The waiting time T trig in this example is set as 2 s. If neither PD_HIGH nor PD_LOW are triggered within a certain time, (e.g. ¾ G ¾ >T trig , ¾ G ¾ being the time spent waiting for either flag to trigger), then the search is declared finished at step 221.

An exemplary implementation of the initial amplitude search algorithm is explained step-by-step as follows, with reference to the flowchart of Figure 3:

The flag PD_HIGH triggers in response to the large current supplied in the startup mode (which results in an oscillation amplitude at the node X 0 above the upper threshold). After this, at step 201, the active bit is set as n=4 (i.e. the most significant bit), and the initial IDAC code estimate is set to code=5’b10000, with the IDAC output set to MIN in order to clear the flag. In general the initial IDAC code estimate is chosen to have the median value (e.g. 16) of the range of possible values (e.g. 1 to 31 for a 5-bit IDAC). The WAIT_PD_CLEAR state is entered at step 202 and because a relatively small current is being applied to the Pierce oscillator 3 (i.e. IDAC=MIN), the oscillation amplitude at the node X 0 decreases and the flag PD_HIGH is cleared at step 203.

At step 204, the IDAC is set equal to the parameter ‘code’ (the current IDAC code estimate) and the system waits for initial settling in the WAIT_SETTLING state at step 207 for approximately 5ms.

The algorithm then progresses to the WAIT_PD_TRIGGER state at step 210, and the system waits either for peak detector flags to be triggered (at step 211 or 212) or for timeout (at step 214) if neither flag triggers within approximately 2 s. If a flag is triggered, appropriate actions are performed (which are outlined below) and the process returns to step 202 in the WAIT_PD_CLEAR state to clear the flag.

The actions taken responsive to detecting a PD_LOW flag at step 212 are as follows:

If PD_LOW triggers the oscillation amplitude measured by the peak detector 6 is below the lower threshold and is thus outside of the ‘legal’ range. At step 219, the 20 active bit of the IDAC code is left set high, and the next bit is set high. The active bit ‘n’ is then decremented (e.g. from n=4 to n=3). This gives an updated current IDAC code estimate (i.e. ‘code’). At the same time, the IDAC output 18 is set to MAX to quickly clear the peak detector flag PD_LOW.

Prior to this, at step 217, a fault condition is checked. If PD_LOW triggers while n>0 is not true, this means that the active bit is the least significant bit. Thus there is no next bit to set, and an error state is entered at step 215.

The actions taken responsive to detecting a PD_HIGH flag at step 211 are as follows:

If PD_HIGH triggers, the oscillation amplitude at the node X 0 measured by the peak detector 6 is above the ‘legal’ range - i.e. above the upper threshold. At step 216, the active bit is set low. If n is larger than 0, meaning that the active bit is not the least significant bit, then the next bit is set high and n is decremented. At the same time, the IDAC output 18 is set to MIN to quickly clear the flag.

Prior to this, at step 213, a fault condition is checked. It is important to note, that the condition n>0 (used for PD_LOW) does not work to detect an error for PD_HIGH because when the active bit is the least significant bit, the algorithm may still invert the active bit to encode a lower current. Instead two further fault conditions are checked. The first is if ‘code’ is equal to 1. It makes no sense to clear the active bit in this case as this will provide no current to the crystal 26. The second condition is that the active bit is the least significant bit (n=0) and the value of the IDAC code is zero (code[0]=0). This means that the active bit has already been set back to zero, but PD_HIGH somehow triggered again. Nothing more can be done to lower the amplitude.

The system should never enter these error states if legal operating conditions (including crystal parameters) are met. For instance, the start-up current should be large enough to start oscillation in all allowed crystals, and the IDAC least significant bit and peak detector thresholds are set such that at least one correct IDAC code exists for all allowed crystals. - 21

Adjusting the current in the way laid out above (i.e. through a binary search) is complicated by the very long time constants of the oscillation loop, which is on the order of 50-100 ms. This can affect stability as well as power consumption, as the peak detector 6 and digital control module 12 may use a significant amount of power. Therefore, after using the initial amplitude search algorithm to find the suitable IDAC code, the system switches to a less demanding algorithm - herein referred to as the amplitude regulation algorithm. The amplitude regulation algorithm helpfully checks the oscillation amplitude at the node X 0 intermittently, and otherwise puts the control loop to sleep to conserve power.

Figure 4 shows the amplitude regulation algorithm 109 of Figure 2 in more detail. It will be appreciated that the initial condition for this algorithm - i.e. an IDAC code estimate (digital representation) - may be set as a median value, found by the amplitude search algorithm or may be retrieved from a memory.

Amplitude regulation algorithm:

In this example, the initial amplitude search algorithm described above finds an IDAC code that brings the oscillation amplitude into the legal region (between the upper and lower thresholds). However, it is assumed that that IDAC code might be wrong at some later point, primarily because the operating temperature may change.

The amplitude regulation algorithm is thus provided to periodically check for peak detector flags, and correct the IDAC code if necessary. Preferably, the amplitude regulation algorithm runs even when the chip is in system off. This may be achieved by implementing the amplitude regulation in the digital hardware. The initial amplitude search algorithm will now be described with reference to Figure 4. It is envisioned that the algorithm continues in a loop indefinitely.

Similarly to the initial amplitude search algorithm, there are three different running states in the amplitude regulation algorithm of Figure 4 (SLEEP 301, START_PD 303 and CHECK_PD 305).

At step 301 the process waits in a sleep state for a predetermined time T S iee (approximately 100 ms). The peak detector 6 is disabled in this state to save power 22 by setting PD_EN to low. During this time, the peak detector 6 draws little to no current. Then at step 302, the time spent in the sleep state ( p) is compared with the parameter T S iee . If t S iee P is determined to exceed T S iee P then the algorithm proceeds to step 303 where the peak detector 6 is enabled i.e. PD_EN is set to high.

At step 304, the system waits for a predetermined time T s tart ~ 2 ms before the peak detector outputs 8, 10 are checked. This helps to ensure that the peak detector 6 has been given sufficient time to provide a valid output - e.g. by setting a PD_HIGH or PD_LOW flag. Following this short wait period, at step 305, the output flags are checked in the CHECK_PD state, and appropriate actions are taken.

The actions taken responsive to detecting a PD_HIGH flag at step 306 are as follows:

If a PD_HIGH flag is triggered, then this means the oscillation amplitude has become too high. This could be due to a temperature change that occurred during the time spent in the sleep state. At step 307, the current IDAC code (idac_code) is decremented by a constant (K,), but is never set lower than 1. The IDAC output PIERCEJDAC is not set equal to the updated idac_code, but to the even lower value idac_code - K p (K p is also a constant) (where K p is subtracted from the updated IDAC code - i.e. after subtracting ). This is a temporary measure to quickly clear the PD_HIGH flag. If the result of ‘idac_code - K p ’ is negative, then the code is set to zero. The algorithm loops back to step 301 and the peak detector is disabled in the sleep state. In some cases, the constant K p may be set to zero in order to simplify the amplitude regulation algorithm. Therefore, the algorithm would effectively not carry out this temporary measure.

The actions taken responsive to detecting a PD_LOW flag at step 308 are as follows:

If a PD_LOW flag triggers, the oscillation amplitude has become too low. At step 309, the current IDAC code (idac_code) is incremented by K,, but is never set higher than 31. The IDAC output PIERCEJDAC is not set equal to ‘idac_code’, but to the even higher value idac_code + K p (but never higher than 31). This is temporary - to clear the PD_LOW flag. The algorithm loops back to step 301 and the peak detector is disabled in the sleep state. - 23 -

The actions taken if no flags are triggered are as follows:

If neither flag (PD_HIGH or PD_LOW) triggers, then the oscillation amplitude measured by the peak detector 6 is determined to be acceptable - i.e. between the upper and lower thresholds. In this case, the IDAC output PIERCEJDAC is set equal to the current code estimate (idac_code). That is, any earlier temporary offset by K p is now removed. The algorithm loops back to step 301 and the peak detector is again disabled in the sleep state. In short, the amplitude regulation algorithm works by regularly checking the peak detector flags, and incrementing or decrementing the IDAC code by K, each time there are violations (i.e. each time a flag is triggered). Additionally, the IDAC code is temporarily shifted up or down by K p until the violations are resolved (i.e. until both flags are cleared/unset). Setting this temporary IDAC output speeds up the amplitude correction process.

It is important to note that changing the IDAC code by K, will cause accumulating IDAC code changes as long as there are violations, whereas changing the IDAC code by K p will only make a static code offset until violations are resolved.

The system described in relation to the amplitude regulation algorithm is loosely related to a proportional integral (PI) regulator. The idac_code may be equated to the integrator value, K p being the proportional gain, and K (T S iee P + T s tan) being the integral gain. T S iee P , K, and K p must be set to appropriate values. The best values are those that result in a stable regulation loop with no overshoot, and that provide fast regulation.

T siee is ideally set such that it is not possible to go from a legal amplitude (no flags) to a non-functional clock within the interval (i.e. the interval between checks). This will depend on the effect and speed of temperature change which, in general, is unknown. Total loss of driving power can be modelled and used as an (unrealistic) very worst-case consideration. In this case amplitude declines exponentially with time constant L/ESR (crystal parameters), and is typically in the region of 40 ms - 140 ms. Furthermore, the PD_LOW flag is triggered at around 90 mVpp, and the output clock is functional down to around 25 mVpp (where Vpp=peak-to-peak - 24 - voltage). Without any drive, this decay will happen at -ln(25/90) = 1.3 time constants. From this it is concluded at T Siee = L/ESR is a reasonable and safe value as long as K, and K p are set such that the regulation is sufficiently fast. By trial and error, it has been found that K, = K p = floor(idac_code/2) works well, where idac_code is the code found during the initial amplitude search algorithm of Figure 3.

A summary of exemplary parameters is given below in Table 1 , along with suggested values, and suggested format/range.

The regulation loop remains stable around the suggested parameters. This means that it may be possible to set static values that will work sufficiently well for all supported crystals.

Table 1 - Parameters for the amplitude regulation algorithm.

It will be appreciated by those skilled in the art that the invention has been illustrated by describing one or more specific embodiments thereof, but is not limited to these embodiments; many variations and modifications are possible, within the scope of the accompanying claims.