General Instrument AY-3-8910

General Instrument AY-3-8910 – 3-kanałowy programowalny generator dźwięku zaprojektowany przez firmę General Instrument, początkowo do współpracy z ich 16-bitowym procesorem CP1610 lub z jednym serii 8-bitowych mikrokomputerów PIC1650.

Układ scalony AY-3-8912, obudowa DIP 28-pin
Układ scalony AY-3-8910 w obudowie DIP 40
GI AY-3-8910A na płycie komputera MSX2 Daewoo CPC300E
GI AY-3-8912 na płycie komputera Oric-1
YM2149 w 40-pinowej obudowie DIP
Wyprowadzenia układu AY-3-8910

Układ 8910 i jego warianty stały się popularnymi elementami automatów do gry, m.in. konsoli do gier wideo Intellivision i Vectrex oraz mikrokomputerów MSX, Atari ST, Amstrad CPC, Oric 1, Colour Genie, Elektor TV Games Computer i Sinclair ZX Spectrum 128/+2/+3, a także kart dźwiękowych Mockingboard do komputerów z rodziny Apple II. Do starszych modeli ZX Spectrum oraz ZX Spectrum+ dostępne były karty rozszerzeń instalowane na szynie krawędziowej komputera oparte na tym układzie. Przystawki te były chętnie kupowane przez właścicieli tych mikrokomputerów z uwagi na ubogie możliwości dźwiękowe standardowych wersji. Układ był także produkowany na licencji przez firmę Yamaha (z drobnymi modyfikacjami) jako YM2149. Układy nie są już produkowane ale ciągle zmniejszający się zapas jest nadal dostępny w serwisach maszyn z tamtego okresu. Został stworzony opis VHDL, który może zostać użyty do odtworzenia automatów do gier lub maszyn wspomnianych wyżej. Kod źródłowy VHDL jest dostępny w internecie i po skompilowaniu wypełnia około 10% układu Xilinx XC2S300 FPGA.

Opis edytuj

Układ 8910 jest w istocie automatem stanowym, posiadającym generator obwiedni, który jest konfigurowany za pomocą szesnastu 8-bitowych rejestrów. Rejestry te można programować poprzez 8-bitową szynę, która pełni rolę zarówno szyny danych jak i szyny adresowej (w zależności od ustawienia odpowiedniego sygnału sterującego na wejściu układu). Przykładowo, typowy cykl programowania układu polega na przełączeniu szyny w tryb adresów i wybraniu rejestru do zapisu. Następnie szyna przełączana jest w tryb danych i właściwe informacje przesyłane są do wybranego wcześniej rejestru.

Warianty układu edytuj

Układ 8910 był sprzedawany w 3 różnych rodzajach obudów.

Wersja AY-3-8910 posiada dwa porty równoległe We/Wy ogólnego przeznaczenia (oznaczane jako A i B) i jest dostępna w obudowie 40-pin.

Model AY-3-8912 jest tym samym układem, dostępnym w obudowie 28-pin z portem B niepodłączonym do żadnych wyprowadzeń. Ta wersja była najbardziej rozpowszechniona.

Model AY-3-8913 jest tym samym układem, dostępnym w obudowie 24-pin. W tej wersji oba porty równoległe A i B nie były wyprowadzone na zewnątrz układu. Niewielka redukcja liczby wyprowadzeń w stosunku do modelu 8912 czyniła go mniej interesującym.

Model Yamaha YM2149 posiadał taki sam rozkład wyprowadzeń jak AY-3-8910 z tą różnicą, iż pin 26 mógł służyć do dzielenia na pół częstotliwości taktowania układu (w przypadku gdy pin był wysterowany niskim poziomem sygnału). W przypadku niepodłączania pinu 26, YM2149 mógł zastępować układ AY-3-8910, częstotliwość taktowania pozostawała w takim przypadku niezmieniona.

Model Yamaha Y3439-F – wersja układu w obudowie QFP 44 pin, kompatybilny z YM2149

Opis rejestrów edytuj

Poniższa tabela zawiera opis rejestrów układów z rodziny AY-3-8910:

Rejestr Funkcja Liczba bitów (Zakres)
0 Wysokość tonu w kanale A (mniej znaczące bity) 8-bit (0-255)
1 Wysokość tonu w kanale A (bardziej znaczące bity) 4-bit (0-15)
2 Wysokość tonu w kanale B (mniej znaczące bity) 8-bit (0-255)
3 Wysokość tonu w kanale B (bardziej znaczące bity) 4-bit (0-15)
4 Wysokość tonu w kanale C (mniej znaczące bity) 8-bit (0-255)
5 Wysokość tonu w kanale C (bardziej znaczące bity) 4-bit (0-15)
6 Częstotliwość (wysokość) szumu 5-bit (0-31)
7 Rejestr sterujący (mikser) 8-bit (0-255, uwagi poniżej)
10 Poziom głośności w kanale A 5-bit (0-15, uwagi poniżej)
11 Poziom głośności w kanale B 5-bit (0-15, uwagi poniżej)
12 Poziom głośności w kanale C 5-bit (0-15, uwagi poniżej)
13 Czas obwiedni (mniej znaczące bity) 8-bit (0-255)
14 Czas obwiedni (bardziej znaczące bity) 8-bit (0-255)
15 Rodzaj obwiedni 4-bit (0-16)
16 Port "A" (We/Wy) 8-bit (0-255)
17 Port "B" (We/Wy) 8-bit (0-255)

Uwagi:

  • rejestry 10, 11 i 12 są 4-bitowe z punktu widzenia sterowania głośnością generowanej przez układ fali prostokątnej lub szumu, natomiast 5 bit w tych rejestrach pełni funkcję sterującą. Jeśli jest ustawiony, to odpowiedni kanał używa obwiedni określonej w rejestrze 15. Głośność zdefiniowana na bitach 0-3 jest w tym przypadku ignorowana, a układ może generować fale o przebiegu piłokształtnym lub trójkątnym.
  • funkcje poszczególnych bitów w rejestrze sterującym (nr 7):
    • bit 7 – określa czy port "B" pracuje jako wejście (0) czy wyjście (1)
    • bit 6 – określa czy port "A" pracuje jako wejście (0) czy wyjście (1)
    • bit 5 – określa czy kanał C ma odtwarzać szum (0 = tak)
    • bit 4 – określa czy kanał B ma odtwarzać szum (0 = tak)
    • bit 3 – określa czy kanał A ma odtwarzać szum (0 = tak)
    • bit 2 – określa czy kanał C ma odtwarzać ton (0 = tak)
    • bit 1 – określa czy kanał B ma odtwarzać ton (0 = tak)
    • bit 0 – określa czy kanał A ma odtwarzać ton (0 = tak)
  • nazewnictwo bitów w rejestrze nr 13, który jest odpowiedzialny za rodzaj obwiedni przedstawia się następująco:
    • bit 0 – Hold
    • bit 1 – Alternate
    • bit 2 – Attack
    • bit 3 – Continue

Poniższa tabela przedstawia graficzne odwzorowanie obwiedni oferowanych przez układ w zależności od poszczególnych bitów w rejestrze 15 ("x" oznacza, że wartość bitu jest dowolna):

Bity Kształt obwiedni
3 2 1 0
0 0 x x  
0 1 x x  
1 0 0 0  
1 0 0 1  
1 0 1 0  
1 0 1 1  
1 1 0 0  
1 1 0 1  
1 1 1 0  
1 1 1 1  

Zobacz też edytuj

Linki zewnętrzne edytuj