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

Глава 21. Синхронные последовательные порты

В этой главе говорится о двух синхронных последовательных портах, входящих в состав сигнального процессора, об их устройстве, назначении и использовании.

Кроме рассмотренных нами вычислительных и других устройств, сигнальный процессор имеет встроенные коммуникационные средства в виде двух синхронных последовательных портов, называемых SPORT0 и SPORT1. Данные порты поддерживают множество последовательных протоколов обмена данными и, кроме того, обеспечивают прямое соединение процессоров в многопроцессорной системе. Рассмотрим подробнее эти устройства и команды, которыми они управляются.

Каждый SPORT имеет пять интерфейсных линий:— тактовый сигнал;— прием кадровых синхроимпульсов;— передача кадровых синхроимпульсов;— прием данных;— передача данных., в отличие от SPORT0, имеет возможность программно переназначать все сигнальные линии, кроме SCLK. Описание выводов последовательных портов сигнального процессора ADSP-2181 приведено в табл. 21.1.

Таблица 21.1 Описание выводов последовательных портов сигнального процессора ADSP-2181— вход, O — выход, I/O — вход/выход.и SPORT1 способны одновременно принимать последовательный поток данных на входе DR и передавать последовательный поток через выход DT, обеспечивая тем самым дуплексный режим работы. Кроме того, передаваемые и принимаемые данные могут быть аппаратно запакованы и распакованы с помощью аппаратного блока компандирования. Данная процедура широко применяется в аппаратуре цифровой связи. Биты данных синхронизируются тактовыми синхроимпульсами SCLK внутреннего генератора, если процессор запрограммирован как источник синхронизации. Если порт запрограммирован в режим внешней синхронизации, SCLK становится входом для внешних импульсов синхронизации.

Сигналы кадровой синхронизации RFS и TFS используются для указания начала слова последовательно передаваемых данных или потока последовательно передаваемых слов. Эти сигналы также могут генерироваться внутри процессора или формироваться извне.

На рис. 21.1 показана структурная схема последовательного порта.

Рис. 21.1. Структурная схема последовательного порта

Данные, предназначенные для передачи, записываются через шину данных DMD из внутреннего регистра процессора в регистр данных передатчика порта TX. Эти данные могут перед передачей сжиматься в блоке компандирования (упаковки-распаковки) при задании такого режима. После чего данные автоматически передаются в сдвиговый регистр передатчика. Из регистра сдвига биты передаются на вывод последовательного порта DT, начиная со старшего разряда, синхронно с тактовыми синхроимпульсами SCLK. Приемник последовательного порта принимает данные с вывода DR, также синхронно с тактовыми синхроимпульсами SCLK. После приема одного слова данные распаковываются в блоке компандирования (если такая процедура была предварительно программно задана), а затем передаются в регистр данных приемника RX последовательного порта. Таким образом, происходит аппаратная одновременная передача и прием последовательных данных в обоих портах.

После записи данных в регистр TX последовательного порта этот порт готов к передаче данных. Передача начинается синхронно с сигналом TFS. После начала передачи каждое слово, записанное в регистр TX, подается во внутренний сдвиговый регистр передатчика, откуда оно передается на выход последовательно по битам, начиная с самого старшего бита. Каждый бит сдвигается по переднему фронту тактового синхроимпульса. После окончания передачи первого (самого старшего) бита слова последовательный порт генерирует прерывание передатчика. Несмотря на то, что передача первого слова продолжается, становится возможной запись нового слова данных в регистр TX.

В приемнике последовательного порта биты накапливаются в том же порядке, как они поступают во внутренний сдвиговый регистр приемника. По окончании приема одного целого слова оно записывается в регистр RX, и последовательный порт генерирует прерывание приемника.

Благодаря имеющейся возможности программной настройки конфигурации портов, достигается их гибкость в работе и совместимость с другими типами последовательных портов. Режим работы каждого последовательного порта задается программно с помощью регистров управления. Назначение регистров управления последовательных портов сигнального процессора, а также назначение и приоритетность прерываний последовательных портов SPORT0 и SPORT1 были подробно описаны ранее.

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

Каждый последовательный порт поддерживает длину слова последовательно передаваемых и принимаемых данных от трех до шестнадцати бит.

Приемник и передатчик последовательного порта может функционировать как с использованием сигналов кадровой синхронизации, так и без кадровой синхронизации.

Сигналы кадровой синхронизации могут быть активными по высокому или по низкому уровню и с программируемой длительностью.и SPORT1 могут выполнять аппаратное компандирование по А-закону или Мю-закону, согласно рекомендациям Международного консультативного комитета по телеграфии и телефонии (МККТТ) G.711.

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

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

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

Пример диаграмм работы порта в различных режимах работы при передаче и приеме слов длиной в четыре бита информации показан на рис. 21.2–21.13. Описание рисунков диаграмм для удобства пользования сведено в табл. 21.2.

Таблица 21.2 Описание рисунков диаграмм

Рис. 21.2

Рис. 21.3

Рис. 21.4

Рис. 21.5.

Рис. 21.6

Рис. 21.7

Рис. 21.8

Рис. 21.9

Рис. 21.10

Рис. 21.11

Рис. 21.12

Рис. 21.13в отличие от SPORT1 может кроме того работать в режиме многоканальности. Т.е. он может избирательно принимать и передавать данные последовательного потока с использованием мультиплексирования 24 или 32 каналов с временным разделением информации. Это необходимо для использования цифровых коммуникационных интерфейсов T1 и E1, а также может использоваться для сетевой коммуникации нескольких процессоров. В одноканальном режиме сигналы кадровой синхронизации обозначают начало слова или непрерывного потока слов. В многоканальном режиме сигнал кадровой синхронизации приема данных RFS0 обозначает начало конкретного слова в потоке данных, состоящих из 24 или 32 слов, для одновременного приема и передачи этого слова по раздельным линиям приемопередатчика. Многоканальный режим разрешается установкой в единичное состояние 15-го разряда в регистре управления SPORT0 по адресу 0x3FF6. Формат пакетов при этом определяется разрядом 9 этого же регистра. Если он установлен в единицу, будет задан 32-словный формат, при установке в ноль задается 24-словный формат данных. Кроме того, разряды с 10-го по 13-й этого же регистра, с условным названием MFD, устанавливают задержку сигнала кадровой синхронизации в многоканальном режиме для того, чтобы кадровый синхроимпульс обозначал необходимое для приема и передачи слово в потоке данных. Диаграмма задержки сигнала кадровой синхронизации для нескольких значений MFD при работе SPORT0 в многоканальном режиме показана на рис. 21.14.

Рис. 21.14. Диаграмма задержки сигнала кадровой синхронизации

Сигнал кадровой синхронизации передатчика TFS0 в многоканальном режиме работает как сигнал TDV (Transmit Data Valid), переводимый как правильные данные передачи и предназначенный для управления включением и отключением внешней буферной логики передатчика. Фактически этот сигнал осуществляет стробирование тех слов данных, которые были разрешены в конфигурационном регистре для передачи. В зависимости от установки 7-го разряда в регистре управления SPORT0 по адресу 0x3FF6 описанный сигнал может иметь активное значение с высоким или с низким уровнем потенциала. На рис. 21.15 приведен пример диаграммы работы SPORT0 в многоканальном режиме.

Рис. 21.15. Пример диаграммы работы SPORT0 в многоканальном режиме

Рассмотрим пример программного конфигурирования обоих последовательных портов сигнального процессора, приведенный ниже.

============================= SPORT0 =============================

Регистры разрешения мультиканального приема/передачи данных SPORT0

Регистр разрешения приема SPORT0_RX_Channels1 = 0x3ffa            

Биты:   FEDCBA9876543210 0-игнорирован 1-доступен                  

Каналы: 3322222222211111                                          

         1098765432109876                                          

  ax0 = b#0000000000000000; DM(SPORT0_RX_Channels1) = ax0;

Регистр разрешения приема SPORT0_RX_Channels0 = 0x3ff9            

Биты:   FEDCBA9876543210 0-игнорирован 1-доступен                  

Каналы: 111111                                                    

         5432109876543210                                           

  ax0 = b#0000000000000010; DM(SPORT0_RX_Channels0) = ax0;

Регистр разрешения передачи SPORT0_TX_Channels1 = 0x3ff8           

Биты:   FEDCBA9876543210 0-игнорирован 1-доступен                  

Каналы: 3322222222211111                                           

         1098765432109876                                           

  ax0 = b#0000000000000000; DM(SPORT0_TX_Channels1) = ax0;

Регистр разрешения передачи SPORT0_TX_Channels0 = 0x3ff7          

Биты:   FEDCBA9876543210 0-игнорирован 1-доступен                  

Каналы: 111111                                                    

         5432109876543210                                          

  ax0 = b#0000000000000011; DM(SPORT0_TX_Channels0) = ax0;

Регистр SPORT0_Control_Reg = 0x3FF6 (Регистр управления SPORT0)   

Биты:     FEDCBA9876543210                                         

Исх.сост: 0000000000000000                                        

    ax0 = b#1100011100110111; DM(SPORT0_Control_Reg) = ax0;

Регистр SPORT0_SCLKDIV = 0x3FF5 (Модуль деления последов. такт. импульсов)

           частота CLKOUT внутренняя удвоенная частота процессора          

