AY38910-2.pdf

(229 KB) Pobierz
flY-y*3lO
Generator dźwiękowy do ZX-SPECTRUM
PIOTR BEDNARSKI
Mikrokomputer ZX-SPECTRUM jest urządzeniem przeznaczo-
nym przede wszystkim do zabawy i nauki. Język programowa-
nia BASIC, duża pojemność pamięci i kolorowy monitor grafi-
czny o dużej rozdzielczości umożliwiają tworzenie animowa-
nych gier. Jedynym elementem, którego brakuje, jest wysokiej
jakości generator dźwięku. W mikrokomputerze SPECTRUM
dźwięk jest wytwarzany programowo. Sposób ten ma dwie
podstawowe wady. Po pierwsze: generacja odbywa się kosz-
tem czasu mikroprocesora, który czynnie uczestniczy w proce-
sie tworzenia dźwięku, po drugie-nie ma możliwości syntezy
bardziej złożonych przebiegów (kształtowania obwiedni), co
jest konsekwencją istnienia tylko jednego kanału dźwięko-
wego.
Mikrokomputery innych firm, np. ORIC, czy COMMODORE 64
są wyposażone fabrycznie w scalone układy generacji i syntezy
dźwięku. Układem powszechnie wykorzystywanym w kompu-
terach osobistych do tego celu jest układ AY-3-8910 produko-
wany przez firmę General Instruments. Układ ten w bardzo
prosty sposób może być dołączony do ZX-SPECTRUM.
Układ AY-3-8910 zawiera trzy niezależne tory dźwięku oraz dwa
8-bitowe układy wejścia/wyjścia wykorzystane np. do stero-
wania urządzeń zewnętrznych, takich jak drukarka. Układ ma
16 wewnętrznych rejestrów, które mogą być zapisywane przez
komputer. Dzięki wewnętrznym rejestrom układ pracuje nieza-
leżnie od mikroprocesora (ang. processor independent); tzn.
po załadowaniu danych do rejestrów, układ zaczyna sam
generować dźwięk, a komputer może dalej wykonywać swój
własny program. Generowanie dźwięku nie absorbuje więc
czasu mikroprocesora, a zatem nie opóźnia wykonywania
programu.
najmniejsza częstotliwość generowana przez układ wyniesie
ok. 54 Hz (jest to 1/65025 częstotliwości sygnału na wejściu
CIOCK). Aby uzyskać mniejsze częstotliwości należy zbudo-
^
wać dodatkowy oscylator lub zastosować dzielnik sygnału
zegarowego ZX-SPECTRUM.
Rejestr R6 ustala częstotliwość wysyłania próbek szumu gene-
rowanego w sposób pseudolosowy.
,
Rejestr R7 zawiera informacje o kierunku przesyłania danych
.
przez układy wejścia /wyjścia oraz o włączeniu lub wyłączeniu
danego kanału dźwiękowego. Na przykład, załadowanie R7
wartością 11101011 spowoduje ustawienie obu portów we/wy
jako wyjścia; kanałem B będzie przesyłany szum, a kanałem
C sygnał okresowy.
j
Do ustawiania amplitudy sygnałów w poszczególnych kana-
łach służą rejestry R8-R10.
|
RejestryR11 i R12 służą do przesyłania danych między kompu-
I
terem a portami we/wy.
f
Rodzaje pracy układu scalonego AY-3-8910
Tablica 2
Rodzaj pracy
BDłR
BC1
BC2
Układ nieaktywny
0
0
1
0
1
1
Odczyt danych z rejestru
Zapis danych do rejestru
1
0
1
Wybranie rejestru
1
1
1
Schemat układu przedstawiono na rys. 1. Układ dekodujący
został zbudowany w oparciu o cztery bramki NOR (US2). Do
wybierania układu generatora służą dwie linie adresowe: A6
i A7, które po zdekodowaniu i zbramkowaniu sygnałami WR
i IORQ są doprowadzone do wejść sterujących BC1 oraz BDIR
(tablica 2).
Przycisk RESET służy do zerowania wszystkich rejestrów ukła-
du. Na rys. 2 przedstawiono sposób wybierania kształtu ob-
wiedni z wykorzystaniem rejestru R13.
OPIS FUNKCJONALNY UKŁADU
Rejestry wewnętrzne R0-R5 (tablica 1) określają orientacyjną
i dokładną częstotliwość dźwięku dla poszczególnych kanałów.
Częstotliwość ta zależy od częstotliwości sygnału zegarowego,
doprowadzonego do układu. Dla sygnału zegarowego 3,5 MHz
Opis regestrów wewnętrznych nieładu scalonego AT-3-89 J K>
Tflblioa 1
*SV
Bit
B2
B7
B6
B5
B4
B3
Bi
BO
Regestr
Dokładna - 8 bitów
B0
Częstotliwość tonu
w kanale A
V ' "
B1
orientacyjna 4 bity
B2
Dokładna - B bitów
Caęatotliwość tonu
w kanale B
83
orientacyjna 4 bity
B4
Dokładna - a bitów
Cręstotliv;o£ł4 tonu
w kanale C
B5
A orientacyjna 4 bity
''
B6
Okrea ssujau
Okres - 5 bitów
fó/Wy
s^s
Ton
H7
H7
Bajostr
sterujący
Bajostr
sterujący
Port
B
Port
A
c
B
A
C
B
A
E8
Amplituda - kanał A
11*
1.3
Ł2
11
i a
B9
Amplituda - kanni B
13
L2
Xi1
a*
L0
H10 Aaiplituiia - kanał C
L3
Ł2
LI
u*
Uf
K11
Dokładny - 8 bitów
Obwiednią - okres
Obwiednią - okres
B12
Orientacyjny - a bitów
-
815 Obwiednią - kjsata.lt
,3
,1
V
Bił
Semestr portu A
We/ly - a bitów
B15 Hejestr portu B
We/Wy - 8 bitów
U
K
1 - Amplituda ustalana przez generator obwiedni
0 - Amplituda ustawiana przes bity B0-B3
Radioelektronik 9/1985
791700353.001.png
E2
EQ
Kuiott sygnału na wyjściu generatora obwiedni
a
E1
J twef2
i
twe/4
Okres obwiedni
\
0
0
X
X
UC/7474
J X
X
fwe
1
0
X
X
i
0
0
D
1
0
0
1
Rys. 3.
Pomocnicze układy
fgętfHHZ ^ ^„„^ dźwięku
i - dzielnika częstotliwości
b - generatora częstotliwości
UCY7404
i
a
1
0
t
u
1
1
C'tn
1
1
0
0
AAAMAAAA/
/
łu BUSY od drukarki) - bit PA0. Port B ustawiony jest jako
wyjście: bity PB0-PB6 - kod ASCH, bit P87 - sygnał STROBĘ.
/\AAAA
t
0
i
1
Ul
OUT
LD
OUT
RET
A.
(63). A
A.nomiii
<95).A
WYPRANIE REJ. STER.
HSUCJAUZACJA
1
f
i
1
A
V
Rys. 2. Sposób wybierania obwiedni dźwięku
Podprogram inicjalizujący powinien być wywołany przed roz-
poczęciem drukowania.
Podprogram zapewnia przesyłanie z potwierdzeniem oraz
umożliwia przerwanie wysyłania danych w dowolnej chwili
(naciśnięcie BREAK).
Sygnał zegarowy może być doprowadzony z ZX-SPECTRUM
bezpośrednio przez dzielnik częstotliwości lub z dodatkowego
oscylatora (rys. 3).
Wyjście analogowe układu można dołączyć cło dowolnego
wznacniacza akustycznego (np. do magnetofonu współpracu-
jącego z komputerem}.
•CENTRONICS INTERFACE - AY-3-8910*
PUSH
AF
.KOD NA STOS
PROGRAMOWANIE GENERATORA
Programowanie układu jest możliwe za pomocą instrukcji IN
i OUT języka BASIC lub instrukcji wejścia/wyjścia asemblera
280.
Wpisywanie danych do rejestru o numerze n odbywa się
następująco:
- wybieramy rejestr n instrukcją OUT 63,n
- wpisujemy dane d do wybranego rejestru instrukcją OUT
95,d.
Cykl wpisywania danych do rejestru składa się więc zawsze
z dwóch instrukcji OUT.
Odczytywanie danych z rejestru portu ustawionego jako wej-
ście odbywa się również w dwóch etapach:
- wybieramy rejestr n instrukcją OUT 63,n
- odczytujemy dane instrukcją LET d = IN 63.
LU
A.15
.WYSRANIE REJ. R15
OUT
(63)»A
AF
POP
?7~RIT KOD ASCII
CPl.
OUT
(95).A
5WYSŁANIE STR0BE=1
CPU
OUT
(95).A
łWYSŁANIE KODU ASCII
LD
A.14
.WYBRANIE REJ. R14
OUT
(63).A
CALL
S1F54
5SPRAWDZENIE CZY BREAK
JR
NC.ERR
? TAłt
IN
A.(63)
JC7YTANIE SYGNAŁU BUSY
BIT
0.A
JR
H2 fUAIT
;JWSY»1. CZEKAJ
LD
A. 15
5WYBRANIE REJ. R15
OUT
(63).A
CPŁ
OUT
(95). A
.WYSŁANIE STR0BE=1
RET
!POWROT DO PR00RAMU (ŁOWNEGO
El
JP
S1B7B
.K0MUNIKA1 "L"
PRZYKŁAD 1: eksplozja
10 OUT 63.6: OUT 95-31: REM USTAWIENIE GENERATORA S7UNII
20 OUT A3.78 OUT 95.7: REM WtACZENIE KANAŁÓW A,E>,C DLA SZUMU
30 OUT 63.8: OUT 95.16: REM USTAWIENIE AHPLITUDY KANAŁU A
40 OUT 63,9: OUT 95,16: REM USTAWIENIE AMPLITUDY KANW U P
50 OUT 63.10: OUT 95.16! REM USTAWIENIE AMPLITUDY K|WALU C
60 OUT 63.12: OUT 95.30! REM USTAWIENIE CZASU OPADANIA
70 OUT 63.13: OUT 95.0: REM USTAWIENIE ORWIEDNI NA OPADANIE
Układ generatora dźwięku i interface'u do drukarki został
zbudowany przez autora i działa bez zastrzeżeń.
WYKAZ WAŻNIEJSZYCH ELEMENTÓW
Układy scalone
US1-AY-3-8910 firmy General Instruments
US2-UCY74LS02N
Inne
PRZYKŁAD 2: laser
10 FOR 1=0 TO 13: READ A' OUT 63rl: OUT 9Si-A: N£XT I
20 DATA 190.0.0.0.0.0.0.126.16*0.0.0.10-15
30 PAUSE 10: RESTORE i <50 TO 10
Gniazdo mikrofonowe, gniazdo ELTRA 881025 do drukarki
PRZYKŁAD 3: CENTRONICS irrterłace
Podprogram napisany w języku asemblera Z80, służący do
wysyłania zawartości akumulatora (kod ASCłl 7-bitów) na
drukarkę. Port A ustawiony jako wejście (przyjmowanie sygna-
LITERATURA
11] „Sinclair Projects", June/July 1983
[21 Katalog firmy General Instruments 1983
[31 Logan I., 0'Hara F.: COMPŁETE SPECTRUM ROM DISASSEMSLY,
Melbourne House 1883
12
Radioelektronik 9/1985
791700353.002.png
Zgłoś jeśli naruszono regulamin