Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 351

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 345 346 347 348 349 350 < 351 > 352 353 354 355 356 357 .. 528 >> Следующая

Передача данных. Для синхронизации станций в канале при включении в
работу передатчик HDLC-контроллера начинает передавать символы флага
(формат 01111110). Если установлен бит FSE = 1 и бит RTSM в регистре GSMR
равен единице, то между кадрами передается [NOF+1] флагов. Если же бит
RTSM = 0, то между кадрами передаются IDLE-символы.
Далее контроллер начинает опрашивать готовность первого буфера BD. Если
буфер готов, то данные по SDMA-каналу загружаются в буфер FIFO канала.
Передав заданное пользователем число символов флага между кадрами,
контроллер начинает передавать данные из FIFO в сеть. Минимальное число
символов, передаваемых между соседними кадрами, задается в битах NOF3 -
NOFO. Если в этих битах записан код 0000, то открывающий флаг одного
кадра следует сразу без интервала за закрывающим флагом предыдущего
кадра.
Когда переданы все буферы текущего кадра, и контроллер обнаружил в слове
состояния последнего буфера BD установленный бит L = 1 (Last), то он
передает в канал контрольную сумму кадра и закрывающий флаг. Если биты
CRC = 00, то контрольная сумма вычисляется с помощью 16-разрядного
циклического кода. Если биты CRC = 10, то контрольная сумма вычисляется
по 32-разрядному циклическому коду. Вид образующего полинома задается
пользователем в ячейках C_MASK памяти параметров, где "1" в i-бите
соответствует включению в полином слагаемого X в степени i. Для полинома
Х16+Х12+Х5+1 в этой ячейке хранится код 0x000F0B8, а для полинома Х32+
Х26+Х23+Х22+ Х16+Х12 + + Х11+Х10+Х8+Х7+Х5+Х4+Х2+Х1+1 - код 0xDEBB20E3.
При инициализации параметров HDLC-контроллера в ячейку C_PRES памяти
параметров записывается начальное значение счетчика CRC. Для 16-
разрядного полинома это код 0x0000FFFF, а для 32-разрядного -OxFFFFFFFF.
Пользователю не рекомендуется при работе изменять содержимое ячеек,
617
КОММУНИКАЦИОННЫЕ МИКРОКОНТРОЛЛЕРЫ И СИСТЕМЫ НА ИХ ОСНОВЕ
связанных с настройкой работы счетчика CRC, так как это может привести к
неправильному применению теории циклического кодирования.
Формирование контрольной суммы начинается сразу же при начале передачи
первого бита кадра данных. Временные промежуточные значения контрольной
суммы хранятся в ячейках TCRC памяти параметров при передаче и в ячейке
RCRC - при приеме данных.
32-битная контрольная сумма часто используется, если необходимо
пересылать пакеты между сетями HDLC и Ethernet. При согласовании форматов
пакетов в узле коммутации целесообразно использовать одинаковый формат
32-разрядной CRC, чтобы упростить и ускорить преобразование форматов, а
не тратить дополнительное время на перекодировку 16-разрядной контрольной
суммы в 32-разрядную.
Если все данные из текущего буфера переданы в сеть, то RISC-контроллер
сбрасывает бит готовности буфера R := 0 в слове состояния BD, чтобы
центральный процессор мог в этом буфере подготовить новые данные для
передачи. Если текущий буфер был еще и последним буфером кадра, то
контроллер дополнительно устанавливает биты состояния кадра при передаче
в слове состояния последнего буфера BD. Далее контроллер переходит к
передаче данных из следующего буфера, если, конечно, в нем установлен бит
готовности к передаче R = 1.
Если в слове состояния переданного буфера был установлен бит I = 1
(Interrupt), то после окончания передачи буфера будет генерироваться
прерывание. Пользователь может гибко устанавливать требования прерывания
после передачи каждого буфера, после передачи определенных буферов или
после передачи всех буферов кадра.
Пользователь может в любой момент времени остановить передачу и
переопределить содержимое буферов, передав контроллеру команду STOP
TRANSMIT. Часто эта команда используется, когда надо передать более
приоритетные кадры данных из других буферов, прервав передачу текущих
данных, или в случае возникновения ошибки при передаче текущей
информации. Для передачи более приоритетных кадров без прерывания
передачи текущего кадра в СРМ предназначена команда GRACEFUL STOP
TRANSMIT. Получив команду остановки передачи STOP TRANSMIT, HDLC-
контроллер начинает передавать в канал или символы IDLE, или символы
флага и ожидает получения команды RESTART TRANSMIT для возобновления
передачи.
Если во время передачи обнаруживается ошибка, то HDLC-контроллер
прерывает текущую передачу, закрывает буфер, устанавливает бит
соответствующей ошибки в слове состояния BD и генерирует, если разрешено,
ТХЕ-прерывание через регистр событий SCC-канала. Получив команду
возобновления передачи RESTART TRANSMIT, контроллер продолжает дальнейшую
передачу.
При передаче регистрируются два типа ошибок. Ошибка незаполнения буфера
underrun возникает, если при передаче мультибуферных кадров данных
центральный процессор не успел подготовить для передачи новые буферы,
содержащие данные текущего кадра, а данные из последнего подготовленного
буфера уже переданы в сеть. Признаком этой ошибки будет установка бита UN
:= 1 в слове состояния текущего BD.
Предыдущая << 1 .. 345 346 347 348 349 350 < 351 > 352 353 354 355 356 357 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed