| Алгоритм чтения |
|
Алгоритм чтения данных с ленты на основе вышеизложенного получается довольно простым, хотя и содержит несколько неочевидных моментов, суть которых рассмотрена после описания: Алгоритм чтения Анализировать сигнал, пока на входе не появится группа из NSTART однородных импульсов. Настроить временные интервалы на основе среднего из NTUNE последующих интервалов. Продолжить чтение импульсов до синхропоследовательности. Прочесть маркер начала и убедиться в его правильности. Прочесть заголовок и убедиться в его правильности. Прочесть данные. Подсчитать контрольную сумму и убедиться в правильности считывания данных. Некоторые пояснения Константы NSTART и NTUNE в оригинальном драйвере равны 40008 и 2008 соответственно. Хотя искуственное разделение непрерывной настроечной последовательности может показаться неразумным, связано оно с определенными особенностями функционирования контроллера DRAM на КР1801ВП13, которые при работе программы записи на МЛ могут в начале последовательности ускорить работу ЦП за счет временного уменьшения времени доступа к оперативной памяти как результата работы алгоритмов (все временные задержки при записи формируются программными циклами), в результате чего при чтении могли бы неправильно быть вычислены счетчики, ответственные за измерение длительности импульсов. Однако, при чтении фактически пропускается NSTARTимпульсов, что гарантирует прохождение интервала времени, достаточного для стабилизации скорости, а счетчики формируются уже на основе последующих NTUNE импульсов. Видимо для упрощения, в оригинальном драйвере длина маркера не контролируется, алгоритм пропускает все импульсы единичной длины до появления синхропоследовательности. Аналогично, в оригинальном драйвере не проверяется значение следующего за синхроимпульсом бита в синхропоследовательности, алгоритм просто читает (и пропускает) следующий за синхроимпульсом бит. |