Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdLotte Meijer Laatst gewijzigd meer dan 9 jaar geleden
1
Psychoacoustic audio coding on ARM CPUs Een populaire DSP-toepassing en een populaire embedded architectuur nader bekeken. Gian-Carlo Pascutto
2
Inhoud 1. Inleiding & Situering 2. De ARM-architectuur 3. Psychoacoustische audio-codering 4. De Bacon audio codec 5. Een ARM-gebaseerde Bacon player 6. Conclusies & Vragen SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
3
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
4
ARM architectuur: Inhoud 1. Ontstaansgeschiedenis 2. Specifieke eigenschappen 3. Evolutie ARM CPUs 4. DSP op ARM 5. Programmering 6. ARMs in de praktijk SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
5
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
6
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
7
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 van statusvlaggen. (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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
8
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% (!) SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
9
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
10
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
11
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.) SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
12
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
13
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
14
Psychoacoustische audiocodering 1. Wat? 2. Inleidende principes 3. Tijd Frequentie 4. Quantisering & Entropy coding 5. Kwaliteitsevaluatie SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
15
Wat? Compacte codering van audiosignalen door: Gebruik kennis fysiek-psychologische aspecten gehoorssysteem Verwijderen redundantie SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
16
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
17
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
18
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
19
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
20
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
21
Bacon 1. Verantwoording 2. Ontwerpdoelen 3. Filterbank 4. Psychoacoustisch model 5. Quantisatie 6. Lossless coding 7. Truuks SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
22
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
23
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
24
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
25
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
26
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
27
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
28
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
29
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; } SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
30
Een ARM player voor Bacon 1. Texas Instruments OMAP 5912 2. Atmel AT91SAM7 Circuit design PCB design Status SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
31
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
32
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 I 2 S DAC Eigen ontwerp voor bord SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
33
Circuit design SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
34
PCB design SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
35
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
36
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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
37
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? SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
38
Performantie Centrino 1.7Ghz laptop, Windows XP Foobar2000 0.9.1 audio player 128kbps CBR 44.1kHz stereo SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs Decoderx realtime Bacon195x AAC172x Vorbis153x MP3130x
39
Performantie 192Mhz ARM9E SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs Decoderx realtimeMhz Bacon, full precision4,4044 Bacon, reduced precision4,8040 Bacon, reduced precision (Thumb)4,4543 MP3, ARM assembler4,8640 MP3, full precision0,65297 MP3, reduced precision4,2046 Vorbis, ARM assembler4,5143 Vorbis, full precision1,86103 Vorbis, reduced precision4,8540 AAC, ARM assembler3,3058 AAC, full precision3,2559
40
Performantie SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs DecoderCodeRAMROM Bacon (Thumb)58281151613888 Bacon (ARM)79601151613888 MP3 (Helix)210002381613446 AAC (Helix)201202886427128 Vorbis (Tremor)359528192048428 MP3 (MAD)361845000050688
41
Performantie SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
42
Vragen? ? SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.