Корвет/Техническое описание

Материал из Emuverse
Перейти к: навигация, поиск
Red copyright.png Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Источник: http://pk8020.narod.ru/

ВВЕДЕНИЕ

Если у Вас нет опыта в цифровой технике, но есть желание разобраться в КОРВЕТЕ досконально, то отбросьте все сомнения и беритесь за дело.

Лучше предварительно обзавестись книжкой В.Л.Шило "Популярные цифровые микросхемы". Несомненно пригодится любой справочник по микропроцессорному комплекту КР580. Если дополнительную литературу достать не удается, не беда, при обсуждении схем узлов КОРВЕТА мы приводим дополнительную информацию о работе микросхем.

Итак давайте попробуем разобраться в принципиальной схеме КОРВЕТА. Сначала разберемся, как устроен альбом схем. На листе 1 приведена разводка питания. Здесь также приведены все типы микросхем, используемые в схеме, и номера ножек микросхем, на которые подается питающее напряжение.

Собственно схема КОРВЕТА начинается с листа 2. Чтобы разбираться в альбоме, нужно уяснить следующие нехитрые правила.

Микросхемы маркируются двойной нумерацией (например, на листе 2 микросхема КР556РТ2 имеет номера D40 и 2.9. По номеру D40 можно определить на карте размещения элементов в конце альбома расположение микросхемы на плате. Номер 2.9 означает, что микросхему можно найти на листе 2 и ее порядковый номер 9).

На любом листе альбома цепи входных сигналов изображаются всегда слева, а выходных - справа. Маркировка этих цепей также двойная и состоит из названия сигнала и номера микросхемы, от которой (или на которую) поступает сигнал.

На этом комментарий к альбому мы закончим и приступим непосредственно к самой схеме.

Принципиальной особенностью КОРВЕТА является жесткая синхронизация всех процессов. Специальное устройство - синхронизатор вырабатывает все необходимые синхросигналы. Поэтому изучение схемы КОРВЕТА мы начнем с синхронизатора.

СИНХРОНИЗАТОР

Схема синхронизатора приведена на листе 2 альбома. Синхронизатор состоит из задающего генератора, двадцатиразрядного счетчика и схем формирования тактовых сигналов для других узлов ПЭВМ.

