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

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

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

Проектирование системы 11

Начальное значение поля UBWM определяет внутренние состояния ожидания и внешний сигнал подтверждения. Сначала процессор выставляет сигнал подтверждения (высокий уровень), однако, если другое устройство сбрасывает сигнал подтверждения (низкий уровень) в течение начальной загрузки из EPROM, то процессор должен зафиксировать сигнал подтверждения сброшенным. Процессор отвечает на сброшенный сигнал подтверждения задержкой загрузки из EPROM путем непрерывного добавления состояний ожидания, т. е. прекращает начальную загрузку. Для устранения остановки начальной загрузки таким образом измените значение UBWM в регистре WAIT, задав режим внутренних состояний ожидания (01) до начала процесса загрузки 256 слов.

В табл. 11.3 показана инициализация регистров параметров 6 канала DMA после сброса при начальной загрузке из EPROM. Регистр счетчика (С6) инициализируется 0х0100 для передачи 256 слов во внутреннюю память. Внешний регистр счетчика (ЕС6), использующийся при генерации внешнего адреса контроллером DMA, инициализируется значением 0х0600 (т. е. 0х0100 слов, по шесть байт на слово).

Регистр параметров

Значение инициализации

II6

0х0002 0000

IM6

Не инициализируется (уменьшение на 1 задано автоматически)

C6

0х0100 (256 слов команд)

CP6

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

GP6

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

EI6

0х0040 0000

EM6

Не инициализируется (уменьшение на 1 задано автоматически)

EC6

0х0600 (256 слов ґ 6 байт/слово)

Таблица 11.3. Инициализация регистров параметров 6 канала DMA при начальной загрузке из EPROM

При запуске системы, когда входной сигнал становится неактивным, происходит следующее:

1.ADSP 2106x входит в состояние пониженного потребления мощности, идентичное тому, которое вызывается командой IDLE. Счетчик команд устанавливается на адрес 0х0002 0004.

2.Регистры параметров 6 канала DMA инициализируются так, как показано в табл. 11.3.

3. становится выходным сигналом для выбора кристалла при начальной загрузке из EPROM.

421

11 Проектирование системы

4.Начинаются 8 разрядные передачи по DMA в режиме ведущего из EPROM во внутреннюю память по линиям 23 16 шины данных внешнего порта.

5.Значение на линиях внешнего адреса (ADDR31 0) устанавливается в

0х0040 0000 и увеличивается на единицу после каждой передачи.

6.Строб выставляется как при обычном обращении к памяти с шестью состояниями ожидания (семь циклов).

Контроллер DMA ADSP 2106x считывает 8 разрядные слова из EPROM, упаковывает их в 48 разрядные командные слова и передает во внутреннюю память, пока не будет загружено 256 слов. EPROM автоматически выбирается

сигналом на выводе , другие выводы сигналов выбора памяти

заблокированы. Содержимое регистра внешнего счетчика DMA (ЕС6) уменьшается после каждой передачи EPROM. Когда содержимое ЕС6 достигнет нуля, произойдет следующее:

1.Передачи по DMA остановятся.

2.Сгенерируется прерывание 6 канала DMA внешнего порта (ЕР0I).

3. заблокируется, активизируются обычные сигналы выбора внешней памяти.

4.ADSP 2106x переходит к выполнению команды по адресу вектора прерывания EP0I 0х0002 0040.

В этой точке ADSP 2106x заканчивает свой режим начальной загрузки и выполняет команды обычным образом. Первой командой по адресу вектора прерываний EP0I 0х0002 0040 должна быть RTI. Это вернет процессор к программе сброса по адресу 0х0002 0005, где может продолжиться нормальное выполнение программы. После того, как это произошло, ваша программа должна записать другую программу обработки прерывания по адресу вектора прерывания 0х002 0040.

Запомните, что при использовании любого режима начальной загрузки при включении питания адрес 0х0002 0004 не должен содержать истинной команды, так как она не будет выполняться в течение начальной загрузки. По этому адресу должна быть помещена команда NOP или IDLE.

11.6.2.2. Загрузка оставшихся данных из EPROM

В режиме начальной загрузки из EPROM загружаются только 256 команд. Если ваше приложение должно загружаться из EPROM во внутреннюю память полностью, то процессор должен получить доступ к загрузке из EPROM после окончания начальной загрузки. Эта возможность обеспечивается битом BSO в регистре SYSCON.

422

Проектирование системы 11

