AN2226 PSoC® 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise Author: Dennis Seguine Associated Project: Yes Associated Part Family: CY8C24/27/28/29xxx Software Version: PSoC ® Designer™ 5.4 SP1 Related Application Notes For a complete list of the application notes, click here. AN2226 presents low noise signal processing in PSoC® 1 through the use of Correlated Double Sampling (CDS) to reduce errors due to offset, drift, and low frequency noise. An analog front end for a type K thermocouple is used as a design example. For equivalent implementation in PSoC 3 or PSoC 5, see AN66444. For complete thermocouple system design see in PSoC 3 or PSoC 5, see AN75511. A project for analog front end for type K thermocouple is provided in the associated download. Introduction The thermocouple (TC) is a voltage output device that measures the temperature difference between the sensor tip and a reference junction (called the cold junction). This is a relative measurement and to be accurate, the reference lead temperature must also be known. Type K thermocouples have an average output of approximately 40.7 µV/°C. This output is approximately linear. For complete linearization, see AN75511. Correlated Double Sampling (CDS) provides a means to efficiently subtract offset and remove drift, and low frequency noise from this sensitive measurement. This technique works just as well for differential measurements such as pressure sensors and load cells. The thermocouple’s output is absolute (not ratiometric), so the reference for the ADCINC14 is selected to be an absolute voltage referenced to the PSoC’s internal bandgap. The lowest ADC scale is 0 to 2*Vbg or 2.6 V. For the ADCINC14, the resolution is 2.6 V/2^14 or 159 µV per bit. This is four degrees per bit and is not useful for one degree accuracy. Simple Approach With insufficient ADC resolution, DC gain is required to make the measurement useful. A PGA is added to boost the input signal. Figure 2. Thermocouple Amplifier with Gain Too Simple Approach The "too simple" approach to thermocouple measurement is to connect the reference lead of the thermocouple to ground and the output to a high resolution ADC. In this case, the PSoC 1 ADC with the highest resolution is ADCINC14. Figure 1. Too Simple Thermocouple Circuit ADCINC14 ADCINC14 Type K The highest nominal PGA gain available is 48. This yields a PGA output of 48*40.7 µV = 1.95 mV per degree or 0.08 degrees per bit. This is a good start, but the circuit still has problems with low frequency noise, drift, minimum operating voltage, and accuracy. Type K www.cypress.com Document No. 001-45198 Rev. *H 1 ® PSoC 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise Figure 5. Sequential Offset Subtraction Accommodating Offset and Drift The thermocouple output is relative to the temperature of the reference lead (the grounded terminal in Figure 2). If the reference lead is at room temperature and the thermocouple is colder, then the output voltage is negative. The PSoC does not handle negative voltages. Therefore, the input must be biased above ground by an amount sufficient to accommodate the negative temperature limit of the thermocouple. A practical measurement limit is -100 °C. This is only -4 mV. Next, the opamps in the PGA and the ADCINC14 have input offset voltages. The opamp specification limit is ±10 mV with a 1.6 mV typical. The offset of the ADCINC14 is reflected to the PGA input divided by the gain. The worst case offset compensation required is the sum of PGA offset, ADC offset, and negative signal range, a total of 14.2 mV. Vdd (5.0V) 49.9 kΩ Type K ADCINC14 (+15 mV) 150 Ω Vdd (5.0V) 49.9 kΩ Type K ADCINC14 (+15 mV) 150 Ω The offset is achieved using a resistive divider from the Vdd supply. The stored offset value is subtracted from the thermocouple output measurement. Problems with this technique arise from opamp input noise and offset voltage drift. Figure 3. Accounting for Circuit Offset Vdd (5.0V) 49.9 kΩ ADCINC14 Type K The PGA has input noise dominated by a 1/f term. The flat band noise level is 65 nV/rtHz, with the 1/f corner at 4.5 kHz. (+15 mV) Figure 6. Opamp Noise Characteristic 150 Ω nV/rtHz 1.0E+04 The ±10 mV offset voltage is equal to ±250 °C and must be calculated. This is done by measuring both sides of the thermocouple and then taking the difference. The multiplexer is the standard PSoC port 0 input mux. Voltage noise 1.0E+03 Figure 4. Thermocouple Offset Compensation 1.0E+02 Vdd (5.0V) 49.9 kΩ 1.0E+01 Type K (+15 mV) 0 1 10 100 Hz 1000 10000 100000 ADCINC14 This is from a model characterization data. 150 Ω in AN2224, taken from The total PGA noise is given by: The easy thing to do is to measure the offset at the reference side of the thermocouple at startup and store the digitized value. The mux is switched to the thermocouple output and the value digitized. 1 f 2 v nt = n0 f u − f l + f c ln u f l Equation 1 In this equation: n0 is the flat band noise www.cypress.com Document No. 001-45198 Rev. *H 2 ® PSoC 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise The offset measurement is: fC is the 1/f corner frequency VTC _ OFFSET = V N + VOFFSET fU is the upper frequency limit (~fSAMPLE/2=60 Hz/2) Equation 3 The offset is measured at the previous sample time: fL is the lower frequency limit (0.01 Hz) VTC _ OFFSET _ DELAY = (VN + VOFFSET ) * Z −1 Equation 4 vnt = 12.4 µV RMS The noise bandwidth is limited by the sin(x)/x noise shaping of the incremental ADC. The -3 dB point of the filter is at 0.44 * fSAMPLE. Figure 7. ADC sin(x)/x Response Z-1 is the delay operator, so VN* Z-1 represents the value of VN at the previous sample time. The difference is: VSIGNAL = (VTC + V N + VOFFSET ) − (V N + VOFFSET ) * Z −1 1 VSIGNAL = VTC − (VN + VOFFSET ) * 1 − Equation 5 Z VOFFSET is static and its value on the current sample is the same as the value on the previous sample. By subtracting one time sample from the next with VOFFSET remaining unchanged, VOFFSET is simply subtracted out. VN is not static; this is the noise and drift term to be eliminated. 1 VSIGNAL = VTC − VN * 1 − Z The ADC rejects noise above the sample rate, but it has no effect on offset or low frequency noise. The indicated temperature is the difference between the stored value and the most recent reading. The noise contributions from the two measurements add in RMS, so the noise on the reading is 17.5 µV RMS. ADC opamp noise and quantization error (=1 LSB/sqrt(12)) add an amount of error small in comparison to the PGA's noise. With this noise level, an indicated temperature wander of approximately ±1.5 degrees for a three sigma variation is expected. This is worse than the desired specification and does not account for drift or measurement scale accuracy. The Vos drift for PSoC 1 is 5 µV/ºC typical and 35 µV/ºC worst case. A one degree shift in die temperature indicates as much as 0.9 ºC change in the indicated thermocouple reading. A degree or two of chip temperature variation (not unreasonable in any warm up situation) dominates the error from the noise. To resolve this problem, measure and subtract the offset and noise in real time. This technique is called CDS. Equation 6 Using the bilinear transform: sT 2 Z= sT 1− 2 1+ Equation 7 In this equation, T = 1/fSAMPLE. With a little algebraic manipulation: 2s VSIGNAL = VTC − V N * s + 2 f SAMPLE Equation 8 The combination of the correlated double sample and the ADC's sinc (sin(x)/x) filter creates a frequency response that significantly reduces the low frequency components of the noise, as shown in Figure 8. The sinc function has its first null at the sample rate, in this case at 60 samples per second. This is also useful for rejecting AC line noise. Correlated Double Sampling Using the last circuit above, alternating measurements are taken of the zero-referenced offset and the thermocouple signal. The direct thermocouple measurement is: VTC _ SAMPLE = VTC + V N + VOFFSET www.cypress.com Equation 2 Document No. 001-45198 Rev. *H 3 ® PSoC 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise Figure 8. CDS Frequency Response The noise power of the PSoC input opamp increases as frequency decreases, i.e., proportional to 1/f. Thus, the noise voltage increases as square root of 1/f. The doublesampling and filtering process results in attenuation of the noise voltage that increases as at the rate of 1/f. As the frequency is reduced, the resulting filtered noise level continues to drop. In the limit, (DC or f=0, as in offset voltage), there is no noise contribution and the offset voltage is completely cancelled. The resulting noise curve is shown in Figure 10. CDS + sinc dB 10 0 -10 -20 -30 -40 -50 Figure 10. Thermocouple and CDS Noise Response CDS sin(x)/x -60 Noise Response -70 0 1 10 100 Hz 1000 10000 100000 Noise Reduction 100000 nV/rtHz 10000 The sinc filter has the low pass characteristic and the correlated double sample has a high pass characteristic. However, the high pass only affects the noise. The product of the two functions results in a few dB bump in the transfer function just below the sample rate, but overall dramatic reduction in the total noise. The difference of the ADC thermocouple and offset measurement is filtered with a binary-weighted first order IIR filter, implemented in software (see the AN2276), with a coefficient of 16. The corner frequency of this filter is less than 1 Hz. This is still adequate, because thermocouple signals are very slow compared to the measurement speed. When faster response is required, the corner frequency of the IIR filter is easily adjusted by changing the coefficient. This also increases the noise bandwidth. The correlated double sampling process results in two effective filters, one for the signal, and one for the noise, as shown in Figure 9. The signal is affected only by the IIR filter's response (in RED). The noise is affected by the combination of the IIR and the correlated double sample (in BLUE). Figure 9. Thermocouple Noise Characteristic IIR Filter dB 10 0 -10 -20 -30 -40 -50 IIR SUM_Filt -60 -70 0 1 www.cypress.com 10 100 Hz 1000 10000 100000 1000 100 10 1 PGA Noise Net TC Noise 0.1 0.01 0 1 10 100 Hz 1000 10000 100000 The very low frequency noise is reduced by a factor of 100. The offset drift, dependent on the rate of change of the die temperature, is reduced to near zero. The integrated total noise voltage is approximately 3 mV RMS. This is adequate to make the worst case noise sufficient for resolution of thermocouple temperature down to one quarter of a degree Celsius. Project The PSoC project was built on a PSoC Eval 1 board using CY8C27443. The project is limited to measuring both terminals of a "simulated thermocouple," each respective to ground (Vss), then shipping the data to the onboard LCD and through UART to a PC terminal program. The output is in counts of a 14 bit converter, resulting in 3.4 µV per bit equivalent to 0.083 degrees per bit. Thermocouples are approximately linear. This project does not include linearization, and does not include conversion from counts to degrees. It also does not include scale compensation using measurement of a calibrated reference source. The simulated thermocouple is a resistive divider from Vdd to the offset reference. The voltage across the simulated thermocouple is measured as 44 mV average with 2 mV of "flicker" using an Agilent 34410 DMM with 1.0 µV resolution. The block layout is shown in Figure 11. It can be implemented in any PSoC with continuous time and switched capacitor blocks: CY8C24x23, CY8C24x94, CY8C27x43, or CY8C29x66. It cannot be implemented in CY8C21xxx or CY8C20xxx. Document No. 001-45198 Rev. *H 4 ® PSoC 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise The Tx8 is used only to transfer data to the terminal program of the PC; if the Tx8 is not used (data shipped through I2C or USB), then the project fits in CY8C24x23 or CY8C24x94. Connections Table 1. Pin Connections Signal Figure 11. CDS PSoC Block and Connection Layout Pin Thermocouple input high side P0[1] (AMUX4_1(0)) Thermocouple input low side P0[3] (AMUX4_1(1)) TX8 P1[2] LCD Port 2 To understand how to make these connections, refer to the application note AN2094 - PSoC 1 - Getting Started with GPIO. Results The data is captured to a text file through a 9600 baud UART with an RS232 connection. Eight seconds of data is captured at 60 samples per second, totaling about 480 samples. The data analysis and plotting is done with Microsoft Excel. Code The associated example project streams the data to the LCD in hex integer form and the data to the UART in floating point. The code is written in C. The IIR filter on the correlated double sample difference uses 1/16 times the new data plus 15/16 times the last output data: 1 V VRESULT [n] = VRESULT [n − 1] * 1 − + DIFF Equation 9 16 16 Multiplications are executed much faster in the PSoC than divisions, so the equation is rewritten: The output data is in counts of the 14 bit ADC. One bit represents 3.4 µV. The average reference output is 2470 counts. When the PGA gain is 46.5 (from nominal gain of 48) and 14 bit ADC using 2.6 V full scale, this average reference voltage is 7.5 mV. This is a reasonable level, offset from the designed 15 mV compensation voltage by the PGA's input offset voltage. The raw thermocouple data is first evaluated by subtracting the AVERAGE reference voltage from the TC reading. Figure 12. Raw Thermocouple Data Raw Measured - Average Ref 20 19 18 17 16 15 14 13 12 1 VRESULT [n] = (VRESULT [n − 1] − VDIFF ) * 1 − + VDIFF 16 Equation 10 11 10 9 8 7 6 The calculations are executed in floating point to display the simplicity of the algorithms. Conversion to fixed point involves fractional arithmetic to avoid truncation errors. Using a coefficient that is a power of two (e.g., 1/4, 1/8, or 1/16) results in very simple calculations, thus an implementation in assembler is easily done. www.cypress.com Meas-Avg(Ref) The peak to peak noise is 12 counts, or roughly one degree C. This can be averaged with an IIR filter (coefficient 1/16) to reduce the noise. Document No. 001-45198 Rev. *H 5 ® PSoC 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise Figure 13. Filtered Thermocouple Data Compared to the filtered CDS data to the filtered raw data, the performance improvement of the CDS technique is obvious. The standard deviation of the noise is reduced from 7.6 µV to 0.66 µV. When the bandwidth of the IIR filter is reduced, it results in the corresponding reduction of standard deviation of the noise. This indicates that the noise is broadband compared to the IIR filter bandwidth. Raw Measured, Filtered Raw 20 19 18 17 16 15 14 13 12 11 System Errors 10 9 8 For the specific example of a thermocouple, errors (not just noises) can accumulate from the PGA, the ADC, and the sensor itself. Meas-Avg(Ref) 7 Filt(Meas-Avg(Ref)) 6 This reduces the peak-to-peak noise to four counts. Even at this filtered level, a general negative drift is seen. There is no guarantee that the offset measured at the start of the scan is the correct value in the long run. Correlated double sampling takes the difference between the measured value and the reference at every sample. This removes the offset voltage of the amplifier and much of the low frequency and the peak-to-peak variation. Figure 14. Correlated Double Sample on TC Data PGA Gain Accuracy The PGA has a gain of the form of: G PGA = 1 + CDS 20 Type K (and all other) thermocouples are slightly nonlinear, deviating from the nominal by about one quarter of a degree over a 50 °C range. Correcting this curvature is a matter of more algebra in the code, a spline fit in the code, or the use of a lookup table. Examples of linearization are contained in AN75511. 19 18 17 16 Equation 11 R2 and R1 are large value resistors, selected by a multiplex tap from a single tapped string. Including contributions from the open loop gain and switches, the gain is: 15 14 13 12 11 10 9 8 7 R2 R1 CDS 6 Comparison the unfiltered CDS data in Figure 14 with the raw data of Figure 12 shows that peak to peak range of the signal is reduced. The raw data is characterized by large low frequency jumps, which do not appear in the CDS data. This means that the dominant low frequency the noise is common to the reference and signal terminals. Overlaying the averaged CDS data (averaged with the same 1/16 coefficient filter used on raw data in Figure 13) shows a measurement with about 1.2 counts peak-to-peak noise. Figure 15. Thermocouple Output with CDS Compensation CDS Comparison 20 19 18 17 G PGA R + RSWU 1+ 2 R1 + RSWL = 1 + 1 1 + R2 + RSWU A R1 + RSWL Equation 12 RSWU represents the resistance of the switch between the opamp output and the upper end of R2. RSWL represents the resistance of the switch between the lower end of R1 and ground. This is detailed in the block schematic in the PSoC Technical Reference Manual. A is the open loop gain of the opamp in the PGA. The total resistance (sum of R1 and R2) is fixed. For a nominal gain of 48, the value of R1 is the unit value, approximately 15 kΩ. The value of R2 is 47 times the unit value, total of 705 kΩ. If the switches were ideal and open loop gain infinite, the gain would be: 16 15 G PGA = 1 + 14 13 12 11 47 *15k = 48 1 *15k Equation 13 10 9 8 CDS 7 Filt(CDS) 6 www.cypress.com Document No. 001-45198 Rev. *H 6 ® PSoC 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise Tolerance matching on these resistors is approximately 0.5 percent. As a practical matter, the switches do not have zero resistance; their value is about 300 Ω at Vdd = 5.0 V and 450 Ω at 3.3 V. The nominal output of the PGA is 40.7 µV*46.5 = 1.908 mV/°C. The PGA has a further gain inaccuracy as a function of output signal level. The resistance of the lower switch (RSWL) is quite constant. The resistance of the upper switch (RSWU) however varies with the signal level and can add as much as 0.6% nonlinearity when the opamp output is near Vdd -1.0 V. This problem can be limited to 0.1% of reading if the opamp output is kept below 3.0 V. For the scale factor of 1.9 mV/°C, this means that this error is small as long as the temperature to be measured with the type K thermocouple is less than 1600 °C. This provides adequate margin for accurate measurements even for most furnaces. The DC open loop gain of the opamp is finite (typically equal to 10000 in PSoC). The opamp contributes 0.47% to the total error at guaranteed minimum gain of 10000. The expected maximum gain for a "typical" PSoC opamp is 100000, reducing the opamp-induced gain reduction to 0.047% percent. The mean gain is calculated as 46.8, or 2.3 percent below the nominal of 48.0. It is accurate to describe the PGA (nominal gain 48) as Gain = of 46.8 ±1.8% at Vdd = 5.0 V. This tolerance accounts for variations due to internal component matching and opamp gain to a three sigma limit. ADC Gain Accuracy The PGA uses up part of the error budget. The ADC is a lot worse. The ADCINC14 accuracy specification (and all other ADCs) is ±3% on the internal reference. Of this error, 0.1% is from the ADC, the dominant portion is from the reference. Using an external signal for analog ground and reference reduces this slightly, but there are still offset and gain errors in the reference block. The solution to gain error in ADC and PGA problems is calibration: add an external reference source. Figure 16. Thermocouple Scale Compensation Vdd (5.0V) 49.9 kΩ LM4140A 1.2V+/-0.1% (+15 mV) 121 kΩ 0.1% 412 Ω 0.1% Type K The LM4140A provides a 1.2 V ±1% reference above the offset point. The resistive divider provides a 4.07 mV reference above the offset point. This is equal to a 100 °C calibration point. The scale reference point, offset point, and thermocouple output can be measured sequentially. The scale is 100 degrees over the difference between the reference point and the offset point. Correlated double sampling on the scale along with the input removes any noise on the reference. The calibration is now as accurate as the external semiconductor reference and the resistors selected. Note that error in scale is a function of reading. Therefore, at reduced temperatures such as room temperature range, the scale error is less than that at full scale calibration point (100 °C). Two point calibration can be implemented by dividing the 121 kΩ resistor to provide a second calibration point. The cost of the LM4140A and the precision resistors is about $1 from Digikey. More precision is possible with more expensive precision resistors. The money is worth spending until the scale factor no longer dominates the error budget. Reference Temperature The last problem is measurement and of cold junction temperature. This can be done by embedding the connections for the thermocouple terminals in a thermally isolated block with a measurement thermistor. Reference temperature accuracies of better than 0.5 °C can be achieved using the methods detailed in AN2017. Better resistor tolerance and more precise calculation methods may yield slightly lower error. Caveats Sufficient resources are available in CY8C27x43 or CY8C29x66 to implement thermocouple and reference junction measurements simultaneously. In CY8C24x23, with half of the analog block count, the PGA must be reconfigured and analog mux bus connections must be reconnected to make the reference measurement. This is easy to do with dynamic reconfiguration. The project can be implemented in CY8C24x23 if the ADC is switched to a 13 bit version, ADCINCVR. CY8C24x23 has a PGA offset voltage induced by a known problem in the Vss routing of the reference block. It results in an additional PGA offset voltage of up to 7.5 mV, depending on reference block power setting. This is automatically compensated through the correlated double sample, but the voltage must be accommodated by raising the offset reference point by 7.5 mV. ADCINC14 75 Ω www.cypress.com Document No. 001-45198 Rev. *H 7 ® PSoC 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise Summary AN2276 - Binary Weighted Single-Pole IIR Low-Pass Filters in PSoC® 1 A straightforward method of implementing a Type K thermocouple measurement using correlated doubling sampling in PSoC 1 is outlined. AN2099 - PSoC® 1, PSoC 3, and PSoC 5 - SinglePole Infinite Impulse Response (IIR) Filters Scale adjustments necessary to accommodate the ±4% error from PGA gain and ADC range are not demonstrated but are simple to implement. Compensation for reference lead temperature using a thermistor is straightforward. AN66444 - PSoC® 3 and PSoC 5 Correlated Double Sampling The signal processing techniques used to extract the TC data from offset and 1/f noise are simple, proven, and applicable to any DC or low frequency sensor, whether single-ended or differential. About the Author Related Application Notes Name: Dennis Seguine Title: Member of Technical Staff Cypress Semiconductor Contact: [email protected] ® AN2017 - PSoC 1 Thermistor-Based Thermometer AN2224 - PSoC® 1 - Lower Noise Continuous Time Signal Processing www.cypress.com Document No. 001-45198 Rev. *H 8 ® PSoC 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise Document History Document Title: AN2226 - PSoC® 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise Document Number: 001-45198 Revision ECN Orig. of Change Submission Date Description of Change ** 2274691 SHEA/PYRS 04/06/2008 New application note. *A 2631863 YARA/PYRS 01/20/2009 Corrected Figure 7. *B 2718255 FKL 06/12/2009 Included ‘Thermocouple Measurement’ in title and updated software version. *C 3176918 SEG 02/18/2011 Updated title and abstract, moved code to example project. *D 3358004 SEG 09/08/2011 Updated title, corrected schematic error. *E 3665985 SEG 09/12/2012 Re-ordered, clarified text for linearity. *F 4074369 AMKA 07/22/2013 Provided pin connection details. *G 4356059 SEG 04/23/2014 Sunset update *H 4736111 DIMA 04/22/2015 Updated Software Version as “PSoC Designer™ 5.4 SP1” in page 1. Updated template. ® Updated attached Associated Project to PSoC Designer 5.4 SP1. Completing Sunset Review. www.cypress.com Document No. 001-45198 Rev. *H 9 ® PSoC 1 - Using Correlated Double Sampling to Reduce Offset, Drift, and Low Frequency Noise Worldwide Sales and Design Support Cypress maintains a worldwide network of offices, solution centers, manufacturer’s representatives, and distributors. To find the office closest to you, visit us at Cypress Locations. PSoC® Solutions Products Automotive cypress.com/go/automotive psoc.cypress.com/solutions Clocks & Buffers cypress.com/go/clocks PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP Interface cypress.com/go/interface Lighting & Power Control cypress.com/go/powerpsoc cypress.com/go/plc Memory cypress.com/go/memory PSoC cypress.com/go/psoc Touch Sensing cypress.com/go/touch USB Controllers cypress.com/go/usb Wireless/RF cypress.com/go/wireless Cypress Developer Community Community | Forums | Blogs | Video | Training Technical Support cypress.com/go/support PSoC is a registered trademark of Cypress Semiconductor Corp. "Programmable System-on-Chip" and PSoC Designer are trademarks of Cypress Semiconductor Corp. All other trademarks or registered trademarks referenced herein are the property of their respective owners. Cypress Semiconductor 198 Champion Court San Jose, CA 95134-1709 Phone Fax Website : 408-943-2600 : 408-943-4730 : www.cypress.com © Cypress Semiconductor Corporation, 2008-2015. The information contained herein is subject to change without notice. Cypress Semiconductor Corporation assumes no responsibility for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any license under patent or other rights. Cypress products are not warranted nor intended to be used for medical, life support, life saving, critical control or safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges. This Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide patent protection (United States and foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works of, and compile the Cypress Source Code and derivative works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with a Cypress integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source Code except as specified above is prohibited without the express written permission of Cypress. Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the right to make changes without further notice to the materials described herein. Cypress does not assume any liability arising out of the application or use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges. Use may be limited by and subject to the applicable Cypress software license agreement. www.cypress.com Document No. 001-45198 Rev. *H 10