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

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

.pdf
Скачиваний:
150
Добавлен:
01.05.2014
Размер:
9 Мб
Скачать
☆

Линк-порты 9

LxDEN Активизация соответствующего канала DMA.

LxCHEN Разрешение цепочки операций DMA для этого канала.

LxTRAN Выбор направления буфера линк портов, линк порта и канала DMA: 0 – прием данных, 1 – передача данных.

LEXTx Определение размера слова для каждого буфера линк портов: LEXTx=1 определяет передачу 48 разрядных слов в буфер «х» линк портов

LEXTx=0 определяет передачу 32 разрядных слов в буфер «х» линк портов

Рис. 9.2. Регистр LCTL

311

9 Линк-порты

Данные буфера линк портов передаются и принимаются, начиная со старших бит. Значение битов LEXTx не должно изменяться во время активизации буфера линк портов, т. к. это вызовет инициализацию полубайтной упаковки, которая приведет к получению неверных значений.

Биты LEXTx отменяют установку разрядности слова памяти битом IMDW в SYSCON. Если LEXTx=1, передаваемые данные будут считываться из памяти как 48 разрядные слова, независимо от установки IMDW.

Заметим, что когда буферы линк портов активизируются или блокируются, существует возможность генерации нежелательных запросов обслуживания прерываний. Это происходит, если используется регистр запросов обслуживания линк порта (LSRQ – Link Service Requests). Для предотвращения возникновения этой потенциальной проблемы регистр LSRQ должен быть маскирован в то время, когда буферы линк портов активизируются или блокируются. См. раздел «Прерывания линк порта» этой главы, где содержится подробная информация.

9.2.2. Регистр общего управления линк-портами (LCOM)

Регистр LCOM содержит биты состояния, биты состояния упаковки и биты удвоения тактовой частоты для каждого буфера. Эти биты перечислены в табл. 9.3.

Биты Имя

Описание

0 1

L0STAT

Состояние буфера 0 линк портов. 11=полный, 00=пустой,

 

 

10=одно слово*

2 3

L1STAT

Состояние буфера 1 линк портов. 11=полный, 00=пустой,

 

 

10=одно слово*

4 5

L2STAT

Состояние буфера 2 линк портов. 11=полный, 00=пустой,

 

 

10=одно слово*

6 7

L3STAT

Состояние буфера 3 линк портов. 11=полный, 00=пустой,

 

 

10=одно слово*

8 9

L4STAT

Состояние буфера 4 линк портов. 11=полный, 00=пустой,

 

 

10=одно слово*

10 11 L5STAT

Состояние буфера 5 линк портов. 11=полный, 00=пустой,

 

 

10=одно слово*

12

LCLKX20 Передача данных на удвоенной тактовой частоте через буфер 0

 

 

линк портов

13

LCLKX21 Передача данных на удвоенной тактовой частоте через буфер 1

 

 

линк портов

312

Линк-порты 9

14 LCLKX22 Передача данных на удвоенной тактовой частоте через буфер 2 линк портов

15 LCLKX23 Передача данных на удвоенной тактовой частоте через буфер 3 линк портов

16 LCLKX24 Передача данных на удвоенной тактовой частоте через буфер 4 линк портов

17 LCLKX25 Передача данных на удвоенной тактовой частоте через буфер 5 линк портов

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

19LPDRD** Отключение внутреннего «подтягивающего» к земле резистора

для LxCLK и LxACK

20 LMSP** Разрешение режима работы в многопроцессорной сети (устанавливается в 0 для нормальной работы)

21 22 LPATHD**Задержка изменения LPATH в многопроцессорной сети: 00=нет задержки, 01=1 дополнительный цикл, 10=2 дополнительных цикла, 11=3 дополнительных цикла

23 25 Зарезервированы

26 LRERR0 Ошибка упаковки при приеме для буфера 0 линк портов: 1= упаковка не завершена, 0= упаковка завершена

27 LRERR1 Ошибка упаковки при приеме для буфера 1 линк портов: 1= упаковка не завершена, 0= упаковка завершена

28 LRERR2 Ошибка упаковки при приеме для буфера 2 линк портов: 1= упаковка не завершена, 0= упаковка завершена

29 LRERR3 Ошибка упаковки при приеме для буфера 3 линк портов: 1= упаковка не завершена, 0= упаковка завершена

