I2S komunikacijski protokol - etf-unibl/sava-drina GitHub Wiki

I2S komunikacijski protokol

I2S komunikacijski protokol predstavlja standardizovan serijski protokol koji se pomoću serijske magistrale koristi za povezivanje digitalnih audio uređaja. Koristi se za komunikaciju između integrisanih kola u električnom uređaju. Gledajući namjenu, ovaj protokol je razvijen da bi se omogućila razmjena audio podataka, što je osnovni razlog zašto je korišten na ovom projektu, te zašto je bitno posvetiti posbnu pažnju za njegovu realizaciju. Ovaj protokol je veoma sličan SPI protokolu, s razlikom što je I2S protokol streaming protokol, što znači da uvijek prenosi podatke. Za svaki audio uzorak postoji vrijednost lijevog i desnog kanala. Vrijednosti mogu biti bilo koji broj bita, iako su najčešće vrijednosti od 16, 20, 24 i 32 bita.

I2S magistrala razdvaja signale takta i serijskih podatakam što rezultuje jednostavnijim prijemnicima od onih koji su potrebni za asihrone komunikacione sisteme.

Na sledećoj slici je prikazan vremenski dijagram I2S komunikacije:

image

Posmatrajući prethodnu sliku, možemo vidjeti da postoje tri signala uključena u prenos audio podataka:

  1. Serial clock (SCK,BCLK)
  2. Word select (WS,LRCLK)
  3. Serial data (SD)

Serial clock

Serial clock signal služi za sinhronizaciju rada različitih komponenti u audio sistemu. Bitno je napomenuti da je ova frekvencija takta podesiva i zavisi od odmjeravanja, broja bita kojim se predstavlja, te broj kanala koji se koristi.

WS linija

S obzirom na to da se radi o audio signalima, teoretski moguće je koristiti dva kanala za prenos, pa zato imamo prenos u vidu logičke jedinice (koristi se desni kanal) ili logičke nule (koristi se lijevi kanal). Signal WS je zajedno sa SD sinhronizovan sa opadajućom ivicom serijskog prenosa, pošto se podaci odmjeravaju na rastuću ivicu. Da bi se olakšalo rukovanje podacima i na strani prijemnika i na strani predajnika, WS signal se promijeni jedan clock period prije završetka riječi podatka, kao što se može vidjeti na slici iznad.

Serial data

U ovoj liniji se prenose odmjereni podaci koji se ili obrađuju ili su obrađeni. Kao i do sada zapis podataka je moguć u LSB ili MSB notaciji. Linija serijskih podataka prenosi dva vremenski multipleksirana kanala podataka - lijevi i desni kanal. Veoma je značajno da se pri prenosu digitalne vrijednosti prvo prenose najvažniji bit (MSB) u formatu 2 komplementa, jer prijemnik i predajnik mogu uključivati različite dužine riječi. Predajnik šalje ono što ima, a prijemnik uzima ono što može da iskoristi, što dalje znači da predajnik i prijemnik moraju prepoznati koliko bita se prenosi. Ako je dužina riječi prijemnika veća od dužine riječi predajnika, LSB biti se postavljaju na nulu. Ako je dužina riječi prijemnika manja od dužine riječi predajnika, LSB biti se zanemaruju. Linija za odabir riječi označava koji kanal se trenutno emituje (niski = lijevi kanal, visoki = desni kanal). MSB podatkovne riječi tog kanala se prenosi jedan ciklus takta nakon što se linija za odabir riječi prebaci, nakon čega slijedi ostatak riječi podataka. Bitovi podataka se prenose na opadajućim rubovima takta i čitaju na rastućim rubovima takta.

I2S Transmitter i Receiver

I2S modul podržava i prenos i prijem serijskih audio podataka. U oba slučaja serijski podaci se pomijeraju sinhrono sa signalima SCK I WS. I Transmitter i Receiver mogu raditi i u Master i u Slave režimu rada. Najbolji primjer za to su sledeći blok dijagrami koji opisuju ovaj vid komunikacije:

image

Blok dijagram I2S transakcije

Prije svega postoji gledajući specifikacioni dokument jedne ovakve komunikacije, moguće je objasniti osnovni način komunikacije između master i slave uređaja:

image

Ovdje sada imamo takvu situaciju, gdje će naše TX i RX linije da kontroliše master (u našem slučaku logika koja će se realitovati pomoću FPGA platforme). Takođe ovaj uređaj će da generiše SCK i WS liniju.

image

Nakon prikazane uopštene šeme i načina komunikacije na prvoj slici, na drugoj slici imamo detaljniju blok šemu I2S komunikacije pomoću koje će se odvijati komunikacija. Na lijevoj strani se nalazi RX linija koja će ADCDAT podatke upisivati u pomjerački registar, a koji su povezani sa dva bafera, u zavisnosi da li se radi o lijevom ili desnom kanalu. Nakon toga slijedi faza obrade podataka koji će se dalje proslijediti na TX stranu. Dalje, slijedi uzimanje podataka iz bafera i njihovo slanje na CODEC.

U prilogu se nalaze mogući način realizacije:

image