Руководство пользователя по сигнальным процессорам Sharc
.pdfПоследовательные порты 10
используется для передачи, сигнал TFS определяет, управляет ли ADSP 2106x этим выводом или нет. В многоканальном режиме ADSP 2106x управляет сигналом TFS независимо от состояния бита ITFS. После загрузки буфера передачи ТХ начинается передача и генерируется сигнал TFS. Когда используется режим DMA через последовательный порт, генерация сигнала TFS может начаться через несколько циклов после разрешения передачи в многоканальном режиме. Если необходимо начать передачу в заданный момент времени, то буфер ТХ должен загружаться предварительно.
Замечание: в многоканальном режиме вывод TFS обычно остается неподключенным, а выводы RFS обычно соединяются вместе.
10.7.2. Биты управления многоканальным режимом в STCTL, SRCTL
Регистры управления STCTLx и SRCTLx содержат несколько бит, которые используются для разрешения многоканального режима работы и его настройки.
10.7.2.1. Разрешение многоканального режима работы
Многоканальный режим разрешается путем установки бита MCE в регистре управления SRCTLx.
Когда MCE=1, многоканальный режим разрешен. Когда MCE=0, многоканальный режим запрещен.
Работа в многоканальном режиме активизируется через три цикла после установки МСЕ. Внутренне генерируемые сигналы кадровой синхронизации активизируются через четыре цикла после установки МСЕ.
Установка бита МСЕ разрешает работу в многоканальном режиме и для передающей и для принимающей частей SPORT. Поэтому, если прием SPORT осуществляется в многоканальном режиме, то и передача должна быть в многоканальном режиме.
10.7.2.2. Число каналов
Число используемых в многоканальном режиме каналов определяется 5 разрядной группой NCH в регистре управления SRCTLx. В NCH должно быть установлено значение, равное фактическому числу каналов минус единица:
NCH = Число каналов – 1.
10.7.2.3. Индикатор текущего канала
5 разрядное поле CHNL в регистре управления STCTLx показывает, какой канал выбран в настоящее время при работе в многоканальном режиме. Это поле
371
10 Последовательные порты
является индикатором состояния и предназначено только для чтения. CHNL (4 0) инкрементируется по модулю NCH (4 0) после того, как каждый канал обслуживается.
10.7.2.4. Задержка сигнала кадровой синхронизации в многоканальном режиме
4 разрядное поле MFD в регистре управления STCTLx определяет задержку между сигналом кадровой синхронизации и первым битом данных в многоканальном режиме. Значение задержки MFD устанавливается в циклах тактовой синхронизации последовательного порта. Эта задержка в многоканальном режиме позволяет процессору работать с устройствами различного типа с интерфейсом Т1.
Если значение MFD равно 0, то сигнал кадровой синхронизации совпадает с первым битом данных. Максимальное значение MFD равно 15. Новый сигнал кадровой синхронизации может появиться раньше, чем данные из последнего блока будут приняты, так как блоки данных идут друг за другом.
В случае, когда ADSP 2106x генерирует сигнал кадровой синхронизации для многоканальной системы и частота тактовой синхронизации системы равна частоте CLKIN (тактовой частоте процессора), задержка должна быть по крайней мере единичной. Если MFD не установлен в единицу, то ведущий ADSP 2106x в многопроцессорной системе не распознает первый после разрешения работы в многоканальном режиме сигнал кадровой синхронизации. Однако все последующие сигналы кадровой синхронизации будут распознаны.
10.7.3. Регистры выбора каналов
Каналы могут блокироваться и активизироваться индивидуально для выбора принимаемых и передаваемых слов при работе в многоканальном режиме. Слова данных из активизированных каналов принимаются и передаются, а слова из заблокированных каналов игнорируются. Количество используемых для передачи каналов может равняться 32, столько же каналов предусмотрено для приема.
Регистры выбора каналов активизируют или блокируют отдельные каналы. В каждом последовательном порту имеются следующие регистры:
Название регистра |
Функция |
MTCSx |
Выбор режима многоканальной передачи – определяет активные |
|
передающие каналы. |
MRCSx |
Выбор режима многоканального приема – определяет активные |
|
приемные каналы. |
372
Последовательные порты 10
Название регистра |
Функция |
MTCCSx |
Выбор компандирования в режиме многоканальной передачи – |
|
определяет, в каких активных передающих каналах данные |
|
компандируются. |
MRCCSx |
Выбор компандирования в режиме многоканального приема – |
|
определяет, в каких активных приемных каналах данные |
|
компандируются. |
Каждый регистр имеет 32 бита, которые соответствуют 32 каналам. Установка бита активизирует этот канал таким образом, что его слово будет выбираться из блока данных (и для передачи, и для приема). Например, установка бита 0 выбирает слово 0, установка бита 12 выбирает слово 12 и т. д.
Установка определенного бита регистра MTCSx в 1 обуславливает расположение слова в потоке передаваемых данных в соответствии с номером канала. Обнуление бита в регистре MTCSx переводит вывод DT (передача данных) в третье состояние на время, в течение которого этот канал не используется для передачи.
Установка определенного бита регистра MRCSx в 1 обуславливает расположение слова в потоке принимаемых данных в соответствии с номером канала; принятое слово загружается в буфер RX. Обнуление бита в регистре приводит к тому, что последовательный порт игнорирует данные.
Компандирование данных в каналах задается в регистрах MTCCSx и MRCCSx. Установка соответствующего каналу бита в этих регистрах в 1 определяет компандирование данных. Закон компандирования (А закон или m закон) определяется первым битом поля DTYPE в регистрах управления STCTLx и SRCTLx.
10.7.4 Регистры сравнения данных при приеме через SPORT
Два набора регистров в ADSP 2106x помогают реализовывать связь в многопроцессорной системе с использованием последовательных портов в многоканальном режиме (MCE=1). Этими регистрами являются: регистры сравнения при приеме (Receive Comparison) (KEYWDx) и регистры маскирования сравнения при приеме (Receive Comparison Mask) (KEYMASKx).
Регистры KEYWD0 или KEYWD1 хранят шаблон, с которым сравниваются принимаемые данные. Соответствующие регистры KEYMASK0 или KEYMASK1 определяют, какие биты принимаемых слов данных должны сравниваться. Установка бита KEYMASKx маскирует соответствующий бит в регистре KEYWDx, блокируя его сравнение.
373
10 Последовательные порты
Процессор сравнивает принимаемые слова с данными, хранящимися в KEYWDx. Полученные данные принимаются или игнорируются в зависимости от результата сравнения. Если данные принимаются, то приемник делает запрос на передачу по DMA во внутреннюю память или генерирует прерывание
(в зависимости от установки бит в регистре SRCTL).
Помимо установки MCE, операцией сравнения при приеме управляют следующие биты в регистре SRCTL:
IMODE (Бит 15) |
IMAT (Бит 20) Действие |
|
0 |
х |
Блокирование сравнения при приеме. |
1 |
0 |
Ввод принимаемых данных, если результат сравнения |
|
|
с KEYWD «FALSE». |
1 |
1 |
Ввод принимаемых данных, если результат сравнения |
|
|
с KEYWD «TRUE». |
Когда сравнение при приеме разрешено, компандирование при передаче и приеме запрещено. Регистр MTCCSx, который задает компандирование в многоканальном режиме при запрещенном сравнении при приеме, определяет, будет ли выполнять процессор сравнение с KEYWD для активизированных приемных каналов. Если бит MTCCSx для соответствующего канала установлен
в0, процессор не выполняет сравнение и всегда вводит принимаемые по этому каналу данные. Если бит MTCCSx для соответствующего канала установлен в 1, процессор выполняет сравнение и вводит (или игнорирует) полученные данные
взависимости от результата сравнения и установки IMAT в регистре SRCTLx.
Сравнение при приеме в многоканальном режиме позволяет SPORT ADSP 21061 генерировать запрос DMA или прерывание в случае, когда полученные по определенному каналу данные соответствуют заданному условию. Без этой возможности SPORT прерывал бы работу процессора при каждом приеме данных и процессору требовалось бы проверить, ему ли предназначались эти данные. Возможно, что большая часть посылаемых данных не предназначается для данного процессора. Сравнение при приеме дает возможность запрограммировать SPORT таким образом, чтобы он прерывал работу процессора только при сообщениях, предназначенных для этого процессора.
В качестве примера сравнения при приеме рассмотрим четыре ADSP 21061 (A, B, C и D), которые используют SPORT0 в многоканальном режиме для
межпроцессорной связи. Каналы 0, 1, 2 и 3 используются соответственно A, B, C и D для передачи между процессорами управляющей информации. Каналы с 4 по 10, с 11 по 17, с 18 по 24 и с 25 по 31 используются соответственно A, B, C, и D для передачи данных.
Т.к. каналы с 0 по 3 используются для передачи управляющей информации между процессорами, т. к. сравнение входящих данных разрешается только для
374
Последовательные порты 10
них. Первоначально каналы с 4 по 31 могут быть заблокированы для приема. Для этого примера рассмотрим связь только между процессорами А и В. Ключевое слово сравнения программируется. В этом примере процессор В ожидает появления ключевого слова «START TRANSMIT TO B».
Проверка этого ключевого слова процессором В может осуществляться следующим образом:
1.Установка ключевого слова «START TRANSMIT TO B» в регистре KEYWD.
2.Обнуление битов 31 16 регистра KEYMASK и установка остальных бит в 1. Это действие разрешает операцию сравнения только для битов 31 16. Итак, допустим, что для кода «START TRANSMIT TO B» используются только биты 31 16, а биты 15 0 указывают источник передачи и каналы данных.
3.Установка битов 15 и 20 в регистре SRCTL в 1. Это позволяет последовательному порту генерировать прерывание или делать запрос DMA только при соответствии входящих данных значению в KEYWD.
4.Установка битов 0 3 в 1 в регистре выбора режима многоканальной передачи и обнуление остальных бит. Это позволяет проводить операцию сравнения только для каналов 0 3.
Пока процессор В не получит ключевое слово «START TRANSMIT TO B», он будет игнорировать все принимаемые данные. Когда процессор А захочет передать данные в В, он передаст ключевое слово «START TRANSMIT TO B» по каналу 0. Если в результате сравнения процессор В распознает ключевое слово, SPORT прерывает процессор В. Затем процессор анализирует остальные 16 бит и определяет, что источником является процессор А, а данные находятся в каналах 4 10. Т.к. процессор А использует каналы 4 10 для передачи данных, процессор В активизирует прием по этим каналам и передает сообщение «READY TO RECEIVE DATA» процессору А, используя канал 1. После приема этого сообщения процессор А передает данные по каналам 4 10. Если в протоколе передачи используется фиксированное число байт в каждом сообщении, то процессор В после приема сообщения от А может послать обратно сообщение, содержащее число принятых байт, подтверждающее точную передачу данных.
10.8. Передача данных между последовательным портом и
памятью
Передаваемые и принимаемые данные могут перемещаться между последовательными портами ADSP 2106x и памятью на кристалле одним из двух способов – с использование передачи одного слова данных или передачи
375
10 Последовательные порты
блоков данных посредством DMA. Оба метода управляются прерываниями и используют одни и те же внутренние сигналы прерываний.
Если режим DMA через последовательный порт запрещен в регистрах управления STCTLх или SRCTLх, то SPORT генерирует прерывание каждый раз, когда он принимает слово данных или начинает передачу слова данных. Режим DMA через последовательный порт обеспечивает механизм для приема или передачи целого блока данных перед генерированием прерывания. Контроллер DMA ADSP 2106x управляет передачами по DMA, позволяя ядру процессора продолжать выполнение программы, пока весь блок данных не будет передан или принят. Программы обрабатывают блоки данных быстрее, чем одиночные слова, что значительно снижает непроизводительные затраты.
10.8.1. Передача по DMA блоков данных
Контроллер DMA ADSP 2106x обеспечивает автоматическую передачу данных по DMA между внутренней памятью и двумя последовательными портами. Имеется четыре канала DMA последовательных портов – каждый SPORT имеет один канал для приема данных и один для передачи данных. Каналы DMA последовательного порта пронумерованы следующим образом:
0 канал DMA – Прием через SPORT0;
1 канал DMA – Прием через SPORT1 (или буфер 0 линк портов); 2 канал DMA – Передача через SPORT0;
3 канал DMA – Передача через SPORT1 (или буфер 1 линк портов).
Заметим, что каналы 1 и 3 совместно используются SPORT1 и буферами 0 и 1 линк портов. Каналам DMA SPORT назначен более высокий приоритет, чем всем другим каналам DMA (т.е. каналам линк портов и внешнего порта) из за относительно низкой скорости их обслуживания и их неспособности удерживать входящие данные. Когда в одном цикле имеется несколько запросов DMA, то передачи по DMA через SPORT выполняются в первую очередь.
Хотя передачи по DMA всегда выполняются с использованием 32 разрядных слов, последовательные порты могут обрабатывать слова длиной от 3 до 32 бит. Если последовательно передаваемые или принимаемые слова длиной 16 бит или меньше, то они могут упаковываться в 32 разрядные слова для каждой передачи по DMA. Режим упаковки определяется битом PACK в регистрах управления STCTLx и SRCTLх. При разрешенной упаковке данных последовательного порта (PACK=1) прерывания передачи и приема генерируются для 32 разрядного упакованного слова, а не для каждого 16 разрядного слова.
376
Последовательные порты 10
В следующих разделах представлен краткий обзор операций DMA через последовательный порт; некоторые подробности рассматриваются в главе DMA этого руководства.
10.8.1.1. Настройка канала DMA SPORT
Каждый канал DMA SPORT имеет бит разрешения (SDEN) в регистрах управления STCTLx и SRCTLx двух последовательных портов. Если DMA для определенного канала не разрешен, то SPORT генерирует прерывание всякий раз, когда принимается слово данных или начинается передача слова данных (см. дальше в этой главе «Передача одного слова данных»). Каждый канал также имеет бит разрешения цепочки операций DMA (SCHEN) в регистрах управления (см. далее «Цепочка операций DMA»).
Канал DMA последовательного порта настраивается посредством записи набора параметров буфера памяти в регистры параметров DMA. Регистры II, IM и C должны быть загружены начальным адресом буфера, модификатором адреса и величиной счета соответственно. Эти регистры могут программироваться ядром процессора или внешним процессором.
Как только канал DMA последовательного порта настроен и активизирован, принятые в RX слова данных автоматически пересылаются в буфер внутренней памяти. Когда последовательный порт готов передавать данные, слово автоматически пересылается из внутренней памяти в буфер TX. Эти передачи продолжаются, пока не будут переданы или приняты все данные из буфера (т. е. когда значение регистра счетчика достигнет нуля).
Когда значение регистра счетчика канала DMA уменьшится до нуля, генерируется соответствующее прерывание.
10.8.1.2. Регистры параметров DMA SPORT
Канал DMA состоит из набора регистров параметров, которые образуют буфер данных во внутренней памяти, и из используемых последовательным портом аппаратных средств для обслуживания запросов прямого доступа к памяти. Регистры параметров каждого канала DMA SPORT приведены в табл. 10.8 и 10.9. Эти регистры являются частью отображенного в карте памяти набора регистров устройства ввода вывода ADSP 2106х.
Работа канала DMA похожа на работу генератора адреса данных (DAG). Каждый канал имеет набор регистров параметров, включающих индексный регистр (IIx) и регистр модификации (IMx), которые используются, чтобы задавать буфер данных во внутренней памяти. Индексный регистр должен инициализироваться начальным адресом буфера данных. После того, как каждое слово данных
377
10 Последовательные порты
передается в последовательный порт или из него, контроллер DMA добавляет значение модификации к содержимому индексного регистра, чтобы сгенерировать адрес для следующей передачи по DMA. Значение модификации в регистре IM— знаковое целое, что позволяет осуществлять инкремент и декремент адреса.
Каждый канал DMA имеет регистр счетчика (Сх). Он должен инициализироваться количеством слов, которые должны быть переданы. Содержимое счетчика уменьшается после каждой передачи по DMA для данного канала. Когда значение счетчика достигает нуля, генерируется прерывание – и канал автоматически блокируется.
Каждый канал DMA имеет регистр указателя цепочки (СРх), регистр общего назначения (GPx) и регистры, используемые для адресации двумерных массивов в многопроцессорных системах (DA и DB). Регистр СР используется в цепочках операций DMA (см. ниже «Цепочки операций DMA»), а регистр GP для любых целей. Регистры DAх и DBх могут использоваться как регистры общего назначения при обычных операциях DMA с одномерными массивами.
Регистр |
Число бит |
Функция |
IIx |
17 |
Индекс (начальный адрес буфера данных) |
IMx |
16 |
Модификатор (приращение адреса) |
Cx |
16 |
Счетчик (число слов, которые нужно передать) |
CPx |
18* |
Указатель цепочки (адрес следующего набора параметров буфера) |
GPx |
17 |
Общее назначение или 2 D DMA |
DBx |
16 |
Общее назначение или 2 D DMA |
DAx |
16 |
Общее назначение или 2 D DMA |
* Младшие 17 бит содержат адрес памяти следующего набора параметров для цепочки операций DMA. Старший бит (17 ый) – программно управляемые прерывания (PCI) – определяет, будут ли генерироваться прерывания DMA после выполнения каждой последовательности DMA.
Таблица 10.8. Регистры параметров для каждого канала DMA SPORT
Адрес памяти |
Регистр Номер канала и функция |
|
0x0060 |
II0 |
0 канал DMA – прием через SPORT0 |
0x0061 |
IM0 |
0 канал DMA – прием через SPORT0 |
0x0062 |
C0 |
0 канал DMA – прием через SPORT0 |
0x0063 |
CP0 |
0 канал DMA – прием через SPORT0 |
0x0064 |
GP0 |
0 канал DMA – прием через SPORT0 |
0x0065 |
DB0 |
0 канал DMA – прием через SPORT0 |
0x0066 |
DA0 |
0 канал DMA – прием через SPORT0 |
378
Последовательные порты 10
0x0067 |
|
Зарезервирован |
|
0x0068 |
II1 |
1 |
канал DMA – прием через SPORT1 (или буфер 0 линк портов) |
0x0069 |
IM1 |
1 |
канал DMA – прием через SPORT1 (или буфер 0 линк портов) |
0x006A |
C1 |
1 |
канал DMA – прием через SPORT1 (или буфер 0 линк портов) |
0x006B |
CP1 |
1 |
канал DMA – прием через SPORT1 (или буфер 0 линк портов) |
0x006С |
GP1 |
1 |
канал DMA – прием через SPORT1 (или буфер 0 линк портов) |
0x006D |
DB1 |
1 |
канал DMA – прием через SPORT1 (или буфер 0 линк портов) |
0x006E |
DA1 |
1 |
канал DMA – прием через SPORT1 (или буфер 0 линк портов) |
0x006F |
|
Зарезервирован |
|
0x0070 |
II2 |
2 |
канал DMA – передача через SPORT0 |
0x0071 |
IM2 |
2 |
канал DMA – передача через SPORT0 |
0x0072 |
C2 |
2 |
канал DMA – передача через SPORT0 |
0x0073 |
CP2 |
2 |
канал DMA – передача через SPORT0 |
0x0074 |
GP2 |
2 |
канал DMA – передача через SPORT0 |
0x0075 |
DB2 |
2 |
канал DMA – передача через SPORT0 |
0x0076 |
DA2 |
2 |
канал DMA – передача через SPORT0 |
0x0077 |
|
Зарезервирован |
|
0x0078 |
II3 |
3 |
канал DMA – передача через SPORT1 (или буфер 1 линк портов) |
0x0079 |
IM3 |
3 |
канал DMA – передача через SPORT1 (или буфер 1 линк портов) |
0x007A |
C3 |
3 |
канал DMA – передача через SPORT1 (или буфер 1 линк портов) |
0x007B |
CP3 |
3 |
канал DMA – передача через SPORT1 (или буфер 1 линк портов) |
0x007С |
GP3 |
3 |
канал DMA – передача через SPORT1 (или буфер 1 линк портов) |
0x007D |
DB3 |
3 |
канал DMA – передача через SPORT1 (или буфер 1 линк портов) |
0x007E |
DA3 |
3 |
канал DMA – передача через SPORT1 (или буфер 1 линк портов) |
0x007F |
|
Зарезервирован |
|
Таблица 10.9. Регистры параметров DMA через SPORT
10.8.1.3. Цепочка операций DMA SPORT
При выполнении цепочки операций DMA ADSP 2106x автоматически инициализирует следующую передачу по DMA сразу после того, как все содержимое буфера передано или принято. Регистр указателя цепочки (СР) указывает адрес во внутренней памяти, где хранится следующий набор параметров DMA. Контроллер DMA автоматически загружает эти значения в регистры параметров канала DMA, чтобы настроить следующую последовательность DMA. Подробнее см. в главе DMA этого руководства.
Цепочки операций DMA выполняются независимо в передающих и приемных каналах каждого последовательного порта. Каждый канал DMA SPORT имеет бит разрешения цепочки операций (SCHEN) в регистрах управления STCTLx и SRCTLx. Для разрешения цепочки операций он должен быть установлен в 1. Обнуление всех бит в поле адреса регистра указателя цепочки (CP) также блокирует цепочку.
379
10 Последовательные порты
10.8.2. Передача одного слова
Отдельные слова данных могут передаваться и приниматься последовательными портами; при этом прерывания генерируются для каждого передаваемого или принимаемого 32 разрядного слова. Когда последовательный порт активизирован, а DMA запрещен (в регистрах управления STCTLx или SRCTLx), прерывания DMA SPORT будут генерироваться следующим образом: когда будет принято полное 32 разрядное слово в буфер RX или когда буфер TX станет не полным. Прерывания для каждого передаваемого или принимаемого слова могут использоваться для реализации управляемого прерываниями ввода вывода через последовательные порты.
Всякий раз, когда выполняемая ядром ADSP 2106x программа считывает слово из буфера RX последовательного порта или записывает слово в буфер TX, должно сначала проверяться состояние буфера – полный/пустой, – чтобы избежать зависания ядра ADSP 2106x. Зависнуть также может и внешнее устройство (например, хост процессор), когда оно считывает или записывает буфер последовательного порта. Состояние полный/пустой может определяться путем считывания бита RXS в регистре SRCTLx или бита TXS в регистре STCTLx. Считывание из пустого буфера RX или запись в полный буфер ТХ вызывает зависание ADSP 2106x (или внешнего устройства) на время, пока не изменится состояние буферов. Для предотвращения зависания при этих условиях в регистре SYSCON должен быть установлен бит запрещения зависания буфера (BHD – Buffer Hang Disable).
Если оба SPORT передают или принимают данные в одном цикле, то могут генерироваться несколько прерываний. Любое прерывание может маскироваться в регистре IMASK. Когда прерывание разрешается битом в IMASK, соответствующий бит в IRPTL должен быть сначала обнулен, чтобы очистить любой запрос прерывания, который мог быть зафиксирован ранее.
При разрешенной упаковке данных последовательного порта (PACK=1 регистрах управления STCTLx или SRCTLx) прерывания приема и передачи генерируются для 32 разрядных упакованных слов, а не для каждого 16 разрядного слова.
10.9. Циклический режим SPORT
Когда в регистре управления приемом SRCTLx установлен бит SPL (цикл SPORT), последовательный порт находится в режиме циклической передачи. Этот режим позволяет осуществлять внутреннее тестирование последовательного порта.
380