30 LRERR4 Ошибка упаковки при приеме для буфера 4 линк портов: 1= упаковка не завершена, 0= упаковка завершена

31 LRERR5 Ошибка упаковки при приеме для буфера 5 линк портов: 1=упаковка не завершена, 0= упаковка завершена

Таблица 9.3. Регистр общего управления линк-портом (LCOM).

Биты состояния только для чтения.

*Код 01 не является истинным состоянием. **Общий для всех линк портов.

Биты управления LCOM:

LxSTAT(0:1)При передаче эти биты указывают на наличие свободного места для данных в буфере. При приеме эти биты указывают на наличие новых (не считанных) данных, которые доступны в приемном буфере. LxSTAT(1)=1, если в буфере есть данные. LxSTAT(0)=0, если в буфере есть свободное место. Эти биты только для чтения.

313

9 Линк-порты

Они обнуляются при переходе LxEN из 1 в 0. Они могут последовательно изменять состояние, когда буфер данных считывается или записывается.

LCLKX2x Определяет передачу данных через буферы линк портов на удвоенной тактовой частоте ADSP 2106x. Если LCLKX2x=0, передача происходит на тактовой частоте ADSP 2106x, прием – на тактовой частоте (вплоть до тактовой частоты) ADSP 2106x. При установке LCLKX2x=1 прием происходит на более высокой, чем у ADSP 2106x, частоте.

L2DDMA Устанавливает контроллер DMA в режим передачи по DMA двумерных массивов данных (2D DMA); адреса памяти определены в адресных регистрах DMA. Только 0 5 каналы DMA поддерживают режим 2D DMA. Буферы 4 и 5 линк портов не поддерживают режим 2D DMA через 6 и 7 каналы DMA.

LPDRD Отключает «подтягивающие» к земле резисторы на сигнальных выводах линк портов, для которых не назначены буферы (или линк портов, у которых заблокированы назначенные им буферы). Эти резисторы номиналом 50 кОм подключены к сигнальным выводам LxACK, LxCLK и LxDAT3 0. Подключение этих «подтягивающих» к земле резисторов удерживает линк порт в неактивном состоянии при доступе к нему других линк портов. В схемах, в которых несколько ADSP 2106x совместно используют один линк порт, только один ADSP 2106x во время работы должен иметь этот бит обнуленным, чтобы на линии этого линк порта не было слишком много резисторов. Внешние резисторы могут использоваться в тех местах, где они необходимы. LxACK, LxCLK и LxDAT3 0 никогда не должны быть оставлены неподключенными, если внутренние «подтягивающие» к земле резисторы не используются.

LMSP Активизирует режим работы в многопроцессорной сети. Для

обычной работы LMPS устанавливается в ноль.

LPATHD При работе в многопроцессорной сети эти биты позволяют вносить дополнительные задержки (1, 2 или 3 цикла тактовой синхронизации) перед изменением регистра LPATH. Это позволяет закончить текущую операцию приема через текущий линк порт перед тем, как будет выбран новый линк порт. В некоторых многопроцессорных сетях эта задержка существенна.

314

Линк-порты 9

LRERRx Эти биты информируют о состоянии упаковки полубайтов при приеме для каждого буфера линк портов. LRERRx будет равен 0, когда упаковщик настроен, чтобы начать прием нового слова. Иначе он 1. Если этот бит равен 1 после приема слова, то произошла ошибка (например, сбой тактовой синхронизации). При изменении LxEN из 1 в 0 биты LRERRx обнуляются. Они могут последовательно изменять состояние, когда буфер линк портов записывается или считывается или пока принимается слово.

Рис. 9.3. Регистр LCOM

315

9 Линк-порты

9.2.3. Регистр назначения линк-портов (LAR)

Каждому линк порту назначается буфер линк портов с помощью группы из 3 бит в регистре назначения линк портов (LAR). Существует 6 таких групп (по одной для каждого буфера), которые приведены в табл. 9.4.

Бит

Имя

Описание

0 2

A0LB*

Назначение линк порта для LBUF0

3 5

A1LB*

Назначение линк порта для LBUF1

6 8

A2LB*

Назначение линк порта для LBUF2

9 11

A3LB*

Назначение линк порта для LBUF3

12 14

A4LB

Назначение линк порта для LBUF4

15 17