SCLKDIV = ------------------------------------------------------ - 1;     

(кадр.с.и.)      2*(частота SCLK синхронизация бит порта)                  

                                                                           

SCLKDIV =(( 2*16384КГц ) / ( 2*2048КГц )) -1=8-1=7                        

      ax0 = 7; DM(SPORT0.SCLKDIV) = ax0;

Регистр SPORT0_RFSDIV = 0x3FF4 (Модуль деления последоват. такт. импульсов)

          частота SCLK                                                     

RFSDIV = ------------ - 1;                                                

          частота RFC                                                      

RFSDIV = 2048КГц / 8КГц - 1 = 256-1 = 255                                 

     ax0 = 255; DM(SPORT0_RFSDIV) = ах0;

Регистр SPORT0_Autobuf = 0x3FF3 (Регистр управления автобуферизацией SPORT0)

Биты:     FEDCBA9876543210                                                 

Исх.сост: 0000XXXXXXXXXX00                                                

    ax0 = b#0000011110101011; DM(SPORT0_Autobuf) = ах0;

Регистр SPORT1_Control_Reg = 0x3ff2 (Регистр управления SPORT1)           

Биты:     FEDCBA9876543210                                                 

Исх.сост: 0000000000000000                                                

    ax0 = b#0111101001001001; DM(SPORT1_Control_Reg) = ах0;

Регистр SPORT1_SCLKDIV = 0x3FF1 (Модуль деления последоват. такт. импульсов)

           частота CLKOUT внутренняя удвоенная частота процессора          

SCLKDIV = ------------------------------------------------------ - 1;     

(кадр.с.и.)       2*(частота SCLK синхронизация бит порта)                 

                                                                           

SCLKDIV = (( 2 *16384КГц ) / ( 2*115200 Гц )) -1 = 142-1 = 852            

      ax0 = 141; DM(SPORT1_SCLKDIV) = ax0; 115200 бод

Регистр SPORT1_RFSDIV = 0x3FF0 (Модуль деления последоват. такт, импульсов)

          частота SCLK                                                     

RFSDIV = ------------ - 1; (или число бит в пакете -1)                    

          частота RFC                                                      

RFSDIV = 19200 Гц / 1920 Гц - 1 = 10-1 = 9                                

     ax0 = 9; DM(SPORT1_RFSDIV) = ax0;

Регистр SPORT1_Autobuf = 0x3FEF (Регистр управления автобуферизацией SPORT1)

Биты:     FEDCBA9876543210                                                

Исх.сост: 0000XXXXXXXXXX00                                                 

    ax0 = b#0000000000000000; DM(SPORT1_Autobuf) = ax0;

В первых двух блоках программы разрешается работа первого канала приемника SPORT0. В следующих двух блоках программы разрешается работа нулевого и первого канала передатчика SPORT0. Далее в регистр SPORT0_Control_Reg заносится информация о длине слова, формате данных, выравнивании слова, типе компандирования, инвертировании кадровых импульсов и др. режимов работы порта. После чего вычисляется коэффициент деления для тактовой частоты синхронизации SCLK и записывается в регистр SPORT0_SCLKDIV. Аналогично, в следующем блоке программы, производится вычисление коэффициента деления для тактовой частоты кадровых импульсов и запись этого значения в регистр SPORT0_RFSDIV. Завершается конфигурирование SPORT0 записью режима работы порта в регистр управления автобуферизацией SPORT0_Autobuf. Аналогично производится конфигурирование порта SPORT1.

Прием и передача данных через порты могут осуществляться с помощью регистров передатчика TX0, TX1 и регистров приемника RX0, RX1 в портах SPORT0 и SPORT1 соответственно. Эти регистры не отображены в карте памяти процессора, но распознаются мнемоникой ассемблера. Доступ к этим регистрам обеспечивается в произвольный момент во время выполнения программы. Например, следующая команда записывает данные из регистра AX0 в регистр передатчика SPORT1:= AX0; Содержимое регистра AX0 передается в порт SPORT1

Естественно, что перед этим SPORT1 должен быть программно сконфигурирован ранее описанными командами.

Следующая команда запишет принятые данные из регистра приемника порта SPORT0 в регистр AX0:= RX0; Содержимое регистра приема SPORT0 записывается в регистр AX0

Часть IV. Среда разработки Visual DSP++

В этой части книги говорится об установке на компьютер современного средства разработки программ для сигнальных процессоров — программного пакета Visual DSP++, его запуске и работе. Приводятся примеры программ и их отладка в среде разработки. Демонстрируется спектральный анализ сигнала с помощью Visual DSP++. Рассказывается о программировании на Си в данной среде разработки.

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