Čeština / English
Login

Firmware / Audio kodek na FITkitu 2.0

Autor: Karel Slaný ()
Update: 20.10.2009

1. Digitální rozhraní

Rozhraní pro přenos digitalizovaného zvuku tvoří pět signálu uvedených v tabulce. V závislosti na nastavení přenosového protokolu mají některé signály odlišnou funkci.

signál

směr

funkce

BCLK

vstup, výstup

časování

LRCIN

vstup, výstup

synchronizace zápisu

LRCOUT

vstup, výstup

synchronizace čtení

DIN

vstup

datový vstup

DOUT

výstup

datový výstup

Tabulka : Digitální rozhraní kodeku.

Kodek může pracovat jako master nebo slave:

  • master - kodek si nastavuje BCLK, LRCIN, LRCOUT, ty se chovají jako výstup.

  • slave - kodek poslouchá BCLK, LRCIN, LRCOUT, které se chovají jako vstupy. Tyto signály musí nastavovat připojené zařízení. Protokol a časování musí korespondovat s konfigurací kodeku.

Rozhraní pro přenos digitálního zvuku podporuje čtyři komunikační protokoly, jejich výčet naleznete v dokumentaci TLV320AIC23B. Zde je popsán pouze DSP režim, protože ten je použit pro komunikaci s FPGA.

1.1. DSP režim

Jedná se o režim kompatibilní s McBSP porty DSP procesorů firmy Texas Instruments. Signály `signal:LRCIN`` a LRCOUT slouží jako synchronizace přenosu datových rámců. Sestupná hrana těchto signálů zahajuje přenos jednoho rámce. Každý rámec se skládá ze dvou slov. Jedno slovo odpovídá jednomu vzorku. Bitová šířka slova může být nastavena na 16b, 20b, 24b nebo 32b. V jednom rámci je nejdříve přenášeno slovo levého kanálu, které je okamžitě následováno vzorkem pravého kanálu. U obou slov je přenos zahájen nejvyšším významovým bitem. Přenos dalšího rámce musí být zahájen signály LRCIN nebo LRCOUT.

aud_dsp_io.png

Obrázek 1.1: Časování signálů v DSP režimu. Diagram ukazuje časování pro LPR=1, které je použito při komunikaci s FPGA. To znamená, že první bit levého vzorku levého kanálu musí být dostupný na náběžné hraně BCLK až za sestupnou hranou signálů LRCIN a LRCOUT. Šířka slova je nastavena na 16 bitů.

Rychlost nastavování signálů LRCIN a LRCOUT závisí na použité vzorkovací frekvenci.

2. Čtení digitálního signálu

Komponenta aic23b_dsp_read je implementována jako generická komponenta určená ke čtení digitalizovaného zvuku v DSP režimu kodeku. Je ji možné vysyntetizovat pro všechny šířky přenášeného slova - tedy 16b, 20b, 24b a 32b.

Rozhraní komponenty je uvedeno na obrázku 2.1.

aud_dsp_read.png

Obrázek 2.1: Rozhraní komponenty aic23b_dsp_read.

Rozpis rozhraní komponenty:

  • RST : in std_logic

    Signál, který nastavuje výchozí stav.

  • CLK : in std_logic

    Hodinový signál, kterým je celá komponenta řízena.

  • ALRCOUT, ABLKC, ADOUT : in std_logic

    Tyto signály jsou připojeny na piny kodeku LRCOUT, BCLK a DOUT.

  • LOUT, ROUT : out std_logic_vector(n-1 downto 0)

    Hodnoty vzorků levého a pravého kanálu vyčtené z kodeku. Hodnota n v závislosti na požadované šířce slova může být 16, 20, 24 nebo 32.

  • DATA_VALID : out std_logic_vector

    Signalizace vystavení dat na výstup. Je nastaven na 1 při vystavení přečtených dat. Po jednom hodinovém cyklu CLK spadne do 0.

VHDL popis komponenty naleznete v souboru fpga/ctrls/audio/aic23b_dsp_read.vhd.

Rozhraní kodeku pracuje na 12MHz. Signál CLK tedy musí být taktován alespoň na dvojnásobné frekvenci, aby byla data správně načítána.

Komponenta předpokládá, že je kodek nakonfigurován jako master v DSP režimu. V opačném případě nebude fungovat.

3. Generování digitálního signálu

Komponenta aic23b_dsp_write je implementována jako generická komponenta určená k zápisu digitalizovaného zvuku v DSP režimu kodeku. Je ji možné vysyntetizovat pro všechny šířky přenášeného slova - tedy 16b, 20b, 24b a 32b.

Rozhraní komponenty je uvedeno na obrázku 3.1.

aud_dsp_write.png

Obrázek 3.1: Rozhraní komponenty aic23b_dsp_write.

Rozpis rozhraní komponenty:

  • RST : in std_logic

    Signál, který nastavuje výchozí stav.

  • CLK : in std_logic

    Hodinový signál, kterým je celá komponenta řízena.

  • ALRCIN, ABLKC: in std_logic

    Tyto signály jsou připojeny na piny kodeku LRCIN a BCLK.

  • LIN, RIN : in std_logic_vector(n-1 downto 0)

    Hodnoty vzorků levého a pravého kanálu zapisované do kodeku. Hodnota n v závislosti na požadované šířce slova může být 16, 20, 24 nebo 32.

  • READY : out std_logic

    Signalizuje připravenost kodeku k přenosu dat. Je nahozen na 1 pokud se nepřenáší data do kodeku.

  • DATA_REQ : out std_logic

    Signalizuje ukončený přenos dat. Po jednom taktu CLK je shozen do 0.

  • ADIN : out std_logic

    Připojen na pin kodeku DIN.

VHDL popis komponenty naleznete v souboru fpga/ctrls/audio/aic23b_dsp_write.vhd.

Rozhraní kodeku pracuje na 12MHz. Signál CLK tedy musí být taktován alespoň na dvojnásobné frekvenci, aby byla správně rozpoznána synchronizace ALRCIN a data správně zapsána do kodeku.

Komponenta předpokládá, že je kodek nakonfigurován jako master v DSP režimu. V opačném případě nebude fungovat.

Zobrazeno: 2484x Naposledy: 2.6.2023 04:54:37