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

Поддержка протоколов в коммуникационных контроллерах

5.3.5. Доступ к сетям ethernet

Ethernet-контроллер. Протокол Ethernet/IEEE 802.3 широко распространен в совре­менных локальных сетях. Протокол предлагает множественный доступ станций к сети с обнаружением сигнала несущей частоты (метод CSMA/CD). Ethernet-версии - это рас­ширение базовых версий контроллера МРС860, в которых к имеющимся коммуникацион­ным протоколам добавлена поддержка Ethernet-протокола и реализованы функции МАС-уровня в соответствии с требованиями стандарта IEEE 802.3. Настройка SCC-канала на работу с Ethernet-протоколом (10 Мбит/с) производится в битах MODE (MODE = 1100) регистра GSMR. Рекомендуется для работы с Ethernet-протоколом использовать SCC1-контроллер, так как он имеет буферы FIFO, размер которых больше в два раза аналогич­ных буферов FIFO других SCC-каналов.

Для подключения Ethernet-контроллера к сети Ethernet требуется дополнительный внешний передатчик. Фирма «Motorola» выпускает специализированный модуль МС68160 EEST (Enhanced Ethernet Serial Transceiver) для подключения к реальной сети. QUICC-контроллер подготавливает кадры данных, а EEST-передатчик выполняет манчестерс­кое кодирование/декодирование сигналов, автоматическое определение типа разъема и типа сетевого кабеля (AUI или 10Base-T) и выполняет преобразование логических сигна­лов в электрические импульсы, которые используются при передаче сигналов по выб­ранному кабелю. Следует обратить внимание, что встроенный блок DPLL не использует­ся для манчестерского кодирования/декодирования сигналов, так как не обеспечивает требуемой скорости передачи данных в 10 Мбит/с. Поэтому при работе с Ethernet-прото­колом DPLL-блок должен быть выключен, а все функции кодирования и декодирования данных возлагаются на внешний передатчик EEST. Подключение контроллера к микро­схеме EEST показано на рис. 5.118.

Перечислим правила подключения PowerQUICC-контроллера к микросхеме EEST.

  1. Тактовая частота приемника RCLK и передатчика TCLK поступает на QUICC через внешние контакты CLK1, CLK2, CLK3, CLK4 от выводов RCLK и TCLK микросхемы EEST.

  2. Для передачи данных вывод TXD контроллера соединяется со входом ТХ передатчи­ ка, а для приема данных вход RXD контроллера соединен с выходом RX передатчика.

  3. При работе с Ethernet-протоколом вывод RTS контроллера становится выводом сиг­ нала разрешения передачи TENA (Transmit Enable), который поступает на вход ТЕМА пе­ редатчика. Активное состояние сигнала - «1».

  4. При работе с Ethernet-протоколом вход CD контроллера становится входом сигнала разрешения приема RENA (Receive Enable), который поступает с выхода RENA передат­ чика. Активное состояние сигнала - «1».

QUICC

SCC

EESTMC68160

TxD

^

TX

RTS

»•

TENA

CD

RENA

PACQIWC

RCLKx

•*

RCLK

CTS

CTSN

Рис. 5.118. Подключение контроллера к микросхеме EEST

623

КОММУНИКАЦИОННЫЕ МИКРОКОНТРОЛЛЕРЫ И СИСТЕМЫ НА ИХ ОСНОВЕ

5. При работе с Ethernet-протоколом вход CTS контроллера становится входом сиг­нала обнаружения коллизий CLSN (Collision), который поступает с выхода CLSN пере­датчика. Активное состояние сигнала - «1».

Сигнал обнаружения несущей частоты формируется как комбинация сигналов RENA или CLSN. Дополнительно передатчик EEST имеет вход LOOP, на который пользователь может программно подать сигнал с выхода параллельного порта ввода/вывода для цик­лического тестирования работы передатчика.

Коммуникационный контроллер сохраняет в буферах памяти каждый принятый байт кадра данных после получения начального ограничителя, используя каналы SDMA. При передаче пользователь должен подготовить в памяти данные, адрес приемника и передатчика и данные поля «тип кадра». При передаче этих данных в сеть QUICC-контроллер автоматически добавит поле контрольной суммы и заполнит поле дан­ных, если его длина меньше 46 байт, специальными символами-заполнителями до заданного минимума.

