MOS Technology CIA - MOS Technology CIA

Konfigurace kolíků 6526 CIA
Na počátku 6526 CIA bylo stále v nákladném keramickém balení se zlatými kontakty. Pozdější verze byly vyráběny v levnějším plastovém obalu.
CIA MOS 6526A v plastovém obalu
MOS 8520A v Amize 1000

6526/8520 komplex Adaptér rozhraní ( CIA ) byl integrovaný obvod vyroben MOS technologií . Sloužil jako řadič I / O portů pro rodinu mikroprocesorů 6502 , poskytujících paralelní a sériové I / O funkce, stejně jako časovače a hodiny Time-of-Day (TOD). Nejvýznamnější použití zařízení bylo v Commodore 64 a Commodore 128 (D) , z nichž každý obsahoval dva čipy CIA. The Commodore 1570 a Commodore 1571 floppy disky obsahoval jeden CIA každý. Dále domácí počítače Amiga a disketová jednotka Commodore 1581 používaly upravenou variantu obvodu CIA s názvem 8520. 8520 je funkčně ekvivalentní s 6526, s výjimkou zjednodušených obvodů TOD .

Paralelní I / O

CIA měla dva 8bitové obousměrné paralelní I / O porty. Každý port měl odpovídající registr datových směrů, který umožňoval jednotlivě nastavit každou datovou linku do vstupního nebo výstupního režimu. Přečtení těchto portů vždy vrátilo stav jednotlivých řádků, bez ohledu na směr dat, který byl nastaven.

Sériové I / O

Vnitřní obousměrná 8-bit posuvný registr umožnil CIA zpracovat sériové I / O . Čip mohl přijímat sériový vstup taktovaný z externího zdroje a mohl odesílat sériový výstup taktovaný pomocí jednoho z vestavěných programovatelných časovačů. Přerušení byla generována vždy, když bylo ve sériový přenos 8-bit dokončen. Bylo možné implementovat jednoduchou „ síť “ propojením posuvného registru a hodinových výstupů několika počítačů dohromady. Maximální datový tok je u verze 2 MHz 500 kbit / s.

CIA zahrnuje opravu chyby v registru sériového posunu v dřívější 65IA VIA . CIA byla původně zamýšlena tak, aby umožňovala rychlou komunikaci s diskovou jednotkou, ale nakonec nemohla být použita kvůli touze zachovat kompatibilitu diskové jednotky s VIC-20 ; v praxi musel být firmware 1541 disku ještě pomalejší než jeho předchůdce Vic-20, aby se obešlo chování grafického procesoru C64 , který při kreslení obrazovky každých 512 mikrosekund vypnul CPU na 40 mikrosekund a v tomto časovém úseku nemůžu poslouchat autobus a riskovat, že mu něco ušlo

Intervalové časovače

K dispozici byly dva programovatelné intervalové časovače, každý s přesností na druhou mikrosekundu . Každý časovač sestával z 16bitového přednastavitelného čítače dolů pouze pro čtení a odpovídající 16bitové západky pouze pro zápis . Kdykoli byl spuštěn časovač, západka časovače byla automaticky zkopírována do jeho počitadla a čítač by se pak s každým hodinovým cyklem snižoval až do podtečení, při kterém by se vygenerovalo přerušení, pokud by k tomu byla nakonfigurována CIA.

Časovač mohl běžet buď v „jednorázovém“ režimu, zastavit se po podtečení, nebo v „nepřetržitém“ režimu, znovu načíst hodnotu západky a spustit cyklus časovače znovu. Kromě generování přerušení může být výstup časovače také směrován na druhý I / O port.

Jak je nakonfigurováno v Commodore 64 a Commodore 128 , načasování CIA bylo řízeno systémovými hodinami Ø2, jmenovitě jedním MHz . To znamenalo, že časovače se snižovaly přibližně v intervalech jedné mikrosekundy, přičemž přesné časové období se určovalo podle toho, zda systém používal video standard NTSC nebo PAL . U C-128 bylo použito natahování hodin, takže načasování CIA nebylo ovlivněno tím, zda systém běžel v režimu POMALO nebo RYCHLE.

Bylo možné generovat relativně dlouhé časovací intervaly programováním časovače B tak, aby počítal podtečení časovače A. Pokud by byly oba časovače načteny s maximální hodnotou intervalu 65 535, výsledkem by byl časový interval jedné hodiny, 11 minut a 34 sekund.

Hodiny denní doby (TOD)

Hodiny reálného času jsou začleněny do CIA a poskytují časoměřicí zařízení příznivější pro lidské potřeby než mikrosekundová přesnost intervalových časovačů. Čas je udržován v americkém 12hodinovém formátu AM / PM. Hodiny TOD se skládají ze čtyř registrů pro čtení a zápis: hodin (s bitem 7 fungujícím jako příznak AM / PM), minut, sekund a desetin sekundy. Všechny registry se načítají ve formátu BCD , což zjednodušuje proces kódování / dekódování.

