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

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

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

Память 5

Рис. 5.14. Смешивание 48-разрядных и 32-разрядных слов в блоке памяти в ADSP-21062 или ADSP-21061

151

5 Память

На рис. 5.14 показано, как 48 разрядные слова заполняют блок памяти и где точно могут располагаться 32 разрядные слова для ADSP 21062 и ADSP 21061. Если n – число 48 разрядных слов, которые нужно разместить, В – начальный адрес блока, то адрес, где могут располагаться смежные 32 разрядные данные, может быть определен по таблице 5.6:

(n 1)+4096 Начальный адрес для смежных

Диапазон несмежных адресов блока

 

адресов 32 разрядных данных

памяти

0

B + 4K + m + 1

от (B + n) до (4 К 1)

1

B + 8K + m + 1

2

B + 16K + m + 1

от (B +12К + n) до (16К 1)

3

B + 20K + m + 1

4

B + 28K + m + 1

от (B + 24К + n) до (28К 1)

m=(n 1) mod 4096

Таблица 5.6. Начальные адреса для смежных адресов 32разрядных данных в ADSP-21062 или ADSP-21061

5.3.5.3 FIFO теневой записи

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

В цикле записи во внутреннюю память данные из FIFO, оставшиеся от предыдущей записи, загружаются в память, а новые данные поступают в FIFO. Эта операция обычно никак себя не проявляет, т. к. любое чтение последних двух записей прерывается и выполняется не из памяти, а из FIFO. Есть только один случай, когда вам нужно знать о FIFO теневой записи – при обращении к 48 разрядным и 32 разрядным словам по одинаковому адресу.

Для FIFO теневой записи нет различия в отображении в память 48 разрядных или 32 разрядных слов (см. рис. 5.8 и рис.5.9). Т. е., если вы записываете 48 разрядное слово в память, а затем делаете попытку считать данные, как при обращении к 32 разрядному слову, то чтение будет выполнено не из FIFO теневой записи и будут возвращены неправильные данные.

Если обращения к 48 разрядным и 32 разрядным словам по одинаковому адресу должны обязательно чередоваться, то вы должны освободить FIFO теневой записи, выполнив две пустые записи перед попыткой чтения данных.

152

Память 5

5.3.6. Конфигурирование памяти для 32или 40-разрядных данных

Каждый блок внутренней памяти может быть сконфигурирован для хранения 32 разрядных данных одиночной точности или 40 разрядных данных повышенной точности. Выбор осуществляется битами IMDW0 и IMDW1 в регистре SYSCON. Если бит IMDWx равен нулю, то выбраны 32 разрядные данные и обращение выполняется как к 32 разрядным данным. Если бит IMDWx равен единице, то выбраны 40 разрядные данные и обращение выполняется как к 48 разрядным данным.

Если в программе выполняется запись 40 разрядных данных (в 48 разрядном слове) в блок памяти, сконфигурированный для хранения 32 разрядных данных, то младшие 16 разрядов 48 разрядного слова усекаются. При считывании 40 разрядных данных младшие 8 разрядов заполняются нулями. Регистр PX – единственное исключение из этого правила. Все операции чтения и записи регистра PX выполняются как обращение к 48 разрядным данным. Если какие либо 40 разрядные данные должны храниться в блоке памяти, сконфигурированном для хранения 32 разрядных слов, то для обращения к 40 разрядным данным (в 48 разрядном слове) должен использоваться регистр PX. При записи 48 разрядных данных (из регистра PX в 32 разрядную память) будьте уверены, что физическое пространство памяти 48 разрядного адресата не повредит 32 разрядные данные.

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

Заметим, что разрядность слова данных, к которому осуществляется доступ, не зависит от значения бита режима точности арифметических операций RND32. Это избавляет от необходимости переключения значения RND32 в вашей программе при использовании 32 разрядных данных в 40 разрядных системах повышенной точности.

Из за того что блоки памяти ADSP 2106x должны быть сконфигурированы для хранения 32 или 40 разрядных данных, при выполнении передач по DMA автоматически считываются или записываются слова соответствующей разрядности. Это упрощает настройку каналов DMA в системе. При передаче данных по DMA между последовательными портами и памятью максимальная разрядность слова равна 32.

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

