В начале основного цикла считывается из входного буфера очередной код, значение которого заносится в переменную «НОВЫЙ КОД». При этом производится проверка на наличие специального кода, указывающего на изменение разрядности входных данных. Если произошло увеличение разрядности, происходит переход к началу основного цикла и чтение следующего кода с учётом возросшей разрядности. В противном случае цикл продолжается. Далее проводится проверка на наличие специального случая «СТРОКА+СИМВОЛ+СТРОКА+СИМВОЛ+СТРОКА», когда генерируется неопределённый код. При наличии данного случая, происходит декодирование переменной «СТАРЫЙ КОД», добавив «СИМВОЛ» в конец декодируемой строки. Если особого случая нет, то декодируется «НОВЫЙ КОД». Во время декодирования, декодированная строка помещается во временный буфер, после чего выводится в выходной буфер в обратном порядке. Следующим шагом является запись (по возможности) в словарь декодированной последовательности, после чего переменной «СТАРЫЙ КОД» присваивается значение «СИМВОЛ» и цикл повторяется.
При вводе кодов из входного буфера выполняется процедура «разрезания» обратная процедуре «склеивания», которая байты входного буфера преобразует в коды переменной длины с помощью сложной системы сдвигов.
После этого клиентское ПО производит последовательное чтение байтов данных из выходного буфера данных устройства.
Основную часть операций по обмену данными и все вычисления берёт на себя AVR-микроконтроллер (MC). Программа хранится во FLASH ППЗУ, встроенном в контроллер. Для организации интерфейса с памятью (RAM) служит восьмиразрядный регистр-защёлка (RG). Сигнал ALE микроконтроллера защёлкивает в регистре младшую часть адреса. Для дешифрации адреса устройства служит ПЗУ (ROM). Дешифрация включается сигналом AEN шины ISA. Обнаружив на десяти адресных линиях адрес одного из регистров устройства ПЗУ выдаёт на выходе сигнал SEL. С помощью этого сигнала к шине данных подключается двунаправленный буфер (BF). Направлением передачи буфера управляет микроконтроллер. На основе сигнала SEL формируются стробы чтения и записи для микроконтроллера (с использованием сигналов IOR и IOW шины ISA), а также синал I/O CH RDY — запрос на продление цикла обмена по шине ISA. С ПЗУ выдаётся также сигнал RN, указывающий, к какому регистру идёт обращение.
Основную часть операций по обмену данными и все вычисления берёт на себя AVR-микроконтроллер (MC). Программа хранится во FLASH ППЗУ, встроенном в контроллер. Для организации интерфейса с памятью (RAM) служит восьмиразрядный регистр-защёлка (RG). Сигнал ALE микроконтроллера защёлкивает в регистре младшую часть адреса. Для дешифрации адреса устройства служит ПЗУ (ROM). Дешифрация включается сигналом AEN шины ISA. Обнаружив на десяти адресных линиях адрес одного из регистров устройства ПЗУ выдаёт на выходе сигнал SEL. С помощью этого сигнала к шине данных подключается двунаправленный буфер (BF). Направлением передачи буфера управляет микроконтроллер. На основе сигнала SEL формируются стробы чтения и записи для микроконтроллера (с использованием сигналов IOR и IOW шины ISA), а также синал I/O CH RDY — запрос на продление цикла обмена по шине ISA. С ПЗУ выдаётся также сигнал RN, указывающий, к какому регистру идёт обращение.
2.7 Описание принципиальной схемы устройства
Основу устройства составляет AVR-микроконтроллер AT90S4414 фирмы Atmel (микросхема DD1). Он работает на частоте 8 МГц и тактируется внешним сигналом синхронизации BCLC шины ISA. Контроллер содержит 4 килобайт FLASH ППЗУ для хранения кода программ. В качестве ОЗУ используется микросхема статической памяти КM681002С-20 (микросхема DD7). Её ёмкость составляет 128k x 8, а время доступа 20 нс. Для подачи адреса на микросхемы памяти используются двунаправленные порты микроконтроллера A и C (выводы PORTA.0–PORTA.7, PORTC.0–PORTC.7). Данные между памятью и микроконтроллером передаются по 8-и линиям через порт A, то есть шина является мультиплексированной. Для запоминания мультиплексированной половины адреса используется регистр-защёлка КР1533ИР22 (микросхема DD4). Данные защелкиваются сигналом ALE микроконтроллера. Сигналы WR и RD (выводы PORTD.6, PORTD.7) управляют чтением/записью. Логический ноль на линии WR служит командой записи в адресуемую ячейку памяти данных, находящихся на линии DA00–DA07, а ноль на линии RD указывает, что на линии данных необходимо выдать содержимое соответствующей ячейки.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.