Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 524 по 631.doc
Скачиваний:
7
Добавлен:
16.04.2019
Размер:
2.54 Mб
Скачать

Коммуникационные микроконтроллеры и системы на их основе

Открывающий флаг BOF

Адрес

Контроль

Данные

Контрольная сумма FCS

Закрывающий флаг EOF

8 бит 8 бит 8 бит Мхвбит 16 бит 8 бит

Рис 5.103. Формат кадра ASYNC HDLC-протокола

Формат поля, флаг задается пользователем в ячейке ВОР памяти параметров. Реко­мендованные значения: для протокола РРР - Ох7Е, для протокола IRLAP (infra-red link access protocol) - OxCO.

Когда контроллер обнаружит последний буфер BD кадра данных (буфер в слове со­стояния которого будет установлен бит L = 1), то он подсчитывает контрольную сумму кадра CRC и передает ее в канал, а затем передает закрывающий флаг. Формат закры­вающего флага задается пользователем в ячейке EOF памяти параметров. Рекомендо­ванное значение для протокола РРР - Ох7Е, для протокола IRLAP - ОхС1.

Далее, если сброшен бит продолжения СМ = 0 в слове состояния последнего буфера BD, то AHDLC-контроллер устанавливает в слове состояния последнего буфера кадра биты статуса передачи кадра и сбрасывает бит готовности буфера к передаче R := 0.

Если в слове состояния BD был установлен бит I = 1, то контроллер генерирует ТхВ-прерывание через регистр событий. Таким образом, прерывание может регистрировать­ся после передачи буфера, группы буферов или после окончания передачи всего кадра.

Если в слове состояния буферного дескриптора установлен бит продолжения СМ = 1, то после передачи данных из этого буфера будут установлены биты статуса передачи, но бит готовности кадра к передаче сбрасываться не будет, т. е. R = 1. После передачи буфера с СМ = 1 контроллер переходит к передаче следующего буфера BD. Если он еще не готов, т. е. бит R = 0, то контроллер будет ожидать его готовности. Формат кадра ASYNC HDLC-протокола представлен на рис. 5.103.

Открывающий и закрывающий флаги вставляются при передаче данных и удаляются контроллером при приеме. Контроллер принимает кадры только с одним разделяющим флагом между кадрами. Если между кадрами передается несколько символов флага, то контроллер будет их игнорировать. В ячейке NOF памяти параметров хранится число N, которое определяет, сколько N+1 открывающих флагов будет передано перед кадром.

Поле адреса может быть заполнено, только если оно получено при передаче из бу­фера данных, у которого в слове состояния буферного дескриптора установлен бит А = 1. RISC-контроллер не занимается в своей микропрограмме вопросами вставки, рас­познавания и контроля адресов. Все эти функции должны быть возложены на централь­ный процессор.

То же самое относится и к полю контроля. RISC-контроллер не выполняет функции обработки этого поля. Он только заполняет его при передаче данных из буфера, если в слове состояния буферного дескриптора указано, что буфер содержит контрольный символ (бит С = 1). Всей обработкой данных из этого поля должен заниматься централь­ный процессор.

При передаче контрольная сумма кадра FCS (Frame Control Sequence) автоматичес­ки добавляется к кадру данных перед закрывающим флагом. Контрольная сумма вычис­ляется над содержимым первоначального кадра до добавления в него символов «про­зрачности», старт- и стоп-битов или символов флагов. Для формирования контрольной суммы контроллер использует 16-битный образующий полином циклического кода. В ячейке C_MASK памяти параметров хранится константа этого полинома OxOOOOFOBS, а в ячейке C_PRES - начальное значение счетчика контрольной суммы OxOOOOFFFF.

При передаче данных AHDLC-контроллер постоянно контролирует, что за байты дан­ных он передает в сеть. Если для байта данных выполняется одно из перечисленных ниже

586

ПОДДЕРЖКА ПРОТОКОЛОВ В КОММУНИКАЦИОННЫХ КОНТРОЛЛЕРАХ

условий, то включается алгоритм обеспечения «прозрачности» данных и вместо одного исходного байта передается двухбайтовая последовательность. Первый байт - это специ­альный символ control-escape, формат которого задан в ячейке ESC памяти параметров (для протоколов РРР и IrLAP рекомендуется значение Ox7D). Второй байт - это исходный байт, над которым выполнена операция «исключающее ИЛИ» XOR с константой 0x20. Условия включения алгоритма кодировки «прозрачности» при передаче байта данных:

  1. если этот байт - флаг (формат Ох7Е для протокола РРР и ОхСО/ОС1 - для IrLAP);

  2. если этот байт — контрольный символ control-escape — Ox7D;

  3. если этот байт имеет значение между 0x00 и 0x1 F и соответствующий бит установ­ ки в таблице Тх контрольных символов. Эта кодировка выполняется только для протоко­ ла РРР.

В ячейке TXCTL_TBL памяти параметров хранится таблица контрольных символов при передаче, а в ячейке RXCTL_TBL - таблица контрольных символов при приеме дан­ных. Эти таблицы используются только для протокола РРР. Если используется протокол IrLAP, эти ячейки должны быть инициализированы в «О». Каждая из этих ячеек представ­ляет собой таблицу из 32 бит. Бит номер 0 соответствует символу 0x00, бит номер 1 -0x01, бит номер 2 - 0x02 и т. д. Бит номер 31 соответствует символу 0x1 F. Если в этих таблицах в бите i установлена «1», то символ, соответствующий этому биту, рассматри­вается как контрольный.

Распределение памяти параметров ASYNC HDLC-протокола приведено в табл. 5.66.

Таблица 5.66 Память параметров ASYNC HDLC-протокола

Адрес

Название

Размер, бит

Описание

SCC base +34

C_MASK

32

Константа полинома CRC

SCC base+38

C_PRES

32

Начальные значения CRC

SCC base+3C

BOF

16

Открывающий флаг

SCC base+3E

EOF

16

Закрывающий флаг

SCC base+40

ESC

16

Контрольный ESC-символ

SCC base+42

-

16

Зарезервировано

SCC base+44

-

16

Зарезервировано

SCC base+46

ZERO

16

Инициализация «0»

SCC base+48

-

16

Зарезервировано

SCC base+4A

RFTHR

16

Число принятых кадров до прерывания

SCC base+4C

-

16

Зарезервировано

SCC base+4E

-

16

Зарезервировано

SCC base+50

TXCTLJBL

32

Таблица контрольных символов Тх

SCC base+54

RXCTL_TBL

32

Таблица контрольных символов Rx

SCC base+58

NOF

16

Число открывающих флагов

SCC base+5A

-

16

Зарезервировано

Примечание. Все переменные в таблице инициализируются пользователем. Ячейка ZERO должна быть проинициализирована «0». Зарезервированные ячейки используются контроллером для временного хранения данных..

587