Čeština / English
Login

Aplikace / Digitální zvuk TLV320AIC23B v MCU

Autor: Karel Slaný ()

Abstrakt: Práce s digitálním zvukem kodeku TLV320AIC23B v MCU

Update: 14.10.2009

1. Popis aplikace

V FPGA je z BRAM vytvořen kruhový buffer o kapacitě 512 32-bitových položek. Každá položka se skládá z dvou 16-bitových vzorků, pro levý a pravý kanál jeden. Použitá BRAM má dva porty, které zpřístupňují její obsah. Port A slouží k zápisu/čtení dat do/z kodeku, k portu B je připojen řadič SPI připojený k MCU. Tento SPI řadič slouží čistě k přenosu zvukových dat mezi FPGA a MCU a tvoří tak samostatný přenosový kanál s přenosovou rychlostí 14MHz v každém směru. MCU pak realizuje čtení zvukových dat a jejich zpětný zápis. Celá aplikace se chová jako propojení digitálního výstupu s digitálním vstupem kodeku přes MCU.

Obslužná aplikace digitalizuje vstupní signál z linkového vstupu JP6 a přehrává jej na výstupu JP7.

wire_mcu.png

Obrázek 1.1:

Na obrázku 1.1 je znázorněno blokové schéma zapojení komponent. Bločky codec reader a codec writer jsou realizovány jako samostatné generické komponenty aic23b_dsp_read a aic23b_dsp_write, které realizují převod signálu pro přenos do kodeku. Dohromady s BRAM tvoří komponentu aic23b_dsp_ringbuffer jejíž VHDL popis naleznete v souboru fpga/ctrls/audio/aic23b_dsp_ringbuffer.vhd. Blok fast SPI realizuje řadič druhého SPI pro přenos zvuku. VHDL popis komponenty naleznete v souboru fpga/spi_controller.vhd. Bloky BRAM CU jsou realizovány jako procesy. Slouží k výpočtu adresy pro zápis a čtení z BRAM. Jsou řízeny komponentami, které realizují komunikační rozhraní pro kodek a MCU.

1.1. Ovládání aplikace

Kodek TLV320AIC23B se dá rozdělit na dvě části - analogovou (zesilovače a mixer) a digitální (A/D a D/A sigma delta převodník, digitální sériové rozhraní). Analogová část umožňuje obejít (bypass) digitální část. Aktivace digitálního rozhraní se v aplikaci provede příkazem DSP_ON, příkazem BYPASS_DSP deaktivujete digitální rozhraní a zapne se bypass. Pokud neslyšíte zvuk ani po zadání příkazu BYPASS_DSP ujistěte se, zda máte správně připojen linkový vstup.

Příkazem DSP_ON se skrze konfigurační SPI rozhraní kodeku nastaví konfigurační registry, čímž se aktivují A/D D/A převodníky, nastaví komunikační protokol na DSP režim, vzorkovací frekvence a bitová šířka vzorků.

Příkaz BYPASS_DSP deaktivuje digitální převodníky a aktivuje analogový bypass, kterým se propojí analogový vstup s analogovým výstupem.

V obou předchozích případech, je aktivní výstup JP7.

Příkazem MUTE se v obou režimech sníží hlasitost výstupu na minimum. Příkaz RESTORE obnoví původní hlasitost výstupu.

2. Rozhraní SPI pro přenos zvuku

MCU je v této aplikaci připojeno k FPGA pomocí dvou SPI rozhraní. První SPI je klasické, určené pro komunikaci s SPI řadičem. Je definováno v knihovně libfitkit. Druhé SPI rozhraní slouží pouze k přenosu digitálního zvuku. Funkce pro MCU naleznete v souborech mcu/fspi.h a mcu/fspi.c. Toto rozhraní pracuje na 14MHz.

3. Zprovoznění aplikace

  1. Před spuštěním kodeku se ujistěte, že propojky J3, J4 jsou aktivní a J2 je neaktivní.

  2. Do konektoru JP7 zapojte sluchátka a do JP6 zdroj signálu (např. MP3 přehrávač).

  3. Přeložte aplikaci.

  4. Naprogramujte MCU a FPGA a spusťte terminálový program.

    Nyní byste měli ve sluchátkách slyšet zvuk (vzorkovaný na 8kHz) přicházející do linkového vstupu JP6.

Zobrazeno: 3307x Naposledy: 30.9.2023 17:38:42