153

5 Память

5.4. Интерфейс внешней памяти

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

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

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

подтверждения связи. Выводы (перевод шины в третье состояние) и PAGE (граница страницы) могут использоваться для интерфейса с динамической памятью (DRAM).

Во внешней памяти могут храниться и команды, и данные. Внешняя шина данных (DATA47 0) должна быть 48 разрядной для передачи команд и/или 40 разрядных данных с плавающей точкой повышенной точности, или 32 разрядной для передачи данных с плавающей точкой одиночной точности. Если внешняя память содержит только данные или упакованные команды, которые будут передаваться по DMA, то внешняя шина данных может быть 16 или 32 разрядной. В системе такого типа устройство ввода вывода процессора ADSP 2106x осуществляет распаковку входящих данных и упаковку выходящих данных. На рис. 5а показано, как слова данных различной разрядности передаются через внешний порт.

Внутренняя 32 разрядная шина адреса DM и устройство I/O могут обращаться ко всему пространству внешней памяти размером 4 гигаслова. Однако, 24

DATA 47-0

47

40

32

24

16

8

0

 

 

 

 

 

 

 

 

 

 

Загрузка

из EPROM

Упакованные в 16 разрядов

32-разрядные с плавающей или с фиксированной точкой, D31-D0,

упакованные в 32 разряда

40-разрядные с плавающей точкой повышенной точности

Выборка команды

Рис. 5а. Выравнивание данных при передаче через внешний порт

154

Память 5

разрядная шина адреса РМ может обращаться только к 12 мегасловам внешней памяти из за ее меньшей разрядности.

Вывод

Тип

Функция

 

ADDR31 0

I/O/T

Внешняя шина адреса (External Bus Address). По этим линиям

 

 

процессор выводит адреса для внешней памяти и периферийных

 

 

устройств. В многопроцессорной системе ведущий процессор

 

 

выводит адреса для чтения/записи внутренней памяти или регистров

 

 

устройства ввода вывода (IOP) других ADSP 2106x. ADSP 2106x

 

 

принимает адреса, когда хост процессор или ведущий в

 

 

многопроцессорной системе считывает или записывает его

 

 

внутреннюю память или регистры IOP.

DATA47 0

I/O/T

Внешняя шина данных (External Bus Data). По этим выводам

 

 

процессор получает и выводит данные и команды. 32 разрядные

 

 

данные с фиксированной точкой одиночной точности и 32 разрядные

 

 

данные с плавающей точкой передаются битами 47 16 шины. 40

 

 

разрядные данные с плавающей точкой повышенной точности

 

 

передаются битами 47 8 шины. 16 разрядное короткое слово данных

 

 

передается битами 31 16. «Подтягивающие» резисторы на

 

 

неиспользуемые выводы шины не нужны.

 

O/T

Линии выбора памяти (Memory Select Lines). Сигнал на этих линиях

 

 

выставляется (низкий уровень) для выбора кристалла

 

 

соответствующего банка внешней памяти. Размер банка памяти

 

 

должен быть определен в регистре управления системой (SYSCON).

 

 

Линии

– это линии декодированного адреса памяти,

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

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

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

выводятся ведущим.

I/O/T Строб чтения памяти (Memory Read Strobe). Этот сигнал

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

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

155

5 Память

I/O/T Строб записи памяти (Memory Write Strobe). Этот сигнал

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

выставлять строб для записи данных во внутреннюю память

ADSP 2106x. В многопроцессорных системах сигнал выводится

ведущим и принимается всеми другими ADSP 2106x.

PAGE O/T Граница страницы DRAM. Процессор выставляет этот сигнал при пересечении границы страницы внешней DRAM. Размер страницы DRAM должен определяться в регистре управления памятью WAIT.

DRAM может быть реализована только в банке внешней памяти банк 0; сигнал PAGE может активироваться только для обращений в банк 0. В многопроцессорных системах PAGE выводится ведущим.

I/O/T Выбор синхронной записи (Synchronous Write Select). Этот сигнал

используется для синхронного взаимодействия ADSP 2106x с устройствами памяти (включая другие ADSP 2106x). Процессор

 

выставляет

