POKEY
From Atariki
Wersja z dnia 15:25, 4 gru 2005 KMK (Dyskusja | wkład) (jednak przeniosłem chyba trochę za dużo) ← Previous diff |
Wersja z dnia 14:52, 5 gru 2005 KMK (Dyskusja | wkład) (→Transmisja szeregowa) Next diff → |
||
Linia 5: | Linia 5: | ||
==Transmisja szeregowa== | ==Transmisja szeregowa== | ||
- | Protokół transmisji urządzeń podłączonych do szyny szeregowej ([[SIO]]) jest zdefiniowany następująco: | + | Protokół transmisji urządzeń podłączonych do szyny szeregowej (zob. [[Gniazdo SIO]]) jest zdefiniowany następująco: |
* 1 bit startu | * 1 bit startu | ||
Linia 12: | Linia 12: | ||
* 1 bit stopu | * 1 bit stopu | ||
* 19200 bitów na sekundę | * 19200 bitów na sekundę | ||
+ | * poziom +4 V oznacza logiczną jedynkę, a 0 V - zero. | ||
Dane transmitowane są w kolejności od najmłodszego bitu. Szybkość transmisji 19200 bitów na sekundę nie dotyczy magnetofonu kasetowego, gdzie określona jest na 600 bitów na sekundę. | Dane transmitowane są w kolejności od najmłodszego bitu. Szybkość transmisji 19200 bitów na sekundę nie dotyczy magnetofonu kasetowego, gdzie określona jest na 600 bitów na sekundę. | ||
- | ===Układ POKEY a transmisja szeregowa=== | + | Układ POKEY działa jako UART, przejmując na siebie podział bajtów, wpisanych przez system do [[Rejestry POKEY-a#SEROUT|rejestrze wyjścia szeregowego (SEROUT)]], na pojedyncze bity i wyemitowanie ich na złącze szeregowe z zaprogramowaną częstotliwością, lub scalenie napływających z urządzenia bitów w bajt i przekazanie go w [[Rejestry POKEY-a#SERIN|rejestrze wejścia szeregowego (SERIN)]]. |
- | Transmisja szeregowa jest wspomagana przez układ POKEY. Działa on jako UART, przejmując na siebie podział bajtów, wpisanych przez system do [[Rejestry POKEY-a#SEROUT|rejestrze wyjścia szeregowego (SEROUT)]], na pojedyncze bity i wyemitowanie ich na złącze szeregowe z zaprogramowaną częstotliwością, lub scalenie napływających z urządzenia bitów w bajt i przekazanie go w [[Rejestry POKEY-a#SERIN|rejestrze wejścia szeregowego (SERIN)]]. | + | Szybkość transmisji programowana jest przez OS przy użyciu połączonych w parę dzielników 3 i 4 (AUDF3 i AUDF4), do których doprowadza się sygnał o częstotliwości głównego zegara systemu, czyli 1773446,25 Hz w systemie PAL albo 1789772,5 Hz w systemie NTSC. Szybkość tę możemy obliczyć według następującego wzoru: |
- | + | ||
- | Szybkość transmisji programowana jest przy użyciu połączonych w parę dzielników 3 i 4 (AUDF3 i AUDF4), do których doprowadza się sygnał o częstotliwości głównego zegara systemu, czyli 1773446,25 Hz w systemie PAL albo 1789772,5 Hz w systemie NTSC. Szybkość tę możemy obliczyć według następującego wzoru: | + | |
baud = (F/2)/(R+7) | baud = (F/2)/(R+7) |
Wersja z dnia 14:52, 5 gru 2005
POKEY (Pot-Keyboard Integrated Circuit) - układ LSI o oznaczeniu C012294.
Służy do generowania dźwięku, kontroli interfejsu szeregowego (SIO), obsługi manipulatorów analogowych (wiosełek - paddle) i klawiatury. Poza tym Pokey zawiera cztery układy zegarowe oraz generator liczb pseudolosowych i jest głównym - ale nie jedynym - źrodłem przerwań IRQ.
Transmisja szeregowa
Protokół transmisji urządzeń podłączonych do szyny szeregowej (zob. Gniazdo SIO) jest zdefiniowany następująco:
- 1 bit startu
- osiem bitów danych
- brak kontroli parzystości
- 1 bit stopu
- 19200 bitów na sekundę
- poziom +4 V oznacza logiczną jedynkę, a 0 V - zero.
Dane transmitowane są w kolejności od najmłodszego bitu. Szybkość transmisji 19200 bitów na sekundę nie dotyczy magnetofonu kasetowego, gdzie określona jest na 600 bitów na sekundę.
Układ POKEY działa jako UART, przejmując na siebie podział bajtów, wpisanych przez system do rejestrze wyjścia szeregowego (SEROUT), na pojedyncze bity i wyemitowanie ich na złącze szeregowe z zaprogramowaną częstotliwością, lub scalenie napływających z urządzenia bitów w bajt i przekazanie go w rejestrze wejścia szeregowego (SERIN).
Szybkość transmisji programowana jest przez OS przy użyciu połączonych w parę dzielników 3 i 4 (AUDF3 i AUDF4), do których doprowadza się sygnał o częstotliwości głównego zegara systemu, czyli 1773446,25 Hz w systemie PAL albo 1789772,5 Hz w systemie NTSC. Szybkość tę możemy obliczyć według następującego wzoru:
baud = (F/2)/(R+7)
gdzie F to wspomniana wyżej częstotliwość bazowa, a R - wartość wstawiana do rejestru układu POKEY. Żądaną wartość licznika dla znanej prędkości możemy obliczyć po przekształceniu tego wzoru:
R = ((F/2)/baud)-7
Szukana wartość to R po zaokrągleniu do najbliższej całkowitej.
Normalnie ustawianą przez system operacyjny wartością R jest 40. Teoretycznie ma to odpowiadać szybkości 19200 bitów na sekundę, z podanego wzoru wynika jednak, że w rzeczywistości jest to 18866,45 bps w systemie PAL oraz 19040 bps w systemie NTSC. W praktyce szybkość transmisji nieprzyspieszanej może wahać się w zakresie od 17734,46 bps do 20152,8 bps (19200 bps +/- 5%; odpowiada to wartościom dzielnika POKEY-a z zakresu od 43 do 37, w systemie PAL).
Możliwości układu POKEY nie kończą się jednak na szybkości 20 kbps. Niektóre możliwe do wygenerowania szybkości transmisji przedstawia poniższa tabela:
R | bps (PAL / NTSC) | Uwagi |
0 | 126674,7 / 127840,9 | Szybkość trudna do praktycznego użycia ze względu na zakłócenia powodowane przez układ ANTIC przy generowaniu obrazu. |
1 | 110840,4 / 111860,8 | j/w. Jest to najbliższy (odchyłka <5%) odpowiednik "standardowej" szybkości 115,2 kbps (6x19200). |
2 | 98524,8 / 99431,8 | Maksymalna praktycznie użyteczna szybkość transmisji szeregowej ze stacją dysków |
3 | 88672,3 / 89488,6 | |
4 | 80611,2 / 81353,3 | Szybkość opcjonalna stacji XFD-602 |
5 | 73893,6 / 74573,8 | Najbliższy (odchyłka <5%) odpowiednik "standardowej" szybkości 76800 bps (4x19200). |
6 | 68209,5 / 68837,4 | Szybkość stacji LDW Super 2000, Top Drive 1050, TOMS Turbo, TOMS Multi, TOMS 710, TOMS 720, XFD-601/602 itd., krótko mówiąc, najpopularniejsze "turbo" do szeregowej stacji dysków |
7 | 63337,3 / 63920,4 | |
8 | 59114,9 / 59659 | Najbliższy (odchyłka <5%) odpowiednik "standardowej" szybkości 57600 bps (3x19200). |
9 | 55420,2 / 55930,4 | Szybkość transmisji używana w rozszerzeniu Speedy 1050 |
10 | 52160,2 / 52640,4 | 52 kbps, szybkość stacji US Doubler i Happy Warp |
11 | 49262,4 / 49715,9 | |
12 | 46669,6 / 47099,3 | |
13 | 44336,1 / 44744,3 | |
14 | 42224,9 / 42613,6 | |
15 | 40305,6 / 40676,6 | |
16 | 38553,2 / 38908 | Maksymalna szybkość nie modyfikowanych stacji XF-551 oraz CA-2001. Najbliższy (odchyłka <5%) odpowiednik "standardowej" szybkości 38400 bps (2x19200). |
Oczywiście wartość dzielnika częstotliwości może mieć i wyższe wartości, do 65535 włącznie (co daje 13,6 bps).
Magnetofon
Dla magnetofonu domyślną wartością rejestru jest 1484, co odpowiada szybkości 594,7 bps. Szybkość tę podczas transmisji komputer dostosowuje w pewnym zakresie do bieżących potrzeb wynikłych np. z nierównomiernego przesuwu taśmy bądź jej rozciągnięcia itd.
Do zapisu danych na magnetofon stosowany jest tryb dwutonowy (odczyt przebiega normalnie).
Rejestry POKEY-a
Patrz rejestry POKEY-a.