MOS 6526

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
MOS 6526A
MOS 8520A

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

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT