Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Руководство пользователя по сигнальным процессорам Sharc

.pdf
Скачиваний:
143
Добавлен:
01.05.2014
Размер:
9.49 Mб
Скачать

Последовательные порты 10

Адрес

Название

Инициализация Определение

памяти

регистра

после сброса

 

0x00F5

 

 

Зарезервирован

0x00F6

RDIV1

ni

Коэффициент деления частот тактовой и кадровой

 

 

 

синхронизации при приеме через SPORT1

0x00F7

 

 

Зарезервирован

0x00F8

MTCS1

ni

Выбор режима многоканальной передачи через

 

 

 

SPORT1

0x00F9

MRCS1

ni

Выбор компандирования в режиме

 

 

 

многоканального приема через SPORT1

0x00FA

MTCCS1

ni

Выбор компандирования в режиме

 

 

 

многоканального передачи через SPORT1

0x00FB

MRCCS1

ni

Выбор компандирования в режиме

 

 

 

многоканального приема через SPORT1

0x00FC

KEYWD

ni

Сравнение при приеме через SPORT1 (ADSP 21061)

0x00FD

KEYMASK ni

Маска сравнения при приеме SPORT0 (ADSP 21061)

0x00FE

SPATH1

0x0001

Длина пути SPORT1 (Для многопроцессорной сети)

0x00FF

 

0x0001

Зарезервирован

ni = не инициализируется

Таблица 10.3. Адреса регистров SPORT и их инициализация

Из за того, что регистры SPORT отображены в карте памяти, в них не могут записываться данные, приходящие прямо из памяти. Они должны записываться из (или считываться в) регистров ядра ADSP 2106x; обычно одного из регистров общего назначения в регистровом файле (R15 R0). Регистры управления SPORT также могут записываться или считываться внешним устройством; обычно другим ADSP 2106x и/или хост процессором, например, для настройки операций DMA последовательного порта.

10.3.1. Запись в регистр и задержка записи

Запись в регистр SPORT из внутренней памяти заканчивается в конце того цикла, в котором она совершается. Поэтому новое значение может быть считано из регистра в следующем цикле. Однако, если сразу за чтением одного из регистров управления STCTLx или SRCTLx следует запись, то для выполнения записи может потребоваться два цикла.

При записи в регистр изменение битов управления и состояния обычно вступает в силу во втором после завершения записи цикле. Последовательные порты будут готовы для передачи или приема данных через два цикла CLKIN после их активизирования (в регистрах управления STCTLx и SRCTLx). Начиная с этого момента все циклы тактовой синхронизации последовательного порта будут использоваться для приема или передачи, – ни одного цикла не будет потеряно.

351

10 Последовательные порты

10.3.2. Буферы передачи и приема данных (TX, RX)

TX0 и TX1 – буферы передачи данных SPORT0 и SPORT1. Эти 32 разрядные буферы должны загружаться данными, предназначенными для передачи с помощью контроллера DMA, или программы, выполняемой ядром процессора. RX0 и RX1 – буферы приема данных SPORT0 и SPORT1. Эти 32 разрядные буферы автоматически загружаются из приемного регистра сдвига, когда слово данных принято целиком. Слово длиной меньше 32 х бит выравнивается по правому разряду в буферах приема и передачи.

Буферы TX работают подобно состоящему из двух ячеек FIFO, так как они имеют регистр данных и выходной регистр сдвига (см. рис. 10.1).

В любой момент времени в ТХ могут храниться два 32 разрядных слова. Когда ТХ заполнен и предыдущее слово передано, его содержимое автоматически загружается в выходной регистр сдвига. Когда регистр сдвига

загружен, генерируется прерывание, указывающее, что буфер ТХ готов принять следующее слово (т. е. буфер ТХ «не полный»). Это прерывание

не будет генерироваться, если разрешен DMA через

последовательный порт или если установлен соответствующий бит маски в регистре IMASK.

Если приходит сигнал кадровой синхронизации, а новые данные еще не загружены в ТХ, то в регистре управления передачей устанавливается бит состояния потери значащих разрядов при передаче (TUVF). Бит состояния TUVF – «залипший», и обнуляется только при блокировании последовательного порта.

Буферы RX работают подобно состоящему из трех ячеек FIFO, так как они имеют два регистра данных и входной регистр сдвига. Два полных 32 разрядных слова могут храниться в RX, пока третье слово принимается. Если первое слово не было считано (ядром ADSP 2106х или контроллером DMA), то третье слово будет записано на место второго. Когда это происходит, в регистре управления приемом устанавливается бит состояния переполнения при приеме (ROVF). Почти три полных слова могут быть приняты без считывания RX перед тем, как произойдет переполнение. Бит состояния переполнения устанавливается при приеме последнего бита третьего слова. Бит состояния ROVF – «залипший», и обнуляется только при блокировании последовательного порта.

