1 / 42

Psychoacoustic audio coding on ARM CPUs

Psychoacoustic audio coding on ARM CPUs. Een populaire DSP-toepassing en een populaire embedded architectuur nader bekeken. Gian-Carlo Pascutto. Situering. ARM arch. Psy. audio coding. Bacon. ARM Player. Vragen. Inhoud. Inleiding & Situering De ARM-architectuur

petula
Download Presentation

Psychoacoustic audio coding on ARM CPUs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Psychoacoustic audio coding on ARM CPUs Een populaire DSP-toepassing en een populaire embedded architectuur nader bekeken. Gian-Carlo Pascutto

  2. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Inhoud • Inleiding & Situering • De ARM-architectuur • Psychoacoustische audio-codering • De Bacon audio codec • Een ARM-gebaseerde Bacon player • Conclusies & Vragen Psychoacoustic audio coding on small ARM CPUs

  3. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Inleiding & Situering Vraag naar: • Multimedia • Portable • Draadloos Technologische nood aan: • Performante audio/video codering • Embedded systemen • Low power/high performance Opgelost door: • ARM microcontrollers • Psychoacoustische audio codecs Psychoacoustic audio coding on small ARM CPUs

  4. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen ARM architectuur: Inhoud • Ontstaansgeschiedenis • Specifieke eigenschappen • Evolutie ARM CPUs • DSP op ARM • Programmering • ARMs in de praktijk Psychoacoustic audio coding on small ARM CPUs

  5. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Onstaansgeschiedenis • Ontstaan 1985 (Acorn Computers) • Vervanging voor 8-bit 6502 CPUs, gebruik in Acorn PCs • Focus op eenvouding maar performant ontwerp • Geen doorbraak door dominantie IBM PC • Verkoop van licenties IP cores Psychoacoustic audio coding on small ARM CPUs

  6. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Specifieke eigenschappen • 32-bits RISC ontwerp • 32-bits instructies & 32-bits addressering • Meeste instructies duren 1 klokcyclus • MUL en MAC instructies (geen DIV) • Load-Store architectuur • 16 registers (14 bruikbaar) • Configureerbaar little endian/big endian Psychoacoustic audio coding on small ARM CPUs

  7. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Specifieke eigenschappen • Barrel shift / rotate • “Gratis” beschikbaar op iedere instructie • Inclusief variabele lengte shifts • Condition codes • Mogelijk op iedere instructie • Wel of niet uitvoeren (skippen) afhankelijk vanstatusvlaggen. (vb. EQ=Equal, GE=Greater or Equal, PL=Positive) • Keuze wel of niet aanpassen statusvlaggen voor volgende instructie • Pre/postindexering • Na load instructie automatische update indexregister Psychoacoustic audio coding on small ARM CPUs

  8. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Evolutie ARM CPUs • ARM7/ARMv4 (1995) • ARMv4T: Thumb Thumb • Nieuwe 16-bit instructieset • Minder registers toegankelijk, geen barrel shifter, geen condition codes, … • Meer code nodig maar slechts half zo groot: gemiddeld +- 30% code size besparing • Performantie:-25% tot +100% (!) Psychoacoustic audio coding on small ARM CPUs

  9. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Evolutie ARM CPUs • ARM9/ARMv5 (1997) • Langere pipeline (5 ipv. 3  hogere kloksnelheden) • ARMv5E: DSP extensies • Snelle 16-bit multiplies, saturation • ARMv5J: Jazelle (2000) • Java bytecode direct uitvoeren Psychoacoustic audio coding on small ARM CPUs

  10. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Evolutie ARM CPUs • “Toekomst”: • ARM10, ARM11 / ARMv6 • Langere pipeline, hogere kloksnelheid • Extra multimedia instructies (SIMD, cfr. MMX/SSE) • ARM Cortex • Thumb-2: ARM performantie met Thumb code size • Intel XScale • tot 1.2Ghz, 1000 MIPS @ 1W Psychoacoustic audio coding on small ARM CPUs

  11. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen DSP op ARM • Fixed point • Snelle 32 bits berekeningen • Barrel shifter • Load/Store architectuur • Vele registers goed gebruiken • Optimalisaties • Anders voor elke ARM variant (zelfs MAC …) • Niet-compatible SIMD extensies WMMX (Intel) vs NEON (ARM Ltd.) Psychoacoustic audio coding on small ARM CPUs

  12. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Programmering • Keuze voor C • flexibeler, portable, ARM<=>Thumb • check de output van de compiler • “Kleine” optimalisaties • Gebruik 32-bit variabelen (int) • Vermijden van delingen • Pointers ipv. array-indexes • Voer variabelen in Psychoacoustic audio coding on small ARM CPUs

  13. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen ARM in de praktijk • ARM7TDMI + Flash • Goedkope microcontrollers van Atmel, Analog Devices, Philips, OKI, Cirrus, … • Vervangen 8051, AVR, PIC • Texas Instruments OMAP • Dual core ARM + DSP • PDA, GSM • Intel XScale • PDA, auto GPS, RAID kaarten, … • Apple iPod • Dual core 2 x ARM7TDMI Psychoacoustic audio coding on small ARM CPUs

  14. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Psychoacoustische audiocodering • Wat? • Inleidende principes • Tijd  Frequentie • Quantisering & Entropy coding • Kwaliteitsevaluatie Psychoacoustic audio coding on small ARM CPUs

  15. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Wat? • Compacte codering van audiosignalen door: • Gebruik kennis fysiek-psychologische aspecten gehoorssysteem • Verwijderen redundantie Psychoacoustic audio coding on small ARM CPUs

  16. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Principes • Critical bands / Barks • Gedrag gehoorssysteem ifv. Frequentie • Zenuwcellen van nabijgelegen frequenties worden tegelijk geprikkeld • Hogere frequenties  bredere banden • Simultane maskering • Gelijktijdige waarname meerdere signalen: sterk signaal maskeert zwak • Afhankelijk aard van het signaal (toon/ruis)  6dB tot 25dB SMR Psychoacoustic audio coding on small ARM CPUs

  17. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Principes • Absolute Threshold of Hearing (ATH) • Te stil signaal is onhoorbaar • Spreading • Cfr. simultane maskering, tussen verschillende banden • Tijdsdomeineffecten (pre-echo) • 2-3 ms maskering VOOR signaal • 50-300 ms maskering NA signaal Psychoacoustic audio coding on small ARM CPUs

  18. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Tijd  Frequentie (Filterbank) • Subbanding • QMF • PQMF • Wavelets • Transforms • Betere frequentieresolutie • Slechte tijdsresolutie  pre-echo • Block switching en/of TNS • Hogere coding gain voor typische audiosignalen • FFT • MDCT (DCT-IV + window + overlap) • Summum van audiocodering Psychoacoustic audio coding on small ARM CPUs

  19. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Quantisering & Entropy coding • Quantisering = Normalisering + Afronding • Gecontroleerd per band door psychoacoustisch model • Entropy coding • Directe codering • Huffman coding • Huffman coding v. koppels • VQ, Arithmetic coding Psychoacoustic audio coding on small ARM CPUs

  20. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Kwaliteitsevaluatie • Psychoacoustische techniek • Methode moet werking gehoorsysteem volgen • Subjectieve beoordeling • Door mensen • Probleem: placebo effecten • Oplossing: blinde tests • Duurt lang, moeilijk te reproduceren • Objectieve beoordeling • EAQUAL (ITU BS. 1387) • Snel, reproduceerbaar, onvermoeibaar • Heuristisch, soms grote fouten Psychoacoustic audio coding on small ARM CPUs

  21. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Bacon • Verantwoording • Ontwerpdoelen • Filterbank • Psychoacoustisch model • Quantisatie • Lossless coding • Truuks Psychoacoustic audio coding on small ARM CPUs

  22. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Verantwoording • Bestaande codecs hebben veel “bagage”: • MP3: hybride filterbank, >16kHz, mist een paar moderne truuks • AAC: LC, Main, LTP, SSR, pulse coding, IS, verschillende windows • Vorbis: redundante normalisaties, complexe entropy coding, grote blocksizes • Gebrek aan KISS principe • Complexiteit van implementatie kleine factor bij performantie-evaluatie • Foutkans naarmate complexiteit • Beter met “benefit of hindsight” • Experimenteren & kennis opdoen Psychoacoustic audio coding on small ARM CPUs

  23. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Ontwerpdoelen • Minimale complexiteit in design & implementatie • Kwalitatief >= MP3 • Geschikt voor kleine ARM microcontrollers • Zo laag mogelijke RAM/ROM vereisten • Decodeerbaar met <60Mhz ARM7TDMI • Bruikbaar in Thumb mode Psychoacoustic audio coding on small ARM CPUs

  24. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Filterbank • MDCT op 1024 samples • Vermijden block switching • Wavelets • Switching MDCT/Wavelets • Nieuwe methode: MDWT • Temporal Noise Shaping • Dualiteit DCT in tijd/frequentie • LPC filter in frequentiedomein • Quantisatieruis evenredig signaalsterkte Psychoacoustic audio coding on small ARM CPUs

  25. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Psychoacoustisch model • Vrij standaard, cfr. MPEG model 1 • Gebaseerd op Equivalent Rectangular Bandwidth (ERB) • Nieuwer systeem dan “Barks” • Banden 2 ERB wijd  21 bands • Mid/Side vs. Left/Right per band Psychoacoustic audio coding on small ARM CPUs

  26. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Quantisatie • Schaalfactor per band • 1.5dB resolutie • Vaste quantiser • 512 waarden, power-law • 2-loop systeem voor vinden optimale quantisatie • Inner loop: bitrate controle • Outer loop: controle quantisatieruis aan psychoacoustisch model Psychoacoustic audio coding on small ARM CPUs

  27. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Lossless coding • Gequantiseerde data • Per band vaste bitlengte • >5 bits: directe codering • 3 tot 5 bits: Huffman • 1 en 2 bits: Huffman op groepen • Schaalfactoren • Verschillen Huffman coderen • Bitlengtes • Verschillen Huffman coderen • Mid/Side beslissingen • Directe codering Psychoacoustic audio coding on small ARM CPUs

  28. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Truuks • PNS • Ruisbanden detecteren • Alleen energieniveau opslaan • Winst afhankelijk van risico • LastVal • Laatste gekwantiseerde waarde =/= 0 • Alle informatie die op banden of data hierna slaat moet niet opgeslagen worden • Winst 2-4kbps Psychoacoustic audio coding on small ARM CPUs

  29. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Truuks • 32 x 32 = 64 bit multiplies • Nodig voor >= 16 bit precisie in fixed point decoding • Geen equivalent in C • Library call (traag) • Inline assembler (niet flexibel) • Hulp bieden aan compiler door functie te maken static const int MUL_C(const int A, const int B) { return (((long long)A) * B) >> COEF_BITS; } Psychoacoustic audio coding on small ARM CPUs

  30. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Een ARM player voor Bacon • Texas Instruments OMAP 5912 • Atmel AT91SAM7 • Circuit design • PCB design • Status Psychoacoustic audio coding on small ARM CPUs

  31. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen OMAP 5912 • ARM9 + C55x DSP • Kostprijs 26 tot 50$ / stuk • Ontwikkelbord • OMAP chip op 192Mhz • 32M RAM, 32M Flash ROM • 24-bit 96kHz DAC/ADC • Serieel/Ethernet/USB • CompactFlash socket • ARM Linux • Fexibel (Linux kennis zeer bruikbaar) • Beschikbare software niet altijd even betrouwbaar Psychoacoustic audio coding on small ARM CPUs

  32. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Atmel AT91SAM7 • ARM7TDMI microcontroller • Flash-based • 8-64k RAM • 32-256k ROM • 3.5 tot 9 Euro / stuk • USB & RS232, I2C, … • SSC: nodig voor aansturing I2S DAC • Eigen ontwerp voor bord Psychoacoustic audio coding on small ARM CPUs

  33. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Circuit design Psychoacoustic audio coding on small ARM CPUs

  34. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen PCB design Psychoacoustic audio coding on small ARM CPUs

  35. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Status • Power, Klok, PLL, I/O poorten, JTAG • getest & werkend • Seriele poort • fout bij solderen chip (opgelost) • signalen kloppen niet • SSC/DAC • nog niet getest Psychoacoustic audio coding on small ARM CPUs

  36. Situering ARM arch. Psy. audio coding Bacon ARMPlayer Vragen Conclusies • ARM • Snel in opmars • Aanbod hardware/software verbetert continue • Voor oudere modellen (ARM7, ARM9) is veel goedkoop beschikbaar • PCB design • LQFP SMD chips met 64 pinnen zijn “niet gemakkelijk” in omgang • Veel ervaring opgedaan in kleine dingen Psychoacoustic audio coding on small ARM CPUs

  37. Situering ARM arch. Psy. audio coding Bacon ARMPlayer Vragen Conclusies • Bestaande codecs • Weg met overengineering! • ISO standaarden niet heilig • Wavelets lijken een “dead end” • Bacon • Eigen ontwerp = zeer leerzaam • Nog veel ruimte voor verbetering, zeer geschikt voor experimentatie • Performantie / ontwerpdoelen? Psychoacoustic audio coding on small ARM CPUs

  38. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Performantie • Centrino 1.7Ghz laptop, Windows XP • Foobar2000 0.9.1 audio player • 128kbps CBR 44.1kHz stereo Psychoacoustic audio coding on small ARM CPUs

  39. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Performantie • 192Mhz ARM9E Psychoacoustic audio coding on small ARM CPUs

  40. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Performantie Psychoacoustic audio coding on small ARM CPUs

  41. Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Performantie Psychoacoustic audio coding on small ARM CPUs

  42. Situering ARM arch. Psy. audio coding Bacon ARMPlayer Vragen Vragen? ? Psychoacoustic audio coding on small ARM CPUs

More Related