- •Содержание
- •Понятие вычислительной системы
- •Организация микроконтроллерных систем управления
- •Микроконтроллеры. Основные сведения
- •Интерфейсы связи с датчиками Сигнальные интерфейсы и цифровые интерфейсы
- •Прием импульсно-дискретных сигналов
- •Демодуляция квадратурно-модулированного сигнала
- •Прием аналоговых сигналов
- •Схемотехника ацп
- •Ацп последовательного счета
- •Ацп последовательного приближения
- •Расширение разрядности. Метод передискретизации
- •Стандартные интерфейсы связи Интерфейсы связи
- •Топологии сетей
- •Последовательный интерфейс i2с
- •Состояние старт и стоп
- •Подтверждение
- •Адресация в шине i2c
- •Преимущества
- •Последовательный интерфейс spi Введение
- •Электрическое подключение
- •Протокол передачи
- •Cравнение с шиной i2c
- •Последовательный интерфейс rs-232
- •Can интерфейс
- •Описание стандарта
- •Контроль ошибок
- •Скорость передачи и длина сети
- •Методы выявления и устранения ошибок данных при передаче
- •Блоковые коды
- •Свёрточные коды
- •Коды обнаружения Циклический избыточный код (crc)
- •Бит чётности
- •Формализованный алгоритм расчёта crc16
- •Корректирующие коды
- •Каскадное кодирование. Итеративное декодирование
- •Выбор кода
- •Некоторые методы (алгоритмы) обработки сигналов
- •Калибровка сигнала
- •Компенсация сигнала
- •Табличные вычисления и тарировочные таблицы Табличные вычисления
- •Тарировочные таблицы
- •Коррекция нуля, обнуление
- •Фильтрация
- •Разностное уравнение дискретного фильтра
- •Рекурсивные (бих) и нерекурсивные (ких) фильтры
- •Устойчивость
- •Зависимости частотных свойств звеньев системы регулирования
- •Регуляторы
- •Регулятор типа п – пропорциональный
- •Регулятор типа пи – пропорционально-интегральный
- •Регулятор типа пид – пропорционально-интегрально-дифференциальный
- •Реализация регуляторов
- •Примерная реализация ядра регулятора на языке Си
- •Выбор длительности такта
- •Вычисления с плавающей и фиксированной точкой
- •Основы технологии разработки программного обеспечения Структура программы на языке Си
- •Компиляция программы
- •Директивы препроцессора
- •Присоединение файла
- •Макросы
- •Условная компиляция
- •Типы переменных
- •Математические операторы
- •Операторы цикла
- •Условный оператор
- •Оператор выбора
Блоковые коды
Пусть кодируемая информация делится на фрагменты длиной k бит, которые преобразуются в кодовые слова длиной n бит. Тогда соответствующий блоковый код обычно обозначают . При этом число называется скоростью кода.
Если исходные k бит код оставляет неизменными, и добавляет n − k проверочных, такой код называется систематическим, иначе несистематическим.
Задать блоковый код можно по-разному, в том числе таблицей, где каждой совокупности из k информационных бит сопоставляется n бит кодового слова. Однако, хороший код должен удовлетворять, как минимум, следующим критериям:
способность исправлять как можно большее число ошибок,
как можно меньшая избыточность,
простота кодирования и декодирования.
Нетрудно видеть, что приведённые требования противоречат друг другу. Именно поэтому существует большое количество кодов, каждый из которых пригоден для своего круга задач.
Практически все используемые коды являются линейными. Это связано с тем, что нелинейные коды значительно сложнее исследовать, и для них трудно обеспечить приемлемую лёгкость кодирования и декодирования.
Расстоянием Хемминга (метрикой Хемминга) между двумя кодовыми словами называется количество отличных бит на соответствующих позициях.
Корректирующая способность определяет, сколько ошибок передачи кода можно гарантированно исправить. То есть вокруг каждого кодового слова A имеем t-окрестность At, которая состоит из всех возможных вариантов передачи кодового слова A с числом ошибок не более t. Никакие две окрестности двух любых кодовых слов не пересекаются друг с другом, так как расстояние между кодовыми словами (то есть центрами этих окрестностей) всегда больше двух их радиусов.
Свёрточные коды
Свёрточные коды, в отличие от блоковых, не делят информацию на фрагменты и работают с ней как со сплошным потоком данных.
Свёрточные коды, как правило, порождаются дискретной линейной инвариантной во времени системой. Поэтому, в отличие от большинства блоковых кодов, свёрточное кодирование — очень простая операция, чего нельзя сказать о декодировании.
Кодирование свёрточным кодом производится с помощью регистра сдвига, отводы от которого суммируются по модулю два. Таких сумм может быть две (чаще всего) или больше.
Декодирование свёрточных кодов, как правило, производится по алгоритму Витерби, который пытается восстановить переданную последовательность согласно критерию максимального правдоподобия.
Коды обнаружения Циклический избыточный код (crc)
Алгоритм CRC базируется на свойствах деления с остатком двоичных многочленов. Значение CRC является, по сути, остатком от деления многочлена, соответствующего входным данным, на некий фиксированный порождающий многочлен.
Бит чётности
Бит чётности или контрольный разряд формируется при выполнении операции «Исключающее-ИЛИ» поразрядно. Рассмотрим схему, использующую девятибитные кодовые слова, состоящие из восьми бит данных, за которыми следует, бит чётности.
Число 10111101 содержит 6 '1' битов. Бит чётности будет 0, получаем кодовое слово 101111010.
Число 01110011 содержит 5 '1' битов. Бит чётности будет 1, получаем кодовое слово 011100111.
Число 00000000 не содержит '1' битов. Бит чётности будет 0, получаем кодовое слово 000000000.
Бит четности – контрольная сумма и индикатор ошибок. Позволяет определить нечетные битовые ошибки (наличие нечетного количества инверсий). Если в передаваемой информации один бит инвертировался, то ошибка будет обнаружена, если инвертированы 2 бита, то ошибка не будет обнаружена. Также позволяет определить «замазываение».
Пустой или несуществующий поток битов также имеет ноль единичных битов, поэтому бит чётности будет 0.