Для тестирования работы аппаратуры приемника, передатчика и буферов FIFO Ethernet-контроллера пользователь может включить петлевой (loopback) тестовый ре­жим. Этот режим включается при установке бита LPB := 1 в регистре режима PSMR Ethernet-контроллера. Если используется режим внешнего loopback, то биты DIAG в ре­гистре общих режимов работы должны быть настроены для работы в нормальном режи­ме. Если установлен режим внутреннего loopback, то биты DIAG в регистре GSMR долж­ны быть настроены для работы в петлевом режиме (loopback). В режиме внутренней петли схемы SCC-контроллера отключаются от схем последовательного интерфейса, выход передатчика внутри подключается ко входу приемника SCC-контроллера, такти­рование приемника и передатчика производится от одного источника. В режиме внеш­ней петли Ethernet-контроллер одновременно передает и принимает данные от микро­схемы EEST.

В контроллере МРС860 пользователь имеет дополнительную возможность для на­стройки работы Ethernet-контроллера в полнодуплексном режиме обмена. Для этого тре­буется установить бит FDE := 1 в регистре режима PSMR (см. рис. 5.119).

Формат Ethernet-кадра. Кадр начинается с 7-байтного поля преамбулы, которое со­стоит из повторяющихся «1» и «О» и которое необходимо для подстройки генераторов станции приемника на частоту передатчика. Формат поля преамбулы фиксирован и из­вестен всем станциям в сети, поэтому данное поле может быть использовано для регис­трации начала нового кадра данных и обнаружения состояния коллизии, которое возни­кает, когда две или более станций пытаются одновременно выйти в сеть. Контроллер обеспечивает автоматическую вставку преамбулы при передаче кадра и ее удаление при приеме кадра. Далее следует поле «начального ограничителя», которое извещает приемник о начале нового кадра данных. Формат кадра представлен на рис. 5.120.

13

12

ю

14 15

FDE

FC

RSH

IAM

CRC

PRO

BRO

SBT | LPB

SIP

LCW

NIB

Рис. 5.119. Формат регистра режима PSMR Ethernet-контроллера

Preamble

Start Frame Delimiter

Destination Address

Source Address

Type/Length

DATA

Frame Check Sequence

7 байт

1 байт

6 байт

6 байт

2 байта

46-1500 байт

4 байта

624

Рис. 5.120. Формат кадра Ethernet-протокола

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

Два 48-битных поля адресов предназначены для указания адреса станции отправи­теля и адреса станции получателя информации. Адрес станции отправителя (48 бит) пользователь может задать в ячейках памяти параметров PADDR1_H, PADDR1_M, PADDR1J. (табл. 5.78). Двухбайтное поле «тип/длина» предназначено для задания дли­ны поля данных или, в некоторых версиях протокола Ethernet, для задания типа кадра.

Таблица 5.78 Память параметров Ethernet-контроллера в микроконтроллере МРС860

Адрес

Название

Размер, бит

Описание

SCC base+30

C_PRES

32

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

SCC base+34

C_MASK

32

Константа CRC

SCC base+38

CRCEC

32

Счетчик ошибок контрольной суммы CRC

SCC base+3C

ALEC

32

Счетчик принятых невыравненных кадров

SCC base+40

DISFC

32

Счетчик непринятых кадров

SCC base+44

PADS

16

Формат символа заполнителя

SCC base+46

RETJJM

16

Максимальное число повторных попыток выхода в сеть

SCC base+48

RET_cnt

16

Текущее число повторных попыток выхода в сеть

SCC base+4A

MFLR

16

Максимальная длина кадра

SCC base+4C

MINFLR

16

Минимальная длина кадра

SCC base+4E

MAXD1

16

Максимальная длина DMA1 передачи при приеме

SCC base+50

MAXD1

16

Максимальная длина DMA2 передачи при приеме

SCC base+52

MAXD

16

Максимальная длина DMA посылки при передаче

SCC base+54

DMA_cnt

16

Текущее значение счетчика DMA2 передачи

SCC base+56

MAX_b

16

Максимальное значение счетчика байт в BD

SCC base+58

GADDR1

16

Фильтр фуппового адреса

SCC base+5A

GADDR2

16

Фильтр группового адреса

SCC base+5C

GADDR3

16

Фильтр группового адреса

SCC base+5E

GADDR4

16

Фильтр фуппового адреса

SCC base+60

TBUFO.dataO

32

Save Area 0. Временное хранение текущего кадра

SCC base+64

TBUFO.datal

32

Save Area 1 . Временное хранение текущего кадра

SCC base+68

TBUFO.rbaO

32

Временное хранение текущего кадра

SCC base+6C

TBUFO.crcO

32

Временное хранение текущего кадра

SCC base+70

TBUFO.bcnt

16

Временное хранение текущего кадра

SCC base+72

PADDR_H

16

MSB

SCC base+74

PADDR_M

16

