Кіріспе

Интегралды схема

6526/8520 кешенді интерфейс адаптері (CIA) – MOS Technology компаниясы жасаған интегралды схема. Ол 6502 микропроцессорлар отбасы үшін I/O порт контроллері ретінде қызмет етті, параллель және сериялық I/O мүмкіндіктерін, сондай-ақ таймерлер мен күндізгі уақыт (TOD) сағатын қамтамасыз етті. Бұл құрылғы ең көп қолданылғаны Commodore 64 және Commodore 128(D) компьютерлерінде болды, олардың әрқайсысында екі CIA чипі орналасқан. Commodore 1570 және Commodore 1571 дискеттік жетектерінде әрқайсысында бір CIA чипі болды. Сонымен қатар, Amiga үй компьютерлері мен Commodore 1581 дискеттік жетегі CIA схемасының 8520 деп аталатын өңделген нұсқасын пайдаланды. 8520, TOD схемаларын оңайлатудан басқа, функционалдық тұрғыдан 6526-ға тең. CIA-ның алдында PIA болған.

Параллельді I/O

ЦРУ-да екі 8 биттік екі бағытты параллельді I/O порты болған. Әрбір портқа сәйкес дерек бағытын реттегіш регистрі болды, ол әрбір дерек желісін жеке-жеке кіріс немесе шығыс режиміне орнатуға мүмкіндік берді. Бұл порттардан мәлімет оқу әрқашан жеке жолдардың күйін қайтаратын, дерек бағыты қалай орнатылғанына қарамастан.

Ілеспе I/O

Ішкі екі бағытты 8 биттік ауысу тізілімі ЦРУ-ға тізбекті I/O басқаруға мүмкіндік берді. Чип сыртқы көзден синхрондалған тізбекті кірісті қабылдай алады және кіріктірілген бағдарламаланатын таймерлердің бірімен синхрондалған тізбекті шығысты жібере алады. 8 биттік тізбектік деректерді жіберу аяқталғанда үзіліс туды. Бірнеше компьютердің ауысу тізілімі мен синхрондау шығыстарын қосу арқылы қарапайым "желі" құруға болады. 2 МГц нұсқасы үшін максималды деректер беру жылдамдығы 500 кбит/с. ЦРУ 6522 VIA-ның алдыңғы нұсқасындағы тізбектік ауысу тізіліміндегі қателікті жойды. ЦРУ бастапқыда дискімен жылдам байланыс құру үшін жасалған, бірақ VIC 20 дискісімен үйлесімділікті сақтау қажеттілігінен оны қолдану мүмкін болмады. Іс жүзінде, 1541 дискісінің микробағдарламасы C64 бейне процессорының әрекетін реттеу үшін VIC 20-нің алдыңғы нұсқасынан тіпті баяулау болуы керек еді, себебі ол экранды салу кезінде CPU-ны 512 микросекунд сайын 40 микросекундқа өшіріп тастайды және осы уақыт аралығында шинаны тыңдай алмайды, соның салдарынан кейбір деректерді жоғалту қаупі туындайды.

Интервалдық таймерлер

Екі бағдарламаланатын интервалдық таймер қол жетімді болды, олардың әрқайсысы субмикросекундтық дәлдікке ие. Әр таймер 16 биттік, тек оқуға арналған, алдын ала орнатылатын төмен санағыштан және сәйкес 16 биттік, тек жазуға арналған, құлыптан тұрады. Таймер іске қосылғанда, таймердің құлыптық мәні автоматты түрде оның санағышына көшіріледі, содан кейін санағыш әр сағат циклында төмендеп, ағып кеткенде, егер ЦРУ осылай конфигурацияланған болса, үзіліс тудырады. Таймер "бір реттік" режимде, ағып кеткеннен кейін тоқтатыла отырып, немесе "үздіксіз" режимде, құлыптық мәнді қайта жүктеу арқылы таймер циклын жаңадан бастай алады. Үзілістерді тудырудан басқа, таймердің шығысы екінші I/O портына да жіберілуі мүмкін. Commodore 64 және Commodore 128 конфигурациясында ЦРУ-ның уақытын Ø2 жүйелік сағаты, шамамен бір МГц, басқарады. Бұл таймерлердің шамамен бір микросекундтық интервалмен төмендеуін білдіреді, нақты уақыт аралығы жүйенің NTSC немесе PAL бейне стандартын қолдануына байланысты анықталады. C 128-де сағатты созу әдісі қолданылды, сондықтан ЦРУ-ның уақытына жүйенің SLOW немесе FAST режимде жұмыс істеуі әсер етпейді. Таймер B-ні таймер A-ның ағып кетуін санауға бағдарламалау арқылы салыстырмалы түрде ұзақ уақыт аралықтарын жасауға болады. Егер екі таймер де максималды интервалдық мәнге, яғни 65535-ке орнатылса, бір сағат, 11 минут, 34 секундқа тең уақыт аралығы пайда болады.

Күндізгі уақыт (TOD) сағаты