Čtení z registrů vždy vrátí denní čas. Aby se předešlo chybě při načítání času, čtení registru hodin okamžitě zastaví aktualizaci registru, aniž by to mělo vliv na přesnost interního měření času. Po přečtení desátého registru bude aktualizace pokračovat. Je možné číst jakýkoli jiný registr než registr hodin „za chodu“, což umožňuje praktické využití běžících hodin TOD jako časovače. Pokud je čten registr hodin, je nutné následně přečíst desátý registr. Jinak zůstanou všechny registry TOD „zamrzlé“.

Nastavení času zahrnuje zápis příslušných hodnot BCD do registrů. Přístup pro zápis do registru hodin zcela zastaví hodiny. Hodiny se nespustí znovu, dokud nebude zapsána hodnota do desátého registru. Vzhledem k pořadí, v jakém se registry objevují na mapě paměti systému , stačí k zápisu registrů ve správném pořadí jednoduchá smyčka. Je povoleno zapisovat pouze do desátého registru, aby se „posunuli“ hodiny do akce, kdy po hardwarovém resetu hodiny začnou v 1: 00: 00,0.

Kromě svých funkcí měření času může být TOD nakonfigurován tak, aby fungoval jako budík , a to tak, že zajistí, aby generoval požadavek na přerušení v kteroukoli požadovanou dobu. Kvůli chybě v mnoha 6526s (viz také errata níže) by IRQ alarmu ne vždy došlo, když je sekundová složka času alarmu přesně nula. Řešením je nastavit hodnotu desetin na poplach, aby 0,1 sekundy.

Vnitřní obvody hodin TOD jsou navrženy tak, aby byly poháněny sinusovým signálem 50 nebo 60 Hz . Jak se používá v C-64 a C-128 (D), napájecí zdroj počítače dodával takový signál ze sítě, což mělo za následek stabilní časoměřič s malým dlouhodobým driftem. Schopnost pracovat s oběma frekvencemi elektrického vedení umožňovala použití jediné verze 6526 v počítačích provozovaných v zemích s napájením 50 nebo 60 Hz. Je důležité si uvědomit, že na rozdíl od všeobecného přesvědčení nejsou video normy NTSC nebo PAL přímo spojeny s frekvencí napájení ze sítě. Některé počítače navíc neodvodily svoji taktovací frekvenci TOD ze zdroje napájení ze sítě. Například varianty NTSC i PAL Commodore SX-64 používají hodiny 60 Hz TOD dodávané vyhrazeným krystalem. Například operační systém KERNAL v Commodore 64 určí video standard během spouštění systému, ale nepokouší se identifikovat dodanou taktovací frekvenci TOD ani správně inicializovat CIA na strojích poháněných 50 Hz. Je tedy odpovědností jakéhokoli aplikačního softwaru, který chce použít buď funkci COD TOD k určení dodané frekvence a odpovídajícímu nastavení příznaku CIA. Pokud tak neučiníte, může dojít k rychlému odchýlení hodin od správného času.

Revize CIA z roku 8520, jak se používá v Amize a diskové jednotce Commodore 1581 , upravila hodiny času na 24bitový binární čítač a nahradila formát BCD modelu 6526. Jiné chování však bylo podobné .

Verze

CIA byla k dispozici ve verzích 1 MHz (6526), ​​2 MHz (6526A) a 3 MHz (6526B). Balíček byl JEDEC -standardní 40-pinový keramiky nebo plastu DIP . 8520 CIA s upravenými hodinami času byla použita v počítačích Amiga .

Commodore vložil sníženou (pouze 4 registry) logiku podobnou CIA pro Commodore 1571 se sníženou cenou uvnitř C128DCR (viz Commodore 128 ) v hradlovém poli zvaném 5710, které také obsahuje další funkce. Model 5710 CIA má sériové hodiny pro rychlé sériové rozhraní připojené k CIA6526 ekvivalentní hodnotě časovače A 5, což vede k času na bit 5 μs při přenosu. To se liší od toho, co bývalo hodnotou 6 časovače A v 6526 CIA v původním Commodore 1571 . 5710 CIA neobsahuje registry časovače ani časovače. Obsahuje pouze dva registry portů a registr pro ovládání sériového řadiče a jeho události.

Errata

Kromě výše zmíněné chyby přerušení budíku vykazovalo mnoho CIA poruchu, při které by součást selhala při generování hardwarového přerušení časovače B, pokud by byl řídicí registr přerušení (ICR) přečten jeden nebo dva hodinové cykly před časem, kdy by mělo být přerušení skutečně došlo. Tato vada, stejně jako logické chyby v operačním systému Commodore (8 bit), způsobily časté chyby pseudo -RS-232 v počítačích Commodore 64 a Commodore 128, když běžely s vyšší přenosovou rychlostí.

Reference

externí odkazy