При установке бита BSO сигналы выбора внешней памяти блокируются и выставляется сигнал на выводе для передачи по DMA через внешний порт.

Ваша программа должна сначала установить бит BSO в SYSCON, а затем инициализировать канал DMA внешнего порта для считывания оставшегося содержимого из EPROM. Может использоваться любой из каналов DMA внешнего порта:

Канал DMA

Регистр управления

Буфер данных

6 канал

DMAC6

EPB0 (буфер 0 внешнего порта)

7 канал

DMAC7

EPB1 (буфер 1 внешнего порта)

8 канал

DMAC8

EPB2 (буфер 2 внешнего порта)

9 канал

DMAC9

EPB3 (буфер 3 внешнего порта)

Когда BSO=1, бит режима упаковки PMODE в регистре управления DMAC6 игнорируется и при считывании используется упаковка 8®48 разрядов. (Заметим, что 8 разрядная упаковка разрешена только в течение начальной загрузки из EPROM или при считывании по DMA, когда бит BSO установлен.) Пока один из каналов внешнего порта DMA используется после установки бита BSO, ни один из других трех каналов не может использоваться.

Когда BSO=1, выставляется только при передаче по DMA, а при

обращении ядра процессора не выставляется. Это позволяет вашей загружающей программе, выполняющейся в ADSP 2106, осуществлять другие внешние обращения к памяти, не использующейся для начальной загрузки.

11.6.2.3. Запись в пространство памяти BMS

Запись в пространство памяти BMS процессором ADSP 2106x может выполняться при использовании режима отмены выбора начальной загрузки (BSO – Boot Select Override). Бит BSO в регистре SYSCON позволяет

программно выставлять сигнал на выводе . Во многих системах

необходимо обновление или модификация загружаемых данных. В этих случаях ЕPROM может заменяться EEPROM или FLASH памятью.

Для записи в память при выставленном сигнале должны использоваться 7, 8

и 9 каналы DMA; т. к. 6 канал предназначен только для считывания из памяти. Это ограничение доступа связано с тем, что 6 канал аппаратно настроен для чтения в специальном режиме 8 разрядной загрузки. При установленном бите BSO запись по 6 каналу приведет к выполнению процессором запрещенной операции.

При установленном бите BSO 7 9 каналы DMA могут использоваться в любых режимах работы, определяемых установками в регистрах DMACx (для записи и

423

11 Проектирование системы

считывания), с различными режимами упаковки и с любыми типами данных и команд.

При записи по DMA с BSO=1 используется упаковка 16®48 разрядов, а бит PMODE игнорируется. Из за того, что разрядность пространства BMS только 8 бит и для этой записи режим 8 разрядной упаковки не разрешен, необходимо использовать устройство сдвига для правильного размещения данных при каждой записи.

11.6.3. Начальная загрузка из хост-процессора

Начальная загрузка ADSP 2106x из 16 разрядного хост процессора выполняется через внешний порт по шинам адреса и данных. Сигнал на выводе LBOOT служит для выбора между режимами начальной загрузки из хост процессора или через линк порт – для загрузки из хост процессора LBOOT должен быть сброшен (низкий уровень) при сброшенных сигналах EBOOT (низкий уровень)

и (высокий уровень). Когда установлен режим начальной загрузки из

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

ADSP 2106x входит в состояние пониженного потребления мощности, идентичное тому, которое вызывается командой IDLE. Счетчик команд устанавливается на адрес 0х0002 0004. Регистры параметров 6 канала DMA внешнего порта инициализируются, как показано в табл. 11.4, но передачи по DMA не начинаются.

Регистр параметров

Значение инициализации

II6

0х0002 0000

IM6

Не инициализируется (уменьшение на 1 задано автоматически)

C6

0х0100 (256 слов команд)

CP6

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

GP6

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

EI6

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

EM6

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

EC6

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

Таблица 11.4. Инициализация регистров параметров 6 канала DMA внешнего порта для загрузки из хост-процессора

Регистр управления 6 каналом DMA (DMAC6) инициализируется значением 0х00А1, что устанавливает настройки канала следующим образом: разрешен DMA через внешний порт, DTYPE задает передачу командных слов, PMODE определяет упаковку 16→48 разрядов, передача начинается с младшего слова. Из за того, что

424

Проектирование системы 11

