Blog:MIF 85
Z PMD 85 Infoserver
Verzia zo dňa a času 20:00, 11. apríl 2012
Obsah |
MIF 85 je hudobný či zvukový interface postavený na obvode SAA 1099P. Tento obvod, ktorý bol použitý napríklad aj v počítači SAM Coupé, poskytuje:
- 6 frekvenčných generátorov - 8 oktáv na každý generátor
- 2 šumové generátory
- oddelené riadenie hlasitosti pre ľavý a pravý kanál, pre každý generátor - 16 úrovní
- 2 generátory hlasitostnej obálky
- mixér šumu a tónov
O prototype MIF 85 pojednáva tento článok
Zapojenie MIF 85
MIF 85 sa pripája na aplikačný konektor PMD 85, na ktorom sa nachádzajú všetky potrebné signály.
Obvodové zapojenie srdca MIF 85, teda samotného SAA1099P
(U1), vychádza z katalógového zapojenia, ale v podstate bolo prevzaté zo schémy počítača SAM Coupé. Hodinový vstup SAA1099P
je budený oscilátorom, ktorý je tvorený obvyklým zapojením pomocou 74LS00
(U3) a kryštálom 8 MHz.
Referencia pre analógové výstupy je vytvorená LC filtrom z napájacieho napätia. Analógové výstupy ľavého a pravého kanála sú cez jednoduchý filter vyvedené na 3,5 mm stereo jack.
Keďže SAA1099P
nemá vlastný resetovací vstup, napájanie SAA1099P
je zámerne cez tranzistor BC557B
(T2), aby bolo možné SAA1099P
"umlčať" resetom počítača.
Pôvodný návrh obsahoval niekoľko TTL obvodov, ale nakoniec bolo v záujme zjednodušenia zapojenia rozhodnuté, že sa použije hradlové pole GAL16V8 (U2). To rieši niekoľko vecí:
- dekodér portov
- tvorba signálov
-CS
a-WR
preSAA1099P
- tvorba signálu pre pripojenie/odpojenie napájania
SAA1099P
podľa stavu signálu-RES
- register pre povolenie/zakázanie prerušenia od časovača
- tvorba signálu prerušenia
Signál -Fi2TTL
z aplikačného konektora je privedený na hodinový vstup časovača 0 CLK0
. Časovač 0 a teda jeho výstup OUT0
je použitý pre tvorbu prerušovacieho sidnálu -INT
. Ten je vyvedený cez BC547B
(T1) ako otvorený kolektor. Pull-up odpor je súčasťou počítača.
Rovnice pre GAL16V8
Ako bolo spomenuté vyššie, použitie GALu ušetrilo niekoľko TTL obvodov. Nasledujúce rovnice sú jednoduché a myslím, že aj zrozumiteľné a s uvedenými komentármi už nepotrebujú ďalšie vysvetlenie.
CHIP MIF85 GAL16V8 ; MIF85 - Music InterFace for PMD 85 ; Dekodér adries portov SAA1099P a registra pre povolenie/zakázanie prerušenia. ; Riadenie napájania SAA1099P ; Port 0EFh je použitý pre výber registra SAA1099P. ; Port 0EEh je použitý pre zápis dát do vybraného registra. ; Bit D0 portu 0ECh je použitý pre povolenie/zakázanie prerušenia od časovača 0 ; z i8253 umiestneného na interfejsovej doske PMD 85. ; Všetky porty sú iba pre zápis. ; 01 02 03 04 05 06 07 08 09 10 CLK A0 A1 A4 A5 A6 D0 IOW /OUT0 GND ; 11 12 13 14 15 16 17 18 19 20 NC NC /PWR /RES ID /WR /CS INT ICLK VCC EQUATIONS ; povolenie napájania SAA1099P PWR = /RES ; signál -WR (Write) pre SAA1099P WR = IOW ; signál -CS (Chip Select) pre SAA1099P CS = A6 * A5 * /A4 * A1 ; 0EEh, 0EFh ; hodinový signál pre zápis do registra povolenia prerušenia od časovača 0 ICLK = A6 * A5 * /A4 * /A1 * /A0 * IOW ; 0ECh | RES ; register Interrupt Disable ID := /D0 | RES ID.c = CLK ID.oe = VCC ; signál prerušenia INT = OUT0 * /ID
Popis portov a ovládania
MIF 85 využíva 3 výstupné porty: 0ECh, 0EEh a 0EFh. Adresy týchto portov sú vyberané adresnými bitmi A6, A5, A4, A1 a A0. Adresné bity A7, A3 a A2 nie sú súčasťou adresného dekodéra, ale musia byť v jednotke, čím je podmienené otvorenie budiča, ktorý je súčasťou aplikačného konektora.
SAA1099P sa ovláda dvoma portami:
- 0EFh - výber registra 0 až 31
- 0EEh - zápis hodnoty do zvoleného registra
; napríklad MVI A,8 ; výber registra 8 - frekvencia tónu 0 OUT 0EFh MVI A,0E3h ; zápis do registra 8 - tón A OUT 0EEh
Port 0ECh slúži pre povolenie prerušenia od časovača 0. Po zapnutí počítača alebo po resete je prerušenie od časovača 0 zakázané. Pred povolením prerušenia je potrebné ešte inicalizovať samotný časovač. A samozrejme, musí byť pripravená rutina obsluhy prerušenia od adresy 0038h.
DI ; zákaz prerušenia procesora XRA A ; zákaz prerušenia od časovača 0 OUT 0ECh MVI A,24h ; inicializuj časovač 0 OUT 5Fh MVI A,0A0h ; 50x za sekundu OUT 5Ch MVI A,0C9h ; inicializuj vektor prerušenia STA 0038h ; - iba navrat MVI A,1 ; povolenie prerušenia od časovača 0 OUT 0ECh EI ; povol prerušenie procesora HLT ; počkaj si na prerušenie ...