- •Глава 1. Описание отладочной платы………....5
- •Глава 2. Процессор tms320g5535…..…….....………….6
- •Глава 3. Аудио кодек aic3204………………………...29
- •Глава 4. Программирование цсп 5535…………....31
- •Глава 5. Примеры выполнения заданий……....36
- •Глава 1. Описание отладочной платы
- •Описание tms320c5535 eZdsp usb Stick
- •Технические характеристики платы
- •Глава 2. Процессор tms320g5535
- •2.1. Блок-схема и описание процессора tms320c5535
- •2.2. Память процессора и адресное пространство
- •2.3. Тактовый генератор
- •2.4. Прерывания и таблица векторов прерывания
- •2.5. Управление конфигурацией
- •2.6. Контроллер dma
- •2.7. Таймеры
- •2.8. Аналого-цифровой преобразователь (ацп) sar adc
- •2.9. Интерфейс i2c (Inter-Integrated Circuit)
- •2.10. Интерфейс i2s (Inter-ic Sound)
- •2.11. Блок ввода/вывода цифровой информации gpio (general-purpose input/output)
- •2.12. Блок последовательного интерфейса uart
- •2.13. Блок rtc (Real Time Clock)
- •Глава 3. Аудио кодек aic3204
- •Глава 4. Программирование цсп 5535
- •4.1. Программное обеспечение для работы с цсп Texas Instruments
- •4.2. Порядок работы в среде ccs
- •4.3.Особенности создания проекта для eZdsp usb5535 Stick
- •Глава 5. Примеры выполнения заданий
- •5.1. Реализация эффектов эхо и реверберации
- •5.2. Описание функций, используемых в проекте эхо и реверберация
- •5.3.Генератор синусоидального сигнала
- •5.4.Генерация dtmf сигнала
- •5.5.Реализация фильтра с конечной импульсной характеристикой
2.2. Память процессора и адресное пространство
Процессор имеет единое адресное пространство для данных и программ. Внутренняя память процессора включает три вида памяти:
1)On-Chip Dual-access Random Access Memory (DARAM) энергозависимая.
2)On-Chip Single-access Random Access Memory (SARAM) энергозависимая.
3)On-Chip Read-only memory (ROM) энергонезависимая
Энергозависимость, означает потерю данных при выключении питания. Энергонезависимая память сохраняет данные.
RAM означает память с произвольным доступом (и чтение и запись). ROM означает, что в процессе работу процессора эта память может только читаться, а для записи как правило используются либо специальные программаторы, либо особые режимы (не рабочие) работы процессора.
Как правило, адресное пространство указывается в шестнадцатеричной системе.
Память DARAM занимает байтовое адресное пространство 00 00C0h - 00 FFFFh и включает 8-мь блоков (DARAM0-DARAM7) по 4К слов. Особенностью данной памяти является то, что за один цикл возможно два вида доступа: двойное чтение, двойная запись или одновременно чтение и запись, что значительно повышает быстродействие.
SARAM - память с одним типом доступа. Т.е. за один цикл возможно только одно чтение или одна запись. Адресное пространство занимает диапазон байтовых адресов 01 0000h–04 FFFFh и разделено на 32-а блока (SARAM0-SARAM31) по 4К слов в каждом.
SARAM и DARAM может быть сконфигурированы как память программ и как память данных. Эта же память используется для режима прямого доступа к памяти (ПДП).
Память ROM занимает адреса FE 0000h – FFF FFFh и разделена на 4-е блока по 16К слов. Всего 128К байт. Это адресное пространство может быть отведено под ROM или под внешнюю память. Если бит MPNMC в регистре ST3 очищен (по умолчанию), то процессор имеет доступ к ROM. В этой памяти хранится загрузочный код, который включается при сбросе процессора и различные программы и данные. В частности в этой области находится программа вычисления FFT. (Описание других программ и данных отсутствует.)
Внешняя память имеет адресное пространство 05 0000h – FFF FFFh. Обмен по EMIF может быть организован по 8-мь или 16-ть бит. Адресная шина при этом будет иметь 21бит и может использоваться до 5-ти сигналов выбора микросхемы памяти.
Процессор имеет дополнительное адресное пространство 64K байт (I/O space) для регистров управления, отделённое от адресного пространства программ и данных. Доступ к этим регистрам осуществляется с помощью отдельных инструкций. Не всё это адресное пространство занято, есть резервные ячейки. В таблице 2.1 приведены адреса и назначение управляющих регистров.
Таблица 2.1 адреса управляющих регистров
-
WORLD ADDRESS
PERIPHERAL
0x0000 – 0x0004
Idle Control
0x0C00 – 0x0C7F
DMA0
0x0D00 – 0x0D7F
DMA1
0x0E00 – 0x0E7F
DMA2
0x0F00 – 0x0F7F
DMA3
0x1000 – 0x10DD
EMIF
0x1800 – 0x181F
Timer0
0x1840 – 0x185F
Timer1
0x1880 – 0x189F
Timer2
0x1900 – 0x197F
Real Time Clock
0x1A00 – 0x1A6C
I2C
0x1B00 – 0x1B1F
UART
0x1C00 – 0x1CFF
System Control
0x2800 – 0x2840
I2S0
0x2900 – 0x2940
I2S1
0x2A00 – 0x2A40
I2S2
0x2B00 – 0x2B40
I2S3
0x2E00 – 0x2E40
LCD
0x3000 – 0x300F
SPI
0x3A00 – 0x3A7F
MMC/SD0
0x3B00 – 0x3B7F
MMC/SD1
0x7000 – 0x70FF
SAR and Analog Control Registers
0x8000 – 0xFFFF
USB
Доступ к этим регистрам (чтение и запись) осуществляется через специальные инструкции. При обращении к этим регистрам надо быть уверенным, что процессор не находится в режиме сброса и включен тактовый генератор. Иначе возможно его “зависание”.
При трансляции проекта необходимо контролировать распределение памяти. На учебном диске распределение памяти контролирует командный файл lnkx.cmd.
Директива MEMORY в этом файле идентифицирует диапазоны адресов памяти, которые присутствуют физически и могут быть использованы программой. Каждый такой диапазон памяти имеет имя, стартовый адрес и длину. По умолчанию линковщик может использовать единое адресное пространство с названием PAGE 0. В процессорах C55x могут быть использовано до 255 страниц в зависимости от необходимости. Когда заполняется директива MEMORY необходимо указать все диапазоны адресов памяти, доступные в задаче. В качестве примера можно предложить следующий вид директивы Рис.2.1:
MEMORY
{
PAGE 0: /* ---- Unified Program/Data Address Space ---- */
MMR (RWIX): origin = 0x000000, length = 0x0000c0 /* MMRs */
DARAM0 (RWIX): origin = 0x0000c0, length = 0x00ff40 /* 64KB - MMRs */
SARAM0 (RWIX): origin = 0x010000, length = 0x010000 /* 64KB */
SARAM1 (RWIX): origin = 0x020000, length = 0x020000 /* 128KB */
SARAM2 (RWIX): origin = 0x040000, length = 0x00FE00 /* 64KB */
VECS (RWIX): origin = 0x04FE00, length = 0x000200 /* 512B */
PDROM (RIX): origin = 0xff8000, length = 0x008000 /* 32KB */
PAGE 2: /* -------- 64K-word I/O Address Space -------- */
IOPORT (RWI) : origin = 0x000000, length = 0x020000
}
Рис.2.1 Пример директивы MEMORY
Индексы RWIX означают следующее:
R-означает, что эта память может читаться.
W-означает, что в эту память можно писать.
I-означает, что эта память может содержать исполняемый код.
X-означает, что эта память может быть инициализирована.
После директивы MEMORY можно использовать директиву SECTIONS для более детального распределения памяти.
