Практическая реализация проекта с помощью DSP/BIOS 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Практическая реализация проекта с помощью DSP/BIOS



Необходимо запустить ИСР CCS в режиме симуляции. Создать новый проект под именем «exp_3» в папке «laba_2».

Теперь нужно создать и добавить к проекту исходный код программы, который находится в файле «main.c» (листинг 3.1). Суть исходного кода: плата DSK5510 конфигурируется таким образом, чтобы воспроизвести звуковой сигнал на частотах 1, 2, 3, 4, 5 КГц, который генерирует функция «sinewave()». Для этого в программе настраивается кодек AIC23 – на плате он отвечает за АЦП сигналов, которые поступают на линейный вход, и ЦАП сигнала подаваемого на линейные выходы. На плате кодек AIC23 представляет собой небольшую микросхему (AIC23BI), к которой подключены линейные входы/выходы, в память которой записаны все функции для работы. Чтобы можно было работать с этими функциями, необходимо подключить заголовочный файл «dsk5510_aic23.h». Но прежде чем начинать работу с кодеком нужно произвести инициализацию плата, для этого подключается заголовочный файл «dsk5510.h», в котором объявлена функция инициализации платы: «DSK5510_init()».

Листинг 3.1.

#include <math.h> #include "dsk5510.h" #include "dsk5510_aic23.h" #include "dsp_bioscfg.h" #define two_pi 6.28 /* Codec configuration settings */ DSK5510_AIC23_Config config = { 0x0017, // 0 DSK5510_AIC23_LEFTINVOL Left line input channel volume 0x0017, // 1 DSK5510_AIC23_RIGHTINVOL Right line input channel volume 0x00d8, // 2 DSK5510_AIC23_LEFTHPVOL Left channel headphone volume 0x00d8, // 3 DSK5510_AIC23_RIGHTHPVOL Right channel headphone volume 0x0011, // 4 DSK5510_AIC23_ANAPATH Analog audio path control 0x0000, // 5 DSK5510_AIC23_DIGPATH Digital audio path control 0x0000, // 6 DSK5510_AIC23_POWERDOWN Power down control 0x0043, // 7 DSK5510_AIC23_DIGIF Digital audio interface format 0x0081, // 8 DSK5510_AIC23_SAMPLERATE Sample rate control 0x0001 // 9 DSK5510_AIC23_DIGACT Digital interface activation }; /*a prototype of function is a generating sound*/ short sinewave(float n); void main() { DSK5510_AIC23_CodecHandle hCodec; short sec, msec, sample; float x; short frq=1; int gen_wav; /* Initialize the board support library, must be called first */ DSK5510_init(); /* Start the codec */ hCodec = DSK5510_AIC23_openCodec(0, &config); /* Generate sine wave for 5 seconds */ for (sec = 0; sec < 5; sec++) { x=0; for(msec = 0; msec < 1000; msec++) { for (sample = 0; sample < 48; sample++) { gen_wav=sinewave(frq*x); /* Send a sample to the left channel */ while (!DSK5510_AIC23_write16(hCodec, gen_wav)); /* Send a sample to the right channel */ while (!DSK5510_AIC23_write16(hCodec, gen_wav)); /* Step of function */ x+=two_pi/48; } } frq++; } /* Close the codec */ DSK5510_AIC23_closeCodec(hCodec); } short sinewave(float n) { return((short)(sin(n)*16484)); }

Теперь из папки «С:\CCStudio_v3.1\C5500\dsk5510\include\» в папку с проектом копируется «dsk5510_aic23.h» и «dsk5510.h».

Следующим шагом необходимо создать файл конфигурации DSP/BIOS, вследствие того, что объем настроек достаточно большой, а на данном этапе стоит задача ознакомления с основами работы DSP/BIOS, то основа конфигурации DSP/BIOS будет взята из готового конфигурационного файла примера, который поставляется с пакетом ИСР CCS. Итак, нужно из папки «С:\CCStudio_v3.1\examples\dsk5510\bsl\tone\» открыть файл конфигурации (File → Open…) «tone.cdb», после чего сохранить его в папке с проектом под именем «dsp_bios.cdb». После этого его нужно добавить его к проекту.

Последним шагом в формировании пакета программы станет подключение библиотеки «dsk5510bslx.lib», которая находится: «c:\CCStudio_v3.1\C5500\dsk5510\lib\». Данная библиотека работает с моделью памяти: «Large», поэтому необходимо настроить опции компиляции.

Для настройки опций компиляции проекта необходимо:

1) Выбрать раздел Project → Build Options… и на вкладке «Compiler» выбрать раздел «Advanced», далее необходимо установить модель памяти «Large», рисунок 3.3.

Рисунок 3.3 – Опции компиляции.

 

2) Указать компилятору тип ЦСП, для этого в разделе «Preprocessor» в поле «Pre-Define Symbol» указать «CHIP_5510PG2_2», рисунок 3.4.

Рисунок 3.4 – Опции компиляции для процессора.

По окончании всех действий проект можно запускать на компиляцию и сборку. Однако ИСР CCS выдаст ошибку при попытке загрузить выходной файл в симулятор, рисунок 3.5.

Рисунок 3.5 - Ошибка загрузки проекта в симулятор.

Дело в том, что симулятор не поддерживает тех библиотек, с которыми собран проект, поэтому необходимо выполнять тестирования данной программы на аппаратном уровне, т. е. непосредственно на плате DSK5510. Однако ИСР CCS не выявило ошибок, поэтому для аппаратной реализации достаточно перенастроить ИСР CCS, снова открыть проект и заново выполнить компиляцию.

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

Следует отметить, что звук, который воспроизводит DSK5510, не совпадает с теми частотами, которые задаются программно, также присутствует характерный шум. Это связано с тем, что время работы функции «sinewave()» превышает временной интервал между отсчетами на частоте дискретизации в 48 КГц (это частота задается по умолчанию). Поэтому функция «DSK5510_AIC23_write16» вынуждена ожидать, пока функция «sinewave()» рассчитает текущий отсчет. Именно это и вносит искажение в выходной сигнал. Однако, этот момент не принципиален, т. к. предложенный генератор звуковой частоты находит свое применение при тестировании цифровых фильтров.

 

Список функции кодека AIC23

1. DSK5510_AIC23_rset (DSK5510_AIC23_CodecHandle hCodec, Uint16 regnum, Uint16 regval) - процедура при помощи которой можно установить значение необходимого регистра, задав его название и значение целым шестнадцати битным числом;

2. Функция - Uint16 DSK5510_AIC23_rget (DSK5510_AIC23_CodecHandle hCodec, Uint16 regnum) возвращает значение регистра по его названию;

3. Функция - DSK5510_AIC23_openCodec ( int id, DSK5510_AIC23_Config *Config) типа DSK5510_AIC23_CodecHandle обозначает открытие кодека с номером и возвращает указатель открытия;

4. voidDSK5510_AIC23_closeCodec (DSK5510_AIC23_CodecHandle hCodec) - процедура закрытия кодека по указателю;

5. voidDSK5510_AIC23_config (DSK5510_AIC23_CodecHandle hCodec, DSK5510_AIC23_Config *Config) – процедура применения настроек регистров обязательных для корректной работы кодека;

6. CSLBool DSK5510_AIC23_write16 (DSK5510_AIC23_CodecHandle hCodec, Int16 val) – функция записи в регистр вывода шестнадцати битной величины, возвращает булевское значение (true - false);

7. CSLBool DSK5510_AIC23_write32 (DSK5510_AIC23_CodecHandle hCodec, Int32 val) - функция записи в регистр вывода тридцати двух битной величины, возвращает булевское значение (true - false);

8. CSLBool DSK5510_AIC23_read16 (DSK5510_AIC23_CodecHandle hCodec, Int16 *val) - читает из регистра ввода информацию в шестнадцати разрядную величину, возвращает булевское значение (true - false);

9. CSLBool DSK5510_AIC23_read32 (DSK5510_AIC23_CodecHandle hCodec, Int32 *val) - читает из регистра ввода информацию в тридцати двух разрядную величину, возвращает булевское значение (true - false);

10. voidDSK5510_AIC23_outGain (DSK5510_AIC23_CodecHandle hCodec, Uint16 outGain) – процедура устанавливающая увеличение значение выходных величин (усиление);

11. voidDSK5510_AIC23_loopback (DSK5510_AIC23_CodecHandle hCodec, CSLBool mode) – устанавливает состояние перемычки;

12. voidDSK5510_AIC23_mute (DSK5510_AIC23_CodecHandle hCodec, CSLBool mode) - отключает или включает звук;

13. voidDSK5510_AIC23_powerDown (DSK5510_AIC23_CodecHandle hCodec, Uint16 sect) – включает или отключает аттенюатор аналого-цифрового и цифро-аналогового преобразователя;

14. voidDSK5510_AIC23_setFreq (DSK5510_AIC23_CodecHandle hCodec, Uint32 freq) - устанавливает величину частоты дискретизации.

 

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


 

Лабораторная работа 3.

 

цифровая фильтрация. Реализация ФИЛЬТРа С

КОНЕЧНОЙ ИМПУЛЬСНОЙ ХАРАКТЕРИСТИКОЙ (КИХ)

Цифровая фильтрация

Цифровая фильтрация является одним из наиболее мощных инструментальных средств ЦОС. Кроме очевидных преимуществ устранения ошибок в фильтре, связанных с флуктуациями параметров пассивных компонентов во времени и по температуре, дрейфом ОУ (в активных фильтрах) и т.д., цифровые фильтры способны удовлетворять таким техническим требованиям по своим параметрам, которых, в лучшем случае, было бы чрезвычайно трудно или даже невозможно достичь в аналоговом исполнении. Кроме того, характеристики цифрового фильтра могут быть легко изменены программно. Поэтому они широко используются в телекоммуникациях, в приложениях адаптивной фильтрации, таких как подавление эха в модемах, подавление шума и распознавание речи.

Процесс проектирования цифровых фильтров состоит из тех же этапов, что и процесс проектирования аналоговых фильтров. Сначала формулируются требования к желаемым характеристикам фильтра, по которым затем рассчитываются параметры фильтра. Амплитудная и фазовая характеристики формируются аналогично аналоговым фильтрам. Ключевое различие между аналоговым и цифровым фильтрами заключается в том, что, вместо вычисления величин сопротивлений, емкостей и индуктивностей для аналогового фильтра, рассчитываются значения коэффициентов для цифрового фильтра. Иными словами, в цифровом фильтре числа заменяют физические сопротивления и емкости аналогового фильтра. Эти числа являются коэффициентами фильтра, они постоянно находятся в памяти и используются для обработки (фильтрации) дискретных данных, поступающих от АЦП.

Цифровой фильтр, работающий в реальном масштабе времени, оперирует с дискретными по времени данными в противоположность непрерывному сигналу, обрабатываемому аналоговым фильтром. При этом очередной отсчет, соответствующий отклику фильтра, формируется по окончании каждого периода дискретизации. Вследствие дискретной природы обрабатываемого сигнала, на отсчеты данных зачастую ссылаются по их номерам, например, отсчет 1, отсчет 2, отсчет 3 и т.д. На рисунке 1.1 представлен низкочастотный сигнал, содержащий высокочастотный шум, который должен быть отфильтрован. Вначале сигнал должен быть оцифрован с помощью АЦП для получения выборки x(n). Далее эта выборка поступает на цифровой фильтр, который в данном случае является НЧ фильтром. Отсчеты выходных данных y(n) используются для восстановления аналогового сигнала с использованием ЦАП с низким уровнем ложного сигнала.

Тем не менее, цифровые фильтры не могут являться решением всех возможных задач фильтрации, возникающих при обработке сигналов. Для работы в реальном масштабе времени, DSP-процессор должен быть рассчитан на выполнение всех шагов в программе фильтрации в пределах промежутка времени, соответствующего одному такту дискретизации, то есть 1/fs. Высоко производительный универсальный DSP процессор с фиксированной точкой типа ADSP-2189M, обладающий быстродействием 75MIPS, способен выполнить операцию умножения с накоплением при реализации одного каскада фильтра за 13,3 нс. DSP процессор ADSP-2189M затрачивает N+5 инструкций при реализации фильтра с количеством каскадов N. Для 100-каскадного фильтра полное время вычисления составляет приблизительно 1,4 мкс. Это соответствует максимально возможной частоте дискретизации 714 кГц, ограничивая, таким образом, ширину полосы частот обрабатываемого сигнала несколькими сотнями килогерц.

Рисунок 1.1 – Структура цифрового фильтра.

 

Можно заменить универсальный DSP процессор специализированным аппаратным цифровым фильтром, способным работать на частотах дискретизации, соответствующих видеосигналу. В других случаях ограничения по быстродействию могут быть преодолены сохранением выборки данных, поступающих с большой скоростью от АЦП, в буферной памяти. Затем буферная память читается со скоростью, совместимой с быстродействием цифрового фильтра, основанного на DSP. Используя данный метод, может осуществляться обработка сигнала в псевдореальном масштабе времени в таких системах как радар, где обычно обрабатываются пакеты данных, накапливаемые после каждого излучаемого импульса.

