Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов»




Скачать 458.75 Kb.
Название Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов»
страница 6/9
Дата публикации 23.05.2014
Размер 458.75 Kb.
Тип Пояснительная записка
literature-edu.ru > Лекции > Пояснительная записка
1   2   3   4   5   6   7   8   9

Разработка программного обеспечения


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

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

Для настройки процессора TMS320VC5402 используются его различные регистры, причем все они отображаются на память, то есть доступ к ним программным путем осуществляется как к обычным ячейкам памяти, по адресам [5]. Перед настройкой таймера и портов, а также установкой векторов прерываний необходимо запретить все прерывания процессора (установить в 1 значение регистра INTM), а после выполнения необходимых действий вновь разрешить. Для установки маски разрешенных и запрещенных прерываний используется регистр IMR, каждый бит которого отвечает за отдельное прерывание (1 – разрешено, 0 – запрещено). В данном проекте необходимо использовать лишь два типа прерываний: от таймера – TINT0 (соответствует биту 3 в регистре IMR), и от приемника порта McBSP1 – BRINT1 (соответствует биту 10 IMR).

Таблица векторов прерываний представляет собой набор из 28-ми адресов процедур-обработчиков прерываний, под каждый из которых отводится по 4 слова. При написании собственных обработчиков прерываний необходимо сформировать новую таблицу векторов, записав адреса обработчиков в соответствующих позициях таблицы и установив должным образом адрес новой таблицы векторов.

Процесс настройки портов McBSP0 и McBSP1 практически одинаковый. Для этого используются регистры SPCR1, SPCR2, RCR1, RCR2, XCR1, XCR2, SRGR1, SRGR2, PCR, SPSA и SPSD каждого из портов [5-6]. Установкой соответствующих значений в эти регистры производится инициализация порта McBSPS1 для приема данных, а порта McBSP0 – для передачи данных (см. листинг программы в Приложении). Последовательность действий при настройке портов следующая:

  1. Осуществить сброс приемника (передатчика) соответствующего порта и генераторов синхроимпульсов с помощью регистров SPCRx.

  2. Установить разрядность блоков передаваемых данных в регистрах RCRx и XCRx (в данном случае это 16 бит).

  3. Установить значение делителя частоты в поле CLKDIV регистра SRGR1. Для обработки одного 16-битового блока выбранными моделями АЦП и ЦАП требуется 22 такта частоты CLKX, выдаваемой последовательным портом. Чтобы обработка данных осуществлялась быстрее частоты дискретизации (48000 Гц) и до получения/передачи следующего отсчета сигнала оставалось время на обработку, выбрано значение частоты синхронизации портов, равное 2 МГц, что допустимо для данных АЦП и ЦАП. Тактовая частота порта формируется делением основной частоты процессора. Поэтому необходимое значение делителя этой частоты рассчитывается по формуле (11):

(11)

  1. Настроить режим начала приема/передачи данных. В данном случае процесс приема и передачи будет осуществляться по переднему фронту синхроимпульсов CLKX портов при переходе сигналов линий FSXx в низкий уровень.

  2. Разрешить работу приемников и передатчиков портов установкой соответствующих битов в регистрах SPCR2x.

Для реализации приема и получения данных с заданной частотой дискретизации 48 КГц используется таймер и его обработчик прерывания. Прерывание таймера будет вызываться каждый раз, когда декрементирующий счетчик таймера будет достигать нулевого значения. Настройка таймера предполагает следующие действия:

  1. Остановить таймер установкой 1 в бит TSS регистра состояния TCR0 таймера.

  2. Записать значение определителя частоты в поле TDDR0 регистра TCR0. В данном случае это значение принято максимальным и равно 15.

  3. Записать значение делителя частоты процессора, определяющего период счетчика таймера, в регистр PRD0. Расчет периода счетчика таймера для реализации срабатывания прерывания с частотой 48 КГц осуществляется по формуле (12):



  1. Запустить таймер установкой 0 в бит TSS регистра состояния TCR0.

Настройка универсального порта ввода/вывода (GPIO) производится установкой всех бит регистра контроля GPIOCR в нулевое значение, что свидетельствует о том, что порт работает в режиме чтения данных с внешнего устройства.

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

Всю работу по получению исходных данных и передаче результатов в разработанной программе выполняют обработчики прерывания от таймера и порта McBSP1. Обработчик прерывания таймера 48000 раз в секунду, то есть с заданной частотой дискретизации, инициирует процесс передачи данных в выходной порт McBSP0 и далее на ЦАП, а также начало обработки данных в АЦП. После получения очередного отсчета с АЦП выполняется прерывание BRINT1 от приемника порта McBSP1. Его обработчик осуществляет запись полученного в порт значения в соответствующий массив для обработки данных в памяти процессора.

Вычисление БПФ и синтез ядра фильтра по принятым ранее алгоритмам (см. разделы 3.1 и 3.3 данного документа) осуществляют процедуры fft(const struct Complex* A, int n, struct Complex* B) и Generate_h_function() соответственно. Процедура fft принимает следующие аргументы: указатели на массив структуры с действительной и мнимой частью исходного сигнала и массив структуры для хранения полученной БПФ (в него записывается результат); количество точек для БПФ n. Подробно останавливаться на описании работы этих процедур не будем, так как они просто реализуют описанные ранее математические алгоритмы. Стоит только отметить, что для эффективного быстродействия алгоритмов расчет тригонометрических функций в них, который для сигнальных процессоров занимает значительный период времени, заменен на считывание соответствующего значения из предварительно рассчитанных и записанных в памяти массивов: массив B[] хранит значения оконной функции Блэкмана, а массив структуры w[] действительную и мнимую части коэффициентов W для БПФ.

Основной процесс фильтрации реализуется в программе в виде бесконечного цикла в основной функции. В этом цикле проверяется готовность одного из массивов исходных данных для обработки. Программа использует два буфера для входных данных (16-битовые значения) – массивы структур X[] и Xb[], каждый по 1024 элемента. В этих массивах хранятся действительные и мнимые значение отсчетов при расчетах спектра сигнала. Длина буферов выбрана равной 1024 с той целью, чтобы считав 512 входных значений, дополнить их нулями для алгоритма БПФ-свертки. Использование двух буферов для сигнала необходимо для того, чтобы обеспечить непрерывную запись и обработку сигнала: пока с помощью обработчиков прерываний осуществляется запись новых данных в один буфер, основная программа параллельно производит фильтрацию полученных на предыдущем этапе данных, хранящихся во втором буфере.

Готовность входных буферов X[].Re и Xb[] для обработки проверяется программой по искусственно созданному флагу fl_x, который принимает значение true («Истина») при заполнении буфера ровно 512-ю значения сигнала. В этом случае главная функция программы начинает обработку соответствующего буфера:

  1. Проверяется, было ли изменено значение частоты среза фильтра. Если да, то производится пересчет ядра фильтра вызовом процедуры HighPassFilter и вычисление его спектра с помощью BPF. Значения ядра фильтра хранятся в буферах kernel_re и kernel_im той же размерности в 1024 элементов каждый. Эти два буфера хранят результат 1024-точечного БПФ для ядра фильтра из 511 точек, дополненного 513-ю нулевыми значениями.

  2. Буфер frame1_re или frame2_re дополняется нулями, а frame1_im или frame2_im полностью заполняются нулевыми значениями.

  3. Вычисляется 1024-точечное БПФ для исходного сигнала.

  4. Комплексные значения спектров ядра фильтра (массивы kernel_re и kernel_im) и исходного сигнала (массивы frameX_re и frameX_im) попарно перемножаются и результаты заносятся в массивы frameX_re и frameX_im.

  5. Вычисляется обратное БПФ полученного массива, в результате чего в массиве frameX_re формируется действительная часть отфильтрованного сигнала, а мнимая часть нулевая.

  6. Первая половина соответствующего буфера складывается с сохраненной на предыдущей итерации фильтрации второй половиной, хранимой в массиве overlap (512 элементов). А вторая половина только что обработанного сигнала переписывается в буфер overlap.

  7. Первые 512 отфильтрованных отсчетов заносятся в один из выходных буферов filt_signal1 или filt_signal2, в зависимости от номера обрабатываемого буфера. Устанавливается истинным значение флага frame1out_fl или frame2out_fl, в зависимости от того, какой буфер был заполнен и готов для выдачи результатов. По этим флагам обработчик от таймера определяет, из какого буфера надо выдавать значения в выходной порт.

  8. После проведенных вычислений основной цикл программы ожидает готовности нового кадра из 512-ти значений входного сигнала для обработки, проверяя периодически состояние флагов frame1_fl и frame2_fl. При установке одного из этих флагов в истинное значение описанная операция фильтрации повторяется для новых данных.

Таким образом, можно оценить требования к оперативной памяти процессора для хранения буферов с данными:

  1. kernel_re – 1024 слов;

  2. kernel_im – 1024 слов;

  3. frame1_re – 1024 слов;

  4. frame1_im – 1024 слов;

  5. frame2_re – 1024 слов;

  6. frame2_im – 1024 слов;

  7. filt_signal1 – 512 слов;

  8. filt_signal2 – 512 слов;

  9. overlap – 512 слов;

  10. Wre – 512 слов;

  11. Wim – 512 слов;

  12. Blackman – 512 слов.

Итого, необходимо иметь минимум 9К 16 битовых слов внутренней памяти данных (не считая нескольких вспомогательных переменных). Выбранный процессор TMS320VC5402 содержит 16К16 бит внутренней памяти данных [5-6], что вполне достаточно для реализации разработанной программы.
1   2   3   4   5   6   7   8   9

Похожие:

Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов» icon Пояснительная записка к курсовому проекту на тему микропроцессорная...

Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов» icon Пояснительная записка к курсовому проекту по дисциплине «Схемотехника эвм»
Курсовой проект выполнен в целях закрепления теоретических знаний, полученных во время изучения курса «Схемотехника эвм», а также...
Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов» icon Пояснительная записка. К курсовому проекту
«Проектирование гравитационной подпорной стенки на естественном и искусственном основаниях и на сваях»
Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов» icon Пояснительная записка к курсовому проекту по дисциплине «Методы численного анализа»
Главный упор делается на использование ортогональных преобразований в задаче нахождения всех собственных числе (в том числе кратных...
Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов» icon Пояснительная записка к дипломному проекту включает в себя: страниц...
Тема дипломного проекта «Проект программно-методического комплекса автоматизации обработки данных и решения задач с использованием...
Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов» icon Пояснительная записка к дипломному проекту включает в себя: 104108...
Тема дипломного проекта «Проект программно-методического комплекса автоматизации обработки данных и решения задач с использованием...
Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов» icon Препроцессор пояснительная записка к курсовому проекту по курсу «Схемотехника эвм»
Графическая часть состоит из 4 документов: схема электрическая функциональная (Э2), схема электрическая принципиальная (Э3), диаграмма...
Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов» icon Препроцессор пояснительная записка к курсовому проекту по курсу «Схемотехника эвм»
Графическая часть работы состоит из 4 документов: схема электрическая функциональная (Э2), схема электрическая принципиальная (Э3),...
Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов» icon Препроцессор пояснительная записка к курсовому проекту по курсу «Схемотехника эвм»
Использовано 5 литературных источников. Графическая часть включает в себя 4 документа: схему электрическую функциональную (Э2), схему...
Пояснительная записка к курсовому проекту по дисциплине «Процессоры для цифровой обработки сигналов» icon Препроцессор пояснительная записка к курсовому проекту по курсу «Схемотехника эвм»
Использовано 5 литературных источников. Графическая часть включает в себя 4 документа: схему электрическую функциональную (Э2), схему...
Литература


При копировании материала укажите ссылку © 2015
контакты
literature-edu.ru
Поиск на сайте

Главная страница  Литература  Доклады  Рефераты  Курсовая работа  Лекции