Jag fortsätter prata med mig själv lite i den här tråden... om inte annat så jag kan komma tillbaka hit om några veckor när jag glömt bort hur det var jag tänkte
Angående trafiken över Cat5-kabeln och hur den ska gå till...
Som jag redan skrivit så använder jag LVDS över de fyra paren i kabeln, AC-kopplat i varje ände och med några ESD-skydd men annars direkt kopplat till FPGA:n (som har intern terminering). Jag har nu döpt de fyra paren till CLK, DU, DD och DX (Master-klocka, upstream-data, downstream-data och reserv). Dessutom har jag hittat på den käcka förkortningen Audio Area Network (A2N).
Varje A2N-kedja består av en master och en eller flera slavar. Mastern kan ha flera portar som i så fall bildar separata kedjor. Slavarna har alltid en upstream-port (som kopplas mot mastern) och en downstream-port (som kopplas till nästa slav, om det finns någon). Mastern skickar ut master-klockan och downstream-data, medan den sista slaven i kedjan skickar ut upstream-data. Den sista slaven i kedjan blir tillsagd av mastern att den ska generera paket, hur ofta och hur stora de ska vara. De andra slavarna i kedjan kan också skicka data (både upstream och downstream) men bara genom att modifiera data-paket som passerar förbi.
Data-paketen består av en header och en eller flera "tidsluckor", där tidslucka 0 används för styrdata och resten för audio-data (en tidslucka per kanal).
Audio-datan skickas från mastern och tas emot av de slavar som blivit inställda på att ta emot från just de tidsluckorna, den skickas vidare downstream utan att modifieras. Det är också möjligt att skicka audio upstream, i så fall så fyller en slav i en viss tidslucka som den blivit tilldelad.
Styrdatan tas alltid emot av varje slav och skrivs in i en buffert där processorn behandlar den, och den skickas inte vidare till nästa enhet i kedjan. Istället fylls den tidsluckan med data som processorn skrivit i "utbufferten".
Mastern skickar styrdata till en viss slav i små paket, med en adress-byte som är lika med slavens position i kedjan. När paketet tas emot av processorn i en slav så tittar den på adressen och om den är noll så behandlas paketet lokalt, annars räknas den ner och paketet skickas vidare till nästa enhet. Svar skickas upstream på ungefär samma sätt, fast "adressen" räknas upp i varje steg istället (och börjar på noll), så att mastern vet vem som skickade.
Styrdata är alltså små kommandon i stil med "sätt volymen till -37dB" eller "hur många kanaler har du?" eller "du ska lyssna på tidslucka 5". Väldigt små mängder data allså, så det gör inget att den måste gå via en liten processor i varje slav.
Ujujuj vad mycket text det blev, tar med bilder i nästa inlägg jag lovar
