Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
диплом / Создание принципиальной схемы системы управления.doc
Скачиваний:
103
Добавлен:
10.12.2013
Размер:
2.05 Mб
Скачать

3.3.6 Приемник hdlc.

Приемник принимает последовательные данные, определяет границы кадра, и перемещает данные в 32-байтный приемный FIFO, откуда они перемещаются в память с помощью интерфейса SmartDMA или под программным I/O-контролем. SmartDMA автоматически помещает статус кадра в буфер. Программный I/O помещает его в FIFO в конце кадра.

Функции приемника:

  • Детектирование последовательностей и флагов ожидания

  • Распознавание Flag/abort

  • Удаление вставленных передатчиком нулей

  • Проверка CRC

  • Распознавание адреса

Рис. 3.2 Блок-схема приемника:

Приемник HDLC работает с кадрами длиной от 2 байт. Передатчик HDLC требует хотя бы один байт данных, окруженный флагами. CRC длиной 2 байта без данных также образует полноценную передачу.

Детектирование Flag/Abort: перед началом приема кадра должен быть детектирован флаг. Конец кадра и статус сообщаются когда приемник зафиксирует флаг или abort-последовательность. Am186CC может принимать смежные кадры, между которыми только один флаг. В прозрачном режиме, когда flag/abort-разграничение не производится, прием начинается как только приемник начинает функционировать и продолжается до заполнения приемного FIFO.

Удаление вставленных нулевых бит:между краевыми флагами кадра приемник удаляет нули, которые следуют после пяти единиц подряд

Счетчик принятых байт: подсчитывает чисто принятых между флагами байт. Если это число меньше запрограммированного 4-битного числа, то кадру присваивается статус искаженного и кадр отбрасывается. Приемник отбраковывает очень короткие кадры (меньше двух байт) и не помещает их в приемный FIFO. Короткие кадры (короче величины, указанной в поле MINRL регистра HxRCON0) и очень короткие кадры инициируют генерацию маскируемого прерывания. При превышении количества принятых байт 16-битного программно заданного числа, прием текущего кадра прерывается, выставляется статус ошибки и приемник начинает поиск флага. При работе в прозрачном режиме счетчик отключается.

Полярность синхрочастоты приемника: задается битом RXCINV регистра HxTCON0 независимо от полярности частоты передатчика. Инвертированная полярность рекомендована для использования в режиме DCE.

Статус кадра: в конце приема приемник помещает значение счетчика принятых байт и байт статуса кадра в приемный FIFO. В режиме programmed I/O когда статус кадра становится доступным, генерируется маскируемое прерывание, указываемое в бите REOF регистра HxISTAT0.

Счетчик коротких кадров: регистры HxSFCNT и HxSFCNTP указывают общее количество полученных коротких кадров. Регистр HxSFCNT сбрасывается при чтении, регистр HxSFCNTP нет. В это число входят и очень короткие кадры. При переполнении регистра генерируется маскируемое прерывание. Кадры с ложными адресами не учитываются.

Проверка CRC: когда приемник обнаружил флаг конца, он проверяет 16- или 32-битный CRC. При обнаружении ошибки изменяется соответствующий статусный бит. Приемник поддерживает алгоритмы CRC-CCITT, CRC-16 и CRC-32. Приемник всегда помещает CRC в FIFO с остальной частью кадра (все данные между флагами помещаются в FIFO). Функцию проверки CRC нельзя отключить, но программно можно игнорировать ошибки CRC (третий байт статуса чмтаемый из регистра HxRD). Тип CRC задается в поле CRCTYPE регистра HxCON.

Последовательно-параллельный сдвиговый регистр: выход логики удаления вставленных передатчиком нулей подан на 16-битный сдвиговый регистр, конвертирующий последовательный поток данных в байты. Параллельный выход регистра присоединен к приемному FIFO.

Определение адреса: нужно для определения необходимости приема текущего кадра. Каждый канал HDLC имеет 16-битный адресный регистр (регистры HxA0–HxA3) четыре 16-битных адресных регистров маски (регистры HxA0MSK–HxA3MSK). Регистры маски которые из первых 16 бит данных кадра приемник приемник должен сравнить с адресными регистрами. Если все немаскируемые биты хотя бы одного адреса совпали, приемник принимает кадр; в противном случае кадр отбрасывается и начинается поиск следующего флага. Статусный байт кадра содержит информацию о том, какие адреса являются согласованными.

Счетик кадров с неудачными адресами: регистры HxMACNT и HxMACNTP хранят число кадров с несогласованными адресами. Регистр HxMACNT сбрасывается при чтении, регистр HxMACNTP нет. При переполнении счетчика генерируется маскируемое прерывание. На предмет корректного адреса проверяются все кадры длиннее двух байт.

