# Pulscodemodulatie

Pulscodemodulatie (PCM) is een digitale voorstelling van een analoog signaal, waarbij de signaalwaarde op regelmatige tijdstippen bemonsterd wordt, en gekwantiseerd tot een serie waarden in een digitale (om precies te zijn binaire) code. PCM wordt gebruikt in digitale telefoonsystemen en is ook de standaardopslagvorm van digitaal geluid in computers, in verschillende bestandsformaten en op cd.
Voor spraak is de kwantisering gedefinieerd in de ITU-T-aanbeveling G.711, waarin de logaritmische kwantisatie van het spraaksignaal is vastgelegd; hiervoor bestaan twee varianten: 'A-law' en 'µ-law' (=mu-law).
Een veel gebruikte, afgeleide vorm is de differentiële pulscodemodulatie (DPCM). Bij deze techniek worden niet de monsters zelf verzonden, maar de verschillen tussen het huidige en het vorige monster. Het idee hierachter is dat het verschil tussen twee opeenvolgende monsters veel kleiner is dan de grootte van het monster zelf. Doordat er minder data te verzenden zijn, is ook de benodigde bandbreedte kleiner.

## Inleiding

Pulscodemodulatie is het technologische hart van de communicatie in de huidige digitale wereld. Het is een proces waarin analoge signalen geconverteerd worden naar een digitale vorm. Het analoge signaal (zoals spraak van een telefoongesprek) wordt eerst geconverteerd naar een pulsamplitudemodulatiesignaal (PAM) door het signaal te bemonsteren. Vervolgens kan men dit PAM-signaal kwantiseren en coderen, zodat een digitaal PCM-signaal verkregen wordt.

## Filteren

De eerste stap om een analoog signaal om te zetten naar een digitaal is het wegfilteren van hogere frequenties uit het signaal. Dit maakt het achteraf makkelijker om het signaal om te zetten. De belangrijkste frequenties bij spraak liggen ergens tussen de 200 of 300 Hz en 2700 of 2800 Hz. Zo verkrijgt men een bandbreedte van ongeveer 3000 Hz voor standaardspraakcommunicatie. Hiervoor zijn geen precieze (vaak ook erg dure) filters nodig. Een bandbreedte van 4000 Hz wordt hardwarematig verkregen. Deze limiterende bandfilter wordt gebruikt om aliasing te voorkomen (anti-aliasing). Aliasing vindt plaats wanneer het inkomende analoge spraaksignaal wordt onderbemonsterd, dus indien niet wordt voldaan aan het criterium van Nyquist dat luidt: Fs ≥ 2(BW). Als de bemonsteringsfrequentie kleiner is dan tweemaal de hoogste frequentie in het inkomende analoge signaal, ontstaat een overlapping tussen het frequentiespectrum van het inkomende analoge signaal en een gespiegelde versie daarvan. De laagdoorlaatuitgangsfilter die wordt gebruikt om het inkomende signaal terug te reconstrueren, is niet in staat om deze overlapping ongedaan te maken. Hierdoor wordt een nieuw signaal opgebouwd dat afwijkt van het originele ingangssignaal. Het creëren van een vals signaal door overlapping wordt aliasing genoemd.

## Bemonsteren

De tweede stap om een analoog signaal om te zetten naar een digitaal is het bemonsteren van het gefilterde ingangssignaal. Bemonsteren houdt in dat de momentele waarde van een analoog signaal wordt gemeten op tijdstippen die een constant tijdsinterval van elkaar verschillen. Dit wordt ook wel pulsamplitudemodulatie (PAM) genoemd. Deze stap gebruikt het originele analoge signaal om de amplitude van een pulstrein te moduleren, die zelf een constante amplitude en frequentie heeft.
Bemonsteren houdt in dat de momentele waarde van een analoog signaal met een periodiek tijdsinterval wordt gemeten. Een bemonsterd signaal bevat slechts dan alle in het signaal aanwezige informatie, als de bemonsterfrequentie ten minste tweemaal zo hoog is als de hoogste frequentie die voorkomt in het signaal. Dit volgt uit het bemonsteringstheorema van Shannon en Nyquist. Bij toepassen van een dergelijke bemonsterfrequentie zal het mogelijk zijn het oorspronkelijke signaal te reconstrueren op de plaats van bestemming. Het Nyquistcriterium zegt het volgende:
$F_{s}\geq 2\times BW$
$F_{s}$ = bemonsterfrequentie
$BW$ = bandbreedte van het originele analoge spraaksignaal
Door filtering wordt de bandbreedte bij telefonie aan de zendzijde beperkt tot frequenties tussen 300 en 3400 Hz. Hieruit volgt dat een bemonsteringsfrequentie van 8000 Hz (om de 125 μs) geschikt is.

