DSP-cursus
Audio-DSP-cursus Deel 3: Het DSP-board Alexander Potchinkov (D)
In deze aflevering stellen we het DSP-board voor, waarop niet alleen de in de volgende artikelen te presenteren toepassingen, maar ook de eerste (en hopelijk veel volgende) eigen stappen in de digitale verwerking van audiosignalen uitgevoerd kunnen worden. Het DSP-board is ‘stand alone’ te gebruiken. Ook al is het bedoeld als oefenplatform, met zijn 24-bits signaalverwerking bij sample-frequenties tot 192 kHz en zijn krachtige interfaces voldoet het aan hoge kwaliteitseisen. Dat geldt zowel voor de signaal/ruis-verhouding als voor de rekenkracht van de DSP.
Het DSP-board dient voor het verwerken van audiosignalen met een DSP. Het kan gaan om analoge of digitale signalen, maar ook om een combinatie van beide. In figuur 1 is het blokschema van de schakeling weergegeven. Dankzij de gekozen componenten zijn, ondanks de ruime toepassingsmogelijkheden, niet meer dan 13 IC’s op een printplaat van 97 mm bij 66 mm nodig. Voor het verwerken van analoge signalen zijn een tweekanaals ADC en DAC beschikbaar met een resolutie van 24 bits en een sample-frequentie van maximaal 192 kHz. Deze omzetters zijn geselecteerd op prijs, minimale hoeveelheid noodzakelijke periferie en verkrijgbaarheid. Ze zijn geschikt voor hardware-modus en hoeven niet apart geconfigureerd te worden voor verschillende sample-frequenties. In figuur 2 zien we de mogelijke routes van het audiosignaal op het board. De DSP werkt als audiomaster en ontvangt aan de ingang de naar I2S-formaat omgezette analoge en digitale signalen. Aan de uitgang zijn de signalen beschikbaar voor gelijktijdige omzetting in analoge en digitale audiosignalen. In de DSP is als het ware een ingangskeuzeschakelaar met drie standen gerealiseerd. In stand 1 wordt analoge audio, in stand 54
2 digitale audio en in stand 3 een door de DSP zelf opgewekt signaal naar de audiouitgang doorgeschakeld, als we alleen audio willen doorgeven en de audiosignalen niet ook nog willen bewerken. Zonder de DSP kunnen de signalen niet verwerkt en ook niet doorgegeven worden. De digitale signalen kunnen naar keuze via een optische of een elektrische interface worden in- en uitgevoerd. Aan de ingang kan alleen de optische óf de elektrische interface worden gebruikt; aan de uitgang kunnen de optische en de elektrische interface tegelijk worden gebruikt. Aan de ingang zorgt een (asynchrone) sample-rate-converter (SRC) er voor dat digitale signalen met verschillende sample-frequenties worden geconverteerd naar signalen met de sample-frequentie die bij de digitale signaalverwerking wordt gebruikt. Voor onze serie van artikelen is gekozen voor de professionele sample-frequentie van 48 kHz, die voldoende bandbreedte biedt en toch veel rekenwerk toelaat. De digitale signaalverwerking wordt uitgevoerd door een DSP56374 van Freescale, die speciaal ontworpen is voor de verwerking van audiosignalen en universeel programmeerbaar is. Als signaalverwerking met een sample-frequentie van bijvoorbeeld 96 kHz gewenst is, hoeft
maar één bit te worden veranderd in twee interface-configuratieregisters. Het DSP-board kan voor veel toepassingen worden gebruikt. Zo kan bijvoorbeeld rechtstreeks een CD-speler worden aangesloten om met het LED-board uit deze serie een VU-meter te realiseren. Ook kunnen een digitale microfoon en een versterker met luidspreker worden aangesloten, waarbij dan een rondzingonderdrukking wordt gerealiseerd. Of de vervormingsproducten van een analoog signaal kunnen worden berekend en weergegeven op een display. Ondanks die veelzijdige toepassingsmogelijkheden bevat het board maar heel weinig onderdelen. Dat is te danken aan de gekozen digitale audio-IC’s met veel ingebouwde intelligentie. In het schema zien we vier signaalverwerkingsblokken: De analoge in- en uitvoer, de digitale in- en uitvoer, de DSP en de periferie rond de DSP. Deze blokken zullen we één voor één beschrijven. Dan zal blijken, wat er allemaal beschikbaar is en welke mogelijkheden ons DSP-board daardoor biedt.
Communicatie op het DSP-board In het blokschema in figuur 3 is de structuur van de communicatie op ons DSP-board te 09-2011
elektor
DSP-cursus
IC12
IC11
IC13
LM1085 3.3V
REG1117 1.8V
LM317 1.25V
IC1 Analog In
opt.
electr.
Filter
V IC9 opt. RX
IC6
IC7
SEEPROM M95M01
Oscill. 24.576MHz
IC3
IC4
ADC CS5340
DAC PCM1781
IC5
DSP56374
IC2 V
IC10
IC8 AES3
I2S
fT1
Analog Out
Filter
fT2
SRC4392
I2S
opt. TX AES3
opt. electr.
Digital Out
Digital In
110003 - 12
Figuur 1. Blokschema van de schakeling, de interfaces zijn tweekanaals uitgevoerd.
Analog In
DSP56374
ADC
DAC
Analog Out
1 2
zien. Op het eerste gezicht is de veelheid aan details verrassend voor zo’n kleine kaart, maar dit verklaart wel de flexibiliteit en de vele toepassingsmogelijkheden. De communicatie verloopt via twee bussen. Audio gaat via de I2S-audiobus, besturing en dergelijke gaan via de SPI-bus. Er zijn vijf deelnemers op de audiobus. De DSP is de master en de andere vier deelnemers zijn slaves. De kloklijnen zijn zwart gemarkeerd en zijn verdeeld in twee groepen die in de DSP aan elkaar kunnen worden gekoppeld. We hebben dit symbolisch weergegeven met aanduidingen tussen haakjes en gestippeld getekende verbindingslijnen. Deze scheiding tussen kloksignalen op de kaart en kloksignalen op I2S-poort K6 is aangebracht omdat de poort dan ook kan worden gebruikt als GPIO-poort als er geen audiopoort nodig is. Bij gebruik van de poort als I2S-poort kunnen de kloklijnen in de DSP worden gekoppeld (HCKR met HCKT, FSR met FST en SCKR met SCKT). De zes bovenste lijnen van de audiobus zijn de datalijnen voor audio. Drie daarvan worden intern op de kaart gebruikt, de andere drie zijn verbonden met poort K6. Onder het I2Snetwerk zijn de verbindingen naar de analoge en digitale audiopoorten op het board weergegeven. elektor
09-2011
3
Digital In
RX SRC
TX
Digital Out
SRC4392 110003 - 13
Figuur 2. De audiosignaalwegen.
De tweede bus is de SPI-bus met vier deelnemers. Ook hier is de DSP de master. Deze zorgt voor het kloksignaal voor de aansturing van de schuifregisters. De drie slaves zijn de SEEPROM als snel toegankelijk, herschrijfbaar, niet-vluchtig geheugen, de SRC en SPI-poort K7 waarmee willekeurige externe SPI-slaves kunnen worden aangesloten. In onze DSP-cursus zullen we via deze poort een LED-balkdisplay aansturen. In een SPI-systeem moeten de slaves met chip-select-signalen geactiveerd resp. gedeactiveerd worden, zodat nooit twee slaves tegelijk de MISO-lijn aansturen. De DSP wekt deze signalen op. Er zijn ook lijnen voor de besturing van de SRC. Met één van die lijnen kan de SRC in de reset-stand worden gezet. Dat is bijvoorbeeld nodig
om hem te programmeren. Via de andere lijn geeft de SRC het signaal aan de DSP dat een digitaal audiosignaal beschikbaar is op de ontvanger.
In- en uitvoer van analoge signalen, IC1 tot IC4 De tweekanaals analoge ingangspoort met de connectors K1 en K2 is opgebouwd rond de opamps IC1.A, IC1.B en IC3, een ADC van het type CS5340 (figuur 4). Aan de analoge kant wordt de ADC gevoed met 5 V. De beide operationele versterkers met versterkingsfactor 1 tellen bij het met de condensatoren C1 en C2 AC-ingekoppelde audiosignaal een DC-offset van de halve voedingsspanning op en zorgen voor een laagohmige aansturing van de ADC en 55
DSP-cursus
SRC4392
SDINA SDOUTA
Host Interface
Audio Serial
A
2
LRCKA
and GeneralPurpose Outputs
BCKA
SDINB SDOUTB
CPM CS or A0
Audio Serial
INT RST GPO1 GPO2 GPO3 GPO4
LRCKB Registers
BCKB RXCKO LOCK RX1+
Digital Interface
RX1 RX2+
Master Clock Distribution
BLS SYNC RDY MUTE
MCLK RXCKI
DIR DIT SRC
AESOUT
PORT_B_IN
Digital Interface Transmitter (DIT)
PORT_A_IN
RX4 TX+ TX
SRC_OUT
RX3 RX4+
DIR_OUT
RX2 RX3+
Power
Asynchronous Sample Rate Converter (SRC)
VDD18 DGND1 VDD33 DGND2 VIO DGND3 VCC AGND BGND 110003 - 14
Figuur 3. Communicatie op het DSP-board.
het analoge anti-aliasing-filter. De ADC is vast ingesteld als audio-slave; de DSP zorgt voor de nodige audiokloksignalen: de Masterclock, de Bitclock en de LR-Clock (Left-Right-Clock, die overeenkomt met de sample-frequentie). Afhankelijk van de gewenste sample-frequentie werkt de ADC in één van drie verschillende modi: Single-, double- of quad-speed-modus. Voor elk van deze modi kunnen verschillende verhoudingen tussen de Master-Clock en de Left-Right-Clock worden vastgelegd in het bereik van 64 tot 512. De ADC herkent zelf de door de DSP gedefinieerde klokverhouding, die met het DSP-programma is vastgelegd. Volgens de datasheet worden een dynamisch bereik van 101 dB en een THD+N van -94 dB bereikt, wat ook voor kwalitatief hoogwaardige toepassingen volstaat. De toelaatbare top-top-spanning voor sinusvormige signalen ligt tussen 0,53 en 0,59 maal de voedingsspanning; de gemiddelde waarde is 2,8 V. De digitale kant wordt gevoed met de DSP-voedingsspanning van 3,3 V. Deze is ingesteld op I2S-audiomodus door middel van pullup-weerstand R14 aan pen 4. De I2S-audiomodus wordt gebruikt voor alle interne audiosignalen op het DSPboard. R13 en C20 zorgen er voor dat de DSP wordt gereset bij het inschakelen. 56
De tweekanaals analoge uitgangspoort met de connectors K3 en K4 is opgebouwd rond een DAC (IC4) van het type PCM1781 en de opamps IC2.A en IC2.B. Deze DAC biedt met zijn 24-bits resolutie voor audiosignalen een dynamisch bereik van 106 dB en een THD+N van typisch 0,002%, wat overeen komt met ongeveer -94 dB. De samplefrequentie mag tussen 5 kHz en 200 kHz liggen. De DAC is ingesteld op I2S en wordt als audio-slave aangestuurd door de DSP. De door de DSP opgewekte audiokloksignalen zijn voor alle digitale audiopoorten gelijk, dus zowel voor de ADC, de DAC als de SRC. Met de vier configuratiepennen 1 tot 4 is IC4 ingesteld op I2S, de-emphasis off en mute off. Ook de DAC herkent automatisch de door de DSP gedefinieerde verhouding tussen Master- en LR-Clock, waardoor hij zonder aparte programmering kan werken. De beide reconstructiefilters (laagdoorlaatfilters, waarmee het digitale signaal wordt omgevormd in een analoog signaal) zijn opgebouwd als tweede-orde Butterworthfilters met een DC-versterking van A0 = 1 rond beide opamps. Met de aangegeven waarden van de componenten ligt het kantelpunt op ca. 30 kHz. Dit punt is met opzet niet te hoog gekozen, omdat de DAC’s hoogfrequente ruis produceren. De band-
breedte kan daarom beter zo klein mogelijk worden gekozen. De eigenschappen van het filter kunnen eenvoudig worden aangepast. Als we de Butterworth-karakteristiek aanhouden, is de kwaliteitsfactor van het filter Q = 1/√2 = 0,7071. We kiezen eerst de DC-versterking A0, de capaciteitswaarde van condensator C26 voor het filter van het linker- en C27 voor het rechterkanaal, en de afsnijfrequentie f0 of w0 = 2pf0. De waarden van de andere componenten in het linker kanaal worden dan C28 = C26/ (4·Q 2 ·(1+A 0 )), R24 = 2·Q/(w 0 ·C26), R25 = (1+A0)·R24 en R23 = (1+A0)·R24/A0. Als we uitgaan van Q = 0,7071 en A0 = 1, kunnen we de formules vereenvoudigen tot C28 = C26/4, R24 = 1,4142/(w0·C26) en R23 = R25 = 2·R24. De onderdelen voor het filter van het rechter kanaal worden op dezelfde manier berekend. De DC-offsetspanning voor de filters is beschikbaar op pen 13 van de DAC. Er is speciale aandacht besteed aan de bescherming van de analoge uitgangen. Dat is van belang als ze (per ongeluk) worden aangesloten op een microfooningang met een fantoomvoeding van misschien wel 48 V. Om bestand te zijn tegen zulke gelijkspanningen in beide richtingen zijn de uitgangselco’s bipolair geschakeld en geschikt voor hoge spanningen. De dubbele Schottky-diodes D1 en D2 beschermen de opamps bij een eventuele kortsluiting in de kabel, want dan zouden de tot 48 V opgeladen elco’s zich anders ontladen via de opamps. Bij volledige uitsturing van de DAC met een sinussignaal bedraagt de uitgangsspanning ca. 3,9 Vtt.
In- en uitvoer van digitale signalen, IC8 tot IC10 De overdracht van digitale audiosignalen op het DSP-board gebeurt in I2S-formaat. Dit is een synchroon formaat dat gebruik maakt van drie lijnen: LR-clock, Bit-clock en audio-data. Voor communicatie naar buiten moet een ander formaat (‘digitale audio’, gewoonlijk S/PDIF) worden gebruikt. Dit is zo gecodeerd dat het bijvoorbeeld via een optische verbinding met één glasvezelkabel kan werken. Daar zijn twee converters voor 09-2011
elektor
C69 C68 C70
1u 63V
C72 C71 R58
100n 100u 25V
3
+1V25
C66 C65
100n 10u 63V
2
REG1117 -1V8 3 2
adj
C73
+5VD
C75
L7
470u 10V
C74
10u 63V
220n 1u 63V
3
IC13
MODB
+3V3 IC11 100n 10u 63V
C55 C56
100n 100u 25V
+3V3 IC12
D4 MODD
LM1085IT -3.3 2
BAT85
+3V3
C67
R57
110001 - 11
2 4 6 8 10
K10 1 3 5 7 9
IC8 SRC4392
+3V3
R55
D3
100n
R56
1 2 3 4 5 6 7 8 9 10 11 12 C54
C53
100n R54
LM317
C59 C60
100n 10u 63V
C57 C58
100n 10u 63V
36 35 34 33 32 31 30 29 28 27 26 25 SYNC BLS AESOUT VDD33 TX+ TXDGND2 GPO4 GPO3 GPO2 GPO1 MCLK
+3V3 coax opt
3
JP1
RX1+ RX1RX2+ RX2RX3+ RX3RX4+ RX4VCC AGND LOCK RXCKO
C63 C64
10u 100n 63V
1
75R
1
0
K11 5V 24.576MHz
2 Q
M95M01-R
D
3 W 1 S 6 C
5
IC6 HOLD 7
R52 10k
R51 10k
R50 10k
4 MUTE 2 DEMP0 3 DEMP1 1 FMT VOUTR
14 R32
C29
100u 100u 50V 50V
D2
R30 220R
R
K4
L R
K3
K2
C33 C32
100u 100u 50V 50V R31
100k
K1
BAS70-04
+5VA R29 220R
C31 C30
D1
BAS70-04
+5VA
470p
R9 470R C6 6 R6 2u2 R2
R5 C4
100n C2
+5VA
5
2
IC1B
470p
R7 470R C5
7
7
1
IC2B
6
820p
R27 2k2
C27
5
3
IC2A
R33
PCM1781
10u 63V
13 VCOM C36 3n3
C26
3n3 R26 4k7 R28
IC4
VOUTL 15 R23 4k7
820p R24 2k2 2
R10 220R
1
IC1A 3
R4 2u2
100k
L
100n
C52
E/D
C51 R53
R49 10k
+3V3 +3V3
5 SCK 7 BCK 8 LRCK 6 DATA 16 ZEROA C37 C38
10u 100n 63V R25
C28
4n7
C8
4n7 R8 220R
C7
100n
1
IC7
+3V3 R21 R22 R19 R20
10 8 6 4 2
L3 10n 10u 100n 10n 63V
VQ 11
1u
C15 C16 C17 C18 C19
IC3 CS5340 AINR 12
SCK MOSI MODA MISO
K7
9 7 5 3 1
SS
LED Bargraph Port
+3V3 +5VA
10n
C20 2 7 8 4 9 MCLK SCLK LRCK SDOUT RESET AINL 10
3
10k R48
RESET TMS TDI TDO TCK
19 TIO00 21 PLOCK/TIO2 20 WDT/TIO1 9 SS_HA2 10 SCK_SCL 11 MISO_SDA 12 MOSI_HA0
IC5 DSP56374 2 4 6 8 10 12 14
K6 SDO4
22R 10k 10k 10k 10k 10k R18
R17
R16
R34 R35 R36 R37 R38
22R
1 3 5 7 WDT 9 11 13
SCKT FST HCKT 22R
R15 22R R13
10u 100n 10n 63V
R11 R12
+3V3 +5VA
R14
100n 10n
C24 C25 C21 C22 C23
+5VD
K8 OnCE
2 4 6 8 10 12 14 1 3 5 7 9 11 13
10u 63V R47 10k
24 17 16 15 18
C39
10k
41 SCAN 33 PINIT/NMI 32 XTAL 31 EXTAL
R46
MODC 2 3 4 5 8 MODA_IRQA_PH0 MODB_IRQB_PH1 MODC_IRQC_PH2 MODD_IRQD_PH3 HREQ_PH4
+3V3
+3V3
INT
K12
-
+ R42 R43 R44 R45
45 49 43 44 48 42 51 50 39 38 37 36
SCKR_PC0 FSR_PC1 HCKR_PC2 SCKT_PC3 FST_PC4 HCKT_PC5 SDO5_PC6 SDO4_PC7 SDO3_PC8 SDO2_PC9 SDO1_PC10 SDO0_PC11
+3V3_PLLA +3V3 +1V25
C45 C46
100n 100n 100n 100n 100n 100n 1n
C40 C41 C42 C43 C44
10u
L4
+3V3
C47 C48 C49 C50
+3V3
DSP_HREQ
100k
R1
100k
100n C1
100k
R3
100k
C3
47k
0
47k
100n 100n 100n 100n
10u 100n 10n 63V
FILT+
13
C12 C13 C14
15
10k
1
IC1,IC2 = OPA2353UA
VA
10k
16
+5VA
M0
4
M1
4
REFGND
100n 10u 63V
14
3 6
100n 10u 63V
VL VD
100u 25V
4k7
GND
+5VA
5
C34 C35
11
8
4k7
VCC
IC2
TEST
C10 C9
AGND
8
9
2k2
IC1
12 47k
10k
C11
22R
R39 R40 R41
K5
22R
22R
10k 10k 10k
SDO5 SDO2 SDO1
5V
22R
+3V3_PLLA
TIO0 L8
10k
6 22 35 47 30 25 27 1 14 40
L1
8
10k
CORE_VDD CORE_VDD CORE_VDD CORE_VDD PLLD_VDD PLLA_VDD PLLP_VDD IO_VDD IO_VDD IO_VDD
+1V25
4
CORE_GND CORE_GND CORE_GND CORE_GND PLLD_GND PLLA_GND PLLP_GND IO_GND IO_GND
10k
+3V3
7 23 34 46 29 26 28 13 52
10k
L2
4
10k
+5VA
2
K9
L5
10R
2 C61 C62
1k5
10u 100n 63V
10k
L6
SDO3 SDO0 FSR SCKR
48 47 46 45 44 43 42 41 40 39 38 37
+3V3
BCKB LRCKB SDINB SDOUTB BGND DGND3 VIO NC SDOUTA SDINA LRCKA BCKA
IC9 GP1FAV31RK0F
1
RXCKI MUTE RDY DGND1 VDD18 CPM CS/A0 CCLK/SCL CDIN/A1 CDOUT/SDA INT RST
09-2011
13 14 15 16 17 18 19 20 21 22 23 24
elektor
1
HCKR
IC8 is een zeer krachtige interface-chip. De fabrikant noemt het een Two-Channel, Asynchronous Sample Rate Converter with Integrated Digital Audio Interface Receiver and Transmitter. Het blokschema in figuur 5 toont een aantal functieblokken en vier audiobussen. Aan de linker kant zijn de blokken voor digitale audio getekend. De beide seriële
120R
2
nodig, die het I2S-signaal omzetten naar bijv. S/PDIF en andersom. Deze beide converters, die we zullen aanduiden als Receiver RX en Transmitter TX, zijn ondergebracht in een chip van het type SRC4392 (IC8). Voordat we ingaan op de werking en het gebruik van IC8, bespreken we eerst kort de digitale audio-interfaces van het DSP-board. Op de kaart zelf zijn een optische ontvanger IC9 en een optische zender IC10 aanwezig, die met de RX en TX van IC8 kunnen worden verbonden. Er zijn ook elektrische aansluitingen beschikbaar. Met een jumper op header JP1 wordt de optische of de elektrische ingang gekozen. Voor gebruik van de optische en de coaxiale poort moet op header K9 een jumper op pen 1 en 2 gestoken worden (min-aansluiting met massa verbinden), zodat ingang RX1- van de SRC via C54 wordt verbonden met massa. Als een professioneel signaal moet worden verwerkt, moet deze jumper worden verwijderd. Op header K9 kan een asymmetrisch signaal worden gezet, dat een afsluitweerstand van 75 W (R54) nodig heeft. Maar er kan ook een professioneel symmetrisch signaal worden aangeboden. In dat geval moeten volgens de norm een standaard scheidingstrafo en twee weerstanden van 18 W rechtstreeks op de XLR-connector worden aangesloten. De scheidingstrafo kan men zelf maken met behulp van een kleine ferrietringkern en enkele centimeters gelakt koperdraad. Op header K10 is een differentiële RS422-uitgang beschikbaar, die ofwel met een scheidingstrafo en een weerstand van 110 W kan worden gebruikt als een professionele AES-3-uitgang, ofwel met een weerstand en een condensator van 10 nF als asymmetrische S/PDIF-uitgang. Op header K6 zijn verder nog extra I 2Sinterfaces beschikbaar, die door de DSP worden aangestuurd en geschikt zijn voor het aansluiten van IC’s met een standaard I2S-interface.
1
3
IC10 GP1FAV31TK0F
DSP-cursus
Figuur 4. Het complete schema van het DSP-board. 57
DSP-cursus
I 2 S Audiobus
SDO5/SDI0 SDO4/SDI1 SDO3/SDI2
SDO4/SDI1 SDO2/SDI3 SDO1 SDO0
(MCLK) (LRCLK) (BCLK)
SDO0 (MCLK) (LRCLK) (BCLK)
Cs_/A0
PortH.1
Rst_
SCK MOSI MISO
Pin#2
Pin#3
Pin#5
Pin#6
Pin#4
MCLK
SDOUTA
BCKA
LRCKA
SDINA
Pin#1
SPI-Bus
Pin#9
Pin#7
Pin#3
Pin#5
D
Q
S_
C
I 2 S-Port K6
Digital Audio
PortH.3
SRC SRC4392 SDIN/A1
Lock_
CCLK
PortH.4
SCK MOSI MISO
SEEPROM M95M01
TX+/TX-
SDO4/SDI1
SDO3/SDI2
FSR
HCKR
TIO0
PortH.0
DSP DSP56374 (52 Pins)
SDO5/SDI0
SDO0
SCKR
FST SCKT
SDO2/SDI3 SDO1
MCLK LRCLK BCLK
HCKT
SCK
DAC PCM1781
VOUTL/VOUTR
BCK
LRCK
DATA
MCLK
ADC CS5340
AINL/AINR
SCLK
LRCK
SDOUT
Analog Audio
MCLK LRCLK BCLK
RX1+/RX1-
SDO0
SDO5/SDI0 SDO3/SDI2 SDO2/SDI3
SPI-Port K7 110003 - 15
Figuur 5: Blokschema van de SRC.
De overige registers worden gevuld met nullen. Voordat kan worden begonnen bij register $01 moeten twee bytes $01 worden geschreven, zodat al met al 54 bytes moeten worden verstuurd. Deze reeks bytes is beschikbaar in het bestand src4392.tab. Een belangrijk signaal van IC8 is het Locksignaal op pen 11, dat aangeeft dat er een geldig digitaal audiosignaal bij de ontvanger binnenkomt. Dit signaal gebruiken we in de DSP-programma’s om van de digitale naar de analoge ingang te schakelen en terug. Als een geldig digitaal signaal beschikbaar is, wordt het SRC-signaal verwerkt, anders wordt het ADC-signaal genomen. LED D3 geeft aan dat een geldig digitaal signaal aanwezig is. IC8 heeft een eigen voedingsspanning van 1,8 V, die met low-drop-regelaar IC11 wordt afgeleid uit de voedingsspanning van 3,3 V.
DSP met klokgenerator, IC5 en IC7 audiopoorten A en B, waarvan op het DSPboard alleen poort A gebruikt wordt, zorgen voor de verbinding met de DSP. De poort werkt in I2S-modus en maakt in- en uitvoer van audio voor de DSP mogelijk. We hebben gezorgd voor twee signaalwegen voor de in- en uitvoer van digitale audiosignalen: De differentiële digitale ingang RX1+ en RX1- op de Digital-Interface-Receiver DIR, van daaruit via de bus DIR-OUT naar de asynchrone Sample-Rate-Converter SRC en tenslotte via bus SRC_OUT naar de seriële PortA, data-uitgang SDOUTA, die met de DSP is verbonden. Het via port A toegevoerde audiosignaal wordt via de bus PORT_A_IN naar de eigen Digital Interface Transmitter (DIT) van IC8 getransporteerd en daar geconverteerd naar een digitaal audiosignaal. De DIR zet digitale audio om in een synchroon intern audiosignaal dat de SRC kan lezen en hij synchroniseert de ingangspoort van de SRC. De uitgangspoort van de SRC wordt gesynchroniseerd door de DSP die de audiokloksignalen naar IC8 stuurt via PortA. Een (asynchrone) SRC interpoleert het audiosignaal. Dat kan men zich als 58
volgt voorstellen: Uit het binnenkomende audiosignaal wordt een quasi-continu signaal gevormd, dat er uit ziet als een analoog signaal. Daarna wordt het met een andere sample-frequentie bemonsterd, waardoor het uitgangssignaal ontstaat. Omdat er geen analoog signaal nodig is, kan het interpolatieproces puur digitaal worden uitgevoerd. De SRC kan audiosignalen met sample-frequenties tussen 20 kHz en 216 kHz verwerken en deze bijvoorbeeld omzetten naar een professionele sample-frequentie van 48 kHz of 96 kHz, waarna ze door de DSP worden verwerkt. De DSP krijgt zijn audiodata van Port A en voert de data ook weer uit naar deze poort via pen SDINA. Als we de functionaliteit en de specificaties van 24 bit resp. 140 dB bekijken, dan is duidelijk dat de gekozen SRC hoort tot de topklasse onder zijn soortgenoten. Deze chip heeft, hoe kan het ook anders, ook een nadeel: Zo’n complexe component heeft geen hardware-modus, hij moet dus worden geprogrammeerd. Het programmeren gebeurt door 52 bytes in de control-registerbank te schrijven. Hiervoor wordt SPIcommunicatie gebruikt (zie tabel).
De audio-DSP, een DSP56374 van Freescale, is een zeer complexe bouwsteen die maar weinig periferie nodig heeft. De klok voor de DSP wordt afgeleid uit het signaal van de 24,576 MHz-kristaloscillator IC7. De interne PLL-klokfrequentievermenigvuldiger van de DSP verhoogt dit met een factor zes, zodat de DSP wordt geklokt met 147,456 MHz. Daardoor hebben we bij een sample-frequentie van 48 kHz 3072 instructies per sample-periode tot onze beschikking voor de signaalverwerking. De DSP leidt uit deze processorklok met interne delers de audiokloksignalen, Master-, Bit- en LR-Clock af, die de ADC, DAC en SRC nodig hebben. De DSP werkt als audiomaster. De belangrijke sample-frequenties zoals 48 kHz en 96 kHz kunnen worden ingesteld. Ook 192 kHz is mogelijk, maar dat heeft technisch gesproken weinig nut. Het is fijn voor reclamemakers als verkoopargument voor hun ADC’s en DAC’s, die nog altijd geen 24-bits geluidskwaliteit leveren maar wel kunnen pronken met een indrukwekkend hoge (maar onnodige) maximale sample-frequentie. In het DSP-blok in figuur 4 zijn de aansluitingen die zijn gegroepeerd op functie, duidelijk te herkennen. Bovenaan en onderaan zijn de aansluitingen voor de voedingsspan09-2011
elektor
Tabel. Programmering van de SRC.
ningen en de massa. De DSP gebruikt voor de periferieschakelingen een voedingsspanning van 3,3 V en voor de processorkern een spanning van maar 1,25 V. Daardoor wordt maar weinig vermogen gebruikt, ook bij hoge klokfrequenties. Aan de linker kant is een groep van 12 aansluitingen te zien, die samen de audiopoort vormen. De ene helft van de aansluitingen zijn de datalijnen van 6 I2S-interfaces, die als in- en uitgangen kunnen werken. Maximaal 4 van de 6 lijnen kunnen ingangen zijn. De andere helft zijn de audiokloksignalen die zijn verdeeld in twee groepen van elk drie klokaansluitingen. De in- en uitgangen kunnen apart geklokt worden, waardoor bijvoorbeeld twee verschillende samplefrequenties kunnen worden gebruikt. Wij maken daar geen gebruik van. We gebruiken de aansluitingen die bedoeld zijn voor de ingangen ook voor de uitgangen. SCKR, FSR en HCKR komen overeen met de I2Skloksignalen Bit-, LR- en Master-clock. Met een DSP-programma zijn de periferieregisters van de klokgenerator naar wens in te stellen. Op het DSP-board wordt de I2S-aansluiting SDO0 (pen 36) gebruikt om de DAC en de SRC.TX aan te sturen, zodat het signaal in de SRC in digitale audio wordt omgezet. De ADC wordt aan de DSP gekoppeld via de als ingang geconfigureerde data-aansluiting SDO4. Aansluiting SDO3 ontvangt het uitgangssignaal van de SRC.RX in IC8. Beide ingangssignalen van de kaart, zowel analoog als digitaal, zijn dus beschikbaar
Adres
Inhoud
Blok
Functie
$01 $03
$37
Alle
Activeren van PortA, TX, RX en SRC
$31
PortA
Format I2S, Source=SRC, Slave, Mute off
$07
$60
TX
Source=PortA, ClockRatio=512, ClockSource=MCLK
$09
$03
TX
BufferSource=SPI
$0D
$08
RX
Input RX1, ReferenceClock=MCLK
$0E
$10
RX
Clock free run after loss of clock
$0F
$22
RX
$1B
$07
GPO1
Reference Clock=24,576MHz
$2D
$42
SRC
Source=DIR, RefClock=MCLK, Mute off, Tracking on
$2E
$03
SRC
64 samples group delay, true decimation, deemphasis off
Receiver non valid data active high
voor de DSP. De drie kloklijnen worden gebruikt door IC3, IC4 en IC8, zodoende lopen ADC, DAC en SRC synchroon. De aansluitingen TIO0 en WDT/TIO1 van de volgende groep pennen zijn verbonden met connectors en deze kunnen naar behoefte worden gebruikt voor het DSP-timer-systeem, de watchdog-timers of als GPIO. De groep SS_HA2 tot MOSI_HA0 vormt een synchrone seriële interface die we gebruiken als bidirectionele SPI-interface. Deze stuurt verschillende periferiecomponenten aan. Om te beginnen wordt IC8 geprogrammeerd. De chip wordt daartoe geselecteerd via DSP-aansluiting MODB. Daarnaast is de seriële EEPROM aangesloten aan de SPI. Deze kan gelezen en geschreven worden. Het selecteren gaat met DSP-aansluiting MODA. Tenslotte wordt in één van de projecten in deze serie ook een LED-board met twee weergavebalken van 40 LED’s via SPI aangestuurd. Op SPI-header K7 kunnen natuurlijk ook andere SPI-devices worden aangesloten, bijvoorbeeld een microcontroller met een toetsenbord en een display,
waarmee dan de instellingen van DSP-programma’s kunnen worden aangepast en weergegeven op het display. In de volgende groep aansluitingen, bovenaan rechts, zijn de pennen MODA_IRQA tot en met MODD_IRQD te vinden. Na het resetten leest de DSP deze aansluitingen en gebruikt de ingestelde niveaus om de bootmodus te selecteren. Als standaard modus is booten via SPI uit de SEEPROM van de kaart ingesteld met behulp van de pullupweerstanden R42, R43 en R45 en de pulldown-weerstand R44. Na het booten kunnen deze aansluitingen worden gebruikt voor hardware-interrupts of als GPIO. We gebruiken drie van de vier aansluitingen als GPIO. Aansluiting HREQ is verbonden met de Lock-uitgang van IC8, waarmee een geldig audiosignaal aan de digitale-audioingang wordt gesignaleerd. Met aansluiting MODD kan IC8 in de reset-stand worden gezet, dit moet gebeuren voor het programmeren van IC8. De DSP-aansluiting MODC_IRQC is beschikbaar op connector K12, deze kan ingezet worden voor het uitAdvertentie
De Europese referentie voor PCB prototypes & kleine series
www.eurocircuits.nl
elektor
09-2011
59
DSP-cursus
Figuur 6: Componentenopstelling van beide kanten van het DSP-board (onderdelenlijst op www.elektor.nl/110003).
voeren van een hardware-interrupt. Wanneer men deze gebruikt, moet echter worden vermeden dat er een conflict ontstaat met het booten via het SEEPROM in DSPmodus 11. Hiervoor moet het niveau op deze pen namelijk gedurende korte tijd na een reset laag zijn. Op het DSP-board wordt dit normaal verzorgd door weerstand R44. De aansluitingen aan de pennen 31, 32 en 33 zijn voor de signaalverwerking niet van belang. Hier wordt de klokgenerator aangesloten en wordt bepaald of bij de reset de PLL in de klokvermenigvuldiger de van DSP moet worden ingeschakeld. De laatste groep aansluitingen omvat de pennen 15 tot 18. Dit is de debugger-interface, die is verbonden met header K8. Deze zorgt voor de communicatie met een op de PC werkend debug-programma, waarmee programma’s kunnen worden geladen en alle DSP-registers en het vluchtige geheugen van de DSP gelezen en geschreven kunnen worden.
DSP-periferie, IC6 en IC7 De periferie van de DSP is snel behandeld, want die bestaat uit maar 2 IC’s, de al genoemde klokgenerator IC7 en de seri60
ële SPI-EEPROM IC6 van het type M95M01, met een opslagcapaciteit van 1 Mbit. De DSP beschikt over drie keer 6 Kwords RAMgeheugen, wat met 3×6.144×24 = 442.368 bits net wat minder is dan de helft van de capaciteit van de SEEPROM. Er zullen maar weinig toepassingen zijn waarbij het nodig is alle DSP-RAM bij het booten te vullen uit de SEEPROM. Bovendien kan de SEEPROM tijdens het gebruik ook gelezen en geschreven worden. Dat gebeurt in vergelijking met de DSP-klok erg langzaam. Maar we kunnen wel probleemloos speciale instellingen en dergelijke, die via de SPI vanuit een user-interface met een microcontroller aan de DSP zijn verstuurd, opslaan en lezen. Bij het programmeren van de SEEPROM met behulp van de handige Autoincrement-modus is de adressering wel wat omslachtig, omdat de SEEPROM is georganiseerd in pagina’s. Bij het lezen en schrijven van grote hoeveelheden data moet met die indeling in pagina’s goed rekening worden gehouden.
Voeding, IC11 tot IC13 Als laatste bekijken we nog kort de voeding van het DSP-board. De kaart heeft twee
5V-aansluitingen, gescheiden in analoog aan kroonsteen K5 en digitaal aan kroonsteen K11. Beide aansluitingen zijn onderling verbonden via zelfinductie L8. Bij het door Elektor geleverde board hoeft alleen maar een externe 5V-netvoeding op K11 te worden aangesloten. Wellicht maakt een gescheiden voeding betere signaal/ ruis-verhoudingen van de analoge signalen mogelijk, maar dat is vooral afhankelijk van de kwaliteit van de voedingen. De drie voedingsspanningen die nodig zijn voor het digitale gedeelte (3,3 V voor de digitale schakelingen, 1,25 V voor de DSP-kern en 1,8 V voor IC8) worden gemaakt met behulp van drie lineaire regelaars IC11, IC12 en IC13.
Het DSP-board Zoals al eerder vermeld wordt het DSPboard door Elektor compleet opgebouwd en getest geleverd. Volgende maand zullen we de eerste stappen met het board en een aantal testroutines beschrijven. Ook zal dan de benodigde PC-software en de omgang hiermee nader worden toegelicht. (110003) 09-2011
elektor