3-1
Память
и пространство I/O
TMS320C55x
(C55x) DSP обеспечивает доступ к унифицированному
пространству данных/программ и
пространству I/O
(ввода/вывода). Адреса пространства
данных используются для доступа к
универсальной памяти и к ЦП регистрам,
отображенным в карте памяти. Адреса
пространства программ применяются ЦП
для чтения инструкций из памяти.
Пространство I/O
доступно для двусторонней связи с
периферией. Загрузчик операционной
системы на кристалле предоставляет
пути помощи загрузки кода и данных во
внутреннюю память.
Тема
Страница
3.1
Карта
памяти
3-2
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
3.2
Пространство
программ
3-3
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3
Пространство
данных
3-5
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4
Пространство
I/O
3-8
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
3.5
Загрузчик
системы
3-9
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
Глава 3
Карта
памяти
3-2
3.1
Карта
памяти
Все 16M байты памяти адресуемы как
пространство программ или данных
(смотрите рисунок 3-1). Когда ЦП использует
пространство программ для чтения
программного кода из памяти, он применяет
адреса в 24 бита для обращения к байтам.
Когда ваша программа получает доступ
к пространству данных, она использует
адреса в 23 бита для обращения к 16 -
разрядным словам. В обоих случаях шины
адреса переносят значения в 24 бита, но
в течение доступа к пространству данных,
младший бит на шине адреса приравнивается
к 0.
Пространство данных делится на 128
основных страниц данных (с 0 по 127). Каждая
основная страница данных имеет 64К
адресов. Инструкция, ссылающаяся на
основную страницу данных, объединяет
7- разрядную страницу данных с 16 -
разрядным офсетом.
На странице данных 0 первые 96 адресов
(00 0000h-00 005Fh) зарезервированы под регистры,
отображенные в карте памяти (MMR).
Существует соответствующий блок из
192-х адресов (00 0000h-00 00BFh) в пространстве
программ. Не рекомендуется хранить
(запоминать) программный код в этих
адресах.
Для того, чтобы посмотреть, как адреса
распределяются между внутренней памятью
и внешней памятью, и ,чтобы получить
информацию о внутренней памяти,
обратитесь к технической документации
вашего C55x DSP.
Рисунок
3-1. Карта памяти
Пространство
программ
3-3
Память
и пространство I/O
3.2
Пространство
программ
Доступ к пространству программ
осуществляется, когда ЦП считывает
инструкции из памяти программ. ЦП
применяет байтовые адреса (смотрите
секцию 3.2.1) для выборки инструкций
различных размеров (секция 3.2.2). Выборка
инструкций выравнивается по четным
адресам 32 - разрядной границы (секция
3.2.3).
3.2.1
Байтовые
адреса (24 бита)
Когда ЦП производит выборку инструкций
из памяти программ, он использует
байтовые адреса, которые являются
адресами, относящимися к индивидуальным
байтам. Эти адреса 24 - разрядные. Следующий
рисунок показывает строку 32 - разрядной
памяти. Каждый байт соотносится с
адресом. Например, байт 0 соответствует
адресу 00 0100h, а байт 2 - адресу 00 0102h.
Байтовые
адреса
Байт
0
Байт
1
Байт
2
Байт
3
00
0100h-00 0103h
3.2.2
Организация
инструкций в пространстве программ
DSP поддерживает 8 -, 16 -, 24 -, 32- и 48 - разрядные
инструкции. Следующая таблица и рисунок
приводят пример организации инструкций
в пространстве программ. Пять инструкций
различных размеров хранятся в 32 -
разрядной памяти. Адресом для каждой
инструкции является адрес старшего
байта (код операции). Коды не хранятся
в затененных байтах.
Инструкция
Размер
Адрес
A
24
бита
00
0101h
B
16
бита
00
0104h
C
32
бита
00
0106h
D
8
бита
00
010Ah
E
24
бита
00
010Bh
Байтовые
адреса
Байт
0
Байт
1
Байт
2
Байт
3
00
0100h-00 0103h
A(23-16)
A(15-8)
A(7-0)
00
0104h-00 0107h
B(15-8)
B(7-0)
C(31-24)
C(23-16)
00
0108h-00 010Bh
C(15-8)
C(7-0)
D(7-0)
E(23-16)
00
010Ch-00 010Fh
E(15-8)
E(7-0)
Пространство
программ
3-4
3.2.3
Выравнивание
выборки из пространства программ
Нет
необходимости выравнивания инструкций
при хранении их в памяти программ, но
выборка инструкций выравнивается к
четным адресам 32- разрядной границы. В
течение выборки инструкции ЦП считывает
32 бита из адреса, чьи два младших бита
(LSB)
равны 0. Иными словами, цифра самого
младшего разряда шестнадцатиричной
выборки адреса всегда равна 0h, 4h, 8h или
Ch.
Когда
ЦП прерывает исполнение основной
программы, адрес, записанный в счетчик
команд (PC),
должен быть тем же, что и адрес выборки.
Адрес PC
и адрес выборки одинаковы только, если
два LSB
адреса PC
равны 0. Примите во внимание следующий
сегмент кода ассемблера, который
вызывает подпрограмму:
CALL
#subroutineB
Предположим, что первой инструкцией
подпрограммы является инструкция С по
байтовому адресу 00 0106h, как это показано
на рисунке (код не хранится в затененных
байтах).
Байтовые
адреса
Байт
0
Байт
1
Байт
2
Байт
3
00
0100h-00 0103h
A(23-16)
A(15-8)
A(7-0)
00
0104h-00 0107h
B(15-8)
B(7-0)
C(31-24)
C(23-16)
00
0108h-00 010Bh
C(15-8)
C(7-0)
D(7-0)
E(23-16)
00
010Ch-00 010Fh
E(15-8)
E(7-0)
PC содержит 00 0106h, но шина адреса чтения
программ (PAB) переносит байтовые адреса
на предыдущую 32 - разрядную границу 00
0104h. ЦП считывает 4 - байтовые пакеты
кода, начиная с адреса 00 0104h. Инструкция
С является первой исполняемой инструкцией.
Пространство
данных
3-5
Память
и пространство I/O
3.3
Пространство
данных
Когда программы считывают данные из
памяти или регистров (записывают в
них), осуществляется доступ к пространству
данных. ЦП использует адреса слов
(смотрите секцию 3.3.1) для чтения или
записи 8 -, 16 - или 32- разрядных значений
(секция 3.3.2). Адрес, который должен быть
сгенерирован для конкретного значения,
зависит от того, как он хранится внутри
границ слова в пространстве данных
(секция 3.3.3).
3.3.1
Адреса
слов (23 бит)
Когда ЦП производит доступ к пространству
данных, он использует адреса слов,
которые соответствуют определенным
16 - разрядным словам. Данные адреса 23 -
разрядные. Следующий рисунок показывает
строку 32- разрядной памяти. Каждое слово
соответствует адресу. Слово 0 располагается
по адресу 00 0100h, а слово 1 по адресу 00
0101h.
Адреса
слов
Слово
0
Слово
1
00
0100h-00 0101h
Шины адреса являются 24 - разрядными
шинами. Когда ЦП считывает из пространства
данных (или записывает в него), адрес в
23 бита объединяется с 0. Например,
допустим, что инструкция считывает
слово по 23 - разрядному адресу 00 0102h.
Соответствующая шина адреса чтения
данных пересылает 24 - разрядное значение
00 0204h:
Адрес слова:
000 0000 0000 0001 0000 0010
Шина адреса чтения
данных:
0000 0000 0000 0010 0000 0100
3.3.2
Типы
данных
Набор инструкций
управляет следующими типами данных:
Байт
8 бит
Слово
16 бит
Длинное слово
32 бита
Определенный
синтаксис инструкции (смотрите таблицу
3-1) позволяет выбрать старшие или младшие
байты конкретных слов. Инструкция
загрузки байта считывает байты и
загружает их в регистры. Считанные
байты дополняются нулями (если использован
операнд uns())
или дополняются знаковыми разрядами
до сохранения (запоминания). Инструкции
хранения байта сохраняет 8 младших бит
регистра в определенный байт в памяти.
Пространство
данных
3-6
Замечание:
В пространстве данных ЦП использует
адреса в 23 бита для доступа к словам.
Для доступа к байтам ЦП должен
манипулировать словом, которое содержит
данный байт.
Таблица
3-1. Инструкции загрузки и хранения
байта
Синтаксис
инструкции
Доступные
байты
Функционирование
MOV
[uns(]high_byte(Smem)[)], dst
Smem(15-8)
Загрузка
байта
MOV
[uns(]low_byte(Smem)[)], dst
Smem(7-0)
(Инструкции загрузки
буферного, вспомогательного регистра
и регистра аккумулятора)
MOV
high_byte(Smem) << #SHIFTW, ACx
Smem(15-8)
MOV
low_byte(Smem) << #SHIFTW, ACx
Smem(7-0)
MOV
src, high_byte(Smem)
Smem(15-8)
Хранение
байта
MOV
src, low_byte(Smem)
Smem(7-0)
(Инструкции хранения
буферного, вспомогательного регистра
и регистра аккумулятора)
Когда ЦП обращается к длинному слову,
адрес, применяемый для доступа, является
адресом старшего слова (MSW) 32 - разрядного
значения. Адрес младшего слова (LSW)
зависит от адреса MSW:
Если
адрес MSW четный, то доступ к LSW осуществляется
по следующему адресу. Например:
Адреса
слов
00
0100h-00 0101h
MSW
LSW
Если
адрес MSW нечетный, то доступ к LSW
производится по предыдущему адресу.
Например:
Адреса
слов
00
0100h-00 0101h
LSW
MSW
Заданный адрес MSW (LSW)
дополняет свой младший бит для нахождения
адреса LSW (MSW).
Пространство
данных
3-7
Память
и пространство I/O
3.3.3
Организация
данных в пространстве данных
Далее следующие таблица
и рисунок приводят пример организации
данных в пространстве данных. Семь
значений данных различного размера
хранятся в 32 - разрядной памяти. Значения
данных не хранятся по адресу 00 0100h.
Важные замечания о примере:
Для
доступа к длинному слову вы должны
обратиться к старшему слову (MSW).
С доступно по адресу 00 0102h.
D
доступно по адресу 00 0105h.
Адреса
слов применяются для доступа к байтам
в пространстве данных. Например, адрес
00 0107h
используется как для F
(старший байт), так и для G
(младший байт). Инструкции специальных
байтов показывают, к какому из двух
байтов был совершен доступ (старшему
или младшему).
Значение
данных
Тип
данных
Адрес
A
Байт
00
0100h (младший байт)
B
Слово
00
0101h
C
Длинное
слово
00
0102h
D
Длинное
слово
00
0105h
E
Слово
00
0106h
F
Байт
00
0107h (старший байт)
G
Байт
00
0107h (младший байт)
Адреса
слов
Слово
0
Слово
1
00
0100h-00 0101h
A
B
00
0102h-00 0103h
MSW
C (биты
31-16)
LSW
C (биты 15-0)
00
0104h-00 0105h
LSW
D (биты
15-0)
MSW
D (биты 31-16)
00
0106h-00 0107h
E
F
G
Пространство
I/O
3-8
3.4
Пространство
I/O
Пространство I/O
обособленно от пространства данных/программ
и доступно лишь для регистров периферии
на DSP. Разрядность адресных слов – 16,
таким образом адресуемое пространство
составляет 64К.
Пространство
I/O
Адреса
0000h-FFFFh
64K
слова
ЦП
использует шину адреса чтения данных
DAB
для чтения и шину адреса записи данных
EAB
для записи. Когда ЦП считывает из
пространства I/O
(или записывает в него), адрес в 16 бит
объединяется с начальным 0. Например,
предположим, что инструкция считывает
слово по 16 - разрядному адресу 0102h.
DAB
переносит 24 - разрядное значение 00
0102h.
Загрузчик
системы
3-9
Память
и пространство I/O
3.5
Загрузчик
системы
Загрузчик системы на
кристалле обеспечивает опции для
передачи кода и данных из внешнего
источника в ОЗУ внутри C55x DSP по
сбросу/включению питания. Например,
загрузчик системы TMS320VC5510 DSP позволяет
вам загрузить ОЗУ по одному из следующих
способов:
Из
внешней 16 - или 32 - разрядной асинхронной
памяти
Через усовершенствованный интерфейс
хост порта (EHPI)
Через многоканальный буферный
последовательный порт 0 (с 8 - или 16 -
разрядными элементами)
Для
просмотра списка опций загрузки для
конкретного C55x DSP и для получения
информации о выборе опций обращайтесь
к технической документации DSP. Чтобы
понять, как утилита шестнадцатиричного
преобразования C55x
может помочь вам с загрузкой системы,
смотрите TMS320C55x
Руководство
пользователя инструментов языка
ассемблера
(SPRU280).