Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KOMAROV.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.32 Mб
Скачать

1.12.3. Пример конфигурирования последовательных портов

Ниже приводится пример конфигурирования портов SPORT0 и SPORT1. SPORT0 генерирует сигналы битовой синхронизации (SCLK), сигналы фреймовой синхронизации, а также сжимает данные по –закону. Это типичный пример установок для связи с комбинированным кодеком.

SPORT1 использует внешнюю битовую синхронизацию, внешнюю фреймовую синхронизацию, отсутствие сжатия 16-битных данных и автобуферизацию. Это типичный пример установок для связи с другими процессорами многопроцессорной системы.

В примере инициализируются только самые необходимые конфигурационные регистры. Инициализация производится перед разрешением последовательных портов. Кроме этого, перед разрешением прерываний необходимо сбросить все внешние запросы на прерывания от последовательных портов.

{Программа инициализации sport0, sport1}

{Сначала инициализируем SPORT1}

AX0 = 0x0017;

DM(0x3FEF) = AX0; {разрешение автобуферизации}

{авто буфер ТХ использует I0 и M0}

{авто буфер RХ использует I1 и M1}

AX0 = 0x280F;

DM(0x3FF2) = AX0; {внешние SCLK, RFS и TFS}

{ RFS и TFS требуются, нормальный фреймовый}

{режим, отсутствие сжатия, 16 бит}

{Далее инициализируем SPORT0}

{Предполагаем, что Fclkin = 12.288 МГц}

AX0 = 255;

DM(0x3FF4) = AX0; {RFSDIV + 1 = 256, частота фреймовой}

{cинхронизации = 8 КГц}

AX0 = 2;

DM(0x3FF5) = AX0; {SCLKDIV + 1 = 3, частота битовой}

{cинхронизации = 2.048 МГц}

AX0 = 0x6B27;

DM(0x3FF2) = AX0; {внутренние SCLK, RFS и TFS}

{ RFS и TFS требуются, нормальный фреймовый}

{режим, сжатие по -закону, 8 бит}

{И, наконец, разрешаем работу портов и прерывания}

IFC = 0x1E; {очищаем все SPORT запросы на прерывания}

ICNTL = 0; {запрещаем вложенные прерывания}

AX0 = 0x1C1F; {разрешаем оба SPORT, BWAIT и PWAIT}

DM(0x3FFF) = AX0; {оставляем по умолчанию}

IMASK = 0x1E; {разрешаем все прерывания SPORT}

1.12.4. Сжатие данных

Сжатие данных или в более широком смысле компандинг (от COMpressing и exPANDing – сжатие и расширение данных) – это процесс логарифмического кодирования и декодирования данных с целью уменьшения числа передаваемых битов. Процессор содержит один узел сжатия данных (см. рис. 1.10) на два порта, который за один машинный цикл может произвести одно сжатие или одно расширение данных. При наличии кол­ли­зий приоритет имеет SPORT0.

Процессор поддерживает два наиболее широко распространенных алгоритма сжатия: А и . Компандинг производится в соответствии с протоколом G.711, рекомендованного CCITT. Тип компандинга может выбран независимо для каждого порта с помощью битов 5 и 4 (битовое поле DTYPE) в регистрах управления портами (см. пп. П1.4, П1.6). Так код 11 в этих битах устанавливает алгоритм сжатия А, а код 10 – алгоритм сжатия .

Оставшиеся комбинации кода в этих битах определяют формат полученных данных длиною меньше 16 бит при отключенном компандинге. Так комбинация 01 определяет правое выравнивание и заполнение старших битов знаковым битом переданного слова, а комбинация 00 – правое выравнивание и заполнение стар­ших битов нулем.

Если компандинг включен, то в регистрах RX0, RX1 находится значение с правым выравниваем и распространенным знаковым битом – расширенное из восьми принятых битов. Подобно этому запись в регистры ТХ0, ТХ1 вызывает сжатие 16-битного числа в восьми битное с правым выравниванием и распространением знака. Сжатие происходит перед перезаписью числа из регистра передаваемых данных в сдвиговый регистр передачи (см. рис. 1.10). Если абсолютное значение передаваемого числа выходит за пределы 13 бит для алгоритма А или 14 бит для алгоритма , то такое число автоматически сжимается до максимального положительного или отрицательного значения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]