Blog:MIF 85

Z PMD 85 Infoserver

(Rozdiel medzi revíziami)
Djb (Diskusia | príspevky)
D (Blog:MIF85 premiestnená na Blog:MIF 85: chybajuca medzera)
Rombor (Diskusia | príspevky)
(Úprava textu pre finálnu verziu MIF 85)
Riadok 5: Riadok 5:
[[Obrázok:MIF85-prototype.jpg|thumb|Prototyp MIF 85]]
[[Obrázok:MIF85-prototype.jpg|thumb|Prototyp MIF 85]]
-
'''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:
+
'''MIF 85''' je hudobný (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
* 6 frekvenčných generátorov - 8 oktáv na každý generátor
* 2 šumové generátory
* 2 šumové generátory
Riadok 13: Riadok 13:
O prototype MIF 85 pojednáva [http://blog.borik.net/2012/04/mif-85-prototyp.html tento článok]
O prototype MIF 85 pojednáva [http://blog.borik.net/2012/04/mif-85-prototyp.html tento článok]
 +
 +
{| align="center"
 +
| [[Obrázok:Mif85-zhora.jpg|thumb|Pohľad na osadenú DPS zhora]]
 +
| [[Obrázok:Mif85-zboku.jpg|thumb|Pohľad na osadenú DPS zboku]]
 +
| [[Obrázok:Mif85-dps.jpg|thumb|DPS MIF 85]]
 +
|}
== Zapojenie MIF 85 ==
== Zapojenie MIF 85 ==
Riadok 20: Riadok 26:
MIF 85 sa pripája na aplikačný konektor [[PMD 85]], na ktorom sa nachádzajú všetky potrebné signály.
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 <code>SAA1099P</code> (U1), vychádza z katalógového zapojenia, ale v podstate bolo prevzaté zo schémy počítača SAM Coupé. Hodinový vstup <code>SAA1099P</code> je budený oscilátorom, ktorý je tvorený obvyklým zapojením pomocou <code>74LS00</code> (U3) a kryštálom 8 MHz.
+
Obvodové zapojenie srdca MIF 85, teda samotného <code>SAA1099P</code> (IC1), vychádza z katalógového zapojenia, ale v podstate bolo prevzaté zo schémy počítača SAM Coupé. Hodinový vstup <code>SAA1099P</code> je budený oscilátorom, ktorý je tvorený obvyklým zapojením pomocou troch hradiel <code>74LS04</code> (IC3) 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.
+
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 pinovú lištu.
-
Keďže <code>SAA1099P</code> nemá vlastný resetovací vstup, napájanie <code>SAA1099P</code> je zámerne cez tranzistor <code>BC557B</code> (T2), aby bolo možné <code>SAA1099P</code> "umlčať" resetom počítača.
+
Keďže <code>SAA1099P</code> nemá vlastný resetovací vstup, napájanie <code>SAA1099P</code> je zámerne cez tranzistor <code>BC557B</code> (Q2), aby bolo možné <code>SAA1099P</code> "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í:
+
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 (IC2). To rieši niekoľko vecí:
* dekodér portov
* dekodér portov
* tvorba signálov <code>-CS</code> a <code>-WR</code> pre <code>SAA1099P</code>
* tvorba signálov <code>-CS</code> a <code>-WR</code> pre <code>SAA1099P</code>
Riadok 33: Riadok 39:
* tvorba signálu prerušenia
* tvorba signálu prerušenia
-
Signál <code>-Fi2TTL</code> z aplikačného konektora je privedený na hodinový vstup časovača 0 <code>CLK0</code>. Časovač 0 a teda jeho výstup <code>OUT0</code> je použitý pre tvorbu prerušovacieho sidnálu <code>-INT</code>. Ten je vyvedený cez <code>BC547B</code> (T1) ako otvorený kolektor. Pull-up odpor je súčasťou počítača.
+
Signál <code>-Fi2TTL</code> z aplikačného konektora je privedený na hodinový vstup časovača 0 <code>CLK0</code>. Časovač 0 a teda jeho výstup <code>OUT0</code> je použitý pre tvorbu prerušovacieho sidnálu <code>-INT</code>. Ten je vyvedený cez <code>BC547B</code> (Q1) ako otvorený kolektor. Pull-up odpor je súčasťou počítača.
== Rovnice pre GAL16V8 ==
== Rovnice pre GAL16V8 ==
Riadok 51: Riadok 57:
; Všetky porty sú iba pre zápis.
; Všetky porty sú iba pre zápis.
-
; 01 02 03 04 05 06 07 08 09 10
+
; 01 02 03 04 05 06 07 08 09 10
-
CLK A0 A1 A4 A5 A6 D0 IOW /OUT0 GND
+
CLK /ICO IOW A4 A5 A6 D0 A1 A0 GND
-
; 11 12 13 14 15 16 17 18 19 20
+
; 11 12 13 14 15 16 17 18 19 20
-
NC NC /PWR /RES ID /WR /CS INT ICLK VCC
+
/OE A3 A2 /RES ID A7 /CS INT ICLK VCC
EQUATIONS
EQUATIONS
-
; povolenie napájania SAA1099P
+
; -CS (Chip Select) pre SAA1099P
-
PWR = /RES
+
CS = A7 * A6 * A5 * /A4 * A3 * A2 * A1 ; 0EEh, 0EFh
-
+
CS.oe = VCC
-
; 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
+
; hodinový signál pre zápis do registra povolenia/zakázania prerušenia
-
ICLK = A6 * A5 * /A4 * /A1 * /A0 * IOW ; 0ECh
+
ICLK = A7 * A6 * A5 * /A4 * A3 * A2 * /A1 * /A0 * IOW ; 0ECh
| RES
| RES
 +
ICLK.oe = VCC
-
; register Interrupt Disable
+
; register pre zakázanie prerušenia
ID := /D0
ID := /D0
| RES
| RES
ID.c = CLK
ID.c = CLK
-
ID.oe = VCC
+
ID.oe = OE
-
; signál prerušenia
+
; samotný signál prerušenia
-
INT = OUT0 * /ID
+
INT = ICO * /ID
 +
INT.oe = VCC
== Popis portov a ovládania ==
== 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.
+
MIF 85 využíva 3 výstupné porty: 0ECh, 0EEh a 0EFh. Adresácia je úplná A7 až A0.
SAA1099P sa ovláda dvoma portami:
SAA1099P sa ovláda dvoma portami:
Riadok 107: Riadok 110:
MVI A,0C9h ; inicializuj vektor prerušenia
MVI A,0C9h ; inicializuj vektor prerušenia
-
STA 0038h ; - iba navrat
+
STA 0038h ; - teraz iba návrat
MVI A,1 ; povolenie prerušenia od časovača 0
MVI A,1 ; povolenie prerušenia od časovača 0
Riadok 118: Riadok 121:
== Na stiahnutie ==
== Na stiahnutie ==
-
* [http://pmd85.djb-studios.com/?module=download&did=78 súbory pre GAL16V8]
+
* [http://pmd85.djb-studios.com/?module=download&did=81 dokumentácia MIF 85] (súbory pre Eagle a GAL16V8)
* [http://pmd85.djb-studios.com/?module=download&did=79 datasheet SAA1099]
* [http://pmd85.djb-studios.com/?module=download&did=79 datasheet SAA1099]
[[Kategória:Blog| 010]]
[[Kategória:Blog| 010]]

Verzia zo dňa a času 19:57, 11. január 2013

MIF 85 - Music interface pre PMD 85


Obsah


Prototyp MIF 85
Prototyp MIF 85

MIF 85 je hudobný (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

Pohľad na osadenú DPS zhora
Pohľad na osadenú DPS zhora
Pohľad na osadenú DPS zboku
Pohľad na osadenú DPS zboku
DPS MIF 85
DPS MIF 85

Zapojenie MIF 85

Schéma MIF 85
Schéma 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 (IC1), 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 troch hradiel 74LS04 (IC3) 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 pinovú lištu.

Keďže SAA1099P nemá vlastný resetovací vstup, napájanie SAA1099P je zámerne cez tranzistor BC557B (Q2), 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 (IC2). To rieši niekoľko vecí:

  • dekodér portov
  • tvorba signálov -CS a -WR pre SAA1099P
  • 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 (Q1) 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 /ICO  IOW  A4   A5   A6   D0   A1    A0    GND
; 11   12   13   14   15   16   17   18    19    20
  /OE  A3   A2  /RES  ID   A7  /CS   INT  ICLK   VCC

EQUATIONS

; -CS (Chip Select) pre SAA1099P
CS      = A7 * A6 * A5 * /A4 * A3 * A2 * A1                ; 0EEh, 0EFh
CS.oe   = VCC

; hodinový signál pre zápis do registra povolenia/zakázania prerušenia
ICLK    = A7 * A6 * A5 * /A4 * A3 * A2 * /A1 * /A0 * IOW   ; 0ECh
        | RES
ICLK.oe = VCC

; register pre zakázanie prerušenia
ID     := /D0
        | RES
ID.c    = CLK
ID.oe   = OE

; samotný signál prerušenia
INT     = ICO * /ID
INT.oe  = VCC

Popis portov a ovládania

MIF 85 využíva 3 výstupné porty: 0ECh, 0EEh a 0EFh. Adresácia je úplná A7 až A0.

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       ;  - teraz iba návrat

 MVI   A,1         ; povolenie prerušenia od časovača 0
 OUT   0ECh

 EI                ; povol prerušenie procesora
 HLT               ; počkaj si na prerušenie

 ...

Na stiahnutie