af SNI » 30. nov 2014, 16:38
I en tidligere forbindelse har jeg skrevet lidt om up-sampling, som også er en slags digitalfiltrering, som dog har flere filtreringsformål.
Hvis det har interesse, så kommer det her:
Om upsampling
I de senere år er flere og flere DACs blevet forsynet med up-samplings kredsløb, i det følgende vil vi prøve at anskueliggøre hvorfor det forholder sig således og hvordan det teoretisk og praktisk fungerer.
Det er nok værd at bemærke, at uden for audio verdenen, anvendes udtrykket up-sampling også om oversampling, forskellen mellem disse to begreber behandles i det følgende.
Oversampling blev første gang brugt kommercielt i CD spillere, dengang Philips lancerede sin første CD maskine, nemlig CD 100 i 1982.
Oversamplingen blev dengang aktuel ved et tilfælde, idet Philips nemlig havde satset på, at CD mediet blev et 14 bit medie, hvorfor de på et tidligt tidspunkt fremstillede 14 bit DAC kredse. Som bekendt så lærer nød nøgen kvinde at spinde, så derfor hev Philips ingeniørerne oversampling op af skuffen.
Tiden var nemlig for knap til at begynde forfra med en 16 bit kreds, så i stedet valgte man at oversample med en faktor 4, derved lykkedes det at opnå 16 bits opløsning med en DAC med kun 14 bits til rådighed. Teoretisk opnår man nemlig 6 dB mere dynamik, hver gang man fordobler samplingfrekvensen, man kan derfor fjerne 1 bit for hver gang uden at miste dynamik og lydkvalitet. Ultimativt udnyttes dette princip i one bit DAC´sene, hvor alle bits på nær én er vekslet til oversampling, eller i det mindste næsten da, man bruger nemlig derudover ”noise shaping” til at øge dynamikken et stykke af vejen.
Men ikke desto mindre blev den fejltagelse i virkeligheden grundlaget for rigtig meget af den udvikling DAC chipsene senere gennemløb, fordi ingeniørernes kreative løsning på 14/16 bit problemet, åbenlyst kunne bruges i til at løfte CD mediet op til og over det niveau, som nogen overhovedet kunne forvente i takt med at det blev teknologisk muligt, og samtidig løse en række problemer på en langt mere enkel og billig måde end man hidtil havde kunnet klare.
Hele idéen med oversampling går i korthed ud på, at undgå at skulle bruge meget stejle og dyre analoge filtre lige over den halve samplingfrekvens på 44,1KHz. Dvs. på CD mediet omkring 22.050 Hz. De første CD maskiner uden oversampling havde analoge filtre med meget stejl afskæring i udgangen, med betydelig skadelig påvirkning af lyden til følge.
Det der skal filtreres væk er det man kalder imaging, som betyder, at hele det frekvensområde, som man har mulighed for at gengive (0-22.049Hz), også vil optræde fra 22.051Hz til 44.100 Hz ved ca. -3,9 dB.
Man har altså ”2” signaler man kommer til at forstærke, først det ønskede audio signal, og så et spejlbillede af det ved den dobbelte frekvens, og for at gøre det hele endnu vanskeligere, så optræder der en lang række andre uønskede signaler, som kan forekomme ved f.eks. ½ samplingfrekvens + tonens frekvens osv . Det kan man naturligvis ikke tillade, idet mange forstærkere ikke vil kunne klare den slags på indgangen, ligesom mange højttalere heller ikke vil kunne lide sådanne HF signaler. Risikoen for at forstærkere klipper ved ganske moderate niveauer er til stede, ligesom afbrændte diskanthøjttalere også vil kunne forekomme.
Oversampling gør lige præcist løsningen af det problem en hel del nemmere, fordi man ved oversampling simpelthen stopper en række samples ind imellem de oprindelige samples. Typisk oversampler man med en faktor 4 eller 8, for så vidt det gælder multibit DACs. De ekstra samples har typisk værdien 0, fordi det ikke er ekstra information som sådan, der ønskes, men i stedet en øget sampling frekvens, som så bevirker at de images (spejlbilleder) der normalt forekommer fra den halve sampling frekvens og op til samplingfrekvensen, nu flyttes langt højere op i frekvens. Det bevirker nemlig, at kravet til det filter der skal bruges i udgangen for at fjerne disse images, kan være langt mindre stejlt, end hvis der ikke blev brugt oversampling. Typisk kan man nøjes med at begynde afskæringen over 30-40Khz og med en behersket stejlhed. Mindre stejle filtre har også et bedre faseforløb og dermed impulsgengivelse, og det er specielt det der forbedres drastisk vha. oversampling. Som sidegevinst er det billigere og mere enkelt at konstruere fornuftige filtre af lavere orden (med mindre stejl afskæring).
Oversampling fandt i bund og grund sin vej ind i digital audio af de nævnte årsager, men herved stoppede udviklingen ikke, for hvorfor ikke udnytte de ekstra samples til at udjævne kurveformen på det analoge signal?
Altså i stedet for at putte indholdsløse samples ind imellem de oprindelige samples, så kunne man måske beregne nogle nye samples med værdier imellem de oprindelige, så man kunne beskrive det analoge signal mere præcist og mere glat end hidtil.
Det er her digital filtrering for alvor træder ind på scenen, ”8 times oversampling digital interpolation filter” stod der ofte på fronten af en moderne CD spiller i begyndelsen af halvfemserne. Med det går man ind i en ny æra, hvor der beregnes nye data, som i princippet ikke eksisterer i programmaterialet.
Fidusen ved det er, at man med de begrænsninger der altid eksisterer i den slags forhold, får det færdigt filtrerede signal til at optræde som det oprindelige 16/44 signal samplet med en højere samplefrekvens.
Ud over at flytte støjen op i frekvens, har filteret den virkning, at kurveformen på det resulterende analoge audiosignal bliver væsentlig mere glat og jævn og derved mindre støjfyldt.
Den slags er jo sød musik i en audiophils ører, men der er selvfølgelig ingen medaljer der ikke har en bagside. Downsiden er selvfølgelig, at et signal med en højere sampling frekvens også altid vil være mere følsomt overfor jitter, der kræves altså en tilsvarende højere præcision i timingen af det digitale signal, når samplehastigheden øges. Hvis det krav ikke tilgodeses, vil der typisk opstå fejl i datastrømmen og dermed også uønsket støj og forvrængning i det analoge signal.
I oversampling har man derfor flg.:
1. Et signal der indeholder de oprindelige samples.
2. Et antal samples imellem de oprindelige samples, som enten er 0 værdi samples eller beregnede og interpolerede værdier imellem 2 oprindelige samples.
3. En samplefrekvens der er et lige produkt af den oprindelige samplefrekvens, f.eks. den oprindelige samplefrekvens gangt mede 2, 4, 8, 16, 32, 64, 128 osv.
4. Et signal der er det samme som det oprindelige signal, men med en højere samplefrekvens.
5. Et signal hvor de uønskede ”images” er flyttet langt op i frekvens, og dermed er der kun behov for en ”mild” analog filtrering.
Ovenstående er sådan ca. de grundlæggende problemstillinger omkring oversampling til audiobrug.
Vi skal nu videre med up-sampling, som begrebet anvendes i audioverdenen.
Up-sampling
Når der er tale om up-sampling i audioforstand, er der nogle elementer, der er blevet indforståede, som egentlig ikke rigtigt har så meget med up-sampling at gøre. Det er nemlig vist endnu aldrig set, at der upsamples uden at bitdybden også øges. Altså upsampler man ikke alene til en anden samplingfrekvens, man øger også bitdybden i signalet, typisk fra 16 bit til 24 eller 32 bit.
Ud over det, er et af de vigtigste kendetegn ved up-sampling, at den samplingfrekvens der up-samples til, IKKE er et produkt af den oprindelige sampling frekvens multipliceret med f.eks. 2, 4, 8, 16 osv.
I upsampling er det up-samplede signal tidsmæssigt koblet helt fra det oprindelige signal. Derfor anvender man heller ikke den oprindelige sample længere, alle data er således nye. Man kalder det også asynchront, deraf navnet Asynchronius Sample Rate Converter (ASRC)
Den enkleste måde, at foretage denne up-sampling på er grundlæggende, at konvertere det indkomne signal til et analogt signal for derefter at konvertere det tilbage til det digitale domæne igen ved en ny og højere samplingfrekvens og med en større bitdybde. Det vil vi bare helst ikke, fordi den jitter der altid vil være til stede i et digitalt signal også vil være at finde i det analoge signal, der vil være til rådighed. Så den idé må vi hellere glemme.
Shannon og Nyquist´s teorem om sampling fastslår, at man kan rekonstruere et samplet signal, såfremt man sampler ved en frekvens der er min. 2 gange højere end den ønskede båndbredde man vil sample. Det faktum er meget grundlæggende i up-sampling, det betyder nemlig, at det indkomne 16/44 signal rent faktisk indeholder alle de informationer der er brug for til at skabe et nyt signal med en højere samplingfrekvens og med større bitdybde. Dette uigendrivelige faktum, er faktisk det der retfærdiggør hele besværet ved up-sampling, for foruden det, så ville up-sampling sandsynligvis skabe nogenlunde lige så mange problemer som det løser.
Det skal lige tilføjes, at for at Nyquist & Shannon har ret, kræves der 100 % bortfiltrering af alt, der måtte findes over ½ samplefrekvens. Oversampling under indspilningen har gjort det næsten muligt, at foretage en sådan filtrering.
Vi ved nu, at de data der er brug for er til stede i det indkommende signal, og at tidsbasen for det indkomne og det up-samplede signal ikke er lige multipla af hverandre og derfor helt uafhængige af hinanden. Det sidste betyder samtidig, at eftersom det indkomne signal kommer i faste takter på 44.100/sek, så kan det up-samplede signal bestå af samples som relaterer til ethvert tidspunkt på eller imellem det indkomne signals samples. Av det lyder vist ikke helt nemt, altså det up-samplede signal kan komme til at indeholde samples der enten relaterer til det samme øjeblik som den indkomne sample, eller til alle andre øjeblikke.
Det udløser et behov for ikke mindre end 2^20-1 nye samples imellem hver af de nye 192.000 samples, det svarer til 1.048.576-1 samples 192.000 gange pr. sekund, hvilket modsvarer 201.326.592.000 (201GHz) samples pr. sekund (det er mange). De er alle sammen mulige samples til det up-samplede signal, og principielt er de så også alle sammen nødt til at være til stede, hvis de evt. skal bruges.
Det er dog næppe muligt at beregne alle disse samples, og i den virkelige verden skal vi jo kun bruge 96.000 eller 192.000 af dem, alt efter hvilken sampling frekvens vi vælger at up-sample til.
Med andre ord: Her er der vist brug for en snedig løsning.
Hvordan undgås det, at der skal beregnes så mange nye samples, hvoraf kun 96/192.000 eller 0,00001% skal bruges og resten kyles ud?
Svaret på den slags gåder hedder som næsten altid matematik og modkobling.
De eksakte processer er selvfølgelig langt mere komplicerede end her beskrevet, men dette er et forsøg på, at give et overvejende konceptuelt billede af hvad up-sampling er for noget væsen, mere end det er eksakt videnskab, som der skal komme produkter ud af.
Man bruger ganske enkelt forholdet mellem det indkomne signals samplingfrekvens (FSin) og det up-samplede signals samplingfrekvens (FSout) til at begrænse mængden af nødvendige nye samples, men samtidig alligevel bibeholde opløsning, som om man havde udført beregningerne af alle de mulige samples.
Med andre ord snyder man lidt, men uden at det kan opdages.
For yderligere at begrænse behovet for beregninger, så filtrerer man det indkomne signal, således at der ikke forekommer images i det signal der senere skal up-samples. Det ville både være spild af ressourcer og det ville også gøre uoprettelig skade på signalet efter up-samplingen er foretaget. Man skal huske på, at enhver sampling skaber images, altså forekommer der images i det indkomne signal, at resample disse, samtidig med at den nye sampling også skaber images, ville være lidt tosset. Derfor filtrerer man først.
Det at forholdet mellem FSin og FSout afgør hvilke samples der skal beregnes, kan man med lidt god vilje godt kalde en slags modkobling i det digitale domæne. Resultatet er, at behovet for nye samples begrænses betydeligt.
I øjeblikket er der ganske få producenter af ASRC chips i verden, de mest kendte er Crystal, Analog Devices og Texas Instruments, og af dem er TI of AD langt de mest udbredte, og for kuriositetens skyld, så er TI og AD benkompatible.
Når det gælder TI og AD (jeg ved ikke hvad andre gør), så har man også valgt at anvende en FIFO (First In First Out) RAM. Den har en dybde på 512 ord pr. kanal, hvilket ikke relaterer til sangtekster, men til 512/44.100 sek.
FIFO RAMén bruges til det formål, at fjerne jitter fra den indkommende datastrøm, hvilket er meget nødvendigt, når der skal up-samples. Hvis AD1896 eller TI4192 sidder i en separat DAC, så sidder der typisk en reciever chip før (upstream) ASRCén. Den recieverchip har til opgave at modtage data fra en transport eller en anden digital kilde i én seriel strøm indeholdende både data, subcodes, clock m.m i én lang pærevælling, og derefter at videresende disse data i flere forskellige strømme, hvoraf kan nævnes data, den tilhørende clock, subcodes og andre funktioner. Det tidsmæssige forhold mellem clock og data er særdeles vigtigt, både når man konverterer og up-sampler, de fleste receiverchips kan klare en nøjagtighed på mellem 50-150 pico sek.
Desværre er det langt fra præcist nok, når man up-sampler, bl.a. derfor introduceres FIFOén.
Up-sampling til op i nærheden af 200KHz kræver nemlig en præcision på intervaller mindre end 5 pico sek., så det giver sig selv, at der skal gøres noget. Bufferen er løsningen på det meste af det problem, modkoblingen og den interne præcision i chippen klarer resten.
Og her er vi inde på én af sidegevinsterne ved up-sampling, nemlig jitterreduktion. I teorien eliminerer up-sampling jitter fuldstændigt, i praksis undertrykkes jitter særdeles kraftigt. Og det er vi jo alle sammen ret glade for.
Teoretisk burde jitter forekomsten i det udgående signal være ca. 5 pico sek. + evt. clockjitter, som undertiden findes endnu lavere end 5 pico sek.
Det er meget små værdier for jitter, og typisk er det da heller ikke muligt, at bibeholde den slags tolerancer, når der skal konverteres efterfølgende, men stadigvæk er det en kæmpe reduktion af digital forvrængning i tidsdomænet, som efterfølgende ville få konsekvenser i frekvensdomænet.
Vi har nu set på, hvad der er nødvendigt for at up-sample et typisk 16/44 signal til noget der kunne være 24/96 - eller 192 signal.
Før det signal kan bruges i en DAC chip, skal der foretages yderligere et par behandlinger, nemlig skal der filtreres for images der skyldes den nye sampling, og derudover skal de overflødige samples, som blev beregnet smides ud. Det sidste kaldes decimering og består i at vælge den sample, som skal repræsentere det til 96 eller 192 KHz up-samplede signal med en præcision på mindre end 5 pico sek.
Filtreringen sker naturligvis som anden digital filtrering, men pga. hastighed og bitdybde og kravet om de 2^20 nye samples imellem de ønskede 192.000, så kræves der uhyggelige mængder af koefficienter, nemlig 2^26 af slagsen. Det overkommes med matematik og interpolation, som jeg ikke her vil gå nærmere ind på.
Det er så langhåret at selv frisøren gisper.
Efter sådan en lang omvej i forhold til bare en direkte konvertering, vil mange nok sige ”Der må være noget undervejs der går galt”.
Heldigvis så er producenterne af ADC chips, DAC chips og up-sampler chips faktisk ofte de samme. Det betyder at man kan checke resultatet hele vejen gennem processen, og det gør man selvfølgelig.
Efter up-sampleren skal signalet jo naturligvis konverteres til et analogt signal. Udgangspunktet for DAC chippen er nu i stedet for 16 bit 44.100 gange pr. sek., nu i stedet 24 bit 96.000 eller 192.000 gange pr. sekund. Det øger naturligvis DAC chippens opløsning og gør derved det analoge signal mere smooth og fri for støj. I de fleste tilfælde ophører DAC/filterchippen med selv at oversample og interpolere, idet den nu får et signal med en samplingfrekvens på grænsen af hvad selve DACén internt kan klare, derfor ingen oversampling/interpolering.
Man kan derfor sige om up-sampling:
1. Up-sampling reducerer jitter ned til den jitter som selve up-sampleren har internt + den jitter der kommer fra den clock der styrer den frekvens up-sampleren up-sampler til, hvilket typisk er ganske få picosekunder.
2. Up-sampling sker til en sampling frekvens der IKKE er et produkt af den oprindelige samplingfrekvens og et lige tal (2, 4, 8, 16, 32 osv.).
3. Netop pga. 2, kan up-sampling karakteriseres som en ANALOG proces - surprice .
Netop det faktum at tidsbasen mellem FSin og FSout er forskellig og helt uafhængig af hverandre, bevirker at processen svarer til, at foretage en fejlfri konvertering fra digital til analog, og så konvertere til digital igen med en højere samplerate og en større bitdybde jvf. Shannon & Nyquist.
4. Ved up-sampling anvender man ikke de oprindelige data.
5. Og vi tager den lige en ekstra gang, up-sampling er en analog proces på trods af alle regnestykkerne og på trods af at der IKKE konverteres til analog på noget tidspunkt i processen.
6. Den jitter man ikke kan fjerne er den, som analog til digitalkonverteringen bevirkede oprindeligt. Den består hovedsageligt i, at der ikke er præcist 1sek/samplefrekvensen imellem hver sample. Den type jitter kan man kun bekæmpe hvor den opstår. Og da gælder reglen, at jo højere samplefrekvens, jo mere følsom bliver man overfor jitter.
7. Up-sampling kan ske til en hvilken som helst frekvens der er højere end den oprindelige samplefrekvens, og der vil stort set aldrig blive up-samplet til præcist 96/192KHz, eftersom den frekvens der up-samples til, afhænger af hvor præcist krystallet i oscillatoren er. Og det kan afhænge både af temperatur, spænding og meget andet.
Hvad kan jeg så bruge alt det til?
Og det er jo et supergodt spørgsmål, for det er jo ikke det eneste der afgør om en DAC eller CD spille lyder naturligt eller ej. Strømforsyning, analog forstærkerdel, komponentkvalitet og mange andre ting har stor indflydelse på den færdige helhed. Alligevel mener jeg, at det er relevant at bringe up-sampling ind i audiophilens scope, simpelthen fordi up-sampling på et meget tidligt tidspunkt kan eliminere eller i det mindste minimere nogle ellers uundgåelige kilder til uoprettelige fejl.
Hvad der så faktisk virker ved up-sampling , kan være lidt svært at pege på. Jeg har f.eks. været vidne til, at up-sampling helt klart var en fordel, selvom der kun blev up-samplet til 24 bit 48KHz. Så noget tyder på, at det enten er bitdybden eller også jitter reduktionen der er upsiden ved up-sampling.
Senere har jeg været med til at øge den frekvens som der up-sampledes til, uden at det havde nogen voldsom effekt. Så noget tyder på, at det enten er bitdybden eller jitter reduktionen der er de mest betydende faktorer i up-sampling, og det hænger faktisk bedst sammen med teorien, når det nu skal være.