Другой подход заключается в использовании специализированных микросхем цифровых фильтров, подобных фильтрам PulseDSP ™ компании Systolix. 16 разрядный сигма-дельта-АЦП AD7725 имеет на своем кристалле фильтр PulseDSP, который может выполнять за секунду 125 миллионов операций умножения с накоплением.

В дискретных системах, даже с высокой степенью избыточной дискретизации, требуется наличие аналоговых ФНЧ перед АЦП и после ЦАП для устранения эффекта наложения спектра. Более того, с ростом частоты, сигналы выходят за рамки возможностей доступных АЦП, и цифровая фильтрация становится невозможной. Но на крайне высоких частотах и активная аналоговая фильтрация тоже невозможна из-за ограничений, связанных с полосой пропускания и искажениями ОУ, и в этих случаях требования фильтрации удовлетворяются пассивными элементами. Дальнейшее обсуждение будет сфокусировано, в первую очередь, на фильтрах, которые могут работать в реальном масштабе времени и могут быть программно реализованы с использованием DSP.

В качестве примера сравним аналоговый и цифровой фильтры, показанные на рисунке 1.2. Частота среза обоих фильтров равна 1 кГц. Аналоговый фильтр реализован в виде фильтра Чебышева первого рода 6 порядка (характеризуется неравномерностью коэффициента передачи в полосе пропускания и равномерностью коэффициента передачи вне полосы пропускания). На практике этот фильтр может быть собран на трех фильтрах второго порядка, каждый из которых состоит из операционного усилителя и нескольких резисторов и конденсаторов. Проектирование фильтра 6 порядка является непростой задачей, а удовлетворение техническим требованиям по неравномерности характеристики в 0,5 дБ требует точного подбора компонентов.

С другой стороны, представленный цифровой фильтр с конечной импульсной характеристикой (КИХ) имеет неравномерность характеристики всего 0,002 дБ в полосе пропускания, линейную фазовую характеристику и значительно более крутой спад частотной характеристики. Таких показателей невозможно достичь аналоговыми методами. На практике существует много других факторов, учитываемых при сравнительной оценке аналоговых и цифровых фильтров. В большинстве современных систем обработки сигналов используются комбинации аналоговых и цифровых методов для реализации желаемых функций и используются преимущества всех методов, как аналоговых, так и цифровых.

Рисунок 1.2 – Сравнение АЧХ цифрового и аналогового фильтров.

 

 

Таблица 1.1 – Сравнение характеристик цифровых и аналоговых фильтров.

Существует много приложений, в которых цифровые фильтры должны работать в реальном масштабе времени. В них накладываются определенные требования на процессор DSP в зависимости от частоты дискретизации и сложности фильтра. Ключевым моментом является то, что процессор DSP должен проводить все вычисления в течение интервала дискретизации, чтобы быть готовым к обработке следующего отсчета данных. Пусть ширина полосы частот обрабатываемого сигнала равна fa. Тогда частота дискретизации АЦП fs должна быть, по крайней мере, в два раза больше, то есть 2fa. Интервал дискретизации равен 1/fs. Все вычисления, связанные с реализацией фильтра (включая все дополнительные операции), должны быть закончены в течение этого интервала. Время вычислений зависит от числа звеньев фильтра и быстродействия и эффективности процессора DSP. Каждое звено при реализации фильтра требует одной операции умножения и одной операции сложения (умножения с накоплением). Процессор DSP оптимизируется для быстрого выполнения операций умножения с накоплением. Кроме того, многие процессоры DSP имеют дополнительные особенности, такие как реализация циклической адресации и организация программных циклов с автоматической проверкой условия продолжения цикла, минимизирующие количество дополнительных инструкций, которые в противном случае были бы необходимы.

Требования к цифровой фильтрации для работы в реальном масштабе времени:

1) Полоса сигнала = fa

2) Частота дискретизации fs > 2fa

3) Период дискретизации =1/fs

4) Время вычисления фильтра + доп. операции < период дискр.

5) Зависит от числа коэффициентов фильтра

6) Скорости операций умножения с накоплением (MAC)

7) Эффективности ЦОС

8) Поддержка циклических буферов

9) Отсутствие дополнительных операций



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 229; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.175.182 (0.036 с.)