Когда буфер RX загружается принятым словом (т. е. буфер RX «не пустой»), генерируется прерывание. Это прерывание маскируется, если разрешен DMA через последовательный порт или если установлен соответствующий бит в регистре IMASK.

352

Последовательные порты 10

10.3.2.1. Чтение и запись RX, TX

Если при выполнении вашей программы ядро процессора ADSP 2106х пытается считывать из пустого буфера RX или записывать в полный буфер ТХ, его доступ будет отложен до того момента, пока к буферу не обратится внешнее устройство I/O. Эта задержка называется «зависанием ядра процессора». Если не известно, сможет ли ядро процессора получить доступ к буферам RX и TX без зависания, то сначала должно быть считано состояние буфера (полный или пустой) в регистрах STCTLx и SRCTLx для определения возможности доступа. Можно предотвратить этот тип зависания: для этого в регистре SYSCON должен быть установлен бит запрещения зависания буферов (BHD – Buffer Hang Disable).

Биты состояния в STCTLx и SRCTLx обновляются при их чтении и записи ядром процессора, даже если последовательный порт заблокирован.

Последовательный порт должен быть заблокирован при записи в буфер RX и чтении из буфера ТХ.

10.3.3. Регистры управления передачей и приемом (STCTLx, SRCTLx)

Основными регистрами управления для каждого последовательного порта являются регистр управления передачей STCTLx и регистр управления приемом SRCTLx. Эти регистры описаны в табл.10.4 и 10.5 и изображены на рис. 10.2 и 10.3. При изменении режима работы содержимое регистра управления сначала должно обнуляться, а затем в регистр должны записываться данные, соответствующие новому режиму.

Когда приходит сигнал кадровой синхронизации TFS (от внутреннего или внешнего источника), а регистр ТХ пустой, то устанавливается бит состояния потери значащих разрядов при передаче (TUVF). При пустом буфере ТХ внутренний сигнал TFS может быть блокирован путем обнуления бита управления DITFS (DITFS=0). Когда DITFS=0 (значение по умолчанию), сигнал кадровой синхронизации передачи TFS зависит от наличия новых данных в буфере ТХ – этот сигнал будет генерироваться только при наличии данных. Установка DITFS=1 определяет не зависящий от данных сигнал кадровой синхронизации. Это обуславливает генерацию сигнала TFS и передачу содержимого буфера ТХ независимо от наличия или отсутствия в нем новых данных. При выполнении DMA через последовательный порт буфер ТХ обычно поддерживается полным, а когда операция DMA завершается, последнее слово будет передано безостановочно.

Биты состояния TXS показывают, является ли буфер ТХ полным (11), пустым (00) или частично заполненным (10). Поэтому для проверки состояния «буфер

353

10 Последовательные порты

ТХ пустой» бит TXS0 (бит 30) должен сравниваться с 0. Для проверки ТХ на наличие любых данных бит 31 (TXS1) должен сравниваться с 1.

Биты

Имя

Определение

0

SPEN*

Активизация SPORT

1 2

DTYPE

Тип данных (формат данных, компандирование)

3

SENDN

Начало передачи слова (1=начиная с младшего бита)

4 8

SLEN

Длина последовательно передаваемого слова – 1

9

PACK

Распаковка слова данных (32®16)

10

ICLK*

Внутренняя генерация сигнала тактовой синхронизации передачи

11

 

Зарезервирован

12

CKRE

Опрос данных и сигнала кадровой синхронизации по фронту сигнала

 

 

тактовой синхронизации

13

TFSR*

Требование кадровой синхронизации передачи

14

ITFS*

Внутренняя генерация сигнала TFS

15

DITFS

Не зависящий от данных сигнал TFS

16

LTFS

Активный низкий уровень сигнала TFS

17

LAFS*

Режим генерации сигнала TFS

18

SDEN

Разрешение DMA при передаче через SPORT

19

SCHEN

Разрешение цепочки операций DMA при передаче через SPORT

20 23

MFD

Задержка кадровой синхронизации в многоканальном режиме

24 28

CHNL**

Выбор текущего канала (только для чтения)

29

TUVF**

Состояние потери значащих разрядов при передаче («залипший»,

 

 

только для чтения)

30 31

TXS**

Состояние буфера ТХ (только для чтения)

11=полный, 00=пустой, 10=частично заполненный * Должен быть установлен в 0 при работе в многоканальном режиме.

** Биты состояния только для чтения. Они обнуляются при блокировании последовательного порта (при установке SPEN=1). Впоследствии состояние TXS может изменяться, если данные считываются или записываются ядром ADSP 2106x, в то время как SPORT блокирован.

Таблица 10.4. Биты регистра управления передачей STCTLx

Биты

Имя

Определение

0

SPEN*

Активизация SPORT

1 2

DTYPE

Тип данных (формат данных, компандирование)

3

SENDN

Начало приема слова (1=начиная с младшего бита)

4 8

SLEN

Длина последовательно принимаемого слова – 1

9

PACK

Упаковка слова данных (16®32)

10

ICLK

Внутренняя генерация сигнала тактовой синхронизации приема

11

 

Зарезервирован

12

CKRE

Опрос данных и сигнала кадровой синхронизации по фронту

 

 

сигнала тактовой синхронизации

13

RFSR*

Требование кадровой синхронизации приема

14

IRFS

Внутренняя генерация RFS

15

 

Зарезервирован

16

LRFS

Активный низкий уровень сигнала TFS

354

Последовательные порты 10

17

LAFS*

Режим генерации сигнала RFS

18

SDEN

Разрешение DMA при приеме через SPORT

19

SCHEN

Разрешение цепочки операций DMA при приеме через SPORT

20

 

Зарезервирован

21

D2DMA*

Разрешение режима 2 D DMA

22

SPL*

Циклический режим SPORT (тестирование)

23

MCE

Разрешение многоканального режима

24 28

NCH

Число каналов – 1 (операции в многоканальном режиме)

29

ROVF**

Состояние переполнения при приеме («залипший», только для чтения)

30 31

RXS**

Состояние буфера RX (только для чтения)

11=полный, 00=пустой, 10=частично заполненный * Должен быть обнулен при работе в многоканальном режиме.

** Биты состояния только для чтения. Они обнуляются при блокировании последовательного порта (при установке SPEN=1). Состояние RXS может впоследствии изменяться, если данные считываются или записываются ядром ADSP 2106x, в то время как SPORT блокирован.

Таблица 10.5. Биты регистра управления приемом SRCTLx

Рис. 10.2. Регистры управления передачей STCTL1, STCTL0

355

10 Последовательные порты

Биты состояния RXS указывают состояние буфера RX: буфер полный (11), пустой (00) или частично заполненный (10). Следовательно, для проверки состояния «буфер RX пустой» бит RXS0 (бит 30) должен сравниваться с 0. Для проверки наличия любых данных в буфере бит 31 (RXS1) должен сравниваться с 1.

Бит состояния переполнения при приеме (ROVF) устанавливается тогда, когда поступают новые данные при полном RX, причем новые данные записываются поверх имеющихся.

Рис. 10.3. Регистры управления приемом SRCTL1, SRCTL0

356

Последовательные порты 10

10.3.4. Частоты кадровой и тактовой синхронизации (TDIV, RDIV)

Регистры TDIV, RDIV содержат значения коэффициентов деления, которые определяют частоты внутренних сигналов тактовой и кадровой синхронизации. Эти регистры описаны в табл.10.6 и 10.7 и изображены на рис. 10.4 и 10.5.

Биты

Имя

Определение

15 0

TCLKDIV

Коэффициент деления частоты тактовой синхронизации передачи

31 16

TFSDIV

Коэффициент деления частоты кадровой синхронизации передачи

Таблица 10.6. Группы разрядов регистра деления частот тактовой и кадровой синхронизации передачи

Биты

Имя

Определение

15 0

RCLKDIV

Коэффициент деления частоты тактовой синхронизации приема

31 16

RFSDIV

Коэффициент деления частоты кадровой синхронизации приема

Таблица 10.7. Группы разрядов регистра деления частот тактовой и кадровой синхронизации приема

TCLKDIV и RCLKDIV определяют, на сколько делится тактовая частота системы (CLKIN) для получения частоты сигналов тактовой синхронизации передачи и

Рис. 10.4. Регистры деления частот тактовой и кадровой синхронизации передачи TDIV0, TDIV1

357

10 Последовательные порты

Рис. 10.5. Регистры деления частот тактовой и кадровой синхронизации приема RDIV0, RDIV1

приема. Коэффициент деления – это 16 разрядная величина, которая позволяет получать различные значения частоты тактовой синхронизации. Частота вычисляется по следующей формуле:

частота тактовой синхронизации = .

Максимальная частота тактовой синхронизации равна частоте CLKIN ADSP 2106x, когда содержимое xCLKDIV равно 0.

