Руководство пользователя по сигнальным процессорам Sharc
.pdfПоследовательные порты 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