(низкий уровень), чтобы обеспечить предварительное

 

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

 

произойти, если позже не будет установлен строб

(например, в

 

условной команде записи). В многопроцессорной системе сигнал

 

выводится ведущим процессором и принимается остальными ADSP

 

2106x. Этот сигнал указывает тип обращения в пространство памяти

 

многопроцессорной системы: запись или чтение.

выставляется тогда,

 

когда выводится адрес. Хост процессор, использующий синхронную

 

запись, должен выставлять этот сигнал при записи в ADSP 2106x.

ACK

I/O/S Подтверждение доступа к памяти (Memory Acknowledge). Внешнее

 

устройство может сбрасывать АСК (низкий уровень), чтобы добавить

 

состояние ожидания для обращения к внешней памяти. АСК

 

используется устройствами ввода вывода, контроллерами памяти,

 

другими периферийными устройствами, чтобы продлить обращение к

 

внешней памяти. ADSP 2106x сбрасы вает выходной сигнал на выводе

 

АСК, чтобы добавить состояние ожидания для синхронного обращения

 

к его внутренней памяти. В многопроцессорной системе ведомый

 

ADSP 2106x сбрасывает сигнал на входе АСК ведущего, чтобы

 

добавить состояние(я) ожидания для обращения к его внутренней па

 

мяти. Ведущий имеет на выводе АСК фиксатор, который поддерживает

 

сигнал на входе на уровне, который был выставлен последним.

I=вход

S=синхронный

(o/d)=с открытым стоком (open drain)

O=выход

А=асинхронный

(a/d)= активный управляющий (active drive)

Т=третье состояния (когда выставлен или или когда ADSP 2106x ведомый)

Таблица 5.7. Выводы интерфейса внешней памяти

156

Память 5

5.4.1. Банки внешней памяти

Внешняя память разделена на четыре равных банка; каждый из этих банков связан с собственным генератором состояний ожидания. Это позволяет отображать более медленные периферийные устройства в карту памяти того банка, для которого определено конкретное число состояний ожидания. Отображая периферийные устройства в различных банках, вы можете обеспечить работу устройств I/O, которые имеют различные требования к синхронизации.

Банк 0 начинается с адреса 0x0040 0000 во внешней памяти, за ним следуют банки 1, 2 и 3. Когда ADSP 2106x генерирует адрес, находящийся внутри одного из четырех банков, то активизируются соответствующие линии выбора памяти

.

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

памяти DRAM, когда он используется в комбинации с сигналом PAGE (см. «Обнаружение границы страницы DRAM»).

Размер банков памяти может быть от 8 килослов до 256 мегаслов и должен быть равен степени двойки. Выбор размера банка памяти выполняется с помощью поля бит MSIZE регистра SYSCON следующим образом:

MSIZE = log2 (желаемый размер банка) – 13.

Линии – линии декодированного адреса памяти, состояние которых изменяется в то же самое время, что и у других линий адреса. Когда нет обращения к внешней памяти, то линии неактивны. Однако они

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

использующих сигнал , если такое обращение в память не может быть прервано.

Заметим, что внутренняя память ADSP 2106x разделена на два блока, называемые блок 0 и блок 1, в то время как пространство внешней памяти разделено на четыре банка.

157

5 Память

5.4.2. Небанковая память

Область памяти выше банков 0 3 называется небанковым пространством внешней памяти. Для доступа в это адресное пространство линии выбора памяти не

выставляются. Доступ к небанковому пространству памяти может также иметь состояния ожидания, определенные в полях UBWS и UBWM регистра WAIT.

5.4.3. Выбор начальной загрузки памяти ()

Сигнал на линии выбора памяти выставляется (низкий уровень), только

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

сигналом .

Вывод управляется только ведущим ADSP 2106x. Подробнее

относительно начальной загрузки из EPROM см. в разделе «Начальная загрузка» в главе Проектирование системы этого руководства.

5.4.4. Состояния ожидания и сигнал подтверждения

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

С целью упрощения интерфейса с медленными внешними периферийными устройствами и памятью, ADSP 2106x обеспечивает несколько методов для продления обращения к памяти, расположенной вне кристалла:

