Stap 4:.. toevoegen een I2S converter...
Kijkend naar de gegevensbladen opnieuw ik merkte dat de I2S uitgang (eigenlijk ik kijk in de documentatie van de chip in de HifiBerry project waarvan ik ben met behulp van het stuurprogramma gebruikt, de chip is een pcm5102) van de RPI is iets anders dan wat de oversampler chip verwacht. De "standaard" I2S signaal vertragingen in het algemeen de gegevens één klok achter de LR-signaal. Hoe te compenseren dit?
Er zijn twee manieren om deze aan te pakken:
1. programmeren van een kernel driver die niet de gegevens vertragen doet. Het pcm5102 stuurprogramma wordt expliciet de gegevens vertraging ingesteld op 1 in het register van de TXC_A van de motor van de BCMs PCM (documentatie hier pagina 119 +). Wijzigen dat op 0 moet doen. Maar ik houd niet van Kernel te compileren een RPI nu...
2. bouwen sommige vintage logica te doen, YEAH thats de manier ik het :)
Hier is een schema...
Het idee is om de gegevens door 1 en de LR signaal door 2, hierdoor de gegevens naar voren wordt verplaatst tijdig (ten opzichte van de LR-signaal) zodat ze line-up als wilde vertraging. Om dat te doen, moeten wij 3 x D-Flipflops en een omvormer voor de klok. Ik vond 2 x 4035 en 4001 in mijn collectie vintage chip, dit zal (zou ook kunnen bouwen met 7474 / 74174 en sommige andere ICs).
De 4035 is een veelzijdige 4 bit shift register (dit heeft 4 slippers in een lijn) 4001 is een 4 x noch die fungeert als de omvormer dan de ingangen zijn strak samen.
Ik gebruik een 4035 te verschuiven van de gegevens en een andere te verschuiven van de LR. De uitgangen Q1-Q4 zal tonen de input vertraagd door 1-4 klokken (de invoer is verschoven via het register, dat is dat verschuiving registers doen). Zo krijgt de oversampler het nieuwe gegevens van Q1 van de gegevens-shifter en LR van Q2 van de LR-shifter. Eenvoudig, nietwaar? De oversampler krijgt de omgekeerde klok (soort vertraagd door 1/2 klokcyclus) Dit is noodzakelijk omdat de shifter enige tijd nodig om de klok in de gegevens en bieden een stabiele output.
De afbeeldingen tonen origineel en vertraagde LR signaal, kloksignaal, analoge uitgang met kraken.
Resultaat...
Ja dat klinkt als muziek.
Nog een beetje cracky (~ 50Hz tock tock) - zou kunnen worden een klok drift, later onderzoeken...
Hoe klinkt dat?
Een beetje luid rond de mids en hights - zou de hoofdtelefoon, de te bouwen in hoofdtelefoon versterker is een beetje te luid voor mijn smaak en mijn hoofdtelefoon. Onderzoek naar...
Verlaagd de HP volume, heb ik al gezegd dat de PCB een ruimte voor een volume pot heeft. Ik heb ingevoegd 4 weerstanden die een beetje het volume lager zet.
Nadruk?
Dat op zichzelf is een hack van de oude school, geïntroduceerd om de beperkingen van de oude 14-bits DAC's te overwinnen. Het werkt een beetje als de Dolby ruisonderdrukking, bij het opnemen van u toevoegen lawaai, bij het afspelen van u wegnemen op en het geluid van de transmissie verdwijnt met het - iets dergelijks.
Knippen van pin 36 van de TA9200 en verbonden het nu open trace op een switch aan GND/5V zodat ik het handmatig kunt schakelen. De standaardinstelling is beter wanneer de binnendrongen, dus het moet gaan om 5V om te deactiveren nadruk. Deze schakeloptie wordt een transistor als in de mute sectie geschakeld maar dit verandert de reactie van het uitvoerfilter door draaien off/op delen van het filter netwerk - lastig analoge schakeling ontwerp.
Krakend???
Ik denk dat de inbreker een klok drift vandaan. De RPi duwt uit de gegevens met zijn 44,1 kHz * 32-bits-klok, de oversampler processen die met zijn eigen klok (ook 44,1 kHz * 32 (* 12 geeft de 16,9 MHz)) beide klok drift weg totdat één bit gegevens sprongen aan zijn buurman bit effectief het opschalen door 2 die produceert de piek in één enkel monster.
Oplossing 1 - pull gegevens uit de RPi met de samplers klok over. Hierdoor zou de DAC en OS de master klok. Het zou betekenen dat het stuurprogramma wijzigen module (of met behulp van een ander)
Oplossing 2 - gek hardware hacker en een klok multiplier op te bouwen. Dit kan multi de gegevens klok (44100 * 2 * 16 per sec) door 6 of 12 tot de klok voor het oversampling circuit. Dit zal elimineren de tweede klok en hun zal niets te drijven weg aangezien alle klokken zijn afgeleid van één gemeenschappelijk klok.
Een manier om dat te bereiken zou het gebruik van een vertraging-line. Een ander houdt PLLs - nieuw voor me ook. Denken...