Физический адрес станции

SCC base+76

PADDR_L

16

LSB

SCC base+78

P_PER

16

Индекс активности после коллизии

SCC base+7A

RFBD_ptr

16

Указатель первого BD приема

SCC base+7C

TFBD_ptr

16

Указатель первого BD передачи

SCC base+7E

TLBD_ptr

16

Указатель последнего BD передачи

SCC base+80

TBUFLdataO

32

Save Area 0. Временное хранение текущего кадра

SCC base+84

TBUFldatal

32

Save Area 1 . Временное хранение текущего кадра

SCC base+88

TBUFLrbaO

32

Временное хранение текущего кадра

SCC base+8C

TBUFLcrcO

32

Временное хранение текущего кадра

SCC base+90

TBUFLbcnt

16

Временное хранение текущего кадра

SCC base+92

TX_LEN

16

Счетчик текущей длины передаваемого кадра

SCC base+94

IADDR1

16

Фильтр индивидуальных адресов

625

КОММУНИКАЦИОННЫЕ МИКРОКОНТРОЛЛЕРЫ И СИСТЕМЫ НА ИХ ОСНОВЕ

Продолжение табл. 5.78

Адрес

Название

Размер, бит

Описание

SCC base+96

IADDR2

16

Фильтр индивидуальных адресов

SCC base+98

IADDR3

16

Фильтр индивидуальных адресов

SCC base+9A

IADDR4

16

Фильтр индивидуальных адресов

SCC base+9C

BOFF_CNT

16

Счетчик кадров backoff

SCC base+9E

TADDR L

16

LSB

SCC base+AO

TADDR_M

16

Временное значение адреса при настройке

SCC base+A2

TADDR H

16

MSB

Примечание. Все переменные в таблице, кроме ячеек RET cnt, MAXD, DMA cnt, MAX b, TBUFO.dataO, TBUFO.datal, TBUFO.rbaO, TBUFO.crc, TBUFO.bcnt, RBFD_ptr, TBFD ptr, TBLD ptr, TBUFLdataO, TBUF1.data1, TBUFLrbaO, TBUFLcrc, TBUFLbcnt, TXJen и BOFF_CNT, инициализи­руются пользователем до начала работы с Ethernet-контроллером.

Поле данных может иметь размер от 46 до 1500 байт. В ячейке MINFLR пользователь должен задать минимальный размер кадра (>64 байт), а в ячейке MFLR - максимальный размер кадра (<1518 байт). Если длина кадра меньше установленного минимума, то при передаче поле данных кадра будет дополнено специальными символами-заполнителя­ми, формат которых указывается в ячейке PADS памяти параметров, но только если в слове состояния буферного дескриптора установлен бит PAD = 1. Если же бит PAD = О, то символы PAD не добавляются к короткому кадру.

Для контроля правильности передачи данных в состав кадра данных введено поле контрольной суммы, в которое записывается 32-разрядная контрольная сумма кадра дан­ных. Для настройки режима работы с 32-битной CCITT-CRC контрольной суммой с обра­зующим полиномом ХЛ32+ХЛ26+ХЛ23+ХЛ22+ХЛ16+Хл12+Хл11+ХЛ10+ХЛ8+ХЛ7+ХЛ5+ +Хл4+Хл2+Хл1+1 в биты CRC регистра режима PSMR требуется записать код 10. В ячей­ке C_MASK пользователь перед началом работы с Ethernet-контроллером должен за­дать константу образующего полинома OxDEBB20E3, а в ячейке C_PRES - начальное значение счетчика контрольной суммы OxFFFFFFFF.

Передача данных. После включения передатчика канала в работу Ethernet-контрол­лер начинает периодически раз в 128 тактов опрашивать готовность первого буфера в таблице буферов для передачи TxBD. Если пользователь подготовил данные для пере­дачи и не желает ждать 128 тактов, то он может установить бит TOD := 1 в регистре TODR, чтобы вызвать принудительное начало опроса буферов для передачи данных.

Если данные для передачи подготовлены, то контроллер начинает загружать кадр по SDMA-каналам из буфера данных в буфер FIFO, выставляет сигнал ТЕМА к микросхеме EEST и начинает передавать преамбулу, начальный ограничитель и далее сам кадр дан­ных. При передаче Ethernet-контроллер передает LSB-бит первым. Перед началом пе­редачи контроллер проверяет наличие сигнала несущей частоты в канале; после того как в канале будет обнаружен пассивный сигнал несущей частоты, контроллер проверя­ет, чтобы этот сигнал был пассивным в течение 6,4 мкс. Далее передача будет начата после ожидания 3,2 мкс. Таким образом, сигнал несущей должен быть пассивным в тече­ние 9,6 мкс, перед началом передачи кадра. Поэтому минимальный межкадровый ин­тервал (interpacket gap) для передачи кадров back-to-back установлен равным 9,6 мкс, и при возникновении коллизии повторная передача начинается через 9,6 мкс после того, как сигнал несущей в канале станет пассивным, при условии что он оставался пассив­ным в течение 6,4 мкс.