## Kwantiseren en coderen

Kwantiseren is een proces waarbij elke analoge bemonsteringswaarde wordt geconverteerd naar een discrete waarde, die kan worden toegewezen aan een uniek digitaal codewoord.
Aan elk inkomende monster wordt een kwantisatiewaarde toegekend die het dichtst bij de amplitudehoogte ligt. Als een monster geen kwantisatiewaarde heeft gekregen waarbij de amplitudehoogte het dichtstbij ligt, ontstaat er een fout in het PCM-proces. Deze fout wordt de kwantisatieruis genoemd. Kwantisatieruis verlaagt de signaal-ruisverhouding (SNR) van het signaal. Daarom wordt de kwaliteit van het signaal slechter naarmate de kwantisatieruis toeneemt.
Een manier om kwantisatieruis te verminderen is door het aantal kwantisatie-intervallen te verhogen. Het verschil tussen de ingangsamplitudehoogte en de kwantisatiewaarde vermindert als het aantal kwantisatiewaarden verhoogt. Men moet hierbij wel rekening houden dat het aantal codewoorden dan ook in proportie verhoogd moet worden met het stijgende aantal kwantisatiewaarden. Dit proces brengt problemen met zich mee die te maken hebben met de capaciteit van PCM, omdat deze nu meer codewoorden moet behandelen.
De SNR is de factor met de meeste invloed op de kwaliteit van het signaal bij uniforme kwantisatie. Uniforme kwantisatie maakt gebruik van gelijke kwantisatieniveaus over het gehele dynamische bereik van een inkomend analoog signaal. Hierdoor hebben signalen met lage amplitude een kleine SNR en die met een hoge amlitude een hoge SNR. Aangezien de meeste spraaksignalen zich in het lage amplitudegedeelte bevinden, is het bij het digitaliseren niet zo efficiënt dat signalen met een hoge amplitude van betere kwaliteit zijn. Om de kwaliteit van het signaal bij lagere amplitudes te verbeteren maakt men gebruik van niet-lineaire kwantisatie.

### Niet-lineaire kwantisatie

Bij niet-lineaire kwantisatie wordt een bemonsterd analoog signaal gecomprimeerd door een logaritmische transformatie. Bij de zogenaamde A-wet wordt deze transformatie segmentsgewijs gedefinieerd (in het amplitudedomein). Binnen elk segment wordt dan gekwantiseerd en gecodeerd door gebruik te maken van lineaire kwantisatie. De compressie is logaritmisch: de compressie is "krachtiger" als het signaalniveau hoger is. De signalen met grote amplitude worden dus sterker gecomprimeerd dan die met een lage amplitude. Dit leidt ertoe dat de kwantisatieruis toeneemt naarmate het signaalniveau groter wordt. De signaal-ruisverhouding blijft hierbij echter constant. De ITU-T-standaarden voor het op deze wijze kwantiseren (en coderen) van spraaksignalen worden de A-wet en de μ-wet genoemd.
Bij digitaal spraaktransport met behulp van G.711 zijn PAM-signalen bijvoorbeeld gekwantiseerd door gebruik te maken van een 13-segments compressiekarakteristiek, ook wel bekend als de A-wet (A-law). Deze wordt vastgelegd door de volgende formule:
$y={\frac {(1+lnAx)}{(1+lnA)}}$ waarbij A = 87,6
x=genormaliseerde compressoringangsspanning
y=genormaliseerde compressoruitgangsspanning
Deze karakteristiek is vastgelegd door 7 verschillende segmenten van verschillende groottes voor de positieve en negatieve helften, waarbij de 2 segmenten rond het nulpunt feitelijk samen 1 segment vormen. Voor de kwantisatie is elk segment verdeeld in lineaire stappen; de segmenten rond het nulpunt hebben 32 stappen en de rest heeft er 16.
Dit heeft een niet-lineaire kwantisering van het signaal als resultaat, met een nuttig effect op de signaal-ruisverhouding.
De meeste informatie van de menselijke stem bevindt zich bij de lage amplitudes. Het segment rond het nulpunt bedekt 1/64 van het amplitudebereik en is verdeeld in 32 stappen. De bovenste helft van het dynamische bereik van de ingangssignalen wordt bedekt door de laatste 16 segmenten van de karakteristiek.
Met 128 kwantisatieniveaus voor de positieve en negatieve amplitudes, wat een totaal van 256 niveaus oplevert, heeft men 8 bits nodig. Het meest significante bit (met de hoogste waarde) is het tekenbit en heeft de waarde 1 voor positieve waarden en 0 voor negatieve waarden. De volgende 3 bits worden gebruikt voor de aanduiding van het segment en de laatste 4 voor de 16 stappen binnen elk segment.