Приемный FIFO: состоит из 32-байтного буфера FIFO, логики конца кадра и логики запроса DMA. Приемник устанавливает бит RDATA1 (One Receive Data Byte Available) регистра HxISTAT когда доступный байт содержит именно данные; бит RDATA1 не отражает содержимое FIFO, взятое в целом. Если следующий байт статусный, а предыдущий содержит данные, установка бита RDATA1 не происходит. После установки бита HREN для разрешения работы приемника, программное обеспечение устройства должно очистить содержимое FIFO установкой бита HRESET регистра HxCON. При этом стирается ошибочная информация, которая может быть ошибочно принята как начало потока данных.

Интерфейс приемного FIFO: для разгрузки приемного FIFO приемник пользуется programmed I/O или контроллером DMA. В режиме programmed I/O бит RDATA1 регистра HxISTAT0 индицирует готовность данных в FIFO для чтения, при этом генерируется маскируемое прерывание. Бит REOF регистра HxISTAT0 и прерывание показывают когда статус последнего полученного кадра доступен для чтения из приемного FIFO и данные недоступны для чтения. Данные следующего кадра недоступны до тех пор пока бит статуса не будет сброшен. Интерфейс SmartDMA автоматически перемещает статус кадра в в буферные дескрипторы в конце кадра.

Порог приемного FIFO: поддерживаются пороги в 1, 8, 16 и 32 байта. Значение порога задается в поле RTHRSH регистра HxRCON0. SmartDMA не перемещает данные в память до тех пор, пока порог не будет достигнут, что индицируется битом RTHRES регистра HxISTAT0. При достижении порога FIFO, статус готовности данных стоит до тех пор, пока FIFO не опустеет. В конце кадра FIFO выводит остаток кадра даже если порог не достигнут. Бит RTHRSH (Receive Threshold) регистра HxRCON0 определяет пороговое значение FIFO. При установке бита RTHRES (Receive FIFO Threshold Reached) регистра HxISTAT0 по достижении в приемном FIFO порогового значения генерируется прерывание.

Receive-Data Available: при работе в режиме programmed I/O бит RDATA1 регистра HxISTAT0 указывает на доступность данных в приемном FIFOнезависимо от выбранного порога. Возможна также выработка прерывания готовности данных.

Receive End-of-Frame: при работе в режиме programmed I/O бит REOF регистра HxISTAT0 указывает на наличие в FIFO любых статусных байтов (что означает конец кадра). От значения порога эта индикация не зависит. Возможна также выработка прерывания готовности данных статуса.

Пекреполнение приемного FIFO: при переполнении FIFOпрекращается прием текущего кадра, снимается сигнал RTR и генерируется прерывание. Контроллер устанавливает в FIFO статус переполнения когда для этого освободится место. Бит ROFLO регистра HxISTAT1 указывает не переполнение FIFO.

Остаток битов (Bit Residue): если количество битов кадра не кратно 8, приемник бракует кадр и выводит статус ошибки в третий байт статуса, читаемый из регистра HxRD.

Разрешение функционирования приемника: когда приемник отключен, прием текущего кадра не прекращается. После окончания приема сигнал Ready-to-Receive (RTR) снимаетсяи генерируется маскируемое прерывание, после чего данные не принимаются. При включении выставляется сигнал RTR и производится поиск флага старта кадра. При отключении в режиме прозрачности сигнал RTR снимается немедленно и прием прекращается а при включении выставление сигнала RTR и начало приема происходят немедленно. Отключение производится сбрасыванием бита HREN регистра HxRCON0 в 0.

Фильтрация принятых данных (Receive Reject): в этом режиме приемник немедленно останавливает прием данных и выводит статус ошибки если произошел сбой. Сигнал RTR не затрагивается. Если эта функция заблокирована, приемник просто начинает поиск флага. Для активизации этого режима бит RREJECT регистра HxRCON0 устанавливается в 1.

Остановка приемника: при этом прекращается прием данных и снимается сигнал RTR. Генерируется статус ошибки если это произошло во время приема кадра. Для остановки приемника бит RSTOP регистра HxRCON0 устанавливается в 1.

Статус связи: возможные состояния: флаг ожидания, последовательность ожидания (mark-idle), сброс (abort), прием. Для каждого состояния приемник может генерировать маскируемое прерывание при вхождении в него. После приема флага, продолжительная серия единиц переводит приемник в состояние mark-idle без перехода в состояние abort. После идентефикации какого-либо состояния приемник отражает статус своего последнего состояния. Чтение состояния производится из битов RTRS, ABORTS MARKIS, FLAGS и FRAMES регистра HxSTATE.

Порядок принятых битов: возможен порядок следования битов, когда сперва принимаются более значимые биты - MSB (Most significant bit) или когда первыми передаются младшие биты - LSB (Least significant bit). Для приема MSB-first бит RMSBF регистра HxRCON0 устанавливается в 1. Эта возможность обычно используется только в прозрачном режиме.

Прозрачный режим: в этом режиме данные из FIFO постуают в память сразу же, не проходя через процедуру удаления нулей, не производится выявление flag/abort, не проверяется CRC. Для активации этого режима бит TRANSM регистра HxCON устанавливается в 1.

Соседние файлы в папке диплом