После окончания передачи кадра данных, когда в слове состояния последнего буфе­ра кадра обнаружен бит L = 1 (Last) и установлен бит ТС = 1, контроллер начинает пере-

626

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

давать контрольную сумму кадра и по окончании передачи сбрасывает сигнал ТЕМА в пассивное состояние. Сброс этого сигнала заставляет микросхему EEST начать пере­дачу специального некорректного символа, закодированного манчестерским кодом, уве­домляющего о конце Ethernet-кадра.

Далее контроллер заполняет биты статуса переданного кадра в слове состояния пос­леднего буфера и сбрасывает бит готовности буфера к передаче (бит R := 0). Если же текущий буфер кадра передан, но бит L = 0, то для данного буфера только сбрасывается бит R := 0, и контроллер переходит к обработке следующего буфера в таблице TxBD. Если в слове состояния переданного буфера установлен бит прерывания I = 1, то будет выработан запрос на прерывание.

Если во время передачи кадра данных обнаруживается коллизия, то контроллер вы­полняет специальную процедуру остановки, возвращается к первому буферу кадра и через некоторый интервал времени делает попытку повторной передачи. Для каждого переданного кадра данных в слове состояния последнего буфера кадра устанавливают­ся биты RC, значения которых определяют, сколько повторных попыток потребовалось, чтобы успешно закончить передачу текущего кадра. Общее число повторных попыток передачи задается в ячейке RET_LIM (стандартное значение 15). При начале передачи контроллер сохраняет первые 5-8 байт передаваемого кадра во внутренней памяти в ячейках TBUFx_xxx, поэтому при повторной передаче не требуется дополнительная заг­рузка этих данных из буферов данных. Единственное ограничение состоит в том, что первый буфер кадра должен иметь длину не менее 9 байт. Текущее значение числа по­вторных передач подсчитывается в ячейке RET_CNT, и если число повторов превысило значение RETJJM, то генерируется ТХЕ-запрос на прерывание в регистре событий, ус­танавливается бит ошибки RL := 1 в слове состояния буферного дескриптора, передача данных из буфера останавливается и буфер закрывается. Продолжение передачи воз­можно после получения контроллером команды RESTART TRANSMIT.

Ячейка Р_Рег памяти параметров предназначена для определения «степени актив­ности» станции после обнаружения состояния коллизии. В нормальном режиме в эту ячейку заносится код 0x0000 и выполняется стандартный алгоритм расчета следующего момента выхода станции в сеть для повторной передачи. Если же в эту ячейку записан код от 1 до 9, то данный код будет добавлен к счетчику тайм-аута ожидания, и станция выйдет в сеть через большее время. Таким образом, значение «9» предназначено для менее активных станций. Пользователю также предоставляется возможность управлять временем выхода станции в сеть для повторной передачи через бит STB (Stop Backoff Timer) в регистре режима Ethernet-контроллера. Если бит STB = 0, то счетчик времени работает в обычном режиме. Если же бит STB = 1, то счетчик будет останавливаться всякий раз, когда в канале будет активным сигнал несущей частоты.

Если во время передачи обнаруживается ошибка незаполнения буфера underrun, которая возникает, если при передаче мультибуферных кадров данный центральный процессор не успел подготовить для передачи новые буферы, содержащие данные теку­щего кадра, а данные из последнего подготовленного буфера уже переданы в сеть, то Ethernet-контроллер прерывает текущую передачу, передает 32 «1» бита, которые по­зволят определить другим станциям CRC ошибку, закрывает буфер, устанавливает бит ошибки UN := 1 в слове состояния BD и генерирует, если разрешено, ТХЕ-прерывание через регистр событий SCC-канала. После получения команды возобновления передачи RESTART TRANSMIT контроллер продолжает дальнейшую передачу.

При передаче Ethernet-контроллер постоянно контролирует наличие сигнала несу­щей частоты. Если этот сигнал будет сброшен, но состояние коллизии не будет зафикси­ровано, то генерируется ошибка потери несущей частоты. Признаком этой ошибки будет установка бита CSL = 1 в слове состояния текущего BD. Передача кадра будет продол­жена в нормальном режиме.

627