хост процессор обращается к буферу ЕРВ0 внешнего порта, бит режима упаковки хост процессора НРМ в регистре SYSCON должен быть установлен в соответствии с разрядностью внешней шины, определяемой битами PMODE в регистре управления DMAC6. Если нужен другой режим упаковки, то хост процессор должен изменить установки PMODE и НРМ путем записи в регистр SYSCON.

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

Когда хост процессор получит сигнал (предоставление шины хост

процессору) от ADSP 2106x, он может начать загрузку команд, записывая данные прямо в буфер 0 внешнего порта (ЕРВ0), который соответствует 6 каналу DMA, или может изменить настройки инициализации после сброса путем записи в любой из регистров IOP. Хост процессор должен использовать выводы 31 16 шины данных (DATA31 16).

Когда 256 слов команд будут загружены, произойдет следующее:

1.Передача по DMA остановится.

2.Сгенерируется прерывание 6 канала DMA внешнего порта (EP0I).

3.ADSP 2106x начнет выполнять команду, расположенную по адресу вектора прерывания EP0I 0х0002 0040.

Первой командой по адресу 0х0002 0040 вектора прерываний EP0I должна быть RTI. Это вернет процессор к программе сброса по адресу 0х0002 0005, где может продолжиться нормальное выполнение программы. После того, как загрузятся 256 слов и выполниться команда RTI, ваша программа должна записать другую программу обработки прерывания по адресу вектора прерывания 0х002 0040. 256 команд должны использоваться для загрузки остальных ваших программ.

Заметим, что 6 канал DMA внешнего порта должен использоваться для начальной загрузки команд, так как только для этого канала установлен бит в IMASK, разрешающий генерацию прерывания после выполнения DMA. После сброса векторные прерывания VIRPT запрещены и должны разрешаться вашей программой (в регистре IMASK).

Заметим, что ведущий ADSP 2106x может загружать ведомый ADSP 2106x после записи параметров в его регистр управления DMAC6 и установки битов

425

11 Проектирование системы

режима упаковки в PMODE равными 00. Это позволяет загружать команды без упаковки. Шесть состояний ожидания, запрограммированные в ведомом ADSP 2106x, не влияют на скорость загрузки, так как они воздействует только на работу ведущего.

11.6.4. Начальная загрузка через линк-порт

Начальная загрузка ADSP 2106x может выполняться через буфер 4 линк портов с использованием 6 канала DMA. Для загрузки команд после включения питания системы должно использоваться внешнее 4 разрядное устройство. Выходные данные 8 разрядной EPROM могут преобразовываться при помощи мультиплексора 2→1 в полубайтные данные, где младший разряд адреса определяет порядок передачи полубайтов (начиная со старших или с младших).

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

Операция начальной загрузки через линк порт похожа на операцию загрузки из хост процессора. Регистры параметров II6 и C6 6 канала DMA инициализируются теми же значениями. Регистр управления 6 канала DMA (DMAC6) инициализируется значением 0х00А0, что устанавливает следующий режим работы канала: DMA через внешний порт запрещен, DTYPE определяет передачу командных слов. В течение начальной загрузки через линк порт установки в регистрах управления линк портом LCTL и LCOM не учитываются, что позволяет принимать 48 разрядные данные в буфер 4 линк портов. Более подробно о процессе начальной загрузки см. раздел «Начальная загрузка из хост процессора».

11.6.5. Начальная загрузка многопроцессорной системы

Многопроцессорные системы могут загружаться из хост процессора, внешней EPROM, через линк порт или из внешней памяти.

11.6.5.1. Начальная загрузка многопроцессорной системы из хост-процессора

Для выполнения начальной загрузки нескольких процессоров ADSP 2106x из хост процессора каждый из них должен иметь значения сигналов на выводах

EBOOT, LBOOT и , настроенными для загрузки из хост процессора:

426

Проектирование системы 11

EBOOT=0, LBOOT=0 и =1. После включения питания системы каждый процессор будет находиться в состоянии пониженного потребления мощности; сигналы на линиях запроса шины будут сброшены. Хост процессор должен выставить входной сигнал и загружать каждый процессор, выставляя

сигнал на их выводах и загружая команды, как описано выше в разделе «Начальная загрузка из хост процессора».

11.6.5.2. Начальная загрузка многопроцессорной системы из EPROM

Существует два способа начальной загрузки многопроцессорной системы из EPROM. При этом процессор выполняет следующие действия.

Проводит арбитраж шины.

Загружает по DMA 256 слов после того, как станет ведущим.

Освобождает шину.

Выполняет загруженные команды.

Все ADSP 2106x загружаются из одного EPROM по очереди.

Сигналы от каждого ADSP 2106x могут объединяться вместе по схеме

«монтажное ИЛИ» для управления сигналом выбор кристалла на выводе EPROM. Каждый процессор может загружаться по очереди в соответствии с приоритетом. Когда последний процессор закончит начальную загрузку, он должен информировать остальных (они могут находиться в состоянии пониженного потребления мощности), что можно начать выполнение программы (если все процессоры должны начинать выполнение команд одновременно). Пример системы, в которой используется метод поочередной начальной загрузки, приведен на рис.11.12. При начальной загрузке нескольких процессоров из одной EPROM в них могут загружаться идентичные или различные коды из EPROM. Если процессоры загружаются различными кодами, то может использоваться таблица переходов (основанная на идентификаторах процессоров) для выбора кода для каждого процессора.

Один ADSP 2106x загружается сам, затем загружает другие.

Сигнал на выводе EBOOT процессора с ID=1 должен быть установлен (высокий уровень) для начальной загрузки из EPROM. Все остальные процессоры после включения питания должны находиться в режиме начальной загрузки из хост

процессора (EBOOT=0, LBOOT=0, =0), т. е. в состоянии пониженного потребления мощности, что позволяет ADSP 2106x с ID=1 стать ведущим и выполнить начальную загрузку. Вывод ADSP 2106x №1 соединяется с

427

11 Проектирование системы

Рис. 11.12. Загрузка нескольких ADSP-2106x из одной EPROM по очереди

выводом в EPROM. Когда ADSP 2106x №1 закончит начальную загрузку, он

может загрузить остальные процессоры путем записи данных по DMA в буфер 0 внешнего порта (ЕРВ0) каждого процессора, используя пространство памяти многопроцессорной системы (см. рис.11.13).

11.6.5.3. Начальная загрузка многопроцессорной системы через линк-порт

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

428

Проектирование системы 11

Рис. 11.13. Загрузка нескольких ADSP-2106x из одной EPROM, один загружает остальные

портов каждого процессора. Если существует только последовательное шлейфовое соединение между линк портами процессоров, то процессоры смогут загружать друг друга по очереди. Для загрузки должен всегда использоваться буфер 4 линк портов.

11.6.5.4. Начальная загрузка многопроцессорной системы из внешней памяти

Если программа загрузки процессора находится во внешней памяти, тогда ADSP 2106x с ID=1 должен быть установлен в режим «нет начальной загрузки»;

429

11 Проектирование системы

тогда он начнет выполнение команды, расположенной по адресу 0х0040 0004 во внешней памяти. Когда начальная загрузка завершится, ADSP 2106x с ID=1 может загрузить остальные процессоры, если они находятся в режиме начальной загрузки из хост процессора. Если остальные процессоры находятся в режиме «нет начальной загрузки», то они могут начать выполнять команды из внешней памяти. Арбитраж шины в многопроцессорной системе позволит выполнить эту загрузку в порядке приоритета. Последовательность арбитража шины после сброса описана в главе Многопроцессорная система.

11.6.6. Режим «нет начальной загрузки»

В режиме «нет начальной загрузки» процессор начинает выборку и выполнение команд из пространства внешней памяти по адресу 0х0040 0004. В этом режиме все регистры параметров и управления DMA принимают значения инициализации по умолчанию.

11.6.7. Размещение таблицы векторов прерываний

Если ADSP 2106x выполняет начальную загрузку из внешнего источника (из EPROM, через линк порт или из хост процессора), таблица векторов

прерываний будет размещаться во внутренней памяти. Однако, если процессор не загружается или будет выполнять команды из внешней памяти, таблица векторов прерываний будет размещаться во внешней памяти.

Бит IIVT в регистре управления SYSCON может использоваться для отмены определяемого режимом начальной загрузки размещения таблицы векторов прерываний. Если ADSP 2106x не загружается (режим «нет начальной загрузки»), то установка бита IIVT=1 определяет внутреннее расположение таблицы векторов прерываний, соответственно при IIVT=0 – внешнее расположение таблицы векторов прерываний. Если ADSP 2106x загружается из внешнего источника, то значение бита IIVT не учитывается. По умолчанию значение бита IIVT ноль.

11.7. Важные напоминания при программировании

В этом разделе приведена информация, которую вы должны принять во внимание при программировании.

11.7.1. Условия возникновения дополнительных циклов

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

430