Главная страница
Навигация по странице:

  • Контрольные вопросы

  • Практическая работа №68. Программирование микропроцессорных систем (контроль на четность/нечетность). 301Цель работы

  • Основные сведения.

  • Код «1 из m»

  • Код хэмминга для обнаружения и исправления ошибки

  • Практическая часть. Вначале построим код Хэмминга для передачи четырехбитового кода. Условие 1.

  • Условие 1.

  • Методические указания для практических занятий по дисциплине мдк. 02. 01


    Скачать 7.37 Mb.
    НазваниеМетодические указания для практических занятий по дисциплине мдк. 02. 01
    Дата09.09.2022
    Размер7.37 Mb.
    Формат файлаpdf
    Имя файлаMetod_Mikroprocessornye-sistemy_PZ_09.02.01_2020.pdf
    ТипМетодические указания
    #669073
    страница36 из 43
    1   ...   32   33   34   35   36   37   38   39   ...   43
    Практическая часть.
    Составить программу сложения двух целых 8-разрядных чисел:
    1) с использованием прямой регистровой адресации РОН. Результат сложения в этом и последующих пунктах задания сохранить в РОН. Значения операндов взять из задания лабораторной работы № 1 (числа А и В);
    2) с использованием непосредственной адресации оперативной памяти данных. Для этого зарезервировать в ОЗУ байты под слагаемые с помощью ди- ректив .byte. Занести слагаемые в зарезервированные ячейки ОЗУ командой STS с непосредственной адресацией. Сложить операнды, предварительно загрузив их в РОН командой LDS с непосредственной адресацией;
    3) с использованием косвенной адресации оперативной памяти данных. Адреса слагаемых в ОЗУ загрузить в регистры X и Y с помощью команды LDI и функций low и high. Занести

    300
    слагаемые в зарезервированные ячейки ОЗУ командой ST с косвенной адресацией. Сложить операнды, предварительно загрузив их в РОН командой LD с косвенной адресацией;
    4) с использованием косвенной адресации оперативной памяти данных со смещением.
    Для этого зарезервировать в ОЗУ байты под слагаемые в одной директиве .byte. Адрес начала блока данных загрузить в регистр Z с помощью команды LDI и функций low и high. Занести слагаемые в зарезервированные ячейки ОЗУ командой STD с косвенной адресацией со смещением. Сложить операнды, предварительно загрузив их в РОН командой LDD с косвенной адре- сацией со смещением;
    5) с использованием косвенной адресации оперативной памяти данных с предекрементом.
    Для этого зарезервировать в ОЗУ байты под слагаемые в одной директиве .byte. В регистр Z загрузить адрес ячейки ОЗУ, следующей за блоком зарезервированных байтов. Занести слагаемые в зарезервированные ячейки ОЗУ командой ST с косвенной адресацией с предекрементом. Сложить операнды, предварительно загрузив их в РОН командой LD c косвенной адресацией ячеек ОЗУ с предекрементом;
    6) с использованием косвенной адресации оперативной памяти данных с постинкрементом. Для этого зарезервировать в ОЗУ байты под слагаемые в одной директиве
    .byte. В регистр Z загрузить адрес начала блока зарезервиро- ванных байтов. Занести слагаемые в зарезервированные ячейки ОЗУ командой ST с косвенной адресацией с постинкрементом.
    Сложить операнды, предвари- тельно загрузив их в РОН командой LD с косвенной адресацией с постинкре- ментом;
    7) с использованием адресации константы в памяти программ. Для этого задать слагаемые в памяти программ в одной директиве .db. Сложить операнды, предварительно загрузив их в
    РОН с помощью команды LPM. Для пересылки слагаемых между РОН использовать команду
    MOV;
    8) с использованием адресации константы в памяти программ с постинкрементом. Для загрузки слагаемых в РОН использовать команду LPM с постинкрементом. В диалоговом окне
    AVR Simulator Options в разделе Device Selection установить тактовую частоту моделирования работы микроконтроллера, равную 8,0 МГц (поле Frequency).
    Выполнить трансляцию и отладку созданных программ. По данным, выводимым после трансляции на закладке Build окна Output, проанализировать использование памяти программ
    (Program memory usage) под код программы (Code) и константы (Constants), оценить объём неиспользованной (Unused) и общей занятой (Total) памяти. Занести эти сведения в отчёт.
    При отладке программ использовать средства наблюдения за содержимым регистров и ячеек памяти. По полю Cycle Counter объекта Processor закладки I/O окна Workspace определить число тактов выполнения программы, по полю Stop Watch – время выполнения программы (до выполнения команды, организующей бесконечный цикл). Зафиксировать эти сведения в отчёте.
    По результатам выполнения программ сделать выводы.
    9) Оформить отчет. Отчёт должен содержать: титульный лист с указанием номера и названия работы, номера группы и фамилий выполнивших работу; цель работы; листинги трансляции программ и сведения, указанные в задании; схемы образования адреса для использованных способов адресации.
    Контрольные вопросы
    1. Адресация РОН и регистров ввода-вывода AVR-микроконтроллеров.
    2. Способы адресации памяти данных AVR-микроконтроллеров.
    3. Способы адресации памяти программ AVR-микроконтроллеров.
    4. Особенности выполнения арифметических и логических операций в AVR- микроконтроллерах.
    5. Назначение и использование регистров X, Y и Z.
    Практическая работа №68. Программирование микропроцессорных систем
    (контроль на четность/нечетность).

    301
    Цель работы: изучение методов контроля на четность/нечетность.
    Основные сведения.
    Наиболее часто для обнаружения ошибок используется контроль на четность/нечетность передаваемой информации. При таком контроле блок информации, передаваемый от источника к приемнику, должен содержать соответственно четное/нечетное число единиц.
    Источник формирует передаваемый блок информации так, чтобы это выполнялось.
    Приемник проверяет выполнение этого условия. Если четность/нечетность нарушена, то считается, что произошла ошибка при передаче информации. Приемник сообщает об этом источнику, и источник заново посылает этот блок информации. Передаваемый блок информации состоит из информационных битов и одного контрольного:
    ПЕРЕДАВАЕМЫЙ БЛОК ИНФОРМАЦИИ
    ИНФОРМАЦИОННЫЕ БИТЫ
    КОНТРОЛЬНЫЙ БИТ
    X
    1
    ,X
    2
    ,…,X
    n
    K
    При контроле на четность в бит K записывается сумма по модулю 2 информационных разрядов. При контроле на нечетность записывается инверсное значение этой суммы.
    Рассмотрим пример такого контроля. Пусть от источника к приемнику надо переслать 8 бит информации с контролем на четность.
    Тогда пересылаемый блок информации должен содержать 9 бит.
    Пример. Переслать код 01110101.
    Побитное сложение по модулю для этого кода дает значение, равное 1. Тогда значение контрольного бита должно равняться 1, чтобы передаваемый код содержал четное число единиц.
    ПЕРЕДАТЧИК
    ПРИЕМНИК комментарий информационные биты контрольный бит принятые биты сумма по mod 2 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 нет ошибки
    0 1 1 1 1 1 0 1 1 1 есть ошибка
    Код Джонсона
    Последовательность чисел в этом коде моделируется односторонним последовательным заполнением его разрядов вначале единицами, а затем нулями (таблица). Код Джонсона легко формируется с помощью регистров сдвига и легко дешифруется.
    Код «1 из m»
    Для случая m=8 представлен в таблице. Этот код характерен тем, что в любой кодовой комбинации присутствует только одна единица, что позволяет легко находить ошибки в случае искажения кода, и не требуется его дешифрация. Данный код, как и код Джонсона, является избыточным, требующим для своего изображения больше разрядов, чем соответствующие неизбыточные коды.
    S
    КОД ДЖОНСОНА
    КОД «1 из 8»
    0 0 0 0 0 0 0 0 0 0 0 0 1 1
    0 0 0 1 0 0 0 0 0 0 1 0 2
    0 0 1 1 0 0 0 0 0 1 0 0 3
    0 1 1 1 0 0 0 0 1 0 0 0

    302 4
    1 1 1 1 0 0 0 1 0 0 0 0 5
    1 1 1 0 0 0 1 0 0 0 0 0 6
    1 1 0 0 0 1 0 0 0 0 0 0 7
    1 0 0 0 1 0 0 0 0 0 0 0
    Код хэмминга для обнаружения и исправления ошибки
    Исправлять ошибку при приеме информации труднее, чем ее обнаруживать. Исправление ошибки предполагает два совмещенных процесса: обнаружение факта, что есть ошибка, и определение ее места. После решения этих двух задач, исправление тривиально – надо инвертировать значение ошибочного бита. В наземных каналах связи, где вероятность ошибки невелика, обычно используется только метод обнаружения ошибки и повторной пересылки блока информации, содержавшего ошибку. Для спутниковых каналов с типичными для них большими задержками коррекция ошибки становится необходимой. Здесь используется код
    Хэмминга.
    Код Хэмминга представляет собой блочный код, который позволяет выявить и исправить ошибочно переданный бит в пределах переданного блока. Блочными называются коды, в которых информационный поток символов разбивается на отрезки, и каждый из них преобразуется в определенную последовательность (блок) кодовых символов. В блочных кодах кодирование при передаче (формирование проверочных элементов) и декодирование при приеме
    (обнаружение и исправление ошибок) выполняются в пределах каждой кодовой комбинации
    (блока) в отдельности по соответствующим алгоритмам.
    Обычно код Хэмминга характеризуется двумя целыми числами, например, код (11,7), используемый при передаче семибитных ASCII-кодов. Такая запись говорит, что при передаче семибитного кода используется дополнительно четыре контрольных бита (7+4=11). При этом предполагается, что может иметь место ошибка в одном бите и что ошибка в двух или более битах существенно менее вероятна. С учетом этого исправление ошибки осуществляется с определенной вероятностью.
    При рассмотрении кода Хэмминга требуется знать, что такое кодовое расстояние.
    Кодовое расстояние между двумя двоичными кодами одинаковой длины определяется количеством битов, в которых эти коды отличаются.
    Пример 1. Кодовое расстояние между «кодом 1» и «кодом 2» равно 1.
    КОД 1 0 1 0
    КОД 2 0 1 1
    Пример 2. Кодовое расстояние между «кодом 1» и «кодом 2» равно 2.
    КОД 1 0
    0 1
    КОД 2 1
    1 1
    Правило вычисления кодового расстояния — комбинации кодов суммируются по модулю
    2, после чего подсчитывается количество единиц в полученной сумме.
    Например,
    КОД 1 1 0 0 1 0
    КОД 2 1 0 1 1 1
    КОД1
    ⊕КОД2 0 0 1 0 1
    Кодовое расстояние равно 2, т.к. число единиц в сумме – 2.
    Можно обнаружить ошибку только, если между используемыми кодовыми комбинациями есть необходимое для этого кодовое расстояние, т.е. между соседними используемыми

    303
    кодовыми комбинациями есть другие комбинации. Эти кодовые комбинации не используются для передачи информации, и их получение на приеме свидетельствует об ошибке передачи информации в канале связи. Для заданного кода минимальное кодовое расстояние – это минимальное из всех расстояний всех пар кодовых слов.
    В обычном равномерном непомехоустойчивом коде число разрядов n в кодовых комбинациях определяется числом сообщений и основанием кода. Коды, у которых все кодовые комбинации разрешены к передаче, называются простыми или равнодоступными и являются полностью безызбыточными. Безызбыточные первичные коды обладают большой
    «чувствительностью» к помехам. Внесение избыточности при использовании помехоустойчивых кодов обязательно связано с увеличением числа разрядов (длины) кодовой комбинации.
    В этом случае все множество N=2
    n
    комбинаций можно разбить на два подмножества: подмножество разрешенных комбинаций, т.е. обладающих определенными признаками, и подмножество запрещенных комбинаций, этими признаками не обладающих.
    Помехоустойчивый код отличается от обычного тем, что в канал передаются не все кодовые комбинации N, которые можно сформировать из имеющегося числа разрядов n, а только их часть
    N
    К
    , которая составляет подмножество разрешенных комбинаций.
    Если при приеме выясняется, что кодовая комбинация принадлежит к запрещенным, то это свидетельствует о наличии ошибки, т.е. таким образом решается задача обнаружения ошибок. При этом принятая комбинация не декодируется (не принимается решение о приеме сообщения). Помехоустойчивые коды называют корректирующими кодами. Корректирующие свойства избыточных кодов зависят от правила их построения, определяющего структуру кода, и параметров кода.
    Например, при n=3 можно составить 8 кодов (000, 001, 010, 011, 100, 101, 110, 111).
    Пусть все восемь кодовых комбинаций являются разрешенными (допустимыми), тогда кодовое расстояние между соседними комбинациями равно 1. Т.к. в данном случае отсутствует какой-либо признак, позволяющий судить о появлении ошибки в кодовой комбинации, то такой код не является помехозащищенным. Допустим, что лишь четыре из восьми кодовых комбинаций считаются разрешенными, например это комбинации 001, 010, 100 и 111. Тогда кодовое расстояние равно 2, причем искажение символа в одном из разрядов приводит к получению запрещенной кодовой комбинации (000, 011, 101 или 110), что легко выявляется при проверке. Полученный таким образом двоичный код называют кодом с обнаружением одиночной ошибки. Для кодового расстояния равного 3 в качестве разрешенных кодовых комбинаций можно принять, например, 010 и 101. При этом обеспечивается возможность не только обнаружения, но и исправления одиночной ошибки. Действительно, получение запрещенной кодовой комбинации 110 указывает на наличие ошибки, для исправления которой необходимо перейти к ближайшей из разрешенных кодовых комбинаций (в данном случае –
    010). Данный код позволяет обнаруживать и двойные ошибки, так как при одновременном искажении символов в двух разрядах кодовой комбинации последняя также попадает в число запрещенных.
    Первые работы по корректирующим кодам принадлежат Хэммингу, который ввел понятие минимального кодового расстояния и предложил код, позволяющий однозначно указать ту позицию в кодовой комбинации, где произошла ошибка. К «M» (message) информационным битам в коде Хэмминга добавляется «C» (control) проверочных битов для определения местоположения ошибочного бита.
    Таким образом, код Хэмминга состоит из информационных и контрольных битов.
    Информационные биты будем обозначать через М, контрольные биты – через С:
    М={M
    1
    ,M
    2
    ,…,M
    n
    };
    C={C
    1
    , C
    2
    ,…C
    k
    };
    N=M+C – общее количество передаваемых битов в канал связи (передаваемый блок).
    Сущность кода Хэмминга заключается в том, что местоположение контрольных и информационных битов определяется по правилу, которое устанавливает зависимость, позволяющую в случае ошибки определить ее местоположение, т.е. номер бита.
    Основные положения для получения кода Хэмминга состоят в следующем:

    304 1. Число, составленное из контрольных разрядов, должно указывать номер бита, в котором произошла ошибка, или 0, если нет ошибки. Исходя из этого, если произошла ошибка, проверочное С-битовое число – должно быть в диапазоне от 1 до (2
    С
    –1). Из этого следует, что
    2
    С
    –1≥N; тогда 2
    С
    N+1; умножим левую и правую части на 2
    M
    , получим 2
    M
    ×2
    С
    ≥2
    M
    ×(N+1), откуда
    2
    (M+C)
    ≥2
    M
    ×(N+1), тогда 2
    N
    ≥2
    M
    ×(N+1); делим левую и правую части на (N+1), получаем условие
    С использованием этого условия и определяется минимально необходимое число контрольных битов для передачи заданного количества информационных.
    2. Контрольные биты в коде Хэмминга занимают позиции с номерами, равными 2
    n
    , где
    n=0,1,3,… и т.д. Причем позиции кода номеруются справа налево, начиная с 1. Информационные биты располагаются в остающихся позициях справа налево по возрастанию весов разрядов.
    3. Значение каждого контрольного бита получается сложением по модулю 2 тех информационных битов, для которых в номере кодовой позиции информационных битов, записанном через контрольные разряды, значение бита равно 1. Эта формулировка будет более понятна, если посмотреть ее использование по табл. 1 или 2.
    Практическая часть.
    Вначале построим код Хэмминга для передачи четырехбитового кода.
    Условие 1. Это условие будет выполняться при N=7:
    Таким образом, для четырех информационных битов (М=4) требуются три контрольных бита (С=3).
    Условие 2. Определяем местоположение информационных и контрольных битов в коде.
    Положение информационных и контрольных битов
    M
    4
    M
    3
    M
    2
    C
    3
    M
    1
    C
    2
    C
    1
    Номер позиции кода
    7 6
    5 4
    3 2
    1
    Условие 3. Определяем логические выражения для вычисления контрольных битов. Для этого построим таблицу.
    Таблица 1

    305
    ПОЗИЦИЯ КОДА
    КОНТРОЛЬНЫЕ БИТЫ
    С
    3
    С
    2
    С
    1 3 бит (М
    1
    )
    0 1
    1 5 бит (М
    2
    )
    1 0
    1 6 бит (М
    3
    )
    1 1
    0 7 бит (М
    4
    )
    1 1
    1
    СУММИРУЕМЫЕ ПО МОДУЛЮ 2 БИТЫ
    М
    2
    М
    3
    М
    4
    М
    1
    М
    3
    М
    4
    М
    1
    М
    2
    М
    4
    Таким образом, передатчик вычисляет значения контрольных разрядов по следующим логическим выражениям:
    С
    1
    =М
    1
    М
    2
    М
    4
    ;
    С
    2
    =М
    1
    М
    3
    М
    4
    ;
    С
    3
    =М
    2
    М
    3
    М
    4
    Приемник проверяет правильность принятого кода, вычисляя следующие выражения:
    С
    11
    =С
    1
    М
    1
    М
    2
    М
    4
    ;
    С
    12
    =С
    2
    М
    1
    М
    3
    М
    4
    ;
    С
    13
    =С
    3
    М
    2
    М
    3
    М
    4
    Построим код Хэмминга для передачи семибитового кода.
    Условие 1. Это условие будет выполняться при N=11:
    Таким образом, для семи информационных битов (М=7), требуются четыре контрольных бита (С=4).
    Условие 2. Определяем местоположение информационных и контрольных битов в коде.
    Положение информационных и контрольных битов
    M
    7
    M
    6
    M
    5
    C
    4
    M
    4
    M
    3
    M
    2
    C
    3
    M
    1
    C
    2
    C
    1
    Номер позиции кода
    1 1
    1 0
    9 8
    7 6
    5 4
    3 2
    1
    Условие 3. Определяем логические выражения для вычисления контрольных битов. Для этого построим таблицу.
    Таблица 2
    ПОЗИЦИЯ КОДА
    КОНТРОЛЬНЫЕ БИТЫ
    С
    4
    С
    3
    С
    2
    С
    1 3 бит (М
    1
    )
    0 0
    1 1
    5 бит (М
    2
    )
    0 1
    0 1
    6 бит (М
    3
    )
    0 1
    1 0

    306 7 бит (М
    4
    )
    0 1
    1 1
    9 бит (М
    5
    )
    1 0
    0 1
    10 бит (М
    6
    )
    1 0
    1 0
    11 бит (М
    7
    )
    1 0
    1 1
    СУММИРУЕМЫЕ ПО МОДУЛЮ 2 БИТЫ
    М
    5
    М
    6
    М
    7
    М
    2
    М
    3
    М
    4
    М
    1
    М
    3
    М
    4
    М
    6
    М
    7
    М
    1
    М
    2
    М
    4
    М
    5
    М
    7
    Таким образом, передатчик вычисляет значения контрольных разрядов по следующим логическим выражениям:
    С
    1
    =М
    1
    М
    2
    М
    4
    М
    5
    М
    7
    ;
    С
    2
    =М
    1
    М
    3
    М
    4
    М
    6
    М
    7
    ;
    С
    3
    =М
    2
    М
    3
    М
    4
    ;
    С
    4
    =М
    5
    М
    6
    М
    7
    Приемник проверяет правильность передачи кода, вычисляя следующие выражения:
    С
    11
    =С
    1
    М
    1
    М
    2
    М
    4
    М
    5
    М
    7
    ;
    С
    12
    =С
    2
    М
    1
    М
    3
    М
    4
    М
    6
    М
    7
    ;
    С
    13
    =С
    3
    М
    2
    М
    3
    М
    4
    ;
    С
    14
    =С
    4
    М
    5
    М
    6
    М
    7
    Рассмотрим примеры передачи информации с использованием кода Хэмминга для случаев, когда ошибки при передаче нет, и когда есть.
    Начнем с кода (7,4).
    Пример. В канал связи нужно передать следующий блок информации: 1101 2
    Передатчик формирует код Хэмминга:
    M
    4
    M
    3
    M
    2
    C
    3
    M
    1
    C
    2
    C
    1 1
    1 0
    *
    1
    *
    *
    С
    1
    =М
    1
    М
    2
    М
    4
    =1
    ⊕0⊕1=0;
    С
    2
    =М
    1
    М
    3
    М
    4
    =1
    ⊕1⊕1=1;
    С
    3
    =М
    2
    М
    3
    М
    4
    =0
    ⊕1⊕1=0, тогда код, передаваемый в канал, будет:
    M
    4
    M
    3
    M
    2
    C
    3
    M
    1
    C
    2
    C
    1 1
    1 0
    0 1
    1 0
    1   ...   32   33   34   35   36   37   38   39   ...   43


    написать администратору сайта