Использование языка Си для программирования ЦСП
TMS320C67x
Язык АССЕМБЛЕРа – базовый язык программирования ЦСП. Он строго ориентирован на конкретную архитектуру ЦСП и позволяет в полной мере задействовать все его ресурсы, обеспечивая оптимальный с точки зрения скорости выполнения и размера программы код. Недостатком использования АССЕМБЛЕРа является сложность процесса разработки программ и необходимость хорошего знания архитектуры ЦСП.
В современном мире скорость выпуска новых технических решений на рынок становится очень критичной для поддержания конкурентоспособности.
Возникает задача ускорения процесса разработки и отладки программного обеспечения, упрощения модификации и переноса программных продуктов с одних аппаратных платформ на другие.
Незаменимыми становятся языки высокого уровня, основным из которых является язык Си.
Ассемблер и Си
В настоящий момент все компании-производители ЦСП стараются обеспечить программиста возможностью использования языка Си/Си++.
Для этого создаются компиляторы, автоматически переводящие программный код с Си на АССЕМБЛЕР конкретного сигнального процессора.
Рассмотрим пример из лабораторной работы №1.
Для реализации вычисления выражения:
х = 1.1*2.2 + 3.3*4.4 + 5.5 – 0.5
мы разработали программу из 10 строк. При этом нам потребовалось изучить систему команд, особенности командного конвейера для выбора числа NOP, состав вычислительных блоков и т. д.
На языке Си такая программа состояла бы из одной единственной строки, не требуя никаких знаний о ЦСП:
х = 1.1*2.2 + 3.3*4.4 + 5.5 – 0.5; /* Строка программы на языке Си */
Ассемблер и Си
Ассемблер и Си
MPYSP .M1 A1,A2,A1 ||MPYSP .M2 B1,B2,B1
NOP 3
ADDSP .L1X A1,B1,A2 NOP 3
ADDSP .L1 A2,A3,A2 NOP 3
SUBSP .L1X A2,B3,A0 NOP 3
NOP
х = 1.1*2.2 + 3.3*4.4 + 5.5 – 0.5
Ассемблер
Си
Задача компилятора – обеспечить эффективный перевод Си-программы на язык АССЕМБЛЕРа, то есть использовать ресурсы ЦСП наиболее рационально.
Однако компиляторы далеки от совершенства и генерируемый ими код часто оказывается неоптимален.
В примере лабораторной работы №1 программа, написанная на ассемблере, выполняется за 16 тактов, а программа на языке Си – за 25 тактов.
Ассемблер и Си
Итак, перед программистом возникает вопрос выбора языка программирования: эффективный, но сложный ассемблер, или простой и удобный, но не вполне эффективный Си?
Компания Texas Instruments рекомендует при разработке программного кода для ЦСП TMS320C67x использовать следующий алгоритм.
1. Разрабатывается пакет программ на языке Си.
2. Проект компилируется и оценивается эффективность сгенерированного ассемблерного кода (скорость выполнения/размер программы).
3. Если эффективность недостаточная, выделяются наиболее проблемные фрагменты кода и проводится их оптимизация на языке Си.
4. Если оптимизация на Си не приводит к нужным результатам, выделенные фрагменты кода переписываются на языке линейного ассемблера.
Линейный ассемблер аналогичен обычному ассемблеру, но допускает ряд упрощений синтаксиса, облегчающих процесс программирования.Код линейного ассемблера поступает на ассемблирование с оптимизацией, в процессе которого программа дополняется недостающей информацией.
Алгоритм разработки программы для ЦСП
Для более эффективного использования языка Си при программировании ЦСП C67x стандартный язык Си расширен набором специальных директив и других элементов синтаксиса.
Ключевые слова - позволяют точно определить компилятору тип используемых переменных или функций (interrupt, cregister, …).
Директивы компилятору – позволяют сообщить компилятору, как ему следует понимать определенный фрагмент кода (_ DATA_ALIGN, _ MUST_ITERATE).
Встроенные средства – набор специальных Си-функций, переводимых компилятором напрямую в соответствующие им команды ассемблера. Позволяют задействовать на языке высокого уровня такие команды процессора, которые не могут быть представлены средствами стандартного языка Си.
Ассемблерные вставки – ассемблерные команды, размещаемые прямо в тексте Си-программы: asm(”assembler text”); .
Библиотека функций ЦОС – набор типовых функций ЦОС, разработанных специально для конкретного процессора и эффективно использующих его ресурсы. Библиотека DSPLIB содержит функции адаптивной фильтрации, корреляции, БПФ, фильтрации и свертки, и других вычислений.
Особенности языка Си для ЦСП TMS320C67x
Процесс создания проекта с использованием языка Си рассмотрим на примере:
0. Создание рабочей папки.1. Формирование сигнала в системе МАТЛАБ (1651 4 0 0 2000). Формирование фильтра в системе МАТЛАБ.2. Создание файла с программой3. Создание проекта, подключение файлов, в том числе библиотеки rts и cmd.4. Компиляция. Анализ кода ассемблера.5. Меню – свойства проекта, визуализация и др.
Создание проекта на языке Си
Процесс создания проекта с использованием языка Си рассмотрим на примере:
1. Создать проект.2. Создать файл с текстом программы.3. Подключить к проекту этот файл и rts, cmd.4. Компиляция.5. Изучение кода.6. Вывод характеристик фильтра.7. Загрузка сигнала и вывод его на график.8. Выполнение программы и проверка результата.9. Оценка времени выполнения программы.10. Разрешить компиляцию с оптимизацией.11. Выполнить и оценить время выполнения.
Создание проекта на языке Си