A5LB*

Назначение линк порта для LBUF5

18 31

 

Зарезервирован (должен быть установлен в 0)

Таблица 9.2. Регистр назначения линк-портов (LAR)

*AxLB

Номер линк порта

000

Линк порт 0

001

Линк порт 1

010

Линк порт 2

011

Линк порт 3

100Линк порт 4

101Линк порт 5

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

111Неактивный буфер

Буфер «х» линк портов назначается линк порту с помощью битов AxLB. Линк порт блокирован, если ему не назначен буфер или назначенный ему буфер

Рис. 9.4. Регистр LAR

316

Линк-порты 9

блокирован. Когда линк порт блокирован, выводы LxDAT3 0, LxCLK и LxACK находятся в третьем состоянии. Если необходимо блокировать буфер, то соответствующее поле регистра назначения линк порта нужно установить в 7.

Передача из памяти в память может выполняться путем назначения одного и того же линк порта двум буферам при частичной блокировке порта. Один буфер передает, в то время как другой принимает. Когда используются все шесть буферов линк портов, можно одновременно выполнять три передачи из памяти в память. Этот режим частичной блокировки известен как циклический режим. В этом режиме LxDAT3 0 и LxACK не выводятся и их состояние не принимается во внимание, LxCLK не выводится. Однако в этом режиме LxCLK не должен управляться извне, так как переключение LxCLK может быть воспринято портом и может привести к сдвигу полубайта в приемном буфере данных.

9.3. Сигналы управления квитированием

Сигналы LxCLK и LxACK каждого линк порта позволяют реализовывать квитирование при асинхронной передаче данных между ADSP 2106x. Другие устройства, которые работают по тем же протоколам, могут связываться через эти линк порты.

Передаваемое через линк порт слово состоит из 8 полубайтов (для 32 разрядного слова) или 12 полубайтов (для 48 разрядного слова). Передатчик устанавливает высокий уровень сигнала тактовой синхронизации (LxCLK) при передаче каждого нового полубайта данных. Задний фронт LxCLK используется приемником для фиксации полубайта. Когда приемник готов принять следующее слово в буфер, он выставляет сигнал LxAСK. Передатчик проверяет LxAСK в начале каждого слова (т. е. после каждых 8 или 12 полубайтов). Если LxAСK в это время сброшен, то передатчик не будет передавать новое слово (см. рис. 9.5). Передатчик оставит сигнал LxСLK высоким и продолжит вывод первого полубайта, если LxAСK сброшен. Когда в конечном счете LxAСK будет снова выставлен, LxCLK переключится в низкий уровень и начнется передача следующего слова. Если передающий буфер пуст, LxCLK будет оставаться в низком уровне до тех пор, пока буфер не будет заполнен, независимо от состояния LxACK.

Буфер приема может заполниться, если выполняется операция DMA с более высоким приоритетом или операция по загрузке цепочки. LxACK может сброситься, когда ожидается заполнение буфера. Однако LxACK будет снова выставлен приемником, как только поступит внутренний сигнал предоставления DMA.

317

9 Линк-порты

Данные фиксируются в приемном буфере по заднему фронту LxCLK. Операция приема полностью асинхронна и может производиться на любой частоте, вплоть до удвоенной тактовой частоты процессора CLKIN. Если частота тактовой

синхронизации приема меньше или равна CLKIN, бит LCLKX2 для приемного буфера должен быть установлен в 0 в LCOM. Если частота синхронизации приема находится между CLKIN и (2*CLKIN), то бит LCLKX2 должен быть установлен в 1 в LCOM. После приема шести полубайтов (из восьми) или десяти полубайтов (из двенадцати) генерируется внутренний запрос DMA. Из за того, что запрос DMA был сделан предварительно, полное слово должно приниматься в одном пакете, без использования стробирования синхроимпульсов во время передачи слова.

Когда линк порт блокирован, LxDAT3 0, LxCLK и LxACK установлены в третье состояние. Когда порт активизирован для передачи, на выводах для данных будут появляться данные из выходного буфера, LxCLK будет выводиться высоким, а LxACK будет установлен в третье состояние. Когда порт активизирован для приема, выводы для данных и LxCLK будут установлены в третье состояние, а LxACK будет выводиться высоким.

Для устранения проблем, связанных с активизацией передатчика и приемника (т. е. назначить линк порту буфер и активизировать его) в различное время,

Рис. 9.5. Временные диаграммы квитирования линк-порта

318

Линк-порты 9

LxACK, LxCLK и LxDAT3 0 могут удерживаться сброшенными (низкий уровень) с помощью внутреннего «подтягивающего» к земле резистора 50 кОм, если LPDRD обнуляется при блокировании линк порта. Таким образом, если передатчик активизирован раньше приемника, LxAСK будет удерживаться сброшенным (низкий уровень) и передача будет задержана. Аналогично, если приемник активизирован раньше передатчика, LxCLK будет удерживаться сброшенным (низкий уровень) и прием будет задержан. Если много линк портов соединены в общую шину, то вместо внутренних «подтягивающих» к земле резисторов для каждой линии шины должен использоваться один внешний резистор. Это гарантирует то, что линии шины не будут «подтягиваться» к земле слишком быстро.

LxACK, LxCLK и LxDAT3 0 не должны оставаться неподключенными, если не используются внешний «подтягивающий» к земле резистор или внутренние «подтягивающие» к земле резисторы.

9.4. Буферы линк-портов

Каждый буфер линк портов состоит из внешнего и внутреннего регистров (см. рис. 9.1). При передаче внутренний регистр используется для приема по DMA данных из внутренней памяти. Внешний регистр выполняет распаковку данных для линк порта, начиная со старшего полубайта. Эти два регистра образуют двухкаскадное FIFO – буфер LBUFx. В буфер могут быть записаны два слова (по DMA или ядром процессора) до того, как он выдаст сигнал о заполнении. После того, как оба слова будут распакованы и переданы, станет доступна следующая ячейка FIFO и будет сгенерирован новый запрос DMA. Если регистр становится пустым, сигнал LxCLK сбрасывается.

О состоянии полный/пустой буфера линк портов информируют биты LxSTAT регистра LCOM. Бит состояния буфера линк портов обнуляется при обнулении бита активизации буфера LxEN в регистре LCTL.

При приеме внешний буфер используется для упаковки данных приемного порта (начиная со старшего полубайта) и их передачи во внутренний регистр, откуда они будут переданы по DMA во внутреннюю память. Этот буфер состоит из двух ячеек FIFO. Если контроллер DMA ADSP 2106x не обслужит буфер до того, как обе ячейки заполнятся, то сигнал LxACK будет сброшен.

Разрядность слова буфера линк портов может быть выбрана либо 32, либо 48 бит. Биты LEXT регистра LCTL определяют разрядность для каждого буфера отдельно. При передаче 40 разрядных данных повышенной точности или 48 разрядных команд разрядность должна быть установлена равной 48 битам.

319

9 Линк-порты

9.4.1. Обращение ядра процессора к буферам линк-портов

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

При попытке чтения из пустого приемного буфера ядро процессора зависнет до того момента, пока линк порт не завершит передачу слова и данные не появятся в буфере. Аналогично, при попытке записи в полный передающий буфер, ядро процессора зависнет до момента, пока внешнее устройство полностью не примет слово. До четырех слов (2 в приемнике и 2 в передатчике) могут быть посланы без зависания, прежде чем ядро процессора приемника должно будет считать регистр буфера линк портов. Чтобы устранить возможность появления такого зависания, можно установить бит блокировки зависания буфера (BHD – Buffer Hang Disable) в регистре SYSCON.

9.4.2. Доступ хост-процессора к буферам линк-портов

К буферам линк портов может обращаться внешний хост процессор, выполняя прямые чтение и запись. Когда хост процессор считывает или записывает информацию в эти буферы, разрядность слова определяется только режимом упаковки хост процессора, т. е. битами HPM в регистре SYSCON, а не битом LEXT в LCTL.

9.5. Каналы DMA линк-порта

Буферы 0 5 линк портов обеспечиваются каналами DMA 1, 3, 4, 6 и 7, соответственно. Некоторые каналы DMA предназначены только для линк портов, а некоторые используются совместно:

♦1 канал DMA совместно используется для приема через SPORT1 и для буфера 0 линк портов (LBUF0).

♦3 канал DMA совместно используется для передачи через SPORT1 и для буфера 1 линк портов (LBUF1).

♦4 канал DMA предназначен для буфера 2 линк портов (LBUF2).

320