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

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

01 2 345 6 7 8 9 10 11 12 13 14 15

| V | W | Mask[0:1] [ Channel Pointer | Mask[2:7] [

Рис. 5.91. Формат ячейки TSA-таблицы

который может быть выставлен QMC-контроллером к центральному процессору. Пере­менная INTBASE определяет стартовый адрес таблицы запросов в памяти, а перемен­ная INTPTR-адрес следующей ячейки очереди, куда RISC-контроллер запишет инфор­мацию о прерывании при возникновении соответствующего события. Перед началом работы в ячейку загружают значение INTPTR := INTBASE.

Каждая ISA-таблица содержит 32 ячейки по 16 бит каждая (рис. 5.91) и определяет правила обработки каждого из 32 логических каналов при приеме (TSA Rx-таблица) и при передаче (TSA Тх-таблица). Ячейки таблицы определяют, из какого временного слота бу­дет читать информация в текущий логический канал при приеме или в какой временной слот будет выдаваться информация от текущего логического канала при передаче.

Бит V (Valid) определяет, используется данный временной слот или нет. Если бит V = 0, то 8-битный временной слот не используется и его данные игнорируются при при­еме, а при передаче во временной слот будет выдаваться код логической «1». Если бит V = 1, то 8 бит данных из временного слота после удаления служебных битов (например, типа бит-стаффинг) записываются в текущий буфер при приеме и выдаются в этот вре­менной слот при передаче.

Бит W (Wrap) позволяет программисту ограничивать число используемых временных слотов в TDM-кадре данных. Если бит W = 1, то это последняя ячейка в таблице. Далее после получения нового импульса синхронизации (строба) RISC-контроллер перейдет к обработке ячейки временного слота «О».

Channel pointer - 6-битный указатель, определяющий логический канал, с которым будет связан данный временной слот. На самом деле реальный указатель имеет длину 12 бит и представляет собой адрес канал-ориентированной памяти параметров (адрес RBASE или TBASE). Шесть старших значащих бит берутся из поля TSATRx channel pointer (или TSATTx channel pointer), а младшие 6 бит всегда обнуляются. Таким образом, 12-битный адрес указывает на 64-байтную область канал-ориентированной памяти пара­метров. Канал-ориентированная память всегда общая для приемника и передатчика, таким образом, для 32-канального интерфейса требуется 32x64 = 2 Кбайт памяти внутри двухпортовой RAM, а для 64-канального интерфейса - 64x64 = 4 Кбайт.

Обычно канал-ориентированная память каждого канала занимает 8 байт, и поэтому в большинстве случаев указатель channel pointer временного канала «О» содержит ад­рес начала двухпортовой памяти (DPBASE), начиная с которого располагаются парамет­ры «О» логического канала. Указатель channel pointer временного канала «1» обычно содержит адрес DPBASE+4, начиная с которого располагаются параметры «1» логичес­кого канала. Если необходимо объединить несколько временных слотов для работы с одним логическим каналом, то в полях channel pointer ячеек TSA-таблицы, которые закреплены за выбранными временными слотами, указывается одно и то же значение адреса памяти параметров логического канала.

Биты MASK[0:7] определяют, какие из восьми битов данных временного слота будут использоваться при работе. Если бит маски равен 0, то соответствующий ему бит вре­менного канала игнорируется при обработке. Во время передачи данных на месте за­маскированного бита временного канала передается «1».

Работа нескольких SCC-контроллеров с одним TDM-каналом. Рассмотрим при­мер, когда один TDM-кадр обслуживается двумя SCC-контроллерами (допустим SCC2 и SCC3), которые оба настроены на работу с QMC-протоколом. Причем оба SCC-контролле-

570

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

ра обслуживают одну и ту же последовательность логических каналов. Другими слова­ми, обработка TDM-кадра разделена между двумя SCC-контроллерами с целью увели­чить скорость и распараллелить обработку данных. Допустим, контроллер SCC2 обра­батывает нечетные временные слоты, а контроллер SCC3 - четные. При этом возникают проблемы программирования доступа нескольких SCC-каналов к общей ISA-памяти па­раметров одного TDM-кадра. Поэтому существует два варианта настройки режимов ра­боты SCC-контроллеров с TSA-памятью.

При первом варианте (допустим, обрабатывается 32-канальный TDM-кадр) каждый SCC-канал настроен на работу с QMC-протоколом, каждый канал имеет ячейки указа­телей Rx_S_PTR_2 и Rx_S_PTR_3, но эти указатели адресуются только к одной TSA-таблице контроллера SCC2. Таким образом, TSA-таблица располагается в памяти па­раметров контроллера SCC2, а область памяти TSA-таблицы контроллера SCC3 не используется. Указатель Rx_S_PTR_2 первоначально содержит адрес SCC2_base+Ox20. Шестнадцать логических каналов, которые обрабатываются SCC2, расположены в пер­вых 16 ячейках таблицы. В ячейке канала 30 установлен бит W = 1, показывающий, что обработка логических каналов контроллером SCC2 закончена. Указатель Rx_S_PTR_3 первоначально содержит адрес SCC2_base+Ox40. Шестнадцать логических каналов, которые обрабатываются SCC3, расположены в ячейках таблицы, начиная с 17-го по 32-й. В ячейке канала 31 установлен бит W = 1, показывающий, что обработка логичес­ких каналов контроллером SCC3 закончена. Каждая ячейка в таблице имеет указатель на область параметров обрабатываемого логического канала. Но здесь необходимо проверять, чтобы случайно контроллеры SCC2 и SCC3 не обрабатывали один и тот же логический канал. Таблица TSATTx тоже находится в области памяти параметров кон­троллера SCC2, TSA-таблица в области SCC3 не используется, и эта память может быть отведена для других целей.

При втором варианте (допустим, обрабатывается 64-канальный TDM-кадр) для хра­нения TSA-таблиц приемника и передатчика требуется 256 байт памяти (64ячейки х 2 байта х 2 таблицы), но в памяти параметров одного SCC-канала свободно только 128 байт. Поэтому можно применить следующий способ размещения. Таблица приемников контроллеров SCC2 и SCC3 располагается в области памяти параметров канала SCC2, а таблица передатчиков - в области памяти параметров канала SCC3. Разделение таб­лицы на две части между SCC-каналами будет такое же, как и в первом варианте. Такое распределение памяти контроллеров более эффективно.

На основе приведенных примеров можно запрограммировать режим работы, когда все временные слоты будут обрабатываться разными SCC-контроллерами и TSA-память будет распределена между страницами памяти параметров отдельных контроллеров, а это позволяет эффективно расходовать память и вычислительные мощности каждого SCC-канала. Но при этом пользователь должен быть уверен, что не возникнут коллизии, когда из-за ошибок при программировании несколько SCC-контроллеров будут обраба­тывать один временной слот.

Канал-ориентированная память параметров. Канал-ориентированная память па­раметров (Channel-Specific parameter RAM) занимает нижнюю (младшую) часть двухпор­товой памяти. Каждый логический канал может быть связан с временным каналом TDM-кадра с помощью указателей канала в ячейках TSA-памяти. Пользователь может сам определять количество необходимых логических каналов. Для каждого логического ка­нала в памяти выделяется область размером 64 байта, формат которой зависит от ком­муникационного протокола, по правилам которого передается информация по логичес­кому каналу. Свободные области логических каналов могут быть отведены для хранения буферных дескрипторов других SCC-контроллеров. При работе с QMC-протоколом логи­ческие каналы могут работать или в режиме HDLC-протокола или в режиме transparent «прозрачной передачи».

571