Для определения значения хCLKDIV по известному значению CLKIN и желаемой частоте тактовой синхронизации используется следующее уравнение:

xCLKDIV =

.

TFSDIV и RFSDIV определяют, через сколько циклов тактовой синхронизации передачи или приема будет сгенерирован импульс TFS или RFS (при внутренней генерации сигнала кадровой синхронизации). В этом случае сигнал кадровой синхронизации может использоваться для инициализации периодических передач. Циклы считаются и при внутренней и при внешней тактовой синхронизации.

358

Последовательные порты 10

Формула, которая определяет число циклов (N) между импульсами кадровой синхронизации:

N = хFSDIV + 1.

Для определения значения хFSDIV по значениям частоты тактовой синхронизации и требуемой частоты кадровой синхронизации используется следующее уравнение:

хFSDIV = (частота тактовой синхронизации / частота кадровой синхронизации) – 1.

При хFSDIV=0 сигналы кадровой синхронизации должны были бы следовать непрерывно. Однако, значение xFSDIV не должно быть меньше, чем длина последовательно передаваемого слова минус один (т.е. значения поля SLEN в регистре управления передачей или приемом), поскольку это может привести к прерыванию текущей операции внешнего устройства или к другим непредсказуемым результатам. Если последовательный порт не предполагается использовать для передачи или приема данных, то xFSDIV может применяться как счетчик для деления внешней частоты тактовой синхронизации, для генерации периодических импульсов или периодических прерываний. Для работы в таком режиме последовательный порт должен быть активизирован.

10.3.4.1. Ограничение максимума частоты тактовой синхронизации

При работе в режиме с внешней генерацией сигнала тактовой синхронизации передачи, с частотой, близкой к тактовой частоте ADSP 2106x, должны быть приняты во внимание некоторые особенности. Существует задержка между приходом сигнала тактовой синхронизации на вход TCLKx и выводом данных. Эта задержка может ограничивать скорость работы приемника. Обратитесь к перечню технических характеристик ADSP 2106x для получения точного описания параметров синхронизации. Для обеспечения надежной работы рекомендуется, чтобы максимальная частота тактовой синхронизации последовательного порта использовалась только при приеме с внешней генерацией сигналов тактовой и кадровой синхронизации (ICLK=0, IRFS=0).

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

Последовательные порты обрабатывают слова длиной от 3 до 32 бит, но передача или прием слов короче семи бит на полной тактовой частоте ADSP 2106x могут привести к неправильной операции в случае, когда разрешена цепочка операций DMA. Цепочка операций блокирует внутреннюю шину I/O ADSP 2106x на

359

10 Последовательные порты

несколько циклов, пока загружается новый блок управления передачей (TCB – Transfer Control Block). В течение этой операции принятые данные могут быть потеряны (т. е. поверх них могут быть перезаписаны другие данные).

10.4. Форматы слов данных

Формат слов данных, передаваемых через последовательные порты, определяется битами DTYPE, SENDN, SLEN и PACK в регистрах управления STCTLx и SRCTLx.

10.4.1. Длина слова

Последовательные порты обрабатывают слова длиной от 3 до 32 бит. Длина слова определяется в 5 разрядном поле SLEN в регистрах управления STCTLx и SRCTLx. Значение SLEN равно длине слова минус один:

SLEN = Длина последовательно передаваемого слова – 1.

Значение SLEN не должно быть нулем или единицей. Слова короче 32 бит выравниваются по правому разряду в буферах RX и TX и занимают младшие разряды.

Передача или прием слов короче семи бит на полной тактовой частоте ADSP 2106x могут привести к неправильной операции, когда разрешена цепочка операций DMA. Цепочка операций блокирует внутреннюю шину I/O ADSP 2106x на несколько циклов, пока загружается новый ТСВ. В течение этой операции принятые данные могут быть потеряны (т. е. поверх них могут быть перезаписаны другие данные).

10.4.2. Начало передачи данных

Передача данных может начинаться со старших бит (MSBF – Most Significant Bit First) слова или с младших бит (LSBF – Low Significant Bit First). Биты, начиная с которых будут передаваться данные, определяются битом SENDN в регистрах управления STCTLx и SRCTLx. Когда SENDN=0, слово передается (или принимается) начиная со старших бит. Когда SENDN=1, слово передается (или принимается) начиная с младших бит.

10.4.3. Упаковка и распаковка данных

Принимаемые слова данных длиной 16 бит или меньше могут упаковываться в 32 разрядные слова, а 32 разрядные передаваемые слова могут распаковываться

360