Philips SAA 1099 je zvukový generátor vyvinutý firmou Philips. Obvod se používal v prvních verzích zvukové karty Sound Blaster a jejích předchůdcích. Je také použit v počítači SAM Coupé. Zvukový generátor Philips SAA 1099 umožňuje generovat šestikanálový stereo zvuk.
Popis obvodu
Generovaný zvuk je programován pomocí 32 registrů, některé z registrů jsou ale nepoužité.
registr
význam
0
hlasitost (amplituda tónu) kanálu 0
1
hlasitost (amplituda tónu) kanálu 1
2
hlasitost (amplituda tónu) kanálu 2
3
hlasitost (amplituda tónu) kanálu 3
4
hlasitost (amplituda tónu) kanálu 4
5
hlasitost (amplituda tónu) kanálu 5
6
rezervováno - nevyužito
7
rezervováno - nevyužito
8
číslo tónu v kanálu 0
9
číslo tónu v kanálu 1
10
číslo tónu v kanálu 2
11
číslo tónu v kanálu 3
12
číslo tónu v kanálu 4
13
číslo tónu v kanálu 5
14
rezervováno - nevyužito
15
rezervováno - nevyužito
16
číslo oktávy, ve které se nachází přehrávaný tón v kanálech 0 a 1
17
číslo oktávy, ve které se nachází přehrávaný tón v kanálech 2 a 3
18
číslo oktávy, ve které se nachází přehrávaný tón v kanálech 4 a 5
19
rezervováno - nevyužito
20
nastavení, ve kterých kanálech je přehráván tón
21
nastavení, ve kterých kanálech je přehráván šum
22
nastavení frekvence generátoru šumu
23
rezervováno - nevyužito
24
nastavení průběhu obálky amplitudy tónu v kanálu 2
25
nastavení průběhu obálky amplitudy tónu v kanálu 5
26
rezervováno - nevyužito
27
rezervováno - nevyužito
28
hlavní reset a povolení přehrávání
29
rezervováno - nevyužito
30
rezervováno - nevyužito
31
rezervováno - nevyužito
Registry 0 - 5 slouží k nastavení amplitudy (hlasitosti) tónu na příslušném kanále. Nezávisle na sobě se nastavuje amplituda pro levou a pravou část jednotlivých kanálů.
registr
0 (1, 2, 3, 4, 5)
bit
7
6
5
4
3
2
1
0
amplituda pravé části kanálu
amplituda levé části kanálu
Registry 8 - 13 společně s registry 16 - 18 slouží k nastavení generované frekvence tónu v jednotlivých kanálech. Do registrů 8 - 13 se zapisují čísla tónů, registry 16 - 18 určují, ve kterých oktávách se tyto tóny nachází.
registr
8 (9, 10, 11, 12, 13)
bit
7
6
5
4
3
2
1
0
číslo tónu
registr
16 (17, 18)
bit
7
6
5
4
3
2
1
0
oktáva kanálu 1 (3, 5)
oktáva kanálu 0 (2, 4)
Registr 20 určuje, ve kterých kanálech je přehráván tón.
registr
20
bit
7
6
5
4
3
2
1
0
tón v kanálu 5
tón v kanálu 4
tón v kanálu 3
tón v kanálu 2
tón v kanálu 1
tón v kanálu 0
Stejným způsobem registr 21 určuje, ve kterých kanálech je přehráván šum.
registr
21
bit
7
6
5
4
3
2
1
0
šum v kanálu 5
šum v kanálu 4
šum v kanálu 3
šum v kanálu 2
šum v kanálu 1
šum v kanálu 0
Registr 22 určuje frekvenci generátoru šumu. Generátory šumu jsou v obvodu dva, jeden pro kanály 0, 1 a 2, druhý pro kanály 3, 4 a 5.
registr
22
bit
7
6
5
4
3
2
1
0
frekvence generátoru šumu pro kanály 0, 1 a 2
frekvence generátoru šumu pro kanály 3, 4 a 5
Fekvence generátoru šumu je určena kombinací bitů:
00 - 31,25 kHz,
01 - 15,6 kHz,
10 - 7,8 kHz,
11 - frekvence je odvozena od frekvence generátoru tónu v kanálu 0 pro šum v kanálech 0, 1 a 2, resp. od frekvence generátoru tónu v kanálu 3 pro šum v kanálech 3, 4 a 5, a může být v rozsahu od 61 Hz do 15,6 kHz.
V kanálech 2 a 5 může být obálka amplitudy tónu nejenom konstantní, ale také proměnná. Průběh obálky se pak nastavuje pomocí registrů 24 a 25.
registr
24 (25)
bit
7
6
5
4
3
2
1
0
zapnutí proměnné obálky
0 .. pro generování průběhu obálky bude použito vnitřní časování, 1 .. pro generování průběhu obálky bude použito vnější časování
0 .. čtyřbitové rozlišení průběhu obálky, 1 .. tříbitové rozlišení průběhu obálky
průběh obálky amplitudy
0 .. v levé i pravé části kanálu je průběh obálky totožný 1 .. v pravé části kanálu je průběh obálky inverzní
V případě vnitřního časování je průběh obálky amplitudy kanálu 2 odvozen od frekvence generátoru tónu v kanálu 1, průběh obálky amplitudy kanálu 5 odvozen od frekvence generátoru tónu v kanálu 4. V režimu vnějšího časování slouží jako zdroj hodinového signálu vstup A0, který jinak funguje jako přepínač mezi vybíráním registrů a zápisem hodnot do zvoleného registru.
Generované obálky amplitudy mají následující průběhy:
Registr 28 slouží k zapnutí a vypnutí obvodu jako celku a k resetu a opětné synchronizaci všech generátorů v obvodu.
registr
28
bit
7
6
5
4
3
2
1
0
reset generátorů
zapnutí obvodu jako celku
Využití obvodu
Sound Blaster
Obvod byl použit ve zvukovývch kartách C/MS a v jejich nástupcích, kartách Sound Blaster, ve kterých byly použity dva tyto obvody pro generování 12kanálového zvuku. Pozdější verze karet Sound Blaster až do verze 2.0 sice vlastní obvod již neobsahovaly, nicméně podpůrná elektronika a patice pro oba obvody byly přítomné, takže obvod Philips SAA 1099 bylo možné do těchto karet doplnit.
SAM Coupé
Philips SAA 1099 je použit v počítači SAM Coupé. Je připojen na portech 255 (zápis do zvoleného registru) a 511 (výběr registru) obvodu SAA 1099.
Sinclair ZX Spectrum
Protože počítač SAM Coupé je kompatibilní s počítači Sinclair ZX Spectrum, vznikly interfacy Turbo Sound Easy, ZXM-SoundCard a TwinSound pro počítače ZX Spectrum, ve kterých je obvod Philips SAA 1099 zapojen stejně jako u počítače SAM Coupé.[1][2] Takto zapojený obvod využívá k přehrávání hudby hra Krunel. Na ZX Spectrum byly ruskými kodery převedeny téměř všechny hudby z programů pro SAM Coupé a jsou dostupné jak v prostých TAP souborech, tak v nových demokolekcích původně vytvořených pro ZXM-Soundcard.
SGI
Obvod Philips SAA 1099 je součástí profesionální série IRIS (4D/50-85) a Power Series (4D/xxx) počítačů SGI, informace o přítomnosti těchto obvodů se ale nedostala do dokumentace k těmto počítačům.[3] Obvod je součástí desek IO2 a IO3.
PMD 85
Na základě obvodu Philips SAA 1099 byl vytvořen hudební interface MIF 85 pro počítače PMD 85.[4] Philips SAA 1099 je připojen na porty EF (výběr registru) a EE (zápis do vybraného registru), interface používá ještě port EC pro řízení přerušení od časovače.