Внешний. ADSP 2106x опрашивает свой вход подтверждения (ACK) в каждом цикле. Если он фиксирует сигнал низкого уровня, то добавляет состояние ожидания, удерживая адрес и стробы истинными еще один дополнительный цикл. Если сигнал ACK высокого уровня, то ADSP 2106x завершает обращение.

Внутренний. ADSP 2106x игнорирует вход ACK. Биты управления в регистре WAIT определяют число состояний ожидания при обращении. Вы можете

158

Память 5

определять различное число состояний ожидания для каждого банка внешней памяти.

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

Внешний или внутренний. ADSP 2106x завершает обращение, когда опрашиваемый сигнал ACK окажется высокого уровня или когда закончатся запрограммированные в WAIT состояния ожидания (в зависимости от того, что происходит первым). В этом режиме в системе, работающей с двумя различными типами периферийных устройств, для более быстрого периферийного устройства можно сократить время обращения к памяти, применяя сигнал ACK, и использовать программируемые состояния ожидания для более медленного периферийного устройства.

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

5.4.4.1. Регистр WAIT

Регистр WAIT показан на рис. 5.15, его описание приведено в табл. 5.8. Значения битов, показанные на рис. 5.15, являются значениями инициализации по умолчанию. После сброса регистр WAIT инициализируется числом 0x21AD 6B5A.

Цикл простоя шины (bus idle cycle) – неактивный цикл шины, который генерируется автоматически, чтобы избежать конфликтов между устройствами, управляющими шиной. Такой конфликт может возникнуть, когда устройство с длительным временем отключения управлением выхода продолжает управлять

шиной, после того как сигнал сброшен, а другое устройство начинает управление в следующем цикле.

159

5 Память

Бит

Имя

Функция

1 0

EB0WM

Режим состояния ожидания для внешнего банка 0*

4 2

EB0WS

Число состояний ожидания для внешнего банка 0**

6 5

EB1WM

Режим состояния ожидания для внешнего банка 1*

9 7

EB1WS

Число состояний ожидания внешнего банка 1**

11 10

EB2WM

Режим состояния ожидания внешнего банка 2*

14 12

EB2WS

Число состояний ожидания внешнего банка 2**

16 15

EB3WM

Режим состояния ожидания внешнего банка 3*

19 17

EB3WS

Число состояний ожидания внешнего банка 3**

21 20

UBWM

Режим состояния ожидания небанковой памяти *

24 22

UBWS

Число состояний ожидания небанковой памяти **

27 25

PAGSZ

Размер страницы для DRAM (только в банке 0) †

28

PAGEIS

Один неактивный цикл при пересечении границы страницы DRAM

29

MMSWS

Одно состояние ожидания при обращении в пространство памяти

 

 

многопроцессорной системы

30

HIDMA

Один цикл простоя для DMA с квитированием ††

31

 

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

* Режим состояния ожидания:

EBxWM

Режим состояния ожидания

00

Только внешнее подтверждение (ACK)

01

Только внутренние состояния ожидания

10Требуется и внутреннее, и внешнее подтверждение

11Достаточно или внутреннего, или внешнего подтверждения

** Число состояний ожидания

EBxWS

число состояний ожидания

цикл простоя шины

цикл удержания

000

 

0

нет

нет

001

 

1

есть

нет

010

 

2

есть

нет

011

 

3

есть

нет

100

 

4

нет

есть

101

 

5

нет

есть

110

 

6

нет

есть

111

 

0

есть

нет

Заметим, что если цикл простоя шины или цикл удержания запрограммированы, то они произойдут независимо от режима состояния ожидания. Например, режим состояния ожидания только с подтверждением ACK может иметь цикл удержания, запрограммированный для этого режима.

† Размер страницы DRAM

PAGSZ

Размер страницы DRAM

000

256 слов

001

512 слов

010

1024 слов (1 К)

011

2048 слов (2 К)

1004096 слов (4 К)

1018192 слов (8 К)

11016384 слов (16 К)

11132768 слов (32 К)

Подробнее см. «Обнаружение пересечения границы страницы DRAM»

†† При установке бита HIDMA в 1 добавляется пустой цикл после каждого чтения (при выставлении ) из внешнего фиксатора DMA.

Таблица 5.8. Описание битов регистра WAIT

160