Electronics notes/Signal modulation
Most broadly, pulse modulation refers to modulating or communicating or approximating a signal in a way involving pulse trains.
Note also that PAM resembles AM, PPM resembles PM, and PWM (moderately) resembles FM.
(Also, some of these parts run into analog and digital (passband) modulation, and for decent handling of said topics you're much better off on serious sites for those.)
Purposes and best uses are varied.
Side note: Pulse Code Modulation
Pulse-Code Modulation refers more widely to the idea of samples at at regular (uniform) intervals, and storing them as distinct values.
It points out that we are quantizing in both time and in amplitude. It tells us how to store that, and what it represents.
- ...and is not a reproduction technique, like most other acronyms mentioned on this page. (reproduction was a separate thing even in the earliest development of these concepts)
Variants include:
PCM (without further qualification) usually means linear PCM
- quantization levels are linearly uniform (so ratiometric) with amplitude
- PCM is technically about any signal, but practically often about audio
- ...in which case that amplitude is a physical amplitude, the pressure (so not with perceived loudness -- see decibel)
- used for sound, it means most of the bits are used on really quiet stuff (because human perception is logarithmic).
- which is actually quite useful (for human consumption of audio)
- because 8 bits isn't enough range to have the quietest bits be all that quiet, 8-bit PCM is audibly not enough for sound, and 16-bit is (for most things)
- probably easiest raw format to deal with (particularly when storage/bandwidth are not an issue)
- Directly used in Audio CDs (Red Book), in WAV files, and quite a few others.
- Also used in some way or other in a number sound- or music-related electronics, although note that mu-law and a-law are seen in some older hardware
logarithmic PCM
- Because of the nonlinear way we hear loudness, and given a fixed, limited bandwidth, people at different volume levels get similar signal-to-quantizing noise ratio - than linear PCM(verify)
- since the original input and eventual reproduction is often linear PCM (it's a choice most hardware makes), this is often used to effectively compand signal while in transmission/storage
- implementations include μ-law (mu-law) and A-law
- which historically implied 8-bit and often 8000Hz implementations, as used in early digital phone transmissions (see e.g. ITU-T G.711)
- if storage is not a hard constraint (and harder than CPU use), then linear PCM is easier and log PCM is probably more work than it's worth
- (even though technically 16-bit logarithmic still give better detail than linear 16-bit(verify), you generally don't need it)
Differential PCM
- there seem to be two distinct things this can point to:
- instead of storing the absolute values, we store the difference from the previous sample
- instead of storing the absolute values, we store the difference from a predicted next sample
- in a sense, the first is a special case of the second. Both have a model of prediction, one of them is just very simple.
- If the prediction is reasonable, that value is typically small, a stream of them is compressible, and we need to store/send fewer bits.
- ...but only on simpler signals, so basic DPCM is rare. The basic idea of "make both sides share a predictor, and code the difference" is common in audio and video codecs -- but usually in a more refined form.
ADPCM is Adaptive Differential PCM.
It takes PCM, produces the differential PCM output as just mentioned, and varies the amount of quantization it sends that with (in early implementations often 5-, 4-, or 3-bit?(verify)).
This is a lossy format that gives you some steps of control, trading bandwidth and SNR on low bandwidth (/ noisy) channels.
SB-ADPCM: ADPCM, but applied to distinct frequency sub-bands.
- For example, G.722
- splits into two bands (roughly 0Hz to 4kHz, and 4kHz to 8kHz), then applies ADPCM to each
- This mainly so that you can spend bits differently, decide on sending 64 kbit/s overall, and spending 48 of the on the lower sub-band that includes most voice energy, and 16 kbit/s on the rest. (G.722 actually has a few different target bitrates)
Even when storage/transmission is mu-law/A-law or ADPCM or some other codec,
processing on endpoints is often linear PCM, mostly because it's easier and faster to work with.
For context on companding: linear PCM is not clever about spreading quantization to where our (approximately logarithmic) perception hears it best. Companding basically rescales (in a reversible way) to reduce that issue.
The companding step is lossy, but since the signal to noise ratio is better than linear PCM in the same amount of bits, it provides quality improvements - and rather useful whenever you are bandwidth-limited.
Both μ-law and A-law are used in analog and digital telecommunication (in analog it was mostly for quality, in digital tranfer it was also handy for compression), in different countries.
The .au sound format uses μ-law.
See also:
- http://en.wikipedia.org/wiki/Mu-law
- http://en.wikipedia.org/wiki/A-law_algorithm
- http://en.wikipedia.org/wiki/Companding
- http://en.wikipedia.org/wiki/DPCM
- http://en.wikipedia.org/wiki/Adaptive_DPCM
- http://en.wikipedia.org/wiki/Delta_modulation
See also:
-->
Continuous wave modulation
Amplitude Modulation (AM)
Frequency Modulation (FM)
Phase Modulation (PM)
Related: Dimming practicalities
Pulse modulation
Pulse Amplitude Modulation (PAM)
Pulse Skip Modulation (PSM)
Pulse Position Modulation (PPM)
Pulse Density Modulation (PDM), Delta-Sigma modulation
Pulse Width Modulation (PWM)
PWM for average energy
Hardware PWM, software PWM, and inbetween
PWM or PDM as a simple DAC
Sound PWM
On PWM resolution
On PWM distortion
On PWM oversampling
Unsorted
MQS
On PWM filtering
PWM IC notes
TLC5940
PCA9685
Comparing PDM and PWM
Combining PWM or PDM outputs for bit depth
Unsorted
Binary code modulation, a.k.a. Bit Angle Modulation
Modulating data to send: ASK, FSK, PSK
https://en.wikipedia.org/wiki/Amplitude-shift_keying