Texas Instruments | Understanding Low-Amplitude Behavior of 11-bit ADCs | Application notes | Texas Instruments Understanding Low-Amplitude Behavior of 11-bit ADCs Application notes

Texas Instruments Understanding Low-Amplitude Behavior of 11-bit ADCs Application notes
Application Report
SBOA133 – October 2011
Understanding Low-Amplitude Behavior of 11-bit ADCs
Sourabh Gupta and Vinod Paliakara ........................................................................ High-Speed Products
ABSTRACT
In TI’s line of high-speed analog-to-digital converters (ADCs) with SNRBoost technology, output amplitude
tends to deviate from its expected value when the applied input amplitude is small. This application note
explains this phenomenon and the reasons it occurs.
1
2
3
4
5
Contents
Introduction .................................................................................................................. 2
Single-Tone Input Signal ................................................................................................... 4
Multi-Tone Input Signal ..................................................................................................... 8
Example: When Thermal Noise Dominates the Quantization Error ................................................ 10
Conclusion .................................................................................................................. 11
List of Figures
1
Time Domain Graph for VIN = –1 dBFS .................................................................................. 2
2
Spectrum Graph for VIN = –1 dBFS ....................................................................................... 2
3
Time Domain Graph for Small Input Amplitude, VIN = –61 dBFS ..................................................... 3
4
Spectrum Graph for Small Input Amplitude, VIN = –61 dBFS
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
......................................................... 3
Input Amplitude Swept from 0 dBFS to –80 dBFS ..................................................................... 3
Input Amplitude Swept from 50 dBFS to –80 dBFS (Enlarged) ...................................................... 3
ADC Model ................................................................................................................... 4
Analog Input VIN and ADC Output VOUT for –1-dBFS Input Amplitude ............................................... 4
Quantization Error for –1-dBFS Input Amplitude ....................................................................... 4
Spectrum Graph: ADC Output for –1-dBFS Input Amplitude ......................................................... 5
Spectrum Graph: Quantization Error for –1-dBFS Input Amplitude .................................................. 5
Analog Input and Quantized Output for –61-dBFS Input Amplitude ................................................. 6
Quantization Error for –61-dBFS Input Amplitude ...................................................................... 6
Spectrum Graph: ADC Output for –61-dBFS Input Amplitude ........................................................ 6
Spectrum Graph: Quantization Error for –61-dBFS Input Amplitude................................................. 6
Amplitude Plot of Quantization Error ..................................................................................... 7
Phase Plot of Quantization Error.......................................................................................... 7
ADC Output Spectrum for 16-Tone Input Signal with –61 dBFS Total Power ...................................... 8
Quantization Error Spectrum for 16-Tone Input Signal with –61 dBFS Total Power .............................. 9
Output Amplitude for Single-Tone and Multi-Tone Input Signals ..................................................... 9
Time Domain Waveform: Analog Input and Quantized Output for –61-dBFS Input Amplitude ................. 10
Time Domain Waveform: Quantization Error for –61-dBFS Input Amplitude ...................................... 10
Spectrum Graph: ADC Output for –61-dBFS Input Amplitude ...................................................... 10
Spectrum Graph: Quantization Error for –61-dBFS Input Amplitude ............................................... 10
MATLAB is a registered trademark of The MathWorks, Inc..
All other trademarks are the property of their respective owners.
SBOA133 – October 2011
Submit Documentation Feedback
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
1
Introduction
1
www.ti.com
Introduction
Traditionally, signal-to-noise ratio (SNR) in an ADC is limited by its thermal noise. The N-bit quantization
error in an ADC is kept much lower compared to the thermal noise, so that overall SNR is not limited by
quantization error.
However, in the case of ADCs with SNRBoost technology (such as the ADS62C15, ADS62C17,
ADS58C28, ADS58C48, and ADS58C20), the thermal noise component is kept much better than the N-bit
quantization error. For example, in the ADS62C17, the thermal noise component of SNR is approximately
–76 dBFS, while its quantization error component is approximately –67.8 dBFS.
This noise partitioning results in one side effect: it is observed that at lower input signal amplitudes, the
actual output amplitude includes a large degree of error (typically 10%). Refer to the two cases shown by
Figure 1 through Figure 4.
In Figure 1 and Figure 2, the input signal amplitude is 1.78 VPP (or –1 dBFS), and the output amplitude
(reported by the FFT of the ADC output) is also quite close (–1.03 dBFS).
2000
0
1800
fS = 200 MSPS
IF = 20 MHz
Fundamental Amplitude = -1 dBFS
−20
1600
Amplitude (dBFS)
1400
1200
Codes
ADC Output (VOUT) Spectrum
VOUT
VIN
1000
800
−40
−60
−80
600
400
−100
200
0
−120
1000
2000
3000
4000
5000
Sample
6000
7000
Figure 1. Time Domain Graph for VIN = –1 dBFS
8000
0
20
40
60
Frequency (MHz)
80
100
Figure 2. Spectrum Graph for VIN = –1 dBFS
In this case, VOUT, output amplitude is –1 dBFS and predicts input accurately.
2
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
SBOA133 – October 2011
Submit Documentation Feedback
Introduction
www.ti.com
In Figure 3 and Figure 4, the input signal amplitude is reduced by a factor 1000 to 1.78 mVPP (or
–61 dBFS). Now, the output amplitude from the FFT reports –59.8 dBFS, or an error of 1.2 dB (close to
10% error).
1026
0
ADC Output (VOUT) Spectrum
VOUT
VIN
1025.5
fS = 200 MSPS
IF = 20 MHz
Fundamental Amplitude = -59.8 dBFS
−20
1025
−40
Amplitude (dBFS)
Codes
1024.5
1024
1023.5
−60
−80
1023
−100
1022.5
1022
1000
2000
3000
4000
5000
Samples
6000
7000
8000
Figure 3. Time Domain Graph for Small Input
Amplitude, VIN = –61 dBFS
−120
0
20
40
60
Frequency (MHz)
80
100
Figure 4. Spectrum Graph for Small Input Amplitude,
VIN = –61 dBFS
Here, VOUT, output amplitude is –59.8 dBFS and overestimates the input by 1.2 dB.
To understand this effect better, let us sweep the input amplitude from full-scale down to very small
amplitudes and note the output amplitude result (reported by the FFT). Figure 5 and Figure 6 show the
summary of this experiment for an 11-bit ADC.
0
-40
-50
Output Amplitude (dBFS)
Output Amplitude (dBFS)
-20
-40
-60
-80
-100
-120
Output Amplitude, dBFS: Expected
Output Amplitude, dBFS: Actual
-60
-70
-80
-90
-100
-110
-120
Output Amplitude, dBFS: Expected
Output Amplitude, dBFS: Actual
-130
-140
-140
-80
-70
-60
-50
-40
-30
-20
-10
0
-80
Input Amplitude (dBFS)
Figure 5. Input Amplitude Swept from 0 dBFS to
–80 dBFS
-75
-70
-65
-60
-55
-50
Input Amplitude (dBFS)
Figure 6. Input Amplitude Swept from 50 dBFS to
–80 dBFS (Enlarged)
We can clearly see that at amplitudes less than approximately –50 dBFS, the error becomes significant.
SBOA133 – October 2011
Submit Documentation Feedback
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
3
Single-Tone Input Signal
1.1
www.ti.com
Explanation of This Effect
To understand the cause of this behavior, it is helpful to start with a model of the ADC that includes the
thermal noise and quantization error.
Analog Input, VIN(t)
Quantized Output, VOUT
VOUT(t) = VIN(t) + QERROR(t)
Thermal
Noise
Quantizer
Figure 7. ADC Model
The model shows that the ADC output data are a quantized representation of the analog input that
includes the quantization error. Using this model, we can explain the behavior with large and small input
signals.
First, we will consider an analysis with a single-tone input signal before moving to a scenario with
multi-tone or wideband input signals.
2
Single-Tone Input Signal
2.1
Single-Tone Large Input Signal Amplitude
The time domain waveforms of Figure 8 and Figure 9 show the ADC output and quantization error (or
Q-error) signals for large input amplitude (–1 dBFS measured as an example). Note that the Q-error
waveform appears random and does not show any component of the input signal. The quantization error
is presumed to have a uniform probability distribution; this condition is also the basis for the classic,
quantization error-limited SNR formula given by Equation 1.
SNR = 6 ● n + 1.76 (n= number of bits)
(1)
2000
0.8
VOUT
VIN
1800
Quantization Error
0.6
1600
0.4
1400
0.2
Codes
Codes
1200
1000
800
0
−0.2
600
−0.4
400
−0.6
200
0
1000
2000
3000
4000
5000
Samples
6000
7000
8000
Figure 8. Analog Input VIN and ADC Output VOUT for
–1-dBFS Input Amplitude
4
−0.8
1000
2000
3000
4000
5000
Samples
6000
7000
8000
Figure 9. Quantization Error for –1-dBFS Input
Amplitude
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
SBOA133 – October 2011
Submit Documentation Feedback
Single-Tone Input Signal
www.ti.com
Figure 10 and Figure 11 show the spectrum of the ADC output and the Q-error, respectively. As expected
from the time domain waveforms, the spectrum of the quantization error does not have any tones related
to the input signal frequency; in other words, the energy of the Q-error is spread over the entire spectrum.
0
fS = 200 MSPS
IF = 20 MHz
Fundamental Amplitude = -1 dBFS
−20
−40
−60
−60
−80
−100
−100
0
20
40
60
Frequency (MHz)
80
fS = 200 MSPS
IF = 20 MHz
Fundamental Amplitude = -113.8 dBFS
−40
−80
−120
Quantization Error Spectrum
−20
Amplitude (dBFS)
Amplitude (dBFS)
0
ADC Output (VOUT) Spectrum
100
Figure 10. Spectrum Graph: ADC Output for –1-dBFS
Input Amplitude
−120
0
20
40
60
Frequency (MHz)
80
100
Figure 11. Spectrum Graph: Quantization Error for
–1-dBFS Input Amplitude
In the spectrum of the output signal (Figure 10), the input signal frequency component can be seen well
above the noise floor. Therefore, the amplitude of the input signal (as reported by the height of the tone in
the spectrum) is largely unaffected by the Q-error.
In the frequency domain, Equation 2 is valid:
VOUT(f) = VIN(f) + QERROR(f)
(2)
Where:
• VOUT(f) represents the power of the tone at frequency f in the spectrum
• VIN(f) represents the ideal (or expected) power of the tone at frequency f in the spectrum
• QERROR(f) represents the power of the quantization error at frequency f in the spectrum
As | QERROR(f) | << VIN(f), then, VOUT(f) becomes nearly equivalent to VIN(f).
SBOA133 – October 2011
Submit Documentation Feedback
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
5
Single-Tone Input Signal
2.2
www.ti.com
Single-Tone Small Input Signal Amplitude
Figure 12 and Figure 13 show the time domain waveforms of the ADC output and Q-error for small input
signal amplitudes. Compared to the previous case, the error no longer appears random and shows a
strong dependence on the input signal.
1026
1
VOUT
VIN
1025.5
Quantization Error
0.8
0.6
1025
0.4
0.2
Codes
Codes
1024.5
1024
0
−0.2
1023.5
−0.4
1023
−0.6
1022.5
−0.8
1022
1000
2000
3000
4000
5000
Samples
6000
7000
−1
8000
1000
2000
3000
4000
5000
Samples
6000
7000
8000
Figure 13. Quantization Error for –61-dBFS Input
Amplitude
Figure 12. Analog Input and Quantized Output for
–61-dBFS Input Amplitude
In this case, the spectrum of the Q-error (Figure 15) clearly shows the fundamental as well harmonics of
the input signal.
0
fS = 200 MSPS
IF = 20 MHz
Fundamental Amplitude = -59.8 dBFS
−20
−40
−60
−60
−80
−100
−100
0
20
40
60
Frequency (MHz)
80
100
Figure 14. Spectrum Graph: ADC Output for –61-dBFS
Input Amplitude
fS = 200 MSPS
IF = 20 MHz
Fundamental Amplitude = -77.7 dBFS
−40
−80
−120
Quantization Error Spectrum
−20
Ampitudel(dBFS)
Amplitude (dBFS)
0
ADC Output (VOUT) Spectrum
−120
0
20
40
60
Frequency (MHz)
80
100
Figure 15. Spectrum Graph: Quantization Error for
–61-dBFS Input Amplitude
We find that the Q-error component at the fundamental frequency is significant (–77.7 dBFS) and can alter
the ADC output from its expected value of –61 dBFS.
6
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
SBOA133 – October 2011
Submit Documentation Feedback
Single-Tone Input Signal
www.ti.com
Using Equation 2 and noting that the power of the output signal is a vector sum of the input signal and
Q-error, we can see that the output signal power depends on the magnitude and phase of the quantization
error as well.
Using a simple MATLAB® model, we then plot the amplitude and phase of the Q-error at the fundamental
frequency. Figure 16 shows the ideal (or expected) output signal power (dashed black trace) and the
actual ADC output power (red trace).
-40
-50
Amplitude (dBFS)
-60
-70
-80
-90
-100
-110
Quantization Error
Actual Output Amplitude
Linear Output Amplitude
-120
-130
-80
-75
-70
-65
-60
-55
-50
-45
-40
Input Amplitude (dBFS)
Figure 16. Amplitude Plot of Quantization Error
We can now see that (depending on the phase of the Q-error as shown in Figure 17), the output power is
either under- or overestimated. This miscalculation explains the reason for inaccuracy of the output
amplitude for small input signals.
220
Quantization Error
180
Phase (degrees)
140
100
60
20
-20
-60
-100
ADC Input
-140
-180
-220
-80
-75
-70
-65
-60
-55
-50
-45
-40
Input Amplitude (dBFS)
Figure 17. Phase Plot of Quantization Error
SBOA133 – October 2011
Submit Documentation Feedback
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
7
Multi-Tone Input Signal
3
www.ti.com
Multi-Tone Input Signal
Most real-world systems employ some form of multi-tone or a band of signals rather than a single tone. A
single-tone signal is frequently employed during lab testing of ADCs because it is easy to understand and
analyze ADC non-ideality effects with this type of signal.
It can be observed that in the case of a multi-tone signal applied to an ADC, the accuracy problem at low
input signal amplitude is not seen. In fact, the output amplitude (from the FFT) closely matches the input
signal amplitude.
In our model, we applied a signal with 16 tones equally spaced by 200 kHz (to mimic a multi-carrier GSM
signal) with a total input power of –61 dBFS to the ADC (spectrum graph shown in Figure 18).
0
ADC Output (VOUT) Spectrum
fS = 200 MSPS
16-tone Input Signal at 20 MHz with 200-kHz Spacing
Output Signal Power = -61 dBFS
−20
Ampitude (dBFS)
−40
−60
−80
−100
−120
0
10
20
30
40
50
60
Frequency (MHz)
70
80
90
100
Figure 18. ADC Output Spectrum for 16-Tone Input Signal with –61 dBFS Total Power
8
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
SBOA133 – October 2011
Submit Documentation Feedback
Multi-Tone Input Signal
www.ti.com
As a result of the multi-tone nature of the signal, the energy of the quantization error is spread across the
entire spectrum, and no specific tones are observed (Figure 19).
0
Quantization Error Spectrum
fS = 200 MSPS
16-tone Input Signal at 20 MHz with 200-kHz Spacing
Quantization Error at Tone Frequency = -89.2 dBFS
−20
Amplitude (dBFS)
−40
−60
−80
−100
−120
0
10
20
30
40
50
60
Frequency (MHz)
70
80
90
100
Figure 19. Quantization Error Spectrum for 16-Tone Input Signal with –61 dBFS Total Power
Figure 20 shows the result of sweeping the input signal amplitude and the expected versus actual values
of the output power. It clearly shows that the output power tracks the input signal even down to very small
power levels.
Output Amplitude (dBFS)
-40
-50
-60
-70
-80
Ideal Output Power
(Same as Input Power)
Output Power GSM 16 Tones
Output Power Single Tone
-90
-100
-80
-75
-70
-65
-60
-55
-50
-45
-40
Input Amplitude (dBFS)
Figure 20. Output Amplitude for Single-Tone and Multi-Tone Input Signals
In summary, then, real-world systems that employ wideband signals do not face any limitations because of
this effect.
SBOA133 – October 2011
Submit Documentation Feedback
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
9
Example: When Thermal Noise Dominates the Quantization Error
4
www.ti.com
Example: When Thermal Noise Dominates the Quantization Error
What happens in the case of traditional ADCs where the thermal noise is the dominant source
compared to the quantization error?
Consider an 11-bit ADC with thermal noise of –64 dBFS as an example. Figure 21 through Figure 24
show how Q-error appears in the time domain in this case.
Compared to Figure 12 and Figure 13, the Q-error seems to be more random and shows less dependence
on the input signal frequency. This effect is also shown by the spectrum of the Q-error in Figure 23; the
energy is spread over the entire spectrum and no tones are seen. Therefore, in this case, the output
amplitude (from the FFT) is quite close to the input amplitude.
1028
2
VOUT
VIN
1027
Quantization Error
1.5
1
1026
0.5
Codes
Codes
1025
1024
0
−0.5
1023
−1
1022
−1.5
1021
1020
−2
1000
2000
3000
4000
5000
Samples
6000
7000
−2.5
8000
1000
2000
3000
4000
5000
Samples
6000
7000
8000
Figure 21. Time Domain Waveform: Analog Input and Figure 22. Time Domain Waveform: Quantization Error
Quantized Output for –61-dBFS Input Amplitude
for –61-dBFS Input Amplitude
0
fS = 200 MSPS
IF = 200 MHz
Fundamental Amplitude = -61 dBFS
−20
−40
−60
−100
−100
20
40
60
Frequency (MHz)
80
100
Figure 23. Spectrum Graph: ADC Output for –61-dBFS
Input Amplitude
10
−60
−80
0
fS = 200 MSPS
IF = 200 MHz
Fundamental Amplitude = -105.6 dBFS
−40
−80
−120
Quantization Error Spectrum
−20
Amplitude (dBFS)
Amplitude (dBFS)
0
ADC Output (VOUT) Spectrum
−120
0
20
40
60
Frequency (MHz)
80
100
Figure 24. Spectrum Graph: Quantization Error for
–61-dBFS Input Amplitude
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
SBOA133 – October 2011
Submit Documentation Feedback
Conclusion
www.ti.com
5
Conclusion
In this application note, we have explained the behavior of an ADC when its thermal noise is much better
compared to its quantization error; at small input signal levels of a single-tone input, the output amplitude
as reported by a FFT analysis has a large error component.
Using a simple model, we then explained the cause of this error in output amplitude for low input signal
levels. We noted that the quantization error is very different at large and small signal levels. At large signal
levels, the error signal is random (that is, no tones are seen in the spectrum), whereas at small signal
levels, the error spectrum clearly shows tones at the fundamental frequency of the input signal and its
harmonics.
Next, we showed that in the case of a multi-tone input (or a band of signals), the issue is not seen: the
output amplitude matches the input amplitude even at very low input power.
We conclude that although this behavior is characteristic of single-tone input signals (and is important for
designers and application engineers to understand), most real-world systems that use a band of signals
are not limited by this effect.
SBOA133 – October 2011
Submit Documentation Feedback
Understanding Low-Amplitude Behavior of 11-bit ADCs
Copyright © 2011, Texas Instruments Incorporated
11
IMPORTANT NOTICE
Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements, improvements,
and other changes to its products and services at any time and to discontinue any product or service without notice. Customers should
obtain the latest relevant information before placing orders and should verify that such information is current and complete. All products are
sold subject to TI’s terms and conditions of sale supplied at the time of order acknowledgment.
TI warrants performance of its hardware products to the specifications applicable at the time of sale in accordance with TI’s standard
warranty. Testing and other quality control techniques are used to the extent TI deems necessary to support this warranty. Except where
mandated by government requirements, testing of all parameters of each product is not necessarily performed.
TI assumes no liability for applications assistance or customer product design. Customers are responsible for their products and
applications using TI components. To minimize the risks associated with customer products and applications, customers should provide
adequate design and operating safeguards.
TI does not warrant or represent that any license, either express or implied, is granted under any TI patent right, copyright, mask work right,
or other TI intellectual property right relating to any combination, machine, or process in which TI products or services are used. Information
published by TI regarding third-party products or services does not constitute a license from TI to use such products or services or a
warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual
property of the third party, or a license from TI under the patents or other intellectual property of TI.
Reproduction of TI information in TI data books or data sheets is permissible only if reproduction is without alteration and is accompanied
by all associated warranties, conditions, limitations, and notices. Reproduction of this information with alteration is an unfair and deceptive
business practice. TI is not responsible or liable for such altered documentation. Information of third parties may be subject to additional
restrictions.
Resale of TI products or services with statements different from or beyond the parameters stated by TI for that product or service voids all
express and any implied warranties for the associated TI product or service and is an unfair and deceptive business practice. TI is not
responsible or liable for any such statements.
TI products are not authorized for use in safety-critical applications (such as life support) where a failure of the TI product would reasonably
be expected to cause severe personal injury or death, unless officers of the parties have executed an agreement specifically governing
such use. Buyers represent that they have all necessary expertise in the safety and regulatory ramifications of their applications, and
acknowledge and agree that they are solely responsible for all legal, regulatory and safety-related requirements concerning their products
and any use of TI products in such safety-critical applications, notwithstanding any applications-related information or support that may be
provided by TI. Further, Buyers must fully indemnify TI and its representatives against any damages arising out of the use of TI products in
such safety-critical applications.
TI products are neither designed nor intended for use in military/aerospace applications or environments unless the TI products are
specifically designated by TI as military-grade or "enhanced plastic." Only products designated by TI as military-grade meet military
specifications. Buyers acknowledge and agree that any such use of TI products which TI has not designated as military-grade is solely at
the Buyer's risk, and that they are solely responsible for compliance with all legal and regulatory requirements in connection with such use.
TI products are neither designed nor intended for use in automotive applications or environments unless the specific TI products are
designated by TI as compliant with ISO/TS 16949 requirements. Buyers acknowledge and agree that, if they use any non-designated
products in automotive applications, TI will not be responsible for any failure to meet such requirements.
Following are URLs where you can obtain information on other Texas Instruments products and application solutions:
Products
Applications
Audio
www.ti.com/audio
Communications and Telecom www.ti.com/communications
Amplifiers
amplifier.ti.com
Computers and Peripherals
www.ti.com/computers
Data Converters
dataconverter.ti.com
Consumer Electronics
www.ti.com/consumer-apps
DLP® Products
www.dlp.com
Energy and Lighting
www.ti.com/energy
DSP
dsp.ti.com
Industrial
www.ti.com/industrial
Clocks and Timers
www.ti.com/clocks
Medical
www.ti.com/medical
Interface
interface.ti.com
Security
www.ti.com/security
Logic
logic.ti.com
Space, Avionics and Defense
www.ti.com/space-avionics-defense
Power Mgmt
power.ti.com
Transportation and Automotive www.ti.com/automotive
Microcontrollers
microcontroller.ti.com
Video and Imaging
RFID
www.ti-rfid.com
OMAP Mobile Processors
www.ti.com/omap
Wireless Connectivity
www.ti.com/wirelessconnectivity
TI E2E Community Home Page
www.ti.com/video
e2e.ti.com
Mailing Address: Texas Instruments, Post Office Box 655303, Dallas, Texas 75265
Copyright © 2011, Texas Instruments Incorporated
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising