В предыдущих лекциях были рассмотрены базовые элементы цифровой схемотехники и простейшие приемы проектирования узлов на их основе. Но для разработки сложных устройств и систем всех этих знаний порой оказывается недостаточно.
Чтобы создать сложное устройство, необходимо еще владеть приемами системотехники, то есть уметь на основании анализа функций, которые должно выполнять устройство в целом, спроектировать его структуру, сформулировать принципы взаимодействия узлов, четко определить все задачи, которые должен решать каждый из узлов, выработать требования к отдельным узлам. Возможно, в результате всех этих шагов будет изменена сама первоначальная задача, будут переформулированы требования к создаваемому устройству, к его месту в системе, к принципам его взаимодействия с другими устройствами. И только потом, после всей этой предварительной работы уже можно переходить к разработке узлов, собственно к схемотехнике.
Приемы системотехники сформулировать, формализовать, описать, даже перечислить гораздо сложнее, чем приемы схемотехники. Да и пользы от такой формализации зачастую немного. Проектирование сложного, надежно работающего цифрового устройства с минимальными аппаратными затратами сродни искусству и требует от разработчика определенных способностей, даже таланта. Научить этому практически невозможно. Более того, попытка научить системотехнике может даже принести вред, так как ограничит творческие способности разработчика несколькими жесткими стандартными алгоритмами.
Однако можно показать несколько простейших примеров разработки, продемонстрировать последовательность шагов, которые необходимы при проектировании, которые могут встретиться в процессе создания устройств некоторых распространенных типов. Исходя из этих примеров, разработчик может в дальнейшем попробовать по аналогии создать что-то свое, более или менее совершенное, но обязательно работоспособное.
Поэтому в данной лекции как раз и будут подробно рассмотрены несколько простых примеров проектирования сравнительно сложных устройств на всех этапах: от анализа решаемой задачи до создания полной принципиальной схемы. Примеры эти, конечно, не отражают и малой доли всех реально встречающихся задач, но относятся к различным классам цифровых устройств.
Различные клавиатуры с большим количеством клавиш (кнопок) широко используются в цифровых системах: в компьютерах, контроллерах, измерительных приборах, в бытовой технике. Основная задача любой клавиатуры довольно проста: она должна при любом нажатии на клавишу выдавать код номера этой клавиши и сигнал флага нажатия клавиши (строб этого кода). Получив этот сигнал флага, внешнее устройство читает код нажатой клавиши и предпринимает требуемые действия.
Главная задача при проектировании клавиатуры состоит в минимизации аппаратных затрат и в обеспечении надежного срабатывания в любой ситуации. Существует масса схемотехнических решений этой задачи — от примитивных до сложнейших. Клавиатуры могут быть механическими, квазисенсорными или сенсорными, клавиатуры могут иметь жесткую логику работы или быть интеллектуальными, даже допускать перепрограммирование. Мы будем в качестве примера рассматривать самую простую механическую клавиатуру с жесткой логикой работы.
Количество клавиш полноразмерной клавиатуры компьютера превышает сотню, поэтому мы будем проектировать клавиатуру
на максимальное количество клавиш, равное 128. Естественно,
Очень часто удобным и эффективным приемом является начало
В нашем случае необходимо сначала определиться, что должна выдавать вовне
Альтернативное решение — сохранение кода нажатой клавиши и сигнала флага до момента чтения выходного кода внешним устройством — конечно же, снижает требование к быстродействию читающего внешнего устройства, однако оно может привести к тому, что некоторые нажатия клавиш останутся без реакции, не будут обработаны.
Также необходимо определиться, как
При проектировании механической клавиатуры важно решить, как будет обрабатываться неизбежно присутствующий
дребезг механических контактов клавиш. Его можно обрабатывать как внутри клавиатуры, так и вне ее (то есть перенести
эту функцию на внешнее устройство). Оба эти подхода имеют свои преимущества. Но наша
В результате временная диаграмма работы разрабатываемой клавиатуры может быть упрощенно представлена в виде рис. 14.1. Здесь сигнал флага начинается при фиксации единичного сигнала с клавиши (это может быть как во время дребезга, так и после его окончания). После выставления флага фиксируется выходной код клавиши. После отпускания клавиши (нулевой сигнал), через время задержки tзад снимается сигнал флага. Время задержки должно быть заведомо больше времени дребезга контактов. Выходной код может сохраняться после отпускания клавиши до следующего нажатия, а может и сниматься.
(рис 14.1) Временная диаграмма работы клавиатурыДальнейшая разработка невозможна без выбора принципа преобразования сигналов от нажатия клавиш в код номера нажатой клавиши.
Простейшим путем построения подобного преобразователя является использование приоритетных шифраторов (рис. 14.2).
Каждая
(рис 14.2) Простейший преобразователь для клавиатурыДругим путем построения преобразователя является использование так называемой коммутационной матрицы,
состояние которой периодически опрашивается с частотой
Наиболее универсальная схема преобразователя, легко наращиваемая и достаточно простая, приведена на рис. 14.3.
Для опроса коммутационной матрицы применяется счетчик, тактируемый генератором. Старшие разряды счетчика
используются для выбора одной из строк матрицы с помощью
(рис 14.3) Преобразователь с опросом всех клавишСовмещение двух рассмотренных подходов позволяет создавать достаточно большие клавиатуры с малыми аппаратурными затратами и малым временем опроса.
При таком комбинированном методе (рис. 14.4) также используется коммутационная матрица с
В нашем случае
(рис 14.4) Преобразователь с опросом строк клавиш Оценим, какой должна быть частота
Выходной сигнал "–Нажатие", конечно же, будет иметь короткие паразитные импульсы. Во-первых, они будут возникать
из-за дребезга контактов нажатой в данный момент клавиши. Во-вторых, они могут появляться из-за переходных процессов
при переключении счетчика и
Чтобы исключить действие паразитных импульсов из-за переходных процессов при переключении счетчика и
Исключение коротких выходных импульсов из-за дребезга контактов клавиш сложнее. Прежде всего, на время нажатия
клавиши целесообразно остановить опрос строк с помощью сигнала "–Запрет". Затем надо обработать сигнал "?Нажатие"
по принципу, показанному на рис. 14.1. Будем считать, что при дребезге контактов длительность кратковременного
размыкания не превышает периода
Схема выработки выходных сигналов клавиатуры приведена на рис. 14.5.
(рис 14.5) Схема выработки выходных сигналов клавиатурыТриггер Т1 перебрасывается в единицу (на
Цепочка триггеров Т3 и Т4, тактируемая сигналом "Такт", служит для задержки снятия сигнала флага после отпускания
клавиши (когда сигнал "–Нажатие" становится равным единице). После установки флага в единицу, сигнал флага начинает
записываться по фронту сигнала "–Такт" в триггеры Т3 и Т4, но только в том случае, когда сигнал "–Нажатие"
установлен в единицу. В результате на
Если кратковременное размыкание при дребезге контактов клавиш длится более 2,5 мс, то можно увеличить количество триггеров в последовательной цепочке (Т3 и Т4), что приведет к увеличению задержки снятия сигнала флага на целое число тактов генератора.
Таким образом, схема полностью разработана. Отметим, что низкая тактовая частота работы схемы позволяет нам не
рассчитывать задержек микросхем, то есть использовать только первый
Различные контрольные суммы широко применяются в цифровых устройствах и системах для контроля правильности хранения
или передачи массивов информации. Суть этого метода контроля проста: к хранимому или передаваемому информационному
массиву присоединяется небольшой контрольный код (обычно от 1 разряда до 32 разрядов), в котором в свернутом виде
содержится информация обо всем массиве. При чтении или получении этого массива еще раз вычисляется тот же самый
контрольный код по тому же самому алгоритму. Если этот вновь вычисленный код равен тому коду, который был присоединен
к массиву, то считается, что массив сохранен или передан без ошибок. Логика здесь следующая: контрольный код
(он же
Контрольные суммы применяются при хранении данных в памяти (оперативной и постоянной), при хранении данных на магнитных носителях (дисках, лентах), в локальных и глобальных сетях передачи информации. В случае защиты контрольной суммой хранимой информации можно определить, что данный массив (файл, сектор на диске) испорчен и его нельзя использовать. В случае защиты контрольной суммой передаваемой по сети информации приемник может потребовать от передатчика повторной передачи искаженного массива.
Существует множество способов вычисления контрольной суммы, различающихся степенью сложности вычисления и
надежностью выявления ошибок. Но наибольшее распространение получил в настоящее время так называемый "циклический
метод контроля по избыточности" или
Вычисляется циклическая
Мы не будем углубляться в математическое обоснование этого метода. Интересующиеся читатели могут обратиться
к специальной литературе. Здесь же мы отметим только, что данный метод выявляет одиночные ошибки в массиве с
вероятностью 100%, а любое другое количество ошибок с вероятностью, примерно равной 1–2-n, где n — количество
разрядов контрольной суммы (это верно только при условии, что N гораздо больше n, что, впрочем, почти всегда выполняется).
Например, при n = 8 данная вероятность составит 0,996, для n = 16 она будет равна 0,999985, а для n = 32 она будет
0,9999999997672. Иначе говоря, почти все ошибки будут выявляться.
А теперь кратко поясним, что такое
(рис 14.6) Вычисление циклической контрольной суммыКак практически реализовать вычисление этого остатка (контрольной суммы)? Можно сделать это по приведенному
здесь принципу деления в столбик (аппаратно или программно). Но в любом случае это довольно громоздко и медленно.
Ускорить процесс вычисления можно, воспользовавшись табличным методом. Для этого составляется таблица чисел размером 2nхn, где n — разрядность контрольной суммы. Принцип вычисления чисел в таблице очень прост (табл. 14.1).
| Адрес в таблице | Данные в таблице (числа) |
|---|---|
| 0 | 0 |
| 1 | Остаток от деления числа 1 0000 0000 на полином |
| 2 | Остаток от деления числа 10 0000 0000 на полином |
| 3 | Остаток от деления числа 11 0000 0000 на полином |
| 4 | Остаток от деления числа 100 0000 0000 на полином |
| 5 | Остаток от деления числа 101 0000 0000 на полином |
| $$\dots$$ | $$\dots$$ |
| 255 | Остаток от деления числа 1111 1111 0000 0000 на полином |
Числа представляют собой остаток от деления по модулю 2 числа с n конечными нулями (в нашем примере n = 8) и с n начальными разрядами, равными номеру числа (его адресу) в таблице. Деление производится на выбранный полином (в нашем случае — 9-разрядный). Таблица вычисляется один раз и хранится на диске или в ПЗУ.
Алгоритм вычисления контрольной суммы с помощью этой таблицы следующий (рассматриваем случай n = 8). Берем
первый байт нашего информационного массива. Рассматриваем его как адрес в таблице (номер числа). Берем из таблицы
число с полученным номером — получаем остаток О1. Берем второй байт массива и складываем его по модулю 2 с остатком О1. Полученное число используем как адрес в таблице. По этому адресу выбираем из таблицы остаток О2. Берем третий
байт массива, складываем его по модулю 2 с остатком О2. Используя это число как адрес в таблице, выбираем из нее
остаток О3 и так продолжаем до последнего байта массива. Естественно, это будет гораздо быстрее, чем вычисление
"в столбик".
Реализация этого алгоритма с помощью цифровых схем требует только ПЗУ с организацией 2nхn (256х8 при
8-разрядной контрольной сумме), n-разрядного регистра и n элементов Исключающее ИЛИ (рис. 14.7). В ПЗУ заносится
таблица промежуточных остатков (табл. 14.1), на вход схемы подаются один за другим байты массива, сопровождаемые
стробом. Адресом ПЗУ служит сумма по модулю 2 входных данных и содержимого выходного регистра, в который по сигналу
строба записывается выходной код ПЗУ. Перед началом вычисления состояние регистра обнуляется. После окончания всего
массива в регистре образуется циклическая
Недостаток данной схемы параллельного вычислителя очевиден: в случае большого числа разрядов контрольной суммы требуется очень большой объем ПЗУ (64Кх16 для 16-разрядной суммы и 4Гх32 для 32-разрядной суммы). Поэтому она применяется сравнительно редко. Зато параллельный вычислитель обладает высоким быстродействием (байты могут поступать с периодом, равным сумме задержки выходного регистра, времени выборки адреса ПЗУ и задержки элемента Исключающее ИЛИ).
(рис 14.7) Параллельный вычислитель 8-разрядной циклической контрольной суммы на ПЗУДля многоразрядной контрольной суммы чаще применяется другой подход — вычисление в последовательном коде, при котором массив данных поступает на вычислитель последовательно, бит за битом. Последовательный вычислитель контрольной суммы представляет собой сдвиговый регистр с обратными связями от некоторых разрядов через сумматоры по модулю 2 (то есть элементы Исключающее ИЛИ). Полное количество разрядов регистра сдвига должно быть равно разрядности вычисляемой контрольной суммы (или, что то же самое, быть на единицу меньше разрядности используемого полинома). Место включения обратных связей однозначно определяется выбранным полиномом. Это очень похоже на генератор квазислучайной последовательности.
Количество точек включения обратной связи определяется количеством единиц в полиноме (единица в младшем разряде не учитывается), а номера разрядов сдвигового регистра, с которых берутся сигналы обратной связи, определяются номерами единичных разрядов в коде полинома. В отличие от генератора квазислучайного сигнала, в данном случае необходимо смешать по функции Исключающее ИЛИ не только сигналы обратной связи, но и входной сигнал данных в последовательном коде.
(рис 14.8) Последовательный вычислитель 16-разрядной циклической контрольной суммы на регистре сдвигаНа рис. 14.8 приведен пример последовательного вычислителя 16-разрядной циклической контрольной суммы при
выбранном полиноме 1 0001 0000 0010 0001 или 11021 в 16-ричном коде (рекомендация МККТТ V.41). Так как в
коде полинома три единицы (без младшего разряда), необходимо взять три точки включения обратной связи. При этом
номера разрядов сдвигового регистра, к которым подключаются обратные связи, определяются положением единичных
битов в полиноме. Перед началом работы сдвиговый регистр необходимо сбросить в нуль (сигнал "–Сброс"). Биты
массива должны сопровождаться сигналом строба. После окончания массива в регистре будет циклическая
Может показаться, что такой последовательный вычислитель не слишком удобен из-за того, что данные массива должны подаваться на него в последовательном коде. Однако именно в последовательном коде передаются данные в информационных сетях, и в последовательном коде записываются данные на магнитные носители. Поэтому во всех подобных случаях последовательные вычислители идеально подходят.
Период поступления битов массива на последовательный вычислитель не должен быть меньше суммы задержки регистра сдвига и элементов Исключающее ИЛИ. В итоге предельная скорость вычисления циклической контрольной суммы оказывается значительно меньшей, чем в случае параллельного вычислителя. Это также недостаток данного метода вычисления.
В предыдущих лекциях были рассмотрены базовые элементы цифровой схемотехники и простейшие приемы проектирования узлов на их основе. Но для разработки сложных устройств и систем всех этих знаний порой оказывается недостаточно.
Чтобы создать сложное устройство, необходимо еще владеть приемами системотехники, то есть уметь на основании анализа функций, которые должно выполнять устройство в целом, спроектировать его структуру, сформулировать принципы взаимодействия узлов, четко определить все задачи, которые должен решать каждый из узлов, выработать требования к отдельным узлам. Возможно, в результате всех этих шагов будет изменена сама первоначальная задача, будут переформулированы требования к создаваемому устройству, к его месту в системе, к принципам его взаимодействия с другими устройствами. И только потом, после всей этой предварительной работы уже можно переходить к разработке узлов, собственно к схемотехнике.
Приемы системотехники сформулировать, формализовать, описать, даже перечислить гораздо сложнее, чем приемы схемотехники. Да и пользы от такой формализации зачастую немного. Проектирование сложного, надежно работающего цифрового устройства с минимальными аппаратными затратами сродни искусству и требует от разработчика определенных способностей, даже таланта. Научить этому практически невозможно. Более того, попытка научить системотехнике может даже принести вред, так как ограничит творческие способности разработчика несколькими жесткими стандартными алгоритмами.
Однако можно показать несколько простейших примеров разработки, продемонстрировать последовательность шагов, которые необходимы при проектировании, которые могут встретиться в процессе создания устройств некоторых распространенных типов. Исходя из этих примеров, разработчик может в дальнейшем попробовать по аналогии создать что-то свое, более или менее совершенное, но обязательно работоспособное.
Поэтому в данной лекции как раз и будут подробно рассмотрены несколько простых примеров проектирования сравнительно сложных устройств на всех этапах: от анализа решаемой задачи до создания полной принципиальной схемы. Примеры эти, конечно, не отражают и малой доли всех реально встречающихся задач, но относятся к различным классам цифровых устройств.
Различные клавиатуры с большим количеством клавиш (кнопок) широко используются в цифровых системах: в компьютерах, контроллерах, измерительных приборах, в бытовой технике. Основная задача любой клавиатуры довольно проста: она должна при любом нажатии на клавишу выдавать код номера этой клавиши и сигнал флага нажатия клавиши (строб этого кода). Получив этот сигнал флага, внешнее устройство читает код нажатой клавиши и предпринимает требуемые действия.
Главная задача при проектировании клавиатуры состоит в минимизации аппаратных затрат и в обеспечении надежного срабатывания в любой ситуации. Существует масса схемотехнических решений этой задачи — от примитивных до сложнейших. Клавиатуры могут быть механическими, квазисенсорными или сенсорными, клавиатуры могут иметь жесткую логику работы или быть интеллектуальными, даже допускать перепрограммирование. Мы будем в качестве примера рассматривать самую простую механическую клавиатуру с жесткой логикой работы.
Количество клавиш полноразмерной клавиатуры компьютера превышает сотню, поэтому мы будем проектировать клавиатуру
на максимальное количество клавиш, равное 128. Естественно,
Очень часто удобным и эффективным приемом является начало
В нашем случае необходимо сначала определиться, что должна выдавать вовне
Альтернативное решение — сохранение кода нажатой клавиши и сигнала флага до момента чтения выходного кода внешним устройством — конечно же, снижает требование к быстродействию читающего внешнего устройства, однако оно может привести к тому, что некоторые нажатия клавиш останутся без реакции, не будут обработаны.
Также необходимо определиться, как
При проектировании механической клавиатуры важно решить, как будет обрабатываться неизбежно присутствующий
дребезг механических контактов клавиш. Его можно обрабатывать как внутри клавиатуры, так и вне ее (то есть перенести
эту функцию на внешнее устройство). Оба эти подхода имеют свои преимущества. Но наша
В результате временная диаграмма работы разрабатываемой клавиатуры может быть упрощенно представлена в виде рис. 14.1. Здесь сигнал флага начинается при фиксации единичного сигнала с клавиши (это может быть как во время дребезга, так и после его окончания). После выставления флага фиксируется выходной код клавиши. После отпускания клавиши (нулевой сигнал), через время задержки tзад снимается сигнал флага. Время задержки должно быть заведомо больше времени дребезга контактов. Выходной код может сохраняться после отпускания клавиши до следующего нажатия, а может и сниматься.
(рис 14.1) Временная диаграмма работы клавиатурыДальнейшая разработка невозможна без выбора принципа преобразования сигналов от нажатия клавиш в код номера нажатой клавиши.
Простейшим путем построения подобного преобразователя является использование приоритетных шифраторов (рис. 14.2).
Каждая
(рис 14.2) Простейший преобразователь для клавиатурыДругим путем построения преобразователя является использование так называемой коммутационной матрицы,
состояние которой периодически опрашивается с частотой
Наиболее универсальная схема преобразователя, легко наращиваемая и достаточно простая, приведена на рис. 14.3.
Для опроса коммутационной матрицы применяется счетчик, тактируемый генератором. Старшие разряды счетчика
используются для выбора одной из строк матрицы с помощью
(рис 14.3) Преобразователь с опросом всех клавишСовмещение двух рассмотренных подходов позволяет создавать достаточно большие клавиатуры с малыми аппаратурными затратами и малым временем опроса.
При таком комбинированном методе (рис. 14.4) также используется коммутационная матрица с
В нашем случае
(рис 14.4) Преобразователь с опросом строк клавишОценим, какой должна быть частота
Выходной сигнал "–Нажатие", конечно же, будет иметь короткие паразитные импульсы. Во-первых, они будут возникать
из-за дребезга контактов нажатой в данный момент клавиши. Во-вторых, они могут появляться из-за переходных процессов
при переключении счетчика и
Чтобы исключить действие паразитных импульсов из-за переходных процессов при переключении счетчика и
Исключение коротких выходных импульсов из-за дребезга контактов клавиш сложнее. Прежде всего, на время нажатия
клавиши целесообразно остановить опрос строк с помощью сигнала "–Запрет". Затем надо обработать сигнал "?Нажатие"
по принципу, показанному на рис. 14.1. Будем считать, что при дребезге контактов длительность кратковременного
размыкания не превышает периода
Схема выработки выходных сигналов клавиатуры приведена на рис. 14.5.
(рис 14.5) Схема выработки выходных сигналов клавиатурыТриггер Т1 перебрасывается в единицу (на
Цепочка триггеров Т3 и Т4, тактируемая сигналом "Такт", служит для задержки снятия сигнала флага после отпускания
клавиши (когда сигнал "–Нажатие" становится равным единице). После установки флага в единицу, сигнал флага начинает
записываться по фронту сигнала "–Такт" в триггеры Т3 и Т4, но только в том случае, когда сигнал "–Нажатие"
установлен в единицу. В результате на
Если кратковременное размыкание при дребезге контактов клавиш длится более 2,5 мс, то можно увеличить количество триггеров в последовательной цепочке (Т3 и Т4), что приведет к увеличению задержки снятия сигнала флага на целое число тактов генератора.
Таким образом, схема полностью разработана. Отметим, что низкая тактовая частота работы схемы позволяет нам не
рассчитывать задержек микросхем, то есть использовать только первый
Различные контрольные суммы широко применяются в цифровых устройствах и системах для контроля правильности хранения
или передачи массивов информации. Суть этого метода контроля проста: к хранимому или передаваемому информационному
массиву присоединяется небольшой контрольный код (обычно от 1 разряда до 32 разрядов), в котором в свернутом виде
содержится информация обо всем массиве. При чтении или получении этого массива еще раз вычисляется тот же самый
контрольный код по тому же самому алгоритму. Если этот вновь вычисленный код равен тому коду, который был присоединен
к массиву, то считается, что массив сохранен или передан без ошибок. Логика здесь следующая: контрольный код
(он же
Контрольные суммы применяются при хранении данных в памяти (оперативной и постоянной), при хранении данных на магнитных носителях (дисках, лентах), в локальных и глобальных сетях передачи информации. В случае защиты контрольной суммой хранимой информации можно определить, что данный массив (файл, сектор на диске) испорчен и его нельзя использовать. В случае защиты контрольной суммой передаваемой по сети информации приемник может потребовать от передатчика повторной передачи искаженного массива.
Существует множество способов вычисления контрольной суммы, различающихся степенью сложности вычисления и
надежностью выявления ошибок. Но наибольшее распространение получил в настоящее время так называемый "циклический
метод контроля по избыточности" или
Вычисляется циклическая
Мы не будем углубляться в математическое обоснование этого метода. Интересующиеся читатели могут обратиться
к специальной литературе. Здесь же мы отметим только, что данный метод выявляет одиночные ошибки в массиве с
вероятностью 100%, а любое другое количество ошибок с вероятностью, примерно равной 1–2-n, где n — количество
разрядов контрольной суммы (это верно только при условии, что N гораздо больше n, что, впрочем, почти всегда выполняется).
Например, при n = 8 данная вероятность составит 0,996, для n = 16 она будет равна 0,999985, а для n = 32 она будет
0,9999999997672. Иначе говоря, почти все ошибки будут выявляться.
А теперь кратко поясним, что такое
(рис 14.6) Вычисление циклической контрольной суммыКак практически реализовать вычисление этого остатка (контрольной суммы)? Можно сделать это по приведенному
здесь принципу деления в столбик (аппаратно или программно). Но в любом случае это довольно громоздко и медленно.
Ускорить процесс вычисления можно, воспользовавшись табличным методом. Для этого составляется таблица чисел размером 2nхn, где n — разрядность контрольной суммы. Принцип вычисления чисел в таблице очень прост (табл. 14.1).
| Адрес в таблице | Данные в таблице (числа) |
|---|---|
| 0 | 0 |
| 1 | Остаток от деления числа 1 0000 0000 на полином |
| 2 | Остаток от деления числа 10 0000 0000 на полином |
| 3 | Остаток от деления числа 11 0000 0000 на полином |
| 4 | Остаток от деления числа 100 0000 0000 на полином |
| 5 | Остаток от деления числа 101 0000 0000 на полином |
| $$\dots$$ | $$\dots$$ |
| 255 | Остаток от деления числа 1111 1111 0000 0000 на полином |
Числа представляют собой остаток от деления по модулю 2 числа с n конечными нулями (в нашем примере n = 8) и с n начальными разрядами, равными номеру числа (его адресу) в таблице. Деление производится на выбранный полином (в нашем случае — 9-разрядный). Таблица вычисляется один раз и хранится на диске или в ПЗУ.
Алгоритм вычисления контрольной суммы с помощью этой таблицы следующий (рассматриваем случай n = 8). Берем
первый байт нашего информационного массива. Рассматриваем его как адрес в таблице (номер числа). Берем из таблицы
число с полученным номером — получаем остаток О1. Берем второй байт массива и складываем его по модулю 2 с остатком О1. Полученное число используем как адрес в таблице. По этому адресу выбираем из таблицы остаток О2. Берем третий
байт массива, складываем его по модулю 2 с остатком О2. Используя это число как адрес в таблице, выбираем из нее
остаток О3 и так продолжаем до последнего байта массива. Естественно, это будет гораздо быстрее, чем вычисление
"в столбик".
Реализация этого алгоритма с помощью цифровых схем требует только ПЗУ с организацией 2nхn (256х8 при
8-разрядной контрольной сумме), n-разрядного регистра и n элементов Исключающее ИЛИ (рис. 14.7). В ПЗУ заносится
таблица промежуточных остатков (табл. 14.1), на вход схемы подаются один за другим байты массива, сопровождаемые
стробом. Адресом ПЗУ служит сумма по модулю 2 входных данных и содержимого выходного регистра, в который по сигналу
строба записывается выходной код ПЗУ. Перед началом вычисления состояние регистра обнуляется. После окончания всего
массива в регистре образуется циклическая
Недостаток данной схемы параллельного вычислителя очевиден: в случае большого числа разрядов контрольной суммы требуется очень большой объем ПЗУ (64Кх16 для 16-разрядной суммы и 4Гх32 для 32-разрядной суммы). Поэтому она применяется сравнительно редко. Зато параллельный вычислитель обладает высоким быстродействием (байты могут поступать с периодом, равным сумме задержки выходного регистра, времени выборки адреса ПЗУ и задержки элемента Исключающее ИЛИ).
(рис 14.7) Параллельный вычислитель 8-разрядной циклической контрольной суммы на ПЗУДля многоразрядной контрольной суммы чаще применяется другой подход — вычисление в последовательном коде, при котором массив данных поступает на вычислитель последовательно, бит за битом. Последовательный вычислитель контрольной суммы представляет собой сдвиговый регистр с обратными связями от некоторых разрядов через сумматоры по модулю 2 (то есть элементы Исключающее ИЛИ). Полное количество разрядов регистра сдвига должно быть равно разрядности вычисляемой контрольной суммы (или, что то же самое, быть на единицу меньше разрядности используемого полинома). Место включения обратных связей однозначно определяется выбранным полиномом. Это очень похоже на генератор квазислучайной последовательности.
Количество точек включения обратной связи определяется количеством единиц в полиноме (единица в младшем разряде не учитывается), а номера разрядов сдвигового регистра, с которых берутся сигналы обратной связи, определяются номерами единичных разрядов в коде полинома. В отличие от генератора квазислучайного сигнала, в данном случае необходимо смешать по функции Исключающее ИЛИ не только сигналы обратной связи, но и входной сигнал данных в последовательном коде.
(рис 14.8) Последовательный вычислитель 16-разрядной циклической контрольной суммы на регистре сдвигаНа рис. 14.8 приведен пример последовательного вычислителя 16-разрядной циклической контрольной суммы при
выбранном полиноме 1 0001 0000 0010 0001 или 11021 в 16-ричном коде (рекомендация МККТТ V.41). Так как в
коде полинома три единицы (без младшего разряда), необходимо взять три точки включения обратной связи. При этом
номера разрядов сдвигового регистра, к которым подключаются обратные связи, определяются положением единичных
битов в полиноме. Перед началом работы сдвиговый регистр необходимо сбросить в нуль (сигнал "–Сброс"). Биты
массива должны сопровождаться сигналом строба. После окончания массива в регистре будет циклическая
Может показаться, что такой последовательный вычислитель не слишком удобен из-за того, что данные массива должны подаваться на него в последовательном коде. Однако именно в последовательном коде передаются данные в информационных сетях, и в последовательном коде записываются данные на магнитные носители. Поэтому во всех подобных случаях последовательные вычислители идеально подходят.
Период поступления битов массива на последовательный вычислитель не должен быть меньше суммы задержки регистра сдвига и элементов Исключающее ИЛИ. В итоге предельная скорость вычисления циклической контрольной суммы оказывается значительно меньшей, чем в случае параллельного вычислителя. Это также недостаток данного метода вычисления.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.