CIA-да нақты уақыт сағаты енгізілген, бұл интервалдық таймерлердің микросекундтық дәлдігіне қарағанда адам қажеттіліктеріне сәйкес келетін уақытты өлшеу құрылғысын қамтамасыз етеді. Уақыт американдық 12 сағаттық AM/PM форматында сақталады. TOD сағаты төрт оқу/жазу тіркелімінен тұрады: сағат (7-биті AM/PM белгісі ретінде қолданылады), минут, секунд және секундтың оннан бір бөлігі. Барлық тіркелімдер BCD форматында оқылады, бұл кодтау/декодтау процесін жеңілдетеді. Тіркелімдерді оқу әрқашан күннің уақытын көрсетеді. Уақытты алу кезінде қателерді болдырмау үшін сағат тіркелімін оқу дереу тіркелімді жаңартуды тоқтатады, бұл ішкі уақыт өлшеудің дәлдігіне әсер етпейді. Ондықтар тіркелімі оқылғаннан кейін жаңарту қайта басталады. Сағат тіркелімінен басқа кез келген тіркелімді "ұшып" оқуға болады, бұл жұмыс істеп тұрған TOD сағатын таймер ретінде пайдалануды практикалық етеді. Дегенмен, егер сағат тіркелімі оқылса, ондықтар тіркелімін оқу қажет. Әйтпесе, уақыт туралы мәліметтер "қатып" қалады. Уақытты орнату үшін тіркелімдерге тиісті BCD мәндерін жазу қажет. Сағат тіркеліміне жазу сағатты толығымен тоқтатады. Сағат ондықтар тіркеліміне мән жазылмайынша қайтадан іске қосылмайды. Тіркелімдер жүйелік жад картасында орналасқан реттілікке сәйкес, тіркелімдерді дұрыс реттілікпен жазу үшін қарапайым цикл жеткілікті. Сағатты іске қосу үшін тек ондықтар тіркеліміне жазуға болады, мұнда аппараттық қайта орналастырудан кейін сағат 1:00:00.0-де басталады. Уақытты есептеу мүмкіндігінен басқа, TOD-ді кез келген уақытта үзіліс сұранысын жасау үшін белгілеп, дабыл сағаты ретінде де пайдалануға болады. Көптеген 6526 чиптеріндегі қатеге байланысты (төмендегі қателерді де қараңыз), дабыл IRQ дабыл уақытының секундтық бөлігі дәл нөлге тең болғанда әрқашан туындамайды. Бұл жағдайда дабылдың ондық мәнін 0,1 секундқа орнату керек. TOD сағатының ішкі схемасы 50 немесе 60 Гц синустық толқынмен басқарылуға арналған. C 64 және C 128 (D) компьютерлерінде қуат көзі желіден осындай сигнал берді, нәтижесінде тұрақты уақыт өлшегіш пайда болды. Екі электр желісінің жиілігімен жұмыс істеу мүмкіндігі 6526 чипінің бір нұсқасын 50 немесе 60 Гц қуаты бар елдерде қолдануға мүмкіндік берді. NTSC немесе PAL бейне стандарттарының электр желісінің жиілігіне тікелей байланысты еместігін атап өту маңызды. Сонымен қатар, кейбір компьютерлер TOD сағатының жиілігін электр желісінен алған жоқ. Мысалы, Commodore SX 64-тің NTSC және PAL нұсқалары арнайы кристаллмен қамтамасыз етілген 60 Гц TOD сағатын қолданады. Мысалы, Commodore 64 операциялық жүйесіндегі KERNAL жүйе іске қосылған кезде бейне стандартты анықтайды, бірақ 50 Гц жетекті машиналарда берілген TOD сағаттық жиілігін анықтауға немесе CIA-ны дұрыс іске қосуға тырыспайды. Осылайша, берілген жиілікті анықтау және сәйкесінше CIA-ның флагын орнату үшін CIA-ның TOD функциясын пайдалануды қалаған кез келген қолданбалық бағдарламалық жасақтама жауапты. Бұл істелмесе, сағат дұрыс уақыттан тез ауытқуы мүмкін. Amiga және Commodore 1581 дискілік дискісінде қолданылған CIA-ның 8520 нұсқасы күндізгі уақыт сағатын 24 биттік бинарлық сағаттаушыға өзгертіп, 6526-ның BCD форматын алмастырды. Дегенмен, басқа да мінез-құлықтары ұқсас болды.

Нұсқалар

CIA 1 МГц (6526), 2 МГц (6526A) және 3 МГц (6526B) нұсқаларында қол жетімді болды. Ол JEDEC стандарты бойынша 40 қосқышты керамикалық немесе пластикалық DIP корпусында келді. 8520 CIA, өзгертілген уақыт сағатымен, Amiga компьютерлерінде пайдаланылды. Commodore компаниясы C128DCR (Коммодор 128-ге қараңыз) ішіндегі Commodore 1571 құрылғысының құнын төмендету үшін 5710 деп аталатын қақпа массивіне CIA сияқты логиканы (тек 4 регистр) енгізді. 5710 CIA жылдам сериялық интерфейс үшін сериялық сағатын CIA6526 эквивалентті Таймер A мәні 5-ке бекітілген күйде ұсынады, бұл бір бит уақытын 5 мкс-қа дейін қысқартады. Бұл түпнұсқа Commodore 1571 құрылғысындағы 6526 CIA-дағы Таймер A мәні 6 болғаннан өзгеше. 5710 CIA таймер немесе таймерді басқару регистрлерін қамтымайды. Ол тек екі порт регистрінен және сериялық ауыстырғышты басқару және оның оқиғасын басқару регистрінен тұрады.

Қателік

Жоғарыда айтылған сағаттық дабыл үзілісінің қатесінен өзге, көптеген ЦИА-да бөлшек үзіліс болуға тиіс уақыттан бір немесе екі цикл бұрын үзіліс басқару тізілімі (ICR) оқылғанда, B аппараттық үзілісін жасамайтын жағдайлар кездесетін. Осы ақаулық, сондай-ақ Commodore ұсынған (8 биттік) операциялық жүйедегі логикалық қателер Commodore 64 және Commodore 128 компьютерлері жоғары жылдамдықпен жұмыс істегенде жиі жалған RS 232 қателеріне әкеп соқты.