Задающий генератор частотой 20 Мгц. реализован на микросхеме КР531ЛЕ1 (D39(2.8, 2.14) и содержит кварцевый резонатор BQ1.

Счетчик собран на пяти микросхемах К555ИЕ10 (D44, D45, D46, D47 и D48).

Микросхема D44 это четырехразрядный двоичный счетчик, работающий как делитель частоты задающего генератора. На выходах счетчика формируются частоты: 10 Мгц(14 ножка), 5 Мгц (13 ножка), 2.5 Мгц(12 ножка) и 1.25 Мгц(11 ножка).

Частота 1.25 Мгц поступает на тактовые входы восьмиразрядного счетчика D45, D46, с выхода переноса (15 ножка) которого выходит сигнал частотой 7.622 Кгц, т.е. счетчик D45, D46 делит частоту 1.25 Мгц на 164. Какие же формируются сигналы на остальных выходах счетчика? Обратимся к рисунку 1, на котором изображены временные диаграммы сигналов на всех выходах счетчика.

Рассмотрение начнем с момента времени, когда на счетчик приходит сигнал загрузки LOADCT2 (активный уровень низкий, т.е. при низком уровне сигнала происходит загрузка). Длительность сигнала 0.8 мксек. и совпадает с периодом Т = 0.8 мксек. тактовой частоты счетчика (1.25 Мгц).

Как видно из схемы, названия многих сигналов помечены чертой сверху. Этот прием применяется для того, чтобы указать, что активный уровень сигнала является низким. В наших рассуждениях мы не будем применять черту для обозначения названий сигналов. При этом давайте договоримся, что сигнал, прошедший через инвертор, не меняет своего названия. Там, где в схеме важно подчеркнуть, что сигнал низкого уровня активный, мы будем это делать словами. Такой подход даст нам определенные преимущества в будущем при использовании логических формул для сигналов.

Условия формирования сигнала LOADCT2 мы рассмотрим чуть позже, а пока, внимательно посмотрев на схему, мы можем сказать, что в счетчик загружаются данные: С0-С5 = "0" и HBL = "1". Что же загружается в старший разряд счетчика (сигнал С6)? Очень просто: то значение, которое было на выходе в момент загрузки, т.е. сигнал С6 при загрузке не меняется. Положим для определенности С6 = "0".

После окончания сигнала загрузки, счетчик переходит в режим счета, поэтому на выходах счетчика будут формироваться периодические сигналы типа "МЕАНДР" с периодами : С0 - 2Т; С1 - 4Т; С2 - 8Т; С3 - 16Т; С4 - 32Т; С5 - 64Т. Через время 64Т = 51.2 мксек. сигналы С0 - С5 будут такие же, как после загрузки, а сигналы HBL и С6 инвертируются. Эта ситуация отражена на рисунке . Ждем еще 16Т = 12.8 мксек. Сигналы с периодом кратным 16Т не изменяются, т.е. С0,C1,C2 и С3 = "0"; С4 = "1"; С5 = "1"; HBL = "0" и С6 = "1". Теперь самое время пояснить, как формируется сигнал загрузки. Из схемы этого понять нельзя, т.к. все происходит в програмируемой матрице D40.

Нам нужна карта прошивки микросхемы D40. Об этом мы поговорим позже, а пока дадим формулу :

LOADCT2 = not(C*C4*notHBL)

Смысл формулы очень простой. Чтобы получить сигнал LOADCT2, нужно логически перемножить сигналы С0,С4 и notHBL, т.е. свернуть с помощью логической операции "И" сигналы С0, С4 и проинвертированный сигнал HBL, и полученный результат проинвертировать. Другими словами сигнал LOADCT2 формируется тогда, когда С0 = "1", С4 = "1" и HBL = "0". Через время 80Т после начала загрузки у нас ситуация : С0 = "0",С4 = "1" и HBL = "0". Ясно, что нужно подождать еще половину периода сигнала С0, т.е. Т, и сформируется сигнал загрузки, длительность которого будет равна половине периода сигнала С0. Далее картина будет в основном повторяться. Исключение будет составлять сигнал переноса CR (D46). Мы предоставляем читателю самому проанализировать, как формируется сигнал CR(D46) и убедиться, что его период равен 164Т, т.е. счетчик все-таки делит входную частоту на 164.

Набив руку на счетчике D45,D46, попробуем самостоятельно разобраться в счетчике D47,D48. На его вход (вход разрешения счета - D47(ножка 10)) поступает сигнал CR(D46) с частотой 7.622 Кгц (период Т1 = 164Т = 131.2 мксек.). В момент загрузки в счетчик заносится число 01100100B = 100D. Счетчик начинает считать импульсы CR(D46) и досчитав до 255, формирует сигнал на выходе счетчика CR(D48), при этом на остальных выходах установятся единицы. Нетрудно сообразить, что сигнал CR(D48) появится через 255 - 100 + 1 = 156 периодов Т1. Этот же сигнал, пройдя через инвертор D26 и получив название SVBL, является сигналом загрузки счетчика. Мы получили, что частота сигнала SVBL в 156 раз меньше входной частоты 7.622 Кгц и равна 50 Гц.

После загрузки счетчика в четырех его младших разрядах будет число 0100B = 4D, поэтому сигнал CR(D47) появится через 16 - 4 = 12 периодов Т1 после начала счета, а сигнал VBL станет сигналом высокого уровня через 12 + 16 = 28 периодов Т1.

Теперь нетрудно определить параметры сигнала VBL. Они приведены на рисунке 2.

Наконец мы разобрались с сигналами, которые формирует двадцатиразрядный счетчик. Назначение этих сигналов мы будем выяснять по мере обсуждения тех узлов "КОРВЕТА", в которых они используются, а сейчас разберемся с микросхемой КР556РТ2 (D40). Эта микросхема называется программируемой логической матрицей или ПЛМ и позволяет проводить над входными сигналами логические операции AND, OR и NOT.

Мы уже знаем, как "изготавливается" сигнал LOADCT2. Теперь приведем рецепты всех сигналов, выходящих из ПЛМ (D40).

0. CSV     = not10M*not5M*not2.5M*1.25M + 
             + 10M*5M*not2.5M*notACCESS 
1. GCLK    = 10M 
2. SHIFT   = not(HBL*5M*2.5M*not1.25M*notMODSEL*VBL + 
             + HBL*5M*2.5M*not1.25M*MODSEL*VBL*notC0) 
3. LOADPOM = 10M*5M*not2.5M*1.25M 
4. HVSYNC  = not(notHBL*VBL*notC3*C2 +              
             + notHBL*notVBL*C11*notC3*C2 + 
             + notHBL*notVBL*notC10*C9*notC11*notC3*C2 + 
             + notHBL*notVBL*C10*notC9*notC11*notC3*C2 + 
             + HBL*notVBL*C10*C9*notC11) 5. LOADCT2 = not(notHBL*C4*C0) 
6. LOAD    = not(HBL*5M*2.5M*not1.25M*VBL) 
7. VCLK    = 10M*notMODSEL + 1M*5M*MODSEL 

Вообще-то этой информации достаточно, чтобы составить карту прошивки ПЛМ, но мы также приведем и ее в таблице 1.

В таблице закодирована информация, как программировать ПЛМ. Процесс программирования заключается в пережигании плавких перемычек.

Рассмотрим устройство матрицы. Каждая ПЛМ состоит из 48 матриц "AND", которые называются термами, имеющие номера от 0 до 47. Каждая матрица "AND" (терм) имеет 32 входа. Все входы всех термов подключены к 16 входным линиям ПЛМ. Таким образом, каждый вход ПЛМ подключен к паре входов каждого терма (один вход прямой, а другой инверсный) через плавкие перемычки. Если целы обе перемычки для какого-нибудь терма, то этот терм никогда не будет выбран, т.к. одна из двух линий всегда будет в состоянии "НОЛЬ". Эта ситуация обозначается знаком "0".

Если удалена одна перемычка, например, соединяющая инверсную линию, то поданный на вход сигнал высокого уровня может активизировать терм. Эта ситуация обозначается символом "Н". В противном случае (удалена "прямая" перемычка) ситуация обозначается символом "L".Если удалить обе перемычки, то активность терма не будет зависеть от данного входа. В этом случае ставят знак "-".

Теперь мы уже сможем понять половину таблицы 1. Например, посмотрим, как подключен ко входам ПЛМ терм N4. Предварительно заметим, что вход 0 соответствует самому правому символу в терме, а вход 15 - левому. Легко определяем из таблицы, что к четвертому терму подключены 2 входа: вход 14 (удалена инверсная перемычка) и вход 10 (удалена прямая перемычка). Остальные входы отключены от четвертого терма.

Выход с каждого терма (всего 48 выходов) можно подать через плавкие перемычки в различных комбинациях на матрицу "OR", состоящую из 8 линий по 48 входов каждая (одна линия соответствует одному выходу). Наличие входной перемычки обозначается символом "А", отсутствие символом ".". Добавив, что выход 0 соответствует самому правому символу таблицы для матрицы "OR", а выход 7 самому левому, предлагаем вам убедиться, что формулы соответствуют таблице.

Чтобы закончить с матрицами, осталось разобраться с одной строчкой таблицы перед термом ноль. Дело в том, что выход матрицы "OR" поступает на выход ПЛМ через элемент "исключающее или". Второй вход элемента соеденен через плавную перемычку с общей шиной. Если эта перемычка цела, элемент не меняет полярность входного сигнала, т.е. активное состояние выхода - "1". Такая ситуация обозначается символом "H". В противном случае активное состояние выхода - "0" и используется символ "L". Таким образом первая строчка таблицы кодирует полярность выходных сигналов ПЛМ и обозначается "POL" (полярность).

Вот теперь мы знаем о ПЛМ все, верней почти все. Как видно, вышеприведенные формулы для сигналов и карта прошивки просто разные языки описания одних и тех же процессов.

Чтобы закончить рассмотрение работы синхронизатора, нам осталось рассмотреть формирователь сигналов "F1" и "F2" частотой 2.5 Мгц и амплитудой 12 вольт для микропроцессора КР580ВМ80А, формирователь сигналов выбора строк "RAS" и столбцов "CAS" частотой 2.5 Мгц для динамического ОЗУ и ГЗУ (графического ЗУ) и формирователь тактовых сигналов для контроллера НГМД частотой 4, 2 и 1 Мгц.

Мы надеемся, что читатель стал уже настолько опытен, что в состоянии сам разобраться в работе этих формирователей.

Для подсказки сделаем небольшое замечание по поводу режима работы микросхем D25 и D72. Они включены, как D - триггер (на входы S и R подана одновременно "1"). С приходом положительного фронта тактирующего импульса на вход C данные с входа D поступают на прямой и инверсный выходы триггера и сохраняются на них до прихода следующего положительного перепада тактового сигнала. Те читатели, у которых возникли трудности в этом месте, могут посмотреть рисунки 3 и 4.

Разобравшись с синхронизатором, займемся теперь процессором.

ПРОЦЕССОР

На листе 3 показана схема процессора. Процессор имеет шестнадцатиразрядную шину адреса, двунаправленную восьмиразрядную шину данных и несколько входных и выходных управляющих сигналов. На входы F1 и F2 процессора поступают из синхронизатора синхроимпульсы. Эти синхроимпульсы мы уже знаем, они задают тактовую частоту процессора.

Микропроцессор выполняет команды по машинным циклам. Число циклов, необходимое для выполнения команды, зависит от ее типа и может быть от одного до пяти. Машинные циклы выполняются по машинным тактам. Число тактов в цикле также определяется кодом выполняемой команды и может быть от трех до пяти. Длительность такта равна периоду тактовой частоты сигналов F1 и F2, т.е. 400 нсек. Начало такта определяется положительным фронтом импульса F1.

Работа микропроцессора управляется входными и выходными сигналами. Входные сигналы следующие:

READY - готовность HLD - захват INT - запрос прерывания RESET - установка в исходное состояние

Выходные сигналы:

WAIT - ожидание HLDA - подтверждение захвата SYNC - сигнал синхронизации DBIN - сигнал чтения WR - сигнал записи (активн. уровень низк.)

Дотошный читатель уже сообразил, что некоторые управляющие сигналы идут в "никуда", т.е. только на разъем XS3. Разъем XS3 введен в схему для возможности подключения ПЭВМ к тестирующему оборудованию. При нормальной работе ПЭВМ он не используется (к нему ничего не подключается).

Для того, чтобы управляющие сигналы не терялись и "КОРВЕТ" мог нормально работать, на разъеме XS3 должны быть установлены пять перемычек, замыкающие попарно следующие сигналы:

1SYNC    - SYNC 
1WR      - WR 
1READY   - RADY 
1DBIN    - DBIN 
1CSROM1  - CSROM1 

Перед тем, как перейти к дальнейшему анализу схемы, сделаем несколько общих замечаний о работе процессора.

В начале каждого машинного цикла процессор вырабатывает сигнал SYNC длительностью равной периоду тактовой частоты (в нашем случае 400 нсек.). Точное время появления сигнала SYNC зависит от конкретной микросхемы. Оговаривается, что SYNC может появиться не позже, чем через 120 нсек. после переднего фронта сигнала F2.

Сигнал RESET переводит процессор в исходное состояние, снятие сигнала запускает процессор из исходного состояния, т.е. процессор начинает выполнение первой команды с первого цикла и первого такта (Т1) в первом цикле. Длительность сигнала RESET должна быть не менее трех периодов тактовой частоты.

В такте Т1 каждого машинного цикла процессор выдает на адресную шину адрес ячейки памяти, к которой он хочет обратиться (после сигнала RESET адрес ячейки будет 0000H). В этом же такте процессор выдает на шину данных слово состояния, которое "говорит" о том, что собирается делать процессор в данном цикле.

В такте Т2 процессор принимает информацию по шине данных и анализирует состояние сигнала READY. Если READY = "1", то процессор продолжает работу и переходит к такту Т3, если READY = "0", то процессор переходит в режим "Ожидание" и формирует сигнал WAIT высого уровня (WAIT = "1").

В такте Т3 при условии, что READY = "1", процессор передает информацию по шине данных и анализирует сигнал HOLD. Если HOLD = "1", то по окончанию Т3 процессор переходит в состояние захвата и подтверждает это высоким уровнем сигнала HLDA (HLDA = "1"). При этом процессор "отключается" (переходит в высокоомное состояние) от шин данных/адреса и переводит выходные управляющие сигналы, кроме HLDA и WR, в состояние низкого уровня.

Если процессор смог благополучно выполнить такт Т3 первого цикла команды, то он переходит ко второму машинному циклу. И так такт за тактом, цикл за циклом, команда за командой процессор выполняет программу.

У читающего должен возникнуть естественный вопрос, как разобраться в такой путанице, поскольку произвольная команда может выполняться и за один цикл и за пять, а цикл может занимать от трех до пяти тактов. Правда есть сигнал SYNC, привязанный к началу каждого цикла, но этого, конечно, мало.

Выше мы упомянули о том, что в первом такте каждого машинного цикла процессор выдает на шину данных слово состояния, которое кодирует тип цикла. Число типов машинных циклов десять (М1 - М10).

М1  - прием кода команды в регистр команд. 
М2  - цикл   чтения   ЗУ  по  содержимому  программного 
      счетчика или содержимому одного из регистров BC, DE, HL.   
М3  - цикл   записи  в  ЗУ  по содержимому программного счетчика 
      или содержимому одного из регистров BC, DE, HL.   
М4  - цикл чтения стека по содержимому указателя стека. 
М5  - цикл записи в стек по содержимому указат. стека. 
М6  - цикл  ввода  информации в аккумулятор из внешнего устройства. 
М7  - цикл  ввода  информации в аккумулятор из внешнего устройства. 
М8  - цикл прерывания (прием кода команды RST или CALL из 
      контроллера прерываний). 
М9  - цикл останова 

М10 - цикл прерывания при останове (прием кода команды RST или CALL при выводе микропроцессора из режима "Останов" по прерыванию).

Таким образом в такте Т1 каждого машинного цикла сообщается о типе выполняемого цикла. Мы приводим наименования сигналов слова состояния и соответствие их машинным циклам в таблице 2.

Вот теперь мы достаточно подготовлены, чтобы обратить свой взор на лист 3 альбома схем.

Прежде всего отметим, что в формировании управляющих сигналов участвуют разряды D0, D1, и D5 шины данных. Как вы уже знаете, в "Корвете" обращение к устройствам ввода/вывода (УВВ) происходит как к ячейкам памяти. Поэтому команды IN и OUT не используются, и связанные с их выполнением циклы М6 и М7 нас интересовать не будут. Нас так же не будут интересовать циклы, связанные с разрядами D2, D3, D4, D6 и D7.

Внимательно посмотрев на таблицу 2, мы можем сказать, что нам нужно рассмотреть циклы М1-М5, М8 и М10. Причем, с точки зрения схемотехники "Корвета", М2 совпадает с М4, а М3 с М5. На рис. 5 приведены временные диаграммы управляющих сигналов для циклов М1, М2 и М3. Прокомментируем коротко эти сигналы.

Сигналы SINC, DBIN и WR формируются по фронту F2 в тактах Т1, Т2, Т3 соответственно и имеют длительность 400 нсек. Слово состояния на шине данных сопровождается сигналом SINC. Адрес на шине адреса сохраняется до следующего цикла.

Сигнал ACCESS формируется с помощью сдвигового регистра D27, который работает следующим образом. Если на входе EWR сигнал высокого уровня, то данные загружаются в регистр с параллельных входов 0, 1, 2, 3 по отрицательному перепаду на входе С. Низкий уровень сигнала на входе EWR вызывает загрузку данных с последовательного входа 0 --> (1 ножка) синхронно с каждым отрицательным перепадом на входе С. При этом на выходе О (13 ножка) появляется сигнал, соответствующий последовательному входу, на выходе 1 (12 ножка) появляется сигнал, сдвинутый с выхода О, на выходе 2 сигнал, сдвинутый с выхода 1, а на выходе 3 с выхода 2. Таким образом данные, загружаемые с последовательного входа, сдвигаются относительно выходов регистра. Этой информации достаточно, чтобы построить все временные диаграммы на рисунке 5.

Обратите внимание, что сигнал доступа к памяти ACCESS при чтении формируется в такте Т2, а при записи в такте Т3 и практически совпадает по времени с сигналом WR.

Рассмотрим теперь сигнал 1READY, который через разъем XS3 поступает на вход RA (готовность) процессора. Он формируется на выходе микросхемы D24 (ИЛИ). На вход D24 подаются два сигнала CSDEV и WAIT. CSDEV - это сигнал обращения к УВВ (при обращении он имеет низкий уровень). Когда обращения к УВВ нет, то на выходе 1READY сигнал высокого уровня и процессор, анализируя этот сигнал в такте Т2, не переходит в режим ожидания. При обращении к УВВ низкий уровень сигнала CSOEV появляется на выходе D24 и процессор переходит в режим ожидания, устанавливая на выходе WI сигнал WAIT высокого уровня. Сигнал WAITЕ формирует сигнал 1READY высокого уровня, поэтому, пропустив после такта Т2 один такт - такт ожидания, процессор продолжает работу с выполнения такта Т3. Таким образом при обращении к УВВ процессор автоматически вставляет один такт ожидания между тактами Т2 и Т3. Эта хитрость применена для надежного обращения к УВВ. На рисунке 5 такт ожидания не показан. Заметим только, что в случае появления такта ожидания сигнал DBIN автоматически расширяется до 800 нсек.

Еще одно замечание по поводу обращения к УВВ. Связь с УВВ организована через двунаправленный буфер D21 (лист 3).

При отсутствии обращения к УВВ высокий уровень на входе EZ микросхемы D21 удерживает ее входы/выходы в состоянии высокого импеданса. В машинном цикле ввода информации (МЗ) сигнал DBIN через инвертор D26 (3.23) поступает на вход управлением передачи и переводит D21 в режим ввода информации в процессор. Если сигнал DBIN отсутствует, то при выборе микросхемы она переключается в режим вывода информации.

Нам осталось разобраться с обработкой прерываний, т.е. с сигналом INTA. При формировании контроллером прерываний D8(12.4) сигнала INT процессор заканчивает выполнение команды и начинает выполнять трехбайтную команду "CALL", которую он принимает из контроллера прерываний, при условии, что прерывания разрешены командой "EI".

Как это делается? Попробуем разобраться без наглядной иллюстрации. В первом цикле процессор выполняет цикл М10, который отличается от М1 наличием единицы в разряде D0 шины данных. Кроме этого вводится такт ожидания, потому при обращении к контроллеру прерываний вырабатывается сигнал CSDEV. Положительным фронтом сигнала на тактовом входе С триггера D15 (3.25) единица в D0 устанавливает выход триггера D15 (5 ножка) в единицу. На рисунке 5 сигнал на тактовом входе D15 показан.

Изменить состояние D15 теперь можно двумя способами. Первый: с приходом следующего положительного перепада на тактовый вход сигнал на линии D0 должен низкий уровень. Но такая ситуация может наступить после выполнения полностью команды "CALL". Второй способ: подать на вход R (RESET) сигнал низкого уровня. Из рисунка 5 видно, что это возможно при выполнении цикла записи (М3 или М5).

Итак, триггер D15 находится в состоянии единица. Сигнал высокого уровня с выхода триггера поступает на дешифратор адресов, запрещая его работу, и на микросхему D18 (3.27) - И. Поэтому сигнал INTA будет инвертированным сигналом DBIN. Сигнал INTA выбирает контроллер прерываний и в цикле М10 в процессор вводится код команды CALL из контроллера.

Команда "CALL" выполняется за пять машинных циклов, из которых первые три связаны с вводом команды в процессор, а два последних с записью в стек текущего адреса прерванной команды. Первый цикл (М10), мы уже разобрали. Затем выполняется два раза подряд цикл М8, отличающийся от М2 только единицей в разряде D0 шины данных. В первом цикле М8 читается младший байт адреса, а во втором цикле М8 - старший байт адреса перехода на программу обработки прерываний. В конце цикла М8 будет вырабатываться сигнал INTA, который и обеспечивает чтение из контроллера.

В четвертом и пятом циклах будет выполняться цикл М5, обеспечивающий запись в стек старшего и младшего байта адреса прерванной программы. Отрицательный сигнал с выхода регистра D27 (3.26) сбросит триггер D15 в нуль. Поэтому в четвертом и пятом циклах команды CALL сигнал INTA формироваться не будет.

Кажется нам удалось обойтись без временных диаграмм. Чтобы совсем закончить с листом 3, добавим несколько слов о кнопке SA1, с помощью которой формируется сигнал RESET. Главным элементом в цепи формирования сигнала RESET является микросхема D19 (3.9). Это триггер Шмидта, который обладает гистерезисными свойствами. Поэтому через 0,5 сек после включения питания, или отпускания кнопки RESET, сигнал скачком принимает значение низкого уровня и разрешает процессору работать.

Теперь самое время перейти к схеме дешифрации адресов и задания конфигурации памяти. Смотрите на листе 5 микросхемы D22(5.4), D24(5.5) D23(5.11), D31(5.8), D43(5.12), D24(5.16). Процессор имеет диапазон адресов 0000H - FFFFH, т.е. 64 К, а "Корвет" может иметь: ПЗУ - 96 К, ОЗУ - 64 К, АЦЗУ - 1К, ГЗУ - 192 К и УВВ - 2К, т.е. 355 К. По желанию программиста к процессору можно подключить некоторую комбинацию частей разных видов памяти.

Рассмотрим механизм переключения адресов. Но сначала разберемся, как работают микросхемы D23 и D43. Это дешифраторы. Начнем с дешифратора К555ИД4. Он состоит из двух дешифраторов. Первый дешифратор имеет выходы 0.0, 1.0, 2.0, 3.0, второй - 0.1, 1.1, 2.1, 3.1. Двухразрядный адресный вход 2.1 подключен к обоим дешифраторам. Каждый дешифратор имеет свои управляющие входы, первый - &ЕО, второй - &Е1.

Если работа дешифратора разрешена, то двоичный код на входе (вход 1 младший разряд) преобразуется в сигнал на линии с номером, равным входному коду, только в инверсном виде. Когда дешифратор отключен, на выходных линиях присутствуют сигналы высокого уровня. Управление дешифратором производится следующим образом:

Для первого дешифратора: дешифратор выключен, если сигнал на ножке 1 высокого уровня, а на ножке 2 низкого. Эта ситуация отражена на схеме:

(1) and (not(2))= "1"

Для второго дешифратора, пользуясь схемой мы можем написать следующее условие разрешения работы:

not (14) and (not(15))= "1"

Работу D43 можно охарактеризовать и другими словами. Например, пусть WERG - сигнал разрешения первого дешифратора. Тогда сигнал 1WR демультиплексируется в соответствии с адресами на адресных входах. Очевидно, что можно назвать сигнал 1WR разрешением, тогда демультиплексироваться будет сигнал WERG. Что же происходит в нашем случае? Ответ зависит от контекста схемы, т. е. от того, что она делает. Как раз к этому мы собираемся приступить. Но закончим с дешифраторами.

Как работает К555ИД7? Вы уже сами можете ответить на этот вопрос, глядя на условное обозначение дешифратора на схеме. Выходные линии помечены кружком, значит выходы инверсные. Адресный вход имеет три линии, а выходных восемь. Следовательно трехразрядный код преобразуется в напряжение низкого уровня на выходной линии, соответствующей коду. Управление дешифратором производится по трем входам и по формуле

(6) and (not(4)) and (not(5)) = "1"

Кстати, теперь можно понять, как сигнал высокого уровня с триггера D15 (3.25) отключает дешифраторы.

Итак, как работает механизм переключения памяти? Основным элементом является ПЛМ D31, в которой "зашиты" различные варианты карты памяти. Карту прошивки ПЛМ D31 мы приводим в таблице 3.

Использование регистра D22 на входе ПЛМ обеспечивает переконфигурацию памяти в процессе выполнения программы. Регистр D22 и есть "знаменитый" системный регистр, с которым работают программисты. Запись данных в системный регистр осуществляется с шины данных положительным сигналом выборки регистра SELREG. Сигнал RESET сбрасывает регистр в нуль.

Маленькое замечание: сигнал SELREG попадает на регистр через элемент "ИЛИ" - D24 (5.5), на вход которого заведен также сигнал A7. Поэтому выбор регистра осуществляется, когда на адресной линии A7 низкий уровень напряжения. Обратите внимание, что на входы ПЛМ поступают только старшие восемь разрядов с шины адреса, поэтому сигнал SELREG никак не связан с младшими адресными линиями. Теперь мы можем объяснить, почему младший байт адреса системного регистра 7FH. Просто для адресации регистра на линии А7 должен быть нуль. Поскольку к другим адресным линиям могут быть подключены другие устройства, поэтому для устранения путаницы на остальных линиях нужно установить сигналы высокого уровня. Это как раз и будет код 7FH.

Мы уже обладаем достаточной информацией, чтобы по карте прошивки ПЛМ - D31 составить варианты карты адресов и определить соответствующее каждому варианту число в системном регистре. Работа эта нудная и большой необходимости в ее проделывании нет. Ответ, который мы получим, если сделаем такую работу, должен совпасть с результатами предыдущей главы.

Выходы из ПЛМ можно почти все проследить на листе 5. Исключение составляет сигнал CSKB - сигнал обращения к клавиатуре.

При обращении процессора к УВВ на входе 4 ПЛМ появляется сигнал CSDEV, который разрешает работу дешифратора D23 (5.11). В зависимости от состояния разрядов адресной шины А3, А4 и А5 на выходах дешифратора будут формироваться сигналы выборки адресуемого УВВ. Ниже мы приводим перечень устройств ввода-вывода:

CSCT   - таймер (00Н) 
SCIOP3 - параллельный интерфейс N 3 (08Н) 
SCIOS1 - последовательный интерфейс N 1 (10Н) 
CSCOM  - контроллер НГМД (18Н) 
CSIOS2 - последовательный интерфейс N 2 (20Н) 
CSINA  - контроллер прерываний (28Н) 
CSIOP2 - параллельный интерфейс N 2 (30Н) 
CSIOP1 - параллельный интерфейс N 1 (38Н) 

В скобках приведены младшие байты адреса. Вы сами легко можете проверить правильность адресов. Например: сигнал CSCOM выходит с линии 3, т. е. на входе дешифратора был код 3. Чтобы получить настоящий адрес нужно код сдвинуть на три разряда влево, что эквивалентно умножению на восемь, т.е. получаем 24D или 18Н.

Заканчивая с работой дешифратора, перечислим сигналы, формируемые дешифратором D43(5.12):

0.0 WE   - сигнал записи в ОЗУ 
1.0 WEV - сигнал записи в АЦЗУ 
2.0 WEG - сигнал записи в ГЗУ 
3.0     - не используется 
0.1     - сигнал чтения ОЗУ (активный уровень низкий) 
1.1 RV  - сигнал чтения АЦЗУ 
2.1 RG  - сигнал чтения ГЗУ 
3.1     - сигнал  "складывается"  с сигналом  CSDEV  на 
          элементе  "ИЛИ"  -  D24,  на  выходе которого 
          формируется сигнал RDEV - сигнал чтения УВВ. 

Какова же длительность этих сигналов? Из временных диаграмм работы процессора (рис.5) мы помним, что адрес держится на шине несколько тактов, а управляющие сигналы 1DBIN и WERG имеют длительность порядка такта. Поэтому можно говорить, что сигналы 1DBIN и WERG демультиплексируются в соответствии с кодом на адресных входах дешифраторов D23 и D43. Но это уж кому как нравится. Можно демультиплексировать, а можно и дешифрировать. Главное здесь в том, что длительность сигналов записи с выходов дешифратора D43 равна длительности сигнала WERG, а длительность сигналов чтения равна длительности сигнала 1DBIN.

На этом мы закончим с дешифратором и перейдем к ОЗУ.

ОЗУ

В "Корвете" ОЗУ занимает 64К и выполнено на восьми микросхемах КР565РУ5Г динамического типа D76 - D83(4.1 - 4.8). Схема ОЗУ приведена на листе 4.

Как обычно сделаем несколько предварительных замечаний. Микросхема КР565РУ5Г имеет объем памяти 64К бит. Поэтому, чтобы организовать ОЗУ на 64К байт, используется восемь микросхем.

Такие микросхемы имеют весьма малый размер, но за это приходится платить тем, что каждые 30 миллисекунд нужно восстанавливать или, как обычно принято, регенерировать содержимое микросхемы. Как нужно работать с микросхемой? Вы уже заметили, что адресных входов только восемь. Нам же нужна адресация в пространстве адресов 64 К. Микросхема организована в виде матрицы однобитовых ячеек памяти размером 256х256. Матрица имеет восемь входов для выбора строк и восемь входов для выбора столбцов. Чтобы выбрать нужную ячейку сигнала, на адресный вход подается восемь младших разрядов адреса для выборки нужной строки и код адреса запоминается по спаду сигнала RAS. Затем на эти же входы подаются восемь старших разрядов адреса для выборки столбца и запоминаются по спаду сигнала CAS. Микросхема ОЗУ работает в одном из трех режимов: запись, чтение и регенерация. Чтобы дальше обсуждать работу ОЗУ, нам нужно теперь разобраться с механизмом адресации строк и столбцов. Этим занимаются четыре мультиплексора D52 - D55 (смотри лист 5).

Микросхема К555КП12 представляет из себя два мультиплексора. Поэтому мы имеем восемь выходов с четырех мультиплексоров, как раз столько, сколько нужно для адресации строки или столбца. Управляются мультиплексоры сигналами F2T и ACCESS, которые задают двухразрядный код (ACCESS- младший бит). Микросхемы все время выбраны, т. к. входы разрешения EZ0 и EZ1 заземлены. Поэтому в любой момент времени к выходу подключена входная линия с номером, равным коду на входе управления.

Теперь вы можете сами сообразить какие сигналы приходят на адресные входы ОЗУ. На рис. 6 показаны временные диаграммы сигналов F2T и ACCESS, МА0, RAS и CAS, и показаны моменты времени, когда происходит выборка строки и столбца. Что происходит на остальных выходах мультиплексоров (сигналы МА1 - МА7), мы приводим в таблице 4.

Теперь, глядя на таблицу 4 и рис. 7, попытаемся понять как работает ОЗУ. Если мы не обращаемся к памяти, то сигнал ACCESS отсутствует и в каждом такте на адресных входах ОЗУ присутствуют синхросигналы С1 - С13. В соответствии со значениями этих сигналов производится выборка ячейки памяти для регенерации. Как происходит регенерация? Она производится автоматически после выбора ячейки памяти.

Когда мы рассматривали синхронизатор, то подробно анализировали временные диаграммы синхросигналов. Теперь нетрудно сообразить, что за период сигнала С13, равный 20 мсек., последовательно будут выбраны все ячейки ОЗУ по семи адресным линиям. Почему семь? Так уж устроена микросхема. Нетрудно сообразить, сканирование по восьми адресным линиям потребует слишком много времени и данные за это время не сохранятся.

Таким образом, когда к ОЗУ не обращаются, все время происходит регенерация. Если обращение к памяти происходит, то появляется сигнал ACCESS и тогда на ОЗУ подается адрес с шины адреса. При записи данные через вход D записываются сигналом WE. При чтении данные с выхода ОЗУ по сигналу WERG проходят на выход регистра D74(5.14) и защелкиваются в нем по спаду сигнала WERG. Процессор в это время по сигналу DBIN принимает данные, установленные регистром D74. После прекращения сигнала DBIN регистр D74 переходит в высокоомное состояние.

Остается только добавить, что адресный мультиплексор обслуживает также и ГЗУ.

Разобравшись с работой ОЗУ у нас не должно возникнуть проблем с работой ПЗУ.

ПЗУ

ПЗУ содержит три микросхемы : D33(5.7) и D34(5.2), емкостью по 8 К. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

А/Ц ДИСПЛЕЙ

В предыдущей главе мы уже рассказывали об устройстве а/ц дисплея. Под этим термином понимается весь комплекс аппаратуры, обеспечивающий вывод изображения на экран телевизора, включая и сам телевизор - монитор. Мы обсудим только схему, занимающуюся формированием видеосигнала. Такое устройство обычно называется контроллером отображения алфавитно-цифровой информации. То, что происходит с видеосигналом в телевизоре (мы будем также употреблять термины дисплей и монитор), мы не рассматриваем. Для нас вполне достаточно знать, что в дисплее осуществляется растровый процесс получения изображения. В качестве дисплея для "Корвета" годится любой бытовой телевизор или специальный монитор, работающий в телевизионном стандарте.

Итак, контроллер а/ц дисплея должен вырабатывать видеосигнал, обеспечивающий на экране изображение размером 512х256 точек. Каждый символ изображается с помощью матрицы 8х16 точек. Всего на экране размещается 64х16 знакомест.

Мы уже знаем, что контроллер имеет ОЗУ, емкостью 1К х 9 бит, которое еще называется АЦЗУ - Алфавитно-Цифровое Запоминающее Устройство. Схема АЦЗУ приведена на листе 7 и состоит из девяти микросхем КР132РУ4. Каждая КР132РУ4 - это ОЗУ статического типа (не заботимся о регенерации данных!) с организацией 1 К х 1 бит. Микросхема имеет десять адресных входов, на которые подаются сигналы VA0 - VA9, один вход данных (D), один выход (Z) и два управляющих входа (EZ и ERD/ERW). При EZ = "1" микросхема находится в режиме хранения. В этом режиме состояния адресных входов и входа данных безразличны, выход находится в высокоимпедансном состоянии (Z- состоянии). При EZ = "0" (сигнал выборки микросхемы) в зависимости от сигнала ERD/EWR микросхема находится в режиме записи или чтения. При ERD/EWR = "0" режим записи. На адресных входах установлен адрес записываемой ячейки. Значение на входе данных записывается в ячейку. Выход в Z-состоянии. При ERD/EWR = "1" режим чтения. На адресных входах адрес считываемой ячейки. Состояние входа данных безразлично. На выходе содержимое адресуемой ячейки.

Этой информации вполне достаточно, чтобы самому построить временные диаграммы работы АЦЗУ. Но сначала разберемся с адресными сигналами, которые поступают с выхода десяти мультиплексоров, реализованных с помощью трех микросхем К555КП11 (D49-D51)(см. лист 6).

У нас уже имеется некоторый опыт в понимании работы мультиплексоров. Нетрудно сообразить, что мультиплексируются десять младших адресных линий (А0-А9) и сигналы С0-С5, С10-С13. Например, на выходы VA0 приходит сигнал А0 или С0 в зависимости от уровня сигнала SE1/SE0. Так же легко сообразить, что микросхемы выбраны все время, поскольку входы EZ заземлены. И, наконец, тоже очевидно, что при SE1/SE0 = "0" к выходу подключается линия 0, а при SE1/SE0 = "1", линия 1.

Сигнал WERG, поступающий одновременно на входы SE1/SE0 всех микросхем, мы уже знаем. Сигнал WEV (сигнал записи в АЦЗУ) тоже нам уже знаком. А вот про сигнал CSV мы только знаем, что он вырабатывается в ПЛМ D40 (2.9). Но не зря же столько усилий было потрачено на устройство ПЛМ. Возвращаемся назад и выписываем его логическую формулу:

CSV = 10M*5M*2.5M*1.25M +  
      + 10M*5M*2.5M*ACCESS 

Теперь читателю предлагается самому построить временные диаграммы сигналов CSV, WEV, VA0, VD0, RV, D0 и убедиться, что рисунок 7 соответствует действительности. Не поленитесь еще раз посмотреть на рисунок 6 (цикл чтения).

Разумеется, у вас возник вопрос о периодической компоненте сигнала SCV, не связанной с появлением сигнала ACCESS, т.е. с режимом записи или чтения, и о сигналах С0-С5, С10-С13. Это связано с режимом отображения содержимого АЦЗУ на экране. Прежде, чем перейти к схеме отображения информации, разберемся с битом атрибута.

Из предыдущей главы мы уже знаем, что битом атрибута управляют разряды 4 и 5 регистра управления (относительный адрес регистра управления 3АН), а состояние бита атрибута фиксируется в разряде 3 регистра с относительным адресом 38Н. В схеме состоянием бита атрибута управляют сигналы INVON (установка бита) и INVOFF (сброс бита). Убедитесь, что они поступают с порта программируемого регистра D17 (13.35) и что в предыдущей главе информация дана правильно (сброс - бит 4, установка - бит 5).

Теперь проверим по схеме, как действует нехитрый комментарий по поводу этих битов в предыдущей главе. Сигналы INVON и INVOFF поступают на S и R входы триггера инверсии D75 (6.6).

С таким триггером мы уже имели дело. При подаче сигнала низкого уровня на вход S, триггер устанавливается в единицу, т. е. INVON = "0" устанавливает бит атрибута равным единице. Сигнал INVOFF = "0" приходит на R вход триггера и сбрасывает его в ноль, т. е. бит атрибута в этом случае равен нулю. Ситуация, когда на входах R и S сигналы низкого уровня, запрещена для триггера ТМ2. Если на R и S входах сигналы высокого уровня, то по положительному фронту сигнала на С входе данные с D входа поступают на выход. На C вход с мультиплексора D49 приходит сигнал RV (сигнал чтения АЦЗУ) и защелкивает считанный из АЦЗУ бит атрибута в триггере инверсии.

Мы получили те же самые правила управления битом атрибута, что и в предыдущей главе. Более того, можно добавить, что запись в АЦЗУ при установленных в единицу сигналах INVON и INVOFF может привести к непредсказуемому результату, т. к. триггер инверсии может оказаться в любом состоянии. Чтобы этого избежать, сигнал CDI с выхода триггера, кроме АЦЗУ поступает в порт А (бит 3) программируемого регистра D17 (13.35). Теперь у программиста есть возможность в сомнительных случаях считать состояние триггера инверсии.

Наконец мы можем поговорить о схеме отображения информации, которая размещена на листе 6 и состоит из регистра D60 (6.4), знакогенератора D59 (6.8), сдвигового регистра D73 (6.12), элемента "исключающее или" D71 (6.10) и смесителя информационного сигнала BWV с синхросигналом HVSZNC, выполненного на транзисторе VT3 (6.19).

Выходной видеосигнал VIDCOMP с транзистора поступает на разъем XS7 (16.3), куда должен подключаться черно-белый монитор, называемый иногда ВКУ (Видео-Контрольное Устройство).

Как происходит формирование видеосигнала? Для этой цели служит сдвиговый регистр D73 (6.12). Работает он следующим образом.

При высоком уровне сигнала на входе E-->/EVR данные из регистра выдвигаются последовательно на выход синхронно с передним фронтом тактирующего сигнала на входе С. При низком уровне сигнала E-->/EVR восьмиразрядный код из знакогенератора по положительному фронту сигнала на входе С загружается в регистр. Вход DEC регистра заземлен, поэтому в режиме сдвига первым будет выдвигаться старший бит 7 загруженного кода, остальные биты сдвигаются, а в освободившийся младший разряд загружаются единицы с входа 0-->.

Что же происходит на самом деле? Для этого нам нужны временные диаграммы управляющих работой регистра сигналов VCLK и SHIFT. Логические формулы этих сигналов мы уже знаем:

VCLK  = 10M*MODSEL + 10M*5M*MODSEL 
SHIFT = not((HBL*5M*2.5M*not(1.25)*MODSEL*VBL) + 
        + (HBL*5M*2.5M*1.25M*MODSEL*VBL*C0)) 

Сигналы, из которых комбинируются VCLK и SHIFT мы знаем, кроме сигнала MODSEL. Это сигнал режима отображения. MODSEL = "0" - режим 64 символа в строке, MODSEL = "1" - режим 32 символа в строке. Этим сигналом программист может управлять с помощью уже известного нам регистра управления. Давайте сначала разберемся, что происходит в режиме 64 символа в строке, поэтому будем считать, что MODSEL = "0", тогда:

VCLK = 10M 
SHIFT = not(HBL*5M*2.5M*1.25*VBL) 

Сделаем еще упрощение. Импульс HBL (строчный гасящий импульс) сформирован для того, чтобы его низкий уровень гасил луч на экране при переходе на новую строку. Аналогично действует сигнал VBL (кадровый гасящий импульс), только при переходе к новому кадру. Низкие уровни сигналов HBL и VBL на обратном ходе луча будут устанавливать сигнал SHIFT в единицу, тем самым блокируя загрузку кода в регистр D73. Поэтому мы рассмотрим временные диаграммы работы сдвигового регистра для сигнала

SHIFT = not(5M*2.5*1.25M) 

После сделанных упрощений вы сами легко построите временные диаграммы сигналов VCLK и SHIFT. Для ленивых читателей диаграммы приведены на рисунке 8. С помощью комментария к работе сдвигового регистра Вы сможете понять, что происходит на его выходе. С выхода регистра сигнал поступает на микросхему D71 (6.10). Это элемент "исключающее ИЛИ". На выходе этого элемента высокий уровень возникает тогда и только тогда, когда на выходах сигналы имеют разные уровни. Поэтому бит атрибута с выхода триггера D75 (6.7) по положительному фронту сигнала SHIFT записывается в триггер D72 (6.9), выход которого подключен к одному из выходов элемента D71. Если бит атрибута установлен в ноль, то сигнал с выхода регистра D73 без искажения переходит на выход, если бит атрибута установлен в единицу, то сигнал BWVC выхода D71 будет инвертирован относительно входного сигнала и на экране дисплея будет инверсное изображение символа.

Далее сигнал BWV поступает на эмиттерный повторитель, реализованный на транзисторе VT3 (6.19). На этом транзисторе сигнал BWV смешивается с синхросигналом HVSYNC и получается видеосигнал VIDCOMP.

Нам осталось в работе контроллера АЦЗУ понять, как происходит выборка кода из знакогенератора для загрузки в сдвиговый регистр и как нужно программировать знакогенератор, чтобы на экране отображались красивые цифры и буквы.

В общих чертах задача ясна. Нужно считать код символа из АЦЗУ и подать его на адресные входы знакогенератора. Для представления кода символа нужно восемь разрядов, а ПЗУ знакогенератора имеет тринадцать адресных входов. Куда же подать код символа? Давайте вспомним, что на изображение символа необходимо 16 строк, которые адресуются четырьмя линиями. После некоторых размышлений нетрудно сообразить, что 4 младших разряда адреса должны использоваться для выбора номера строки символа. Следующие 8 разрядов должны использоваться для задания кода символа. Остается еще один старший разряд адреса. Но, если Вы помните, в знакогенераторе находятся два набора символов. Они выбираются старшим разрядом адреса, на который поступает сигнал FONT с регистра управления D17 (13.35) (бит 2).

Нам осталось понять какими сигналами производить выборку АЦЗУ. Обратимся к схеме на листе 6. Мы уже знаем, что в отсутствии сигнала записи WEV в АЦЗУ, т.е. когда WEV имеет высокий уровень, АЦЗУ находится в режиме чтения, а читаемый адрес определяется сигналами С0-С5 и С10-С13. Сигналы С0-С5 выбирают шесть младших разрядов адреса АЦЗУ.

Давайте займемся арифметикой. Период сигнала С0 = 1.6 мксек, т.е. 0.8 мксек младший разряд адреса АЦЗУ равен нулю, следующие 0.8 мксек - единица, еще через 0.8 мксек опять нуль и т.д.. Следовательно, младший адрес А0 сканируется с периодом 0.8 мксек, А1 с периодом 1.6 мксек и т.д., т.е. сканирование памяти идет с той же частотой, что и загрузка бита в сдвиговый регистр.Остается добавить, что шесть младших разрядов адреса АЦЗУ как раз определяют номер знакоместа в строке. (от 0 до 63).

Четыре сигнала С6 - С9 для маркирования АЦЗУ не используются Они определяют текущий номер строки в символе и заведены на младшие адресные входы знакогенератора. Сигналы С10 - С13 определяют номер знакоместа по вертикали (от 0 до 15) и поступают на старшие четыре адресных входа АЦЗУ.

При сканировании АЦЗУ данные, т.е. код символа, защелкиваются в регистре D60 (6.4) положительным фронтом сигнала LOADPOM. На рис.9 без комментариев приводится необходимые временные диаграммы.

Давайте закрепим наши рассуждения и для примера запрограммируем латинскую букву "А" в знакогенератор. ASCII код буквы равен 41Н. Нам нужно придумать где будут "гореть" точки, изображающие букву, определить содержание шестнадцати байт, отвечающих за изображение буквы и определить адрес каждого байта в ПЗУ знакогенератора. Для этого приготовим таблицу из восьми столбцов и шестнадцати строк. Строки нумеруем от нуля сверху вниз, а столбцы нумеруем от нуля справа налево. Тогда номер столбца будет соответствовать номеру бита в байте, а номер строки относительному адресу строки.

Заготовив такую таблицу, нарисуем в ней букву, т.е. поставим точки в клетках таблицы, чтобы получилась буква "А". Теперь против каждой строки выпишем содержимое байта. Каждая строка символа соответствует байту, хранящемуся в ПЗУ. Чтобы определить адрес каждого байта, смещаем код буквы в Н-формате на одну позицию влево и в младший разряд добавляем номер строки.

Результат такой процедуры мы приводим в таблице 5. Если Вы хотите сделать в своем компьютере другие начертания букв, то Вы должны составить 512 таких картинок по 256 на набор и полученную информацию "зашить" в ПЗУ.

Нам осталось разобраться, как осуществляется процесс отображения расширенных букв (32 символа в строке). Мы уже знаем, что переключение производится сигналом MODSEL. При высоком уровне сигнала MODSEL, тактовая частота сигналов VCLK и SHIFT уменьшается в два раза, увеличивая время выдвижения байта данных из сдвигового регистра тоже в два раза. В этом случае половина ячеек АЦЗУ не отображается.

Теперь можно перейти к изучению контроллера отображения графической информации.

ГРАФИЧЕСКИЙ ДИСПЛЕЙ

Схема контроллера имеет ряд интересных решений, что делает графику "Корвета" достаточно быстрой и красочной.

Схема приведена на листах 8, 9 и 10. Основным узлом контроллера, как Вы уже видите, является ОЗУ, емкостью 192 К, которое мы будем называть графическим запоминающим устройством (ГЗУ).

С ОЗУ мы уже разбирались, поэтому в ГЗУ мы проследим только за управляющими сигналами. Регенерация данных в ГЗУ осуществляется точно так же, как в ОЗУ. Блок формирования изображения в принципе устроен так же, как в контроллере АЦЗУ за исключением специфики цветного изображения и еще ряда тонких моментов.

Давайте сначала разберемся с памятью. Как программисты, мы знаем, что к адресному пространству "Корвета" подключается всегда 16К ГЗУ. Этого как раз достаточно, чтобы отобразить на экране 512 * 256 точек. Так же нам известно, что вся емкость ГЗУ разбита на плоскости по 64К каждая. В свою очередь каждая плоскость разбита на четыре страницы по 16К. Следовательно к адресному пространству подключается всегда одна из четырех страниц, при этом отображаться на экране может содержание другой страницы.

Попытаемся разобраться, как это происходит. Обратимся к листу 11. На нем представлена плоскость N2 ГЗУ, емкостью 64К. Нужно сообразить, что регистр D128 (11.7) защелкивает данные из ГЗУ, которые затем загружаются в сдвиговый регистр D129 (11.10) для формирования изображения.

Плоскости N0 и N1 ГЗУ устроены аналогично. Как происходит обращение к ГЗУ? Сигнал выборки строк нам уже знаком. Чем же отличается сигнал выборки столбцов CAS2 (на других плоскостях CAS0 и CAS1) от известного нам сигнала CAS. По схеме определяем, что эти сигналы идут с мультиплексора D118 (8.9)(лист 8). Мультиплексируются сигналы WR0, WR1, WR2 и GND (земля), которые идут с регистра D100 (8.1). Это как раз и есть знаменитый регистр цвета, содержание которого определяет режим работы графики.

Запись в регистр производится положительным фронтом сигнала на входе С. Убедитесь, что сигнал SELREG синхронизован с сигналом процессора 1WR (запись) и попадает на вход С регистра, если А6 = "0". Условие А6 = "0" как раз и определяет относительный адрес регистра цвета BFH (все восемь младших адресных линий, кроме шестой, должны иметь высокий уровень, а шестая - низкий). Вернемся опять к мультиплексору D118. Сигнал мультиплексирования есть результат операции "ИЛИ" над сигналом М из регистра цвета и сигналом мультиплексора D42 (10.11). Обратите внимание, что с этого же мультиплексора D42 выходит сигнал GMA7 и используется для адресации седьмой строки и седьмого столбца в ОЗУ.

Теперь мы готовы нарисовать временные диаграммы сигналов CAS0, CAS1 и CAS2, что и сделано на рис. 10.

Теперь прокомментируем рисунок. Когда бит 7 в регистре цвета установлен в единицу (цветовой режим), мультиплексор D118 выдает все три сигнала CAS одновременно, т.е. адресация строк и столбцов идет одновременно идет одновременно во всех плоскостях. Для полноты картины разберемся с сигналом GMA7, который формируется на другом выходе мультиплексора D42 (10.11).

С нашим, уже богатым опытом, не составляет труда сообразить, что в отсутствие сигнала ACCESS, т.е. когда он имеет высокий уровень, мультиплексироваться будут сигналы VRP1 и VRP0, причем VRP1 отвечает за выбор строки, а VRP0 за выбор столбца. При наличии сигнала ACCESS, т.е. при записи или чтении в ГЗУ сигнал VWP1 будет выбирать строку, а VWP0 - столбец.

Сигналы VWP и VRP можно программно устанавливать регистром управления изображения (порт С, D17 (13.35)). Теперь мы знаем, за что отвечает каждый бит этого регистра. Обратите внимание, что биты 0,1 задают номер страницы памяти, которая отображается на экране. Для записи или чтения ГЗУ нужно устанавливать номер страницы с помощью битов 6 и 7. В ситуации, когда бит 7 в регистре цвета равен 0 (послойный режим), за выбор памяти отвечают биты 1, 2, 3 в регистре цвета (сигналы GWD1, GWD2 и GWD3, поступающие с шины данных через буфер D86 (лист 3)).

Обратите внимание, как происходит выбор микросхемы ГЗУ в режиме записи (вход EWR). На них поступает логическая комбинация сигналов WEG и одного из разрядов шины данных, т.е. переводятся в режим записи только те микросхемы, для которых в байте, приготовленном для записи в ГЗУ, соответствующие биты установлены в единицу. Теперь нам ясно, что кроется за фразами, типа: "Байт, записываемый в ГЗУ представляет из себя маску".

С адресацией ГЗУ мы разобрались. Что же туда записывается? Это уже совсем просто. Достаточно посмотреть на мультиплексор D119(8.10) и Вы тут же сами ответите на этот вопрос. В цветовом режиме, когда сигнал М высокого уровня, в плоскость 0 записывается бит 1 регистра цвета (сигнал WR0), в плоскость 1 - бит 2 и в плоскость 2 - бит 3. В этом случае биты 1,2 и 3 можно рассматривать, как логический номер цвета (от 0 до 7), что и делалось в предыдущей главе. В послойном режиме во все плоскости на вход D поступает значение бита 0 в регистре цвета.

Как происходит чтение из ГЗУ? С адресацией памяти мы уже разобрались с помощью рисунка 10. При чтении выбираются все плоскости. Из схемы на листе 8 мы видим, что данные из всех плоскостей поступают на входы двух ПЛМ - D88 (8.19) и D101 (8.20) вместе с сигналами R0, R1, R2 и М регистра цвета. С выхода ПЛМ данные стандартно (смотри работу ОЗУ) защелкиваются в регистре D87 (8.36).

Что же происходит в ПЛМ? Из предыдущей главы мы познакомились с процессом чтения с точки зрения программиста. Сейчас мы с этим вопросом разберемся капитально. Для этого в таблице 6 приводится карта прошивки. Она одинаковая для обеих микросхем. Вы уже обнаружили, что на D88 заводятся младшие адреса, а на D101 - старшие. Процедура обработки сигналов одинаковая в каждой микросхеме и, более того, одинакова для каждого разряда данных из ГЗУ.

Из таблицы мы можем составить логическую формулу сигнала, например для разряда 0 (выход 7).

GRD0 = M*R0*GD00 + M*R0*GD00 + M*R1*GD10 + M*R1*GD10 +  
       + M*R2*GD20 + M*R2*GD20 +  
       + M*R0*GD00 + M*R1*CD10 + M*R2*GD20. 

Теперь займемся анализом. Из структуры формулы видно, что имеются два случая. М = "1" (цветовой режим) а М = "0" (послойный). Давайте начнем с М = "0". В этом случае в формуле остается мало членов:

GRD0 = R0*GD00 + R1*GD10 + R2*CD20. 

Здесь все ясно. Биты 4, 5 и 6 в регистре цвета позволяют выбирать интересующую нас плоскость. Для этого нужный бит нужно установить в единицу. Рассмотрим теперь цветовой режим (М = "1"). Т.к. все плоскости в этом режиме эквивалентны, то будем анализировать одну плоскость, например 0, тогда:

GRD0 = R0*GD00 + R0*GD00. 

Чтобы проще и быстрей понять смысл действий над содержимым плоскости 0, составим таблицу 7.

Теперь вспомним, что записывается в ГЗУ в цветовом режиме. Биты 1, 2, 3 определяли логический номер цвета. Пусть мы записали номер цвета 6 (110В), т. е. в плоскость 0 записали ноль, в плоскость 1 и 2 по единице. Теперь при чтении мы тоже установим в байтах 4, 5 и 6 то же число 110В. Тогда плоскость 0 даст выход 0 в соответствии с первой строчкой таблицы. Плоскости 1 и 2 тоже дадут нулевой вклад, но уже в соответствии с последней строчкой таблицы.

Таким образом в ПЛМ происходит аппаратное сравнение считанного логического номера цвета с заданным в битах 4, 5 и 6 регистра цвета. В случае совпадения в соответствующем бите считанного байта будет 0, что означает, что цвет точки совпадает с заданным в регистре цвета.

Нам осталось разобраться, как формируется изображение на дисплее. Данные с ГЗУ при сканировании выдвигаются из сканируемых регистров с частотой сигнала GCEK, равной 10 МГц. Механизм загрузки сдвиговых регистров точно такой же, как в АЦЗУ, поэтому на нем мы не останавливаемся. А вот с выходов сдвиговых регистров сигналы поступают в регистр D115 (8.8), который вместе с микросхемой D114 (8.11) и D113 (8.21) образует просмотровую таблицу. Назначение этого устройства мы уже знаем. Оно позволяет логическому номеру цвета присваивать физический цвет. Давайте посмотрим, как это происходит.

Сначала разберемся в микросхемах. Начнем с регистра. Регистр КР531ИР20 - четырехразрядный регистр. Его входы организованы, как два порта данных, по четыре проводника в каждом. Коммутация осуществляется сигналом на входе SE1/SE0. При высоком уровне этого сигнала подключены линии SERVG0, SERVG1, SERG2 и 1BWV, при низком четыре младших разряда шины данных.

На выходе регистра данные появляются при отрицательном перепаде на входе С.

Теперь, как Вы уже догадались, память. Микросхема К155РУ2 действительно память статического типа с организацией 16х4 бит.

Для понимания работы микросхемы приведем таблицу 8.

И, наконец, триггер D113 - это шесть триггеров. Вход R - общий сброс при низком уровне сигнала. В нашем случае сброс не используется. Защелкивание в триггер происходит по положительному фронту сигнала на входе С.

Теперь Вы уже сами в состоянии понять работу просмотровой таблицы. В режиме отображения информации D114 находится в режиме чтения. На ее адресные входы поступают три сигнала с трех плоскостей ГЗУ и сигнал с АЦЗУ (1BWV). На выходе D114 будут появляться данные, записанные в ней, которые с частотой 10 МГц (частота сигнала VCLK) будут защелкиваться в триггере.

После триггера сигналы через инвертор D122 поступают на разъем XS10 цветного ВКУ. Инвертор D122 нужен, чтобы исправить инверсию сигнала после считывания его из памяти D114.

Для примера рассмотрим случай, когда из ГЗУ считана точка с логическим цветом 7. Следовательно, в соответствующий момент времени на адресных входах будет код 7. (полагаем, что сигнал 1BWV низкого уровня - в этом месте экрана нет символа). Следовательно на выходе D114 может появиться все, что угодно. Все зависит от того, что мы записали раньше в D114 по адресу 7. Допустим, что по адресу 7 было ранее записано число 5, т.е. сигнал высокого уровня появится на выходах 0 и 2 микросхемы D114. Следовательно цвет точки будет реализован с помощью сигналов VIDI (интенсивности) и VIDR (красный) и будет красным. Если бы по адресу 7 лежало число 4, то цвет точки был бы черным, т.к. сигнал VIDI был бы нулевым, верней бы была изображена "красная" точка нулевой интенсивности.

Из сказанного ясно, что программирование просмотровой таблицы требует тщательности. При некоторых вариантах программирования могут происходить нежелательные явления с Вашим изображением на ВКУ.

Нам осталось, учитывая богатый накопленный опыт анализа схем, уточнить, как происходит запись в просмотровую таблицу. Адресация осуществляется по линиям сигналов SELREG и А2, следовательно относительный адрес просмотровой таблицы FBH. При обращении к просмотровой таблице происходит одновременное переключение D114 в режим записи сигналом низкого уровня с элемента "ИЛИ" D99 (8.5) и регистра D115 (8.8) на младшие разряды шины данных.

Результаты наших рассуждений сведены в таблицу 9.

В заключение сделаем еще несколько замечаний. Сигнал HVSYNC с помощью перемычки XP4 (лист 8) может быть проинвертирован. Для этого нужно соединить т.1 и т.2 перемычкой. Если перемычка будет соединять т.3 и т.2, то сигнал HVSYNC не инвертируется. Это сделано для удобства сопряжения "Корвета" с ВКУ. Некоторые ВКУ требуют инверсного сигнала HVSYNC.

На этом мы закончим разбор работы ГЗУ и перейдем к схеме контроллера дисководов.

КОНТРОЛЛЕР ДИСКОВОДОВ

Контроллер дисководов также называется контроллером накопителя на гибких магнитных дисках (НГМД).

Схема приведена на листе 14 и обеспечивает подключение к микроЭВМ до четырех накопителей диаметром 3.5; 5.25 или 8 дюймов. Возможно осуществление режимов односторонней и двусторонней записи с одинарной или двойной плотностью. Контроллер реализован на базе БИС КР1818ВГ93 (D4 (14.2)) и порта B адаптера параллельного интерфейса D17 (13.35), запрограммированного на вывод.

Интерфейс D17 (13.35) нам уже знаком, только теперь используется его другой порт. Адресация D4 (14.2) идет по линиям CSCOM, А0 и А1. Сигналы 1WR (запись) и RDEV (чтение) осуществляют связь процессора с контроллером по буферированной шине данных.

Давайте сначала разберемся с сигналами, которыми управляет регистр D17 (13.35). Сигналы DS0, DS1, DS2 и DS3 отвечают за выбор накопителя. Установка единицы в соответствующем разряде регистра сформирует соответствующий сигнал низкого уровня на выходе контроллера.

Здесь уместно добавить, что НГМД требует, чтобы активные уровни всех сигналов были низкие. Поэтому выходные сигналы как правило инвертируются.

Сигнал SIDE адресует сторону выбранного дисковода. Установка нуля выбирает сторону "0", установка единицы - сторону "1".

Сигнал MON используется для включения двигателя НГМД. Установка единицы в разряде 5 регистра D17 запускает ждущий одновибратор D5 (14.31), выход которого формирует сигнал MON. Времязадающая цепочка C5, R2 подобрана так, что через три секунды одновибратор возвращается в исходное состояние, формируя сигнал MON высокого уровня длительностью три секунды. Одновибратор D5 имеет одно полезное свойство, он перезапускаемый, т.е., если до окончания выходного импульса одновибратора на его входе опять создать положительный перепад потенциала, то выходной импульс с этого момента опять будет продолжаться три секунды. Таким образом сигнал MON можно сделать активным сколь угодно долго, перезапуская одновибратор с периодом перезапуска меньше трех секунд.

Если одновибратор возвращается в исходное состояние, то на его инверсном выходе формируется сигнал прерывания IRQ7 от выключения двигателя, поступающий в контроллер прерываний D8(12.4). Процессор программно обслуживает этот запрос.

Оставшиеся два старших разряда в регистре управления D17 определяют режим работы НГМД. Из-за большого разнообразия различных типов применяемых НГМД необходимо уметь настраивать контроллер на различные режимы работы. Как видно из схемы (лист 14) сигналы DDEN (бит 6) и 5" (бит 7) управляют работой мультиплексора D13 (14.1) и выбирают нужную тактовую частоту как для БИС D4, так и для счетчика D6 (14.3). В таблице 10 дается описание различных режимов работы НГМД и зависимость их от сигналов DDEN и 5".

Таким образом с помощью регистра D17 можно программно выбрать накопитель, сторону диска, режим работы и включить мотор. Все остальные манипуляции производятся с БИС D4 и это уже обсуждалось в предыдущей главе. Здесь мы обсудим метод записи на диск. Как видно из таблицы 10 в колонке "Метод записи" стоят сочетания букв FM и MFM. Это аббревиатура от английских слов Frequency Modulation (частотная модуляция) и Modify Frequency Modulation (модифицированная частотная модуляция).

В зависимости от уровня напряжения на линии DDEN контроллер кодирует загруженный байт данных по методу частотной модуляции FМ (при высоком уровне) или по методу модифицированной частотной модуляции МFМ (при низком уровне) и в последовательном коде выводит его на выход WRD микросхемы контроллера. Временные диаграммы кодирования данных приведены на рисунке 11. При обоих способах кодирования в последовательном потоке информации содержатся данные ("D") и синхросигналы ("С"). При способе кодирования FМ каждый битовый элемент содержит бит данных и синхросигнал. При способе кодирования МFМ синхросигнал помещается в битовом элементе только в том случае, если данные предыдущего и текущего битового элемента равны нулю.

Рассмотрим теперь, как выполняются команды контролллера. Управление перемещением головкой осуществляется контроллером по линиям STEP и DIR. Высокий уровень сигнала на линии DIR (или низкий после инвертора D3(14.5) задает направление перемещения головки к центру диска, низкий уровень - наоборот, от центра. Перемещение головки осуществляется низким уровнем сигнала (после инвертора D3(14.4)) на один шаг. Чтобы сместить головку на несколько шагов, контроллер должен менять уровень сигнала STEP через интервалы времени, определяемые командой процессора.

Физическое начало каждой дорожки отмечается на линии IP низким уровнем напряжения длительностью не менее 10 мкс при каждом обороте диска. Сигнал IP используется для синхронизации контроллера. Низкий уровень напряжения на линии ТР00 (нулевая дорожка) сигнализирует контроллеру, что головка записи-воспроизведения находится над нулевой дорожкой.

Как осуществляется запись данных на диск? В начале операции записи микропроцессор анализирует состояние входных линий готовности READYD и защиты записи WPRT и приступает к записи только при низком уровне напряжения на входе READYD и высоком уровне напряжения на входе WPRT. Запись данных контроллер выполняет, используя выходные линии микросхемы КР1818ВГ93 WR, C и D, EARL, LATE.

Если имеет место запись на диск, контроллер формирует на выходе разрешения записи WG низкий уровень напряжения на все время операции записи. При этом первый байт данных должен быть загружен с шины данных в контроллер до установления низкого уровня напряжения на линии WG.

Данные записи WRD поступают в НГМД через схему цифровой компенсации данных, выполненную на микросхемах D0(14.32) и D7(14.8). Микросхема D7 это четырехразрядный сдвиговый регистр. Сигналом высокого уровня на входе EZ его выходы все время подключены. Если на входе EWR сигнал высокого уровня, то по отрицательнову фронту импульса на входе C происходит параллельная загрузка. При EWR = "0" происходит тактируемый сдвиг содержимого регистра в сторону старших разрядов, а в младший разряд загружаются данные с входа 0-> (в нашем случае ноль). Сигнал на вход управления работой регистра EWR поступает с инверсного выхода триггера D0. Попытаемся теперь разобраться в работе схемы.

Сигнал разрешения записи WG сбрасывает своим низким уровнем триггер D0 и все время держит его в состоянии сброса. При этом на инверсном выходе триггера сформирован сигнал высокого уровня, который "держит" регистр D7 в режиме параллельной загрузки. Если производится запись на диск, то сигнал WG становится сигналом высокого уровня, разрешая триггеру работать. Поскольку в старший разряд регистра D7 все время загружается ноль (соответствующий вход заземлен), то на К входе триггера будет сигнал низкого уровня. При передаче данных первый же импульс на выходе WRD контроллера, поступивший на J вход триггера, запишет в него ноль на инверсном входе и переведет регистр в режим сдвига.

В режиме сдвига при условии, что на вход J данные больше не поступают, первая же единица на выходе сдвигового регистра опрокинет триггер в исходное состояние, который в свою очередь переведет регистр в режим загрузки. Таким образом триггер D0 синхронизует работу сдвигового регистра с тактовой частотой, опрокидываясь импульсом данных. С выхода регистра D7 задержанные данные через инвертор D3(14.7) поступают по линии данных в НГМД.

Чтобы разобраться с задержкой данных в регистре D7, займемся тем, что загружается в регистр. Сначала предположим, что на выходах LATE и EARL сигналов нет, т.е. присутствуют напряжения низкого уровня, тогда в регистр с помощью инверторов D28(14.9) и D29(14.10) будет записано число 0010B и данные на выходе WD задержатся на два такта. Сигнал данных может сопровождаться или сигналом EARL(раньше) или сигналом LATE(позже). Очевидно, при сигнале EARL сигнал WD задержится на один такт (в регистр будет загружено число 0100B), а при сигнале LATE на три такта (в регистр будет загружено число 0001B).

Таким образом схема компенсации изменяет задержку выдачи данных в НГМД в зависимости от напряжений на выходах контроллера EARL и LATE.

Зачем нужна компенсация данных? Прежде всего отметим, что она используется только при методе записи MFM. В этом случае для надежной записи необходима коррекция данных, причем дисководы разных фирм требуют разной величины временной коррекции. В нашем случае схема рассчитана на дисководы фирмы TEАC и величина коррекции равна 250 нсек. Поэтому при использовании дисководов других фирм могут возникнуть затруднения. Мы надеемся, что наши читатели смогут победить эту проблему. Для этого нужно знать рекомедуемую величину коррекции для конкретного дисковода.

Нам осталось разобраться с чтением данных. Этот процесс осуществляется из адресуемого НГМД при низком уровне напряжения на входе READYD.

Данные чтения в формате FМ или МFМ поступают по линии RAWRD через микросхему D1(14.12) на вход одновибратора D5 (14.30). С выхода одновибратора отрицательный импульс длительностью 150 нс поступает на вход данных RD D микросхемы контроллера.

Для разделения потока информации на данные и синхроимпульсы используется счетчик D6(14.3), который формирует стробирующие сигналы, поступающие на вход RD C микросхемы контроллера.

При отсутствии сигналов RAWRD счетчик, тактируемый частотой 4 МГЦ или 2 МГц в зависимости от входов управления мультиплексора D13(14.1), формирует "окна" номинальной длительности 2 мкс при частоте 4 МГц.

При поступлении сигнала RAWRD отрицательный импульс с выхода одновибратора D5 загружает в младшие разряды счетчика код 011 сохраняя состояние старшего разряда без изменения. Поскольку счетчик считает на уменьшение, то через четыре такта уровень сигнала на выходе счетчика обязательно изменится. В результате с приходом импульса данных или синхроимпульса счетчик с задержкой в четыре такта начинает "отсчет времени". Разделение потоков данных и синхроимпульсов (стробирование данных) происходит из-за разного временного интервала между импульсами.

На этом обсуждение контроллера НГМД мы закончим. Для тех, кто ничего не понял в том, как осуществляется запись на диск и чтение с него, в качестве утешения рекомендуем обратиться к рисунку 12. На нем приведены временные диаграммы работы контроллера.

Мы подробно разобрали работу основных и сложных узлов "КОРВЕТА". С остальными периферийными устройствами мы поступим более экономно и ограничимся краткими комментариями.

ОСТАЛЬНЫЕ ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА

Контроллер прерываний выполнен на микросхеме КР580ВН59 (D8 (лист 12)). Контроллер позволяет обслуживать 8 уровней прерываний от адаптеров периферийных устройств с фиксированными или циклически меняющимися приоритетами, маскировать отдельные уровни.

Приоритеты запросов распределены следующим образом:

  • уровень 0 - запрос от дополнительных внешних устройств, подключенных к разъему РАСШИРЕНИЕ;
  • уровень 1 - запрос от адаптера последовательного интерфейса (готовность приема);
  • уровень 2 - запрос от адаптера последовательного интерфейса (готовность передачи);
  • уровень 3 - запрос от адаптера локальной сети;
  • уровень 4 - запрос сигналом кадрового гасящего импульса VBL с частотой 50 Гц;
  • уровень 5 - запрос от канала 2 программируемого таймера;
  • уровень 6 - запрос от интерфейса принтера;
  • уровень 7 - запрос от контроллера НГМД.

Программируемый таймер выполнен на микросхеме КР580ВИ53(D9, лист 12) и имеет три канала. Канал 0 используется для формирования звуковых колебаний программируемого тона. Канал 1 задает скорость передачи данных по последовательному интерфейсу (до 9600 бит/с). Канал 2 предназначен для генерации прерываний через фиксированные промежутки времени. На вход С канала 2 поступает сигнал HBL с периодом 65.6 мксек. Режим работы канала 2 задается по шине данных в регистре режима, а коэффициент деления частоты - в счетчике канала, адресуемых по линиям CSCT, А0, А1.

Адаптер клавиатуры выполнен на двух микросхемах К555КП14 D37(13.18), D36(13.17) (лист 13)с использованием инвертора К555ЛН2 D28, D29 (лист 12). Адаптер обеспечивает программное сканирование и декодирование простейшей матрицы контактов-замыкателей. Дребезг контактов устраняется программно. Микропроцессор опрашивает группу из восьми клавиш, адресуя ее логической единицей на шине адреса и считывая сигналом чтения CSKB через мультиплексоры D37, D36. Нажатое состояние клавиши дает высокий уровень напряжения в соответствующем разряде считанного на шине данных байта данных. Сигнал А8 шины адреса через инвертор D28(13.2) подается на входы SE мультиплексоров D36, D37 и управляет считыванием группы клавишей из основного поля при низком уровне напряжения на линии А8 или из дополнительных полей - при высоком. Опрос одновременно нескольких групп клавишей с целью выявления хотя бы одной нажатой клавиши микропроцессор выполняет, выставляя высокий уровень напряжения в соответствующих разрядах шины адреса. При этом за одну операцию чтения микропроцессор может проанализировать матрицу 8 х 8 на наличие хотя бы одной нажатой клавиши. По адресу группы и байту считанных данных микропроцессор программно формирует адрес и считывает из ПЗУ знакогенератора символ нажатой клавиши. Подробней смотри предыдущую главу.

Адаптер последовательного интерфейса предназначен для подключения к микроЭВМ дополнительных внешних устройств, а в случае использования ее в качестве графического терминала - для связи со старшей ЭВМ.

Адаптер построен на базе микросхемы КР580ВВ51А (D10, лист 12) и реализует либо интерфейс типа токовой петли 20 мА (ИРПС) с использованием оптрона D57 и микросхем D12, D41, D38, либо интерфейс типа RS232 с использованием микросхемы D41, транзистора VT2 и микросхем D12, D56.

Способ обмена - асинхронный, двунаправленный, скорость передачи до 9600 бит/сек. Скорость задается программно установкой коэффициента деления частоты сигнала синхронизации приемника и передатчика. Этот сигнал поступает на микросхему D10 с канала 1 таймера D9.

Микропроцессор может осуществлять ввод символа в адаптер по запросу, генерируемому на выходе RATF микросхемы D10. Сигнал высокого уровня на этом выходе поступает на второй уровень прерываний БИС D8. Уровень напряжения автоматически меняется на низкий, когда символ загружается в адаптер. Передатчик выводит битовые посылки по спаду сигналов синхронизации в последовательном формате на выход TF микросхемы D10 и далее на линии -V24TD или TXD. Причем первыми идут младшие биты.

Приемник принимает с линий +V24RD, -V24RD или RXD последовательные биты по фронту сигналов синхронизации. После приема всего символа на выходе RARC микросхемы D10 генерируется высокий уровень сигнала запроса на обслуживание (уровень прерываний 1). Линии готовности DSR и RTS используются в зависимости от программ пользователя.

Адаптер локальной сети построен на основе БИС приемо-передатчика КР580ВВ51А (D11, лист 12). Способ передачи информации в линии связи принят последовательный асинхронный с контролем байтов на четность. Скорость передачи фиксированная 19600 бит/с. Обмен информацией в сети осуществляется под управлением компьютера ПК8020 с помощью опроса состояний компьютеров ПК8010. Последние имеют в сети индивидуальные номера от 1 до 15. Для одновременной циркулярной загрузки системных программ имеется групповой номер 0, на который реагируют все персональные компьютеры ПК8010.

Номер персонального компьютера (рабочего места) задается установкой перемычек на ответной части соединителя локальной сети и определяться программно через порт А микросхемы D17(13.35).

Топологически сеть представляет собой двунаправленную магистраль, соединяющую все рабочие места комплекса. Линия связи выполнена в виде витой пары и прокладывается стационарно. При работе с адаптером локальной сети необходимо установить перемычку между контактами 04 и 02 соединителя адаптера.

Адаптер кассетного накопителя позволяет под управлением программы производить запись и чтение информации с магнитной ленты со скоростью до 2400 бит/с. Входная информация с кассетного накопителя поступает через усилитель D58 (13.9, 13.22) на вход порта "A" микросхемы КР580ВВ55А (D17(13.35)). Выходной сигнал адаптера CASSOUT поступает на кассетный накопитель с выходов порта "C" (1,0) микросхемы D16(13.52). Выходной сигнал управления реле "кратковременный стоп" поступает с выхода "2" порта "C" микросхемы D16(13.52) через усилитель К155ЛН5 (D38 (13.32)). Блочный способ записи с использованием специальных кодов дает возможность получать высокую надежность записи.

Адаптер печатающего устройства (ПУ) осуществляет вывод данных на печать и реализует необходимое подмножество цепей параллельного интерфейса типа ИРПР-М(CENTRONICS). Это подмножество включает восемь однонаправленных цепей данных с высоким активным уровнем напряжения и цепи сигналов стробирования "SE", выбора ПУ "ACK" и сигнала "BUSYP".

Адаптер содержит регистр данных, реализованный на базе порта "A" микросхемы D16 (13.52), регистр управления, реализованный на базе порта "C" микросхемы D16 (разряды 4 и 5), регистр состояния, реализованный на базе порта "A" микросхемы D17 (13.35) (разряд 2). Микропроцессор осуществляет передачу данных в ПУ, предварительно анализируя состояние линии "BUSYP" через регистр состояния, адресуя его по линиям "CSIOP1","А0","А1". При наличии признака готовности ПУ (низкий уровень напряжения на линии "BUSYP") микропроцессор записывает байт данных в регистр данных, адресуя его по линиям "CSIOP2","А0","А1", устанавливает и сбрасывает бит стробирующего сигнала. Предусмотрена возможность обслуживания ПУ по прерыванию, для чего сигнал "BUSYP" по линии "IRQ6" передается в контроллер прерывания. Микропроцессор программно решает, когда обслужить этот запрос.

Адаптер параллельного интерфейса на основе микросхемы КР580ВВ55А (D2 (13.53)) обеспечивает расширение функциональных возможностей компьютера. Цепи программируемых портов ввода/вывода непосредственно выведены на соединитель. Это обеспечивает большую гибкость в управлении подключаемыми устройствами, так как позволяет свободно выбирать режим работы и направление передачи сигналов по линиям, но при этом требует обязательного применения согласующих элементов или дополнительных адаптеров в непосредственной близости от соединителя. На этот же соединитель выведены сигналы частотой 2 МГц и выход канала 0 программируемого таймера D9 (12.22).

Синтезатор звука вырабатывает звуки заданной частоты и может быть использован для встраивания в программы музыкальных мелодий. Высота звука и длительность звучания задаются программно с помощью канала 0 программируемого таймера (D9, лист 12).

Для задания тональности звучания канал 0 программируется как делитель частоты 2 МГц, подаваемой на вход С канала. Микропроцессор задает по ШД коэффициент деления частоты, который зависит от требуемой тональности. Управление пьезоэлектрическим излучателем звука НА1 (лист 3) осуществляется по линии SOUND через схему совпадения D18 (12.31), на второй вход которой по линии стробирования звука SCLK подается сигнал разрешения (высокий уровень напряжения) или запретa (низкий уровень напряжения) звучания. Сигнал подается с выхода "3" порта С микросхемы D16 (13.52). Установку или сброс этого разряда микропроцессор выполняет программно. Сигнал управления излучателем формируется по амплитуде с помощью усилителя К170АП4 (D20, лист 3).

В заключение несколько слов о блоке питания. Для надежной работы годится любой источник питания, имеющий напряжения:

+ 5В - 3.0А 
+12В - 2.0А 
-12В - 0.5А 

Питание системного блока осуществляется от источника постоянного напряжения через вилку ХР2 (лист 16).

На этом мы заканчиваем комментирование периферийных устройств и обсуждение схемотехники КОРВЕТА.

Мы надеемся, что информация этой главы будет полезной для многих любознательных пользователей и воодушевит их на пути изучения цифровой техники.

ТАБЛИЦЫ



                                        Т А Б Л И Ц А  1 
 
 |--------------------------------------------------------------| 
 | ТАБЛИЦА ПРОШИВОК В ПЛМ ДЛЯ ФОРМИРОВАНИЯ УПРАВЛЯЮЩИХ СИГНАЛОВ | 
 |                            АЦЗУ                              | 
 |                       /* VIDEO.PLM */                        | 
 |--------------------------------------------------------------| 
 | Номер терма |    Матрица  "AND"    |     Матрица  "OR"       | 
 |             |                      |-------------------------| 
 |             |                      |  pol      hlllhlhh      | 
 |-------------|----------------------|-------------------------| 
 |      0      |   l----------h---h   |           ..a.....      | 
 |      1      |   -hhlh-----------   |           ....a...      | 
 |      2      |   -lllh-----------   |           .......a      | 
 |      3      |   -hhl---l--------   |           .......a      | 
 |      4      |   -h---l----------   |           a.......      | 
 |      5      |   -hh--h----------   |           a.......      | 
 |      6      |   h-hhllh---------   |           .....a..      | 
 |      7      |   h-hhlhh--------l   |           .....a..      | 
 |      8      |   h-hhl-h---------   |           .a......      | 
 |      9      |   -h--------------   |           ......a.      | 
 |     10      |   l-----h-----lh--   |           ...a....      | 
 |     11      |   l-----l---h-lh--   |           ...a....      | 
 |     12      |   l-----l-lhl-lh--   |           ...a....      | 
 |     13      |   l-----l-hll-lh--   |           ...a....      | 
 |     14      |   h-----l-hhl-----   |           ...a....      | 
 |-------------|----------------------|-------------------------| 


                                           Т А Б Л И Ц А  2 
 
 |--------------------------------------------------------------| 
 |     |            с л о в о   с о с т о я н и я               | 
 | Тип |------|------|------|------||------|------|------|------| 
 |     |  D7  |  D6  |  D5  |  D4  ||  D3  |  D2  |  D1  |  D0  | 
 |     |------|------|------|------||------|------|------|------|
 |цикла|чтение| ввод |  М1  | вывод||подтв.| стек |запись|подтв.| 
 |     |      |      |      |      ||оста- |      |      |преры-| 
 |     |      |      |      |      || нова |      |      |вания | 
 |-----|------|------|------|------||------|------|------|------| 
 |     |      |      |      |      ||      |      |      |      | 
 | М1  |  1   |  0   |  1   |  0   ||  0   |  0   |  1   |  0   | 
 | М2  |  1   |  0   |  0   |  0   ||  0   |  0   |  1   |  0   | 
 | М3  |  0   |  0   |  0   |  0   ||  0   |  0   |  0   |  0   | 
 | М4  |  1   |  0   |  0   |  0   ||  0   |  1   |  1   |  0   | 
 | М5  |  0   |  0   |  0   |  0   ||  0   |  1   |  0   |  0   | 
 | М6  |  0   |  1   |  0   |  0   ||  0   |  0   |  1   |  0   | 
 | М7  |  0   |  0   |  0   |  1   ||  0   |  0   |  0   |  0   | 
 | М8  |  0   |  0   |  0   |  0   ||  0   |  0   |  1   |  1   | 
 | М9  |  1   |  0   |  0   |  0   ||  1   |  0   |  1   |  0   | 
 | М10 |  0   |  0   |  1   |  0   ||  1   |  0   |  1   |  1   | 
 |     |      |      |      |      ||      |      |      |      | 
 |-----|------|------|------|------||------|------|------|------| 


                                              Т А Б Л И Ц А  3
 
 |--------------------------------------------------------------|
 |     ТАБЛИЦА ПРОШИВОК В ПЛМ ДЛЯ ФОРМИРОВАНИЯ КАРТЫ ПАМЯТИ     |
 |                     /* DEC.PLM */                            |
 |--------------------------------------------------------------|
 | Номер терма |    Матрица  "AND"    |     Матрица  "OR"       |
 |             |                      |-------------------------|
 |             |                      |  pol      hhllllll      |
 |-------------|----------------------|-------------------------|
 |      0      |   -h--------------   |           aa.a....      |
 |      1      |   -l-l-llhlhhhhlll   |           aa.a....      |
 |      2      |   -l--llhh-hhhhhlh   |           aa.a....      |
 |      3      |   -l--lhlh-hhhhhlh   |           aa.a....      |
 |      4      |   -l--hlhh-hlhhhhh   |           aa.a....      |
 |      5      |   -l--lhhh-hlhhhhh   |           aa.a....      |
 |      6      |   -lll-llhlh-lhlll   |           aa....a.      |
 |      7      |   -ll-llhh-h-lhhlh   |           aa....a.      |
 |      8      |   -ll-lhlh-h-lhhlh   |           aa....a.      |
 |      9      |   ll-l-llhlhlhhlll   |           aaa.....      |
 |     10      |   ll--llhh-hlhhhlh   |           aaa.....      |
 |     11      |   ll--lhlh-hlhhhlh   |           aaa.....      |
 |     12      |   ll--hhlh-hhhhhhl   |           aaa.....      |
 |     13      |   ll--hlhh-hhhhhhh   |           aaa.....      |
 |     14      |   ll--lhhh-hhhhhhh   |           aaa.....      |
 |     15      |   -l-l-llhlh--hlhl   |           a.......      |
 |     16      |   -l--llhh-h--hhhh   |           a.......      |
 |     17      |   -l--lhlh-h--hhhh   |           a.......      |
 |     18      |   lh--------------   |           aaa.....      |
 |     19      |   -l--hh-------h-h   |           .a......      |
 |     20      |   -l--hlh------l-h   |           .a......      |
 |     21      |   -l--h-l------h-h   |           .a......      |
 |     22      |   hl-l-----l---l-l   |           aa...a..      |
 |     23      |   hl------ll---l-l   |           aa...a..      |
 |     24      |   hl-l-llllh---l-l   |           aa..a...      |
 |     25      |   hl-l-llhlh--ll-l   |           aa..a...      |
 |     26      |   hl-l-l--hh---l-l   |           aa..a...      |
 |     27      |   hl-l-h---h---l-l   |           aa..a...      |
 |     28      |   hl-l-h--ll---l-h   |           aa.....a      |
 |-------------|----------------------|-------------------------|

                                         Т А Б Л И Ц А  4.
 |---------------------------------|--------------------------|
 |        Обращение к памяти       |  Нет обращения к памяти  |
 |------|------------|-------------|------------|-------------|
 |Сигнал|Адрес строки|Адрес столбца|Адрес строки|Адрес столбца|
 |------|------------|-------------|------------|-------------|
 | МА0  |     А00    |      А07    |      С00   |      С07    |
 | МА1  |     А01    |      А08    |      С01   |      С08    |
 | МА2  |     А02    |      А09    |      С02   |      С09    |
 | МА3  |     А03    |      А10    |      С03   |      С10    |
 | МА4  |     А04    |      А11    |      С04   |      С11    |
 | МА5  |     А05    |      А12    |      С05   |      С12    |
 | МА6  |     А06    |      А13    |      С06   |      С13    |
 | МА7  |     А14    |      А15    |       0    |       0     |
 |------|------------|-------------|------------|-------------|

                                           Т А Б Л И Ц А  5
 
 |---------------------------------------------------------|
 |Номер| Номер столбца | Байт|Относительный| ASCII | Адрес |
 |стро-|---------------|     |             |  код  | байта |
 | ки  |7|6|5|4|3|2|1|0| ПЗУ |адрес строки |символа| в ПЗУ |
 |-----|-|-|-|-|-|-|-|-|-----|-------------|---------------|
 |  0  | | | | | | | | | 00H |     0       |  41H  | 0410H |
 |  1  | | | | | | | | | 00H |     1       |  41H  | 0411H |
 |  2  | | | | | | | | | 00H |     2       |  41H  | 0412H |
 |  3  | | | |@| | | | | 10H |     3       |  41H  | 0413H |
 |  4  | | |@|@|@| | | | 38H |     4       |  41H  | 0414H |
 |  5  | |@|@| |@|@| | | 6CH |     5       |  41H  | 0415H |
 |  6  |@|@| | | |@|@| | C6H |     6       |  41H  | 0416H |
 |  7  |@|@| | | |@|@| | C6H |     7       |  41H  | 0417H |
 |  8  |@|@|@|@|@|@|@| | FEH |     8       |  41H  | 0418H |
 |  9  |@|@| | | |@|@| | C6H |     9       |  41H  | 0419H |
 | 10  |@|@| | | |@|@| | C6H |     A       |  41H  | 041AH |
 | 11  |@|@| | | |@|@| | C6H |     B       |  41H  | 041BH |
 | 12  | | | | | | | | | 00H |     C       |  41H  | 041CH |
 | 13  | | | | | | | | | 00H |     D       |  41H  | 041DH |
 | 14  | | | | | | | | | 00H |     E       |  41H  | 041EH |
 | 15  | | | | | | | | | 00H |     F       |  41H  | 041FH |
 |-----|-|-|-|-|-|-|-|-|-----|-------------|-------|-------|

                                            Т А Б Л И Ц А  6
 
 |--------------------------------------------------------------|
 |     ТАБЛИЦА ПРОШИВОК В ПЛМ ДЛЯ ФОРМИРОВАНИЯ ДАННЫХ ИЗ ГЗУ    |
 |                       /* COLOR.PLM */                        |
 |--------------------------------------------------------------|
 | Номер терма |    Матрица  "AND"    |     Матрица  "OR"       |
 |             |                      |-------------------------|
 |             |                      |  pol      hhhhhhhh      |
 |-------------|----------------------|-------------------------|
 |     0       |   h--l-------h----   |           ...aaaaa      |
 |     1       |   h--h-------l----   |           ...aaaaa      |
 |     2       |   h-l------------h   |           ...aaaaa      |
 |     3       |   h-h------------l   |           ...aaaaa      |
 |     4       |   hl--h-----------   |           ...aaaaa      |
 |     5       |   hh--l-----------   |           ...aaaaa      |
 |     6       |   h--l------h-----   |           ..a.aaaa      |
 |     7       |   h--h------l-----   |           ..a.aaaa      |
 |     8       |   h-l-----------h-   |           ..a.aaaa      |
 |     9       |   h-h-----------l-   |           ..a.aaaa      |
 |    10       |   hl---h----------   |           ..a.aaaa      |
 |    11       |   hh---l----------   |           ..a.aaaa      |
 |    12       |   h--l-----h------   |           .a..aaaa      |
 |    13       |   h--h-----l------   |           .a..aaaa      |
 |    14       |   h-l----------h--   |           .a..aaaa      |
 |    15       |   h-h----------l--   |           .a..aaaa      |
 |    16       |   hl----h---------   |           .a..aaaa      |
 |    17       |   hh----l---------   |           .a..aaaa      |
 |    18       |   h--l----h-------   |           a...aaaa      |
 |    19       |   h--h----l-------   |           a...aaaa      |
 |    20       |   h-l---------h---   |           a...aaaa      |
 |    21       |   h-h---------l---   |           a...aaaa      |
 |    22       |   hl-----h--------   |           a...aaaa      |
 |    23       |   hh-----l--------   |           a...aaaa      |
 |    24       |   l--h-------h----   |           ...aaaaa      |
 |    25       |   l-h------------h   |           ...aaaaa      |
 |    26       |   lh--h-----------   |           ...aaaaa      |
 |    27       |   l--h------h-----   |           ..a.aaaa      |
 |    28       |   l-h-----------h-   |           ..a.aaaa      |
 |    29       |   lh---h----------   |           ..a.aaaa      |
 |    30       |   l--h-----h------   |           .a..aaaa      |
 |    31       |   l-h----------h--   |           .a..aaaa      |
 |    32       |   lh----h---------   |           .a..aaaa      |
 |    33       |   l--h----h-------   |           a...aaaa      |
 |    34       |   l-h---------h---   |           a...aaaa      |
 |    35       |   lh-----h--------   |           a...aaaa      |
 |-------------|----------------------|-------------------------|

                                              Т А Б Л И Ц А  7.
 
 |--------------------|---------------------|------------------|
 |         R0         |         GD00        |       GRD0       |
 |--------------------|---------------------|------------------|
 |         0          |           0         |        0         |
 |         0          |           1         |        1         |
 |         1          |           0         |        1         |
 |         1          |           1         |        0         |
 |--------------------|---------------------|------------------|

                                               Т А Б Л И Ц А  8
 
 |------|----------|----------|---------------|----------------|
 |  EZ  | ERD/EWR  |  D(0-3)  |    Выход      | Режим работы   |
 |------|----------|----------|---------------|----------------|
 |      |          |          |               |                |
 |  1   |    X     |    X     |  Z-состояние  |   Хранение     |
 |      |          |          |               |                |
 |  0   |    0     |    1     |  Z-состояние  |   Запись       |
 |      |          |          |               |                |
 |  0   |    1     |    Х     |  Данные  в    |   Считывание   |
 |      |          |          |  инверсном    |                |
 |      |          |          |  коде         |                |
 |------|----------|----------|---------------|----------------|


                                         Т А Б Л И Ц А  9.
 
     |--------------------------------------------------------|
     |                    Ш и н а   д а н н ы х               |
     |------|------|------|------||------|------|------|------|
     |   7  |   6  |   5  |   4  ||   3  |   2  |   1  |   0  |
     |------|------|------|------||------|------|------|------|
     |      |      |      |      ||      |      |      |      |
     |   B  |   R  |   G  |   I  ||  BWV | пл.N2| пл.N1| пл.N0|
     |      |      |      |      ||      |      |      |      |
     |------|------|------|------||------|------|------|------|
     |                           ||                           |
     |     Подключаемый сигнал   ||   Адрес в просмотровой    |
     |                           ||          таблице          |
     |---------------------------||---------------------------|

                                          Т А Б Л И Ц А  10
 
 |-----------------------------|------------|------------------|
 |         Режим  работы       |            |                  |
 |---------|-----------|-------| Логический | Частота сигналов |
 | Диаметр |           |       | уровень на |                  |
 |  диска  | Плотность | Метод |  линиях    |      Мгц         |
 |    в    |  записи   |записи |            |                  |
 | дюймах  |           |       |-----|------|---------|--------|
 |         |           |       |  5" | DDEN |   Вх С  | Вх"-1" |
 |         |           |       |     |      |   ВГ93  |  ИЕ7   |
 |---------|-----------|-------|-----|------|---------|--------|
 |   5.25  |  Двойная  |  MFM  |  0  |   0  |    1    |   4    |
 |          Запрещено          |  0  |   1  |    2    | 0 !!!! |
 |   3.5   | Одинарная |  FM   |  1  |   0  |    1    |   2    |
 |    8    | Одинарная |  FM   |  1  |   0  |    1    |   2    |
 |---------|-----------|-------|-----|------|---------|--------|