MOS 6526
MOS 6526 Complex Interface Adapter (CIA) este un circuit integrat fabricat de MOS Technology . A fost folosit ca un controler de intrare / ieșire pentru familia de microprocesoare 65xx , care oferea posibilitatea de a accesa porturile de comunicații în modul paralel și serial ; ar putea fi folosit și ca temporizator programabil și ca ceas . De asemenea, a fost produsă o versiune în tehnologia HMOS-III numită MOS 8520 care, comparativ cu 6526, avea un consum de energie mai mic și avea un ceas intern ușor modificat.
Dispozitivul a fost utilizat în principal pe computerele de uz casnic Commodore 64 , Commodore 128 (D) și Amiga , fiecare dintre acestea folosind 2 cipuri. A fost folosit și în unitățile de disc Commodore 1570 , Commodore 1571 și Commodore 1581 (1 cip per periferic).
I / O paralel
CIA are 2 porturi I / O paralele bidirecționale, fiecare dintre ele având propriul registru de direcție a datelor care vă permite să setați fiecare linie ca intrare sau ieșire. O citire a portului returnează întotdeauna starea liniilor individuale, indiferent de direcția de transmisie setată.
I / O serie
Un registru de schimbare cu 8 biți permite CIA să gestioneze transmisia de date în serie. Cipul poate accepta o sursă externă de semnal de ceas și poate emite date în modul serial sincronizându-l cu unul dintre temporizatoarele programabile încorporate. O întrerupere este generată de fiecare dată când transmiterea serială pe 8 biți este finalizată. Prin conectarea ceasului CIA și a ieșirilor de registre de schimb ale diferitelor computere împreună, se poate implementa o rețea simplă.
Rata de transmisie maximă este de 500 kbit / s pentru versiunea de 2 MHz .
Sincronizare
Cipul are 2 linii de control (/ FLAG și / PC) care vă permit să sincronizați mai multe CIA-uri: aceste linii, împreună cu 8 din cele 16 linii paralele, vă permit să utilizați CIA ca un amplificator de semnal simplu compatibil Centronics .
Cronometre
CIA oferă 2 temporizatoare programabile, fiecare cu un nivel de precizie microsecundă . Fiecare temporizator constă dintr - un 16 biți read-only contra și 16 biți corespunzătoare a scrie doar flip-flop . Când se pornește un cronometru, flip-flop-ul său este copiat automat pe contorul său, care este decrementat la fiecare ciclu de ceas până ajunge la zero. În acest moment se generează o întrerupere.
Temporizatorul poate funcționa atât în modul „unic”, adică oprindu-se după prima întrerupere, cât și „continuu”, reîncărcând valoarea selectată după fiecare ciclu și repornind în numărare. Pe lângă generarea întreruperilor, ieșirea temporizatorului poate fi direcționată către al doilea port I / O.
Intervalele relativ lungi pot fi generate prin programarea temporizatorului B pentru a număra resetările temporizatorului A: dacă ambele ating valoarea maximă posibilă, 65.536, atunci s-a obținut un timp de 1 oră, 11 minute și 34 de secunde.
În Commodore 64 și Commodore 128, temporizatoarele CIA erau controlate de ceasul sistemului Φ2 ( faza 2 ), care era în general la 1 MHz: aceasta însemna că erau decrementate aproximativ la fiecare microsecundă. Cu toate acestea, durata exactă a perioadei a fost determinată de standardul video utilizat în sistem, indiferent dacă este NTSC sau PAL , care a influențat frecvența la care a funcționat computerul. Pentru a depăși această problemă în C128 a fost utilizată o tehnică numită întinderea ceasului , care a permis să variați ceasul astfel încât temporizatoarele să nu fie afectate de modificarea ceasului de sistem atunci când computerul a trecut de la modul „SLOW” la modul „FAST”. .
Funcția de ceas
Un Ceas este încorporat în CIA care oferă ora în format AM / PM de 12 ore. Este alcătuit din 4 registre care țin evidența orelor (al 7-lea bit al acestui registru funcționează ca semn AM sau PM), minute, secunde și, respectiv, zecimi de secundă. Toate aceste registre stochează date în format BCD , simplificând operațiile de codificare / decodare a timpului.
Citirea registrelor returnează întotdeauna timpul zilnic. Pentru a evita erorile de odihnă în timpul recuperării timpului, fiecare operație de citire oprește imediat actualizarea registrelor fără a compromite precizia ceasului, deoarece intern CIA continuă să actualizeze ora. Fiecare registru, cu excepția orelor, poate fi citit „din mers”, fără a bloca actualizarea acestuia. Citirea orelor trebuie în schimb urmată de citirea zecimilor de secundă, operație care repornește actualizarea registrelor.
Pentru a seta ora este necesar să scrieți valorile corecte în format BCD în registre. Un acces de scriere la registrul orar blochează ceasul: repornește numai după ce scrieți la zecimile unui al doilea registru. După pornirea computerului, registrele de ceas sunt setate la 1: 00: 00.0: cu o operație de scriere simplă în registrul de zecimi de secundă, începe numărul de timp.
Pe lângă furnizarea orei, ceasul poate fi configurat ca o alarmă, pentru a genera o cerere de întrerupere la o anumită oră. Datorită unei erori prezente în multe 6526, întreruperea legată de alarmă nu este generată atunci când secundele timpului de alarmă sunt exact egale cu 0: pentru a rezolva această problemă, setați doar registrul de zecimi de secundă la 1.
Ceasul intern a fost proiectat pentru a fi guvernat de un semnal de intrare preluat direct de la sursa de curent alternativ , atât la 50, cât și la 60 Hz, astfel încât să permită cea mai mare precizie posibilă și cea mai lungă durată a timpului. Această posibilitate de operare atât cu o frecvență de tensiune de 50 Hz, cât și de 60 Hz a permis ca 6526 să fie utilizat fără discriminare atât pe computerele cu semnale video în format NTSC, cât și în format PAL. În Commodore pe 8 biți, software-ul trebuia să informeze CIA cu privire la frecvențele regionale utilizate de sistem, deoarece sistemul de operare nu îndeplinea această sarcină: neefectuarea acestei operații implica o inexactitate în gestionarea timpului oferit de ceasul.
Versiuni
CIA a fost produs cu un pachet DIP40 în diferite versiuni:
- 6526 , cu o frecvență de 1 MHz;
- 6526A , identic cu precedentul, dar capabil să funcționeze la 2 MHz;
- 8520 , CIA a produs cu tehnologia HMOS-III destinată computerului Commodore Amiga. Comparativ cu 6526 avea un ceas intern bazat pe un contor binar de 24 de biți;
- 5710 , o versiune prescurtată a CIA (numai 4 registre interne) produsă pentru unitatea de disc 1571CR .
Gândac
În plus față de eroarea menționată anterior care afectează întreruperea legată de alarma de ceas, multe CIA au avut un defect care împiedica generarea întreruperii legate de temporizatorul B dacă registrul de control al întreruperii a fost citit cu 1 sau 2 cicluri de ceas. Această eroare a cauzat adesea erori RS-232 în C64s și C128s atunci când au accesat portul serial la viteză mare.
Bibliografie
- Ernesto Sidoti și Renzo Zonin, CIA , în Commodore , nr. 3, Systems Editoriale, septembrie 1984, pp. 18-28.
Alte proiecte
- Wikimedia Commons conține imagini sau alte fișiere despre MOS 6526
linkuri externe
- Foaie tehnică MOS 6526 CIA (imagine GIF în format ZIP)
- Foaie de date MOS 6526 CIA ( PDF ), la 6502.org .