POKEY

Atari POKEY (C012294) pin-out

POKEY (Pot Keyboard Integrated Circuit)[1]układ wejścia-wyjścia zaprojektowany w latach 70. przez firmę Atari Inc., stosowany w całej rodzinie 8-bitowych Atari, a także w pewnych konsolach oraz automatach do gier. Układ POKEY, oznaczony numerem katalogowym CO12294, posiada 40 pinów w obudowie DIP i pełni szereg funkcji, w tym: generowanie dźwięku, obsługę klawiatury, portu szeregowego i potencjometrów, a także generowanie liczb pseudolosowych. Nazwa pochodzi od słów potentiometer and keyboard chippotencjometr (Paddle) i klawiatura. Układ został po raz pierwszy zastosowany w roku 1979 w Atari 400 oraz Atari 800 i był używany we wszystkich późniejszych modelach oraz konsoli Atari 5200.

Układ generowania dźwięku w POKEY

POKEY dysponuje czterema kanałami audio, z których każdy ma możliwość indywidualnej regulacji częstotliwości, poziomu szumu i natężenia dźwięku.

Każdy kanał ma 8-bitowy dzielnik częstotliwości i 8-bitowy rejestr do wyboru szumu i głośności:

  • AUDF1 do AUDF4 – rejestry częstotliwości (ang. audio frequency),
  • AUDC1 do AUDC4 – rejestry głośności i szumów (ang. audio control),
  • AUDCTL – wspólny rejestr do sterowania generatorami.

Rejestry AUDC1-4

Bit 0-3
Sterowanie natężeniem dźwięku od 0 do F.
Bit 4
Kontrola dzielnika częstotliwości dźwięku: "1" włączony, "0" wyłączony. Kiedy dzielnik częstotliwości jest wyłączony, generowane są stałe dźwięki o natężeniu dźwięku zapisanym w bitach 0-3.
Bit 5-7
Rejestry przesuwające odpowiedzialne za szumydistortion:
000 = rejestr 5-bitowy i 17-bitowy
001 = rejestr 5-bitowy
010 = rejestr 5-bitowy i 4-bitowy
011 = rejestr 5-bitowy – dubluje się, nie jest używany
100 = rejestr 17-bitowy
101 = bez rejestru przesuwającego – czyste tony
110 = rejestr 4-bitowy
111 = bez rejestru przesuwającego – dubluje się, nie jest używany

Generacja losowych szumów odbywa się poprzez odczyt górnych 8 bitów 17-bitowego rejestru przesuwającego. Rejestry te taktowane są częstotliwością 1,79 MHz w systemie NTSC oraz 1,77 MHz w systemie PAL, jednak ich wyjścia mogą być próbkowane niezależnie przez cztery kanały audio, w tempie dzielnika częstotliwości danego kanału.

Rejestr AUDCTL

"1" oznacza włączony, chyba że napisane jest inaczej:

Bit 0 (15 KHz)
wybór taktowania dzielników częstotliwości "0" – 64 KHz, "1" – 15 KHz 1,
Bit 1 (FI2+4)
filtr górnoprzepustowy dla kanału 2 taktowany częstotliwością kanału 4,
Bit 2 (FI1+3)
filtr górnoprzepustowy dla kanału 1 taktowany częstotliwością kanału 3,
Bit 3 (CH4+3)
połączenie dzielników 4+3 dla uzyskania dokładności 16-bitowej,
Bit 4 (CH2+1)
połączenie dzielników 2+1 dla uzyskania dokładności 16-bitowej,
Bit 5 (1,79CH3)
taktowanie kanału 3 częstotliwością "0" – 1,77 MHz PAL, "1" – 1,79 MHz NTSC,
Bit 6 (1,79CH1)
taktowanie kanału 1 częstotliwością "0" – 1,77 MHz PAL, "1" – 1,79 MHz NTSC,
Bit 7 (POLY9)
służy do przełączania rejestru przesuwającego "0" – 17-bit, "1" – 9-bit.

Wszystkie cztery dzielniki częstotliwości AUDF mogą być równocześnie taktowane częstotliwością 64 kHz lub 15 kHz. Dzielniki 1 i 4 mogą być taktowane naprzemiennie zegarem CPU (1,79 MHz w systemie NTSC oraz 1,77 MHz w systemie PAL). Dzielniki 2 i 4 mogą być taktowane wyjściem dzielników 1 i 3. Pozwala to układowi POKEY na łączenie kanałów 8‑bitowych w celu uzyskania dźwięku o rozdzielczości 16‑bitowej. Kanały mogą być konfigurowane na następujące sposoby:

  • cztery kanały 8-bitowe
  • dwa kanały 8-bitowe i jeden kanał 16-bitowy
  • dwa kanały 16-bitowe

Dodatkowe informacje

Każda operacja wejścia-wyjścia powoduje zmianę wartości rejestrów sterujących generatorami. Dlatego, podczas korzystania z układu POKEY do generowania dźwięku, należy go od nowa inicjować po każdej takiej operacji. Aby to zrobić, należy wprowadzić wartość 3 do rejestru $D20F oraz 0 do rejestru $D208[2].

Szeregowy port wejścia wyjścia

Składają się na niego:

  • szeregowa linia wejścia
  • szeregowa linia wyjścia
  • szeregowa linia zegara wyjścia
  • dwukierunkowa szeregowa linia danych zegara
  • rejestry SKRES, SEROUT, SERIN, SKCTL, SKSTAT

Osiem przerwań IRQ

  • BREAK – przerwanie klawisza BREAK
  • K – (keyboard) przerwanie klawiatury
  • SIR – (if serial input ready) przerwanie odczytu z szyny szeregowej
  • ODN – (if output data needed) przerwanie zapisu na szynę szeregową
  • XD – (if exmitend Data) przerwanie końca transmisji szeregowej
  • T1 – (timer 1) przerwanie licznika nr 1
  • T2 – (timer 2) przerwanie licznika nr 2
  • T4 – (timer 4) przerwanie licznika nr 4

Przerwania mogą zostać włączone lub wyłączone programowo za pomocą rejestru IRQEN. Rejestr IRQSTAT zawiera status przerwań.

Klawiatura

Sześcioklawiszowy rejestr aktualnie wciśniętych klawiszy (K0 K5) przechowuje wartości od 00 do 3F. Znajdują się w nim dwie wartości sterujące. Jedna z nich pełni rolę deszyfratora wszystkich 6 wartości. Druga wartość sterująca jest przeznaczona do dekodowania znaków specjalnych CTRL, SHIFT i BREAK.

Potencjometry

Układ POKEY zawiera osiem portów umożliwiających pomiar czasu narastania sygnału na wejściach. Każde z wejść wyposażone jest w 8-bitowy licznik, który odmierza czas na podstawie wyświetlania kolejnych linii telewizyjnych. Dodatkowo każde wejście ma tranzystor zrzutu, którego stan może być kontrolowany programowo.

Inne cechy

POKEY oferuje trzy timery używające kanałów audio (resetujące się po każdym ich użyciu) oraz generator liczb losowych.

Tabela rejestrów POKEY'a

16 rejestrów pokey'a – $D200–$D20F
Rejestr Zapis Odczyt
Nazwa Opis Nazwa Opis
$D200 AUDF1 częstotliwość kanału 1 POT0 potencjometr nr 0
$D201 AUDC1 generator kanału 1 POT1 potencjometr nr 1
$D202 AUDF2 częstotliwość kanału 2 POT2 potencjometr nr 2
$D203 AUDC2 generator kanału 2 POT3 potencjometr nr 3
$D204 AUDF3 częstotliwość kanału 3 POT4 potencjometr nr 4
$D205 AUDC3 generator kanału 3 POT5 potencjometr nr 5
$D206 AUDF4 częstotliwość kanału 4 POT6 potencjometr nr 6
$D207 AUDC4 generator kanału 4 POT7 potencjometr nr 7
$D208 AUDCTL kontrola nad kanałami audio POTSTAT odczyt wszystkich 8 linii portu potencjometrów
$D209 STIMER uruchomienie timera KBCODE kod ostatnio wciśniętego klawisza
$D20A SKRES reset statusu portu szeregowego RANDOM wartość generatora liczb losowych
$D20B POTGO rozpocznij sekwencje skanowania portu
$D20C
$D20D SEROUT rejestr wyjściowy portu szeregowego SERIN rejestr wejściowy portu szeregowego
$D20E IRQEN aktywacja przerwań IRQ IRQSTAT status przerwań IRQ
$D20F SKCTL kontrola nad portem szeregowym SKSTAT status portu szeregowego

Zobacz też

Przypisy

  1. 1. Theory of Operation, [w:] Atari Home Computer Field Service Manual - 400/800, Atari, Inc., s. 1-11.
  2. "Chapter 7: Sound". De Re Atari. Atari, Inc. 1982.

Linki zewnętrzne

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
Kembali kehalaman sebelumnya