Автор работы: Пользователь скрыл имя, 05 Декабря 2012 в 16:26, курсовая работа
Данный курсовой проект выполняется с целью закрепления знаний, полученных при изучении курса «Процессоры для цифровой обработки сигналов», и развития навыков самостоятельного проектирования цифровых устройств фильтрации с использованием современной элементной базы.
Цифровая фильтрация является одним из основных направлений цифровой обработки сигналов (далее ЦОС). В настоящее время она имеет широкое применение. Поэтому тема данного проекта особо актуальна, учитывая и то, что для разработки используется современная элементная база зарубежных фирм-производителей, лидеров мирового рынка устройств для цифровой и аналоговой обработки сигналов.
Введение 3
1. Постановка задачи проектирования 4
2. Анализ задачи и выбор рационального способа решения 5
3. Разработка алгоритмов фильтрации 7
3.1. Синтез ядра фильтра 7
3.2. Свертка с использованием БПФ 12
3.3. Алгоритм БПФ 15
3.4. Моделирование алгоритмов и проверка работоспособности 18
4. Разработка принципиальной схемы 21
4.1. Выбор элементной базы 21
4.2. Построение схемы 24
5. Разработка программного обеспечения 28
6. Оценка временных параметров 34
Заключение 38
Список использованной литературы 39
ПРИЛОЖЕНИЕ 40
Чаще всего сверткой пользуются для импульсного разложения сигналов, то есть рассматривают отдельные точки сигналов как импульсы. В этом случае длина выходного сигнала будет определяться как сумма длины входного сигнала и длины импульсной характеристики фильтра минус один отсчет. Формула для вычисления свертки таким способом следующая:
(5)
где x – входной сигнал из N отсчетов, h – импульсная характеристика линейной системы (в данном случае фильтра) длиной M точек, индекс i задается в интервале [0; N+M-1].
Несмотря на простоту программной реализации такого вычисления свертки, время расчета для достаточно больших выборок сигнала и ядра фильтра (как уже было сказано ранее, при свертке сигналов длительностью более 64-х точек) будет существенным, что немало важно для цифрового фильтра, работающего в режиме реального времени. Как было принято ранее, ядро разрабатываемого фильтра состоит из 511 точек. Поэтому эффективнее будет использовать другой метод вычисления свертки сигналов – с использованием быстрого преобразования Фурье [1].
Свертка с применением БПФ дает тот же результат, что и другие алгоритмы расчета свертки, но время выполнения вычислений значительно сокращается для больших выборок сигналов. Алгоритм БПФ-свертки значительно сложнее из-за необходимости программной реализации БПФ.
Свертка с использованием БПФ обрабатывает сигналы не во временной области, а в частотной. В этом случае используется такое свойство свертки, что перемножение частотных спектров сигналов по точкам дает в результате спектр сигнала, являющегося результатом свертки. Таким образом, если найти обратное преобразование Фурье от полученного спектра, то получится результирующий отфильтрованный сигнал во временной области.
Алгоритм свертки с использованием БПФ можно описать следующим образом. Исходный сигнал разбивается на сегменты длительностью, равной длине ядра фильтра M. Каждый такой временной отрезок увеличивается вдвое, и вторая половина заполняется нулями. То же самое применяется и к импульсной характеристике фильтра. За тем с помощью преобразования Фурье вычисляются спектры сегмента исходного сигнала и ядра фильтра, после чего полученные массивы перемножаются. Применение обратного преобразования Фурье к полученному массиву даст результат свертки сигналов. Но так как полученный результат вдвое больше исходного сегмента сигнала, то на выход фильтра подается только первая его половина, а вторую в дальнейшем необходимо суммировать с первой половиной результата свертки для следующего сегмента. Это так называемая свертка-БПФ с перекрытием. Описание быстрого преобразования Фурье дано в следующем разделе.
Из сравнения свертки сигналов во временной области и свертки с применением БПФ предпочтение для разработки данного проекта отдано второму способу. Это позволит использовать высокое быстродействие при фильтрации сигналов, предоставляемое алгоритмом БПФ.
В упрощенном виде схема алгоритма свертки сигналов с применением БПФ приведена на рис.5.
Рис. 4. Схема алгоритма БПФ-свертки сигналов
Дискретное преобразование Фурье (далее ДПФ) заключается в определении по последовательности из N временных отсчетов сигнала {x0,x1,…,xN-1} (в общем случае комплексных) соответствующего частотного спектра {X0,X1,…,XN-1} – набора комплексных чисел, характеризующих сигнал в частотной области. Общая формула для вычисления ДПФ выглядит следующим образом:
(6)
Обратное ДПФ преобразует сигнал из частотной области во временную, то есть восстанавливает по спектру исходную последовательность дискретных отсчетов. Формула (7) задает общий вид обратного ДПФ:
(7)
Алгоритм БПФ – это оптимизированный по скорости способ вычисления ДПФ. Существуют различные варианты такого алгоритма. Но наибольшее распространение получил алгоритм БПФ для последовательности из N отсчетов, где N является степенью двойки. Его особенность заключается в том, что исходная последовательность разбивается определенным образом на два равных сегмента. Каждый полученный сегмент также делится пополам, и так до тех пор, пока не будут получены сегменты, состоящие из двух точек. ДПФ вычисляется последовательно для каждого отдельного сегмента по две точки, и результаты используются для подсчета ДПФ сегментов более высокого уровня, то есть тех, которые использовались до разбиения. Так, последовательно вычисляя ДПФ для меньших по размеру сегментов, получается преобразование для исходного сигнала. Высокая скорость алгоритма БПФ достигается за счет того, что вычисляется преобразование меньших по сравнению с исходной последовательностью сегментов. Доказано, что число комплексных умножений для применения такого алгоритма к последовательности из N отсчетов составит всего:
(8)
в то время как вычисление обычного ДПФ для той же последовательности потребовало количество умножений, равное
(9)
Видно, что для больших выборок (порядка тысячи точек и выше) преимущество в быстроте вычисления у алгоритма БПФ существенное.
Для разбиения исходной последовательности отсчетов на равные подмножества применяют два равноценных метода: прореживание по времени и прореживание по частоте [4]. Первый метод предполагает разбиение исходного множества в соответствии с номерами выборок (четные и нечетные). Второй метод использует разбиение сигнала на два равных подмножества строго по середине. Но в этом случае после проведенных вычислений возникает необходимость в правильной перестановке элементов полученного массива. Такая перестановка получила название двоичного реверсирования, так как чтобы определить правильный порядковый номер элемента в полученной последовательности, достаточно представить его индекс в двоичной форме и поменять местами биты в номере симметрично центра. Например, для 8-ми точек такая двоичная перестановка бит выглядит следующим образом:
000 001 010 011 100 101 110
000 100 010 110 001 101 011
В данном проекте принято решение о применении БПФ с прореживанием по частоте, то есть второй способ.
Базовой операцией при вычислении БПФ для двух точек А и В (в общем случае комплексных) является так называемая «бабочка». Схема вычисления такой операции в случае прореживания по частоте показана на рис.6.
Рис. 5. Операция "бабочка"
На рис.6 коэффициент определяется по формуле (10), где N – размер исходной выборки, k – номер по порядку операции «бабочка», применяемой последовательно к множеству отсчетов, начиная с 0:
(10)
Алгоритм БПФ с прореживанием по частоте можно описать следующим образом.
На рис.7 приведен пример БПФ с прореживанием по частоте для 8-точечного сигнала. Этот пример наглядно поясняет используемый алгоритм.
Рис. 6. Пример БПФ с прореживанием по частоте
Алгоритм обратного ПБФ аналогичен прямому и может быть реализован той же процедурой. Разница заключается только в том, что перед преобразованием необходимо в мнимой части каждого отсчета поменять знак на противоположный, а после преобразования разделить каждый элемент на количество отсчетов N (см. формулу 7).
Для проверки используемых алгоритмов
было создано программное
Тестирование алгоритмов проводилось на сгенерированной выборке сигнала, состоящего из двух синусоид с частотами 400 Гц и 32 Гц и амплитудами 0.5 и 1 соответственно. Выборка составляла 2048 отсчетов. График данного сигнала для интервала выборок с номерами 0-512 приведен на рис.8. Частота дискретизации fd при построении фильтра принималась равной 8000 Гц. Спектр этого сигнала приведен на рис.9. На этом графике хорошо видны две частоты, которые составляют сигнал.
X[i]=sin(i*M_PI*0.1)+0.5*sin(
Рис. 7. Исходный сигнал до фильтрации
Ядро полосового фильтра синтезировалось для диапазона частот среза fcl=300 Гц среза fc=2000 Гц, размерность его была принята 512 точек. График импульсной характеристики ядра показан на рис.10. После свертки с применением БПФ и наложением в отфильтрованном сигнале осталась только одна гармоническая составляющая с частотой 400 Гц (выше частоты среза fcl), а составляющая с частотой 32 Гц исчезла. Это хорошо видно из графиков на рис.11 и рис.12, которые отображают отфильтрованный сигнал во временной области и частотной соответственно.
Рис. 8. Спектр исходного моделируемого сигнала
Рис. 9. Импульсная характеристика высокочастотного фильтра
Рис. 100. Отфильтрованный сигнал
Рис. 111. Спектр отфильтрованного сигнала
Для тестирования фильтра так же был построен его спектр. Частотная характеристика полосового фильтра приведена на рис.13.
Рис. 12. Спектр ядра фильтра
В соответствии с заданием для реализации цифрового фильтра необходимо использовать сигнальный процессор dsPic33F фирмы Microchip. Как уже было определено ранее при анализе задания, процессор должен быть 16-разрядным, иметь последовательные порты и один параллельный, работать на высокой тактовой частоте и иметь встроенный таймер, а также достаточный объем внутренней памяти данных и программ.
Ядро dsPic33F построено по модифицируемой гарвардской архитектуре с расширенной системой команд. Микроконтроллер поддерживает выполнение специфических для алгоритмов цифровой обработке сигналов инструкций (умножение с накоплением), специальные методы адресации (модульная, бит-реверсивная). Он имеет векторную приоритетную систему прерываний, возможность отображения части программной памяти в нереализованную на кристалле область ОЗУ, знаковые вычисления с целыми числами и числами с фиксированной точкой. Карта памяти программы линейная и несегментированная. Все инструкции имеют фиксированную длину 24 бита; счётчик инструкций 23-ёх битный, младший бит всегда равен 0 для обеспечения выравнивания данных при выборке инструкций.
Ядро цифровой обработке сигналов является независимым от CPU-ядра вычислительным модулем. Умножитель позволяет выполнять знаковые и беззнаковые операции с данными форма фиксированная точка. Результат инструкций DSP-ядра всегда сохраняется в один из 40-битных аккумуляторов: ACCA или ACCB. Аккумуляторы отображены в ОЗУ и могут быть доступны для любых инструкций.
Контроллер DMA выполняет аппаратную поддержку обмена данными между периферией и областью ОЗУ общего назначения. Имеет восемь однонаправленных каналов для таймеров, АЦП, ЦАП и др.
Микроконтроллер обладает векторной приоритетной системой прерываний. Каждый источник имеет собственный вектор в таблице, расположенной в программной памяти. Внутри таблицы прерывания имеют естественный приоритет: при одновременном возникновении двух прерываний приоритет имеет то, чей вектор имеет меньший адрес. Вектор представляет собой 24-битное слово программы, в котором должна быть расположена команда перехода на сервис обработчика прерываний.
В качестве преобразователя входного сигнала в цифровую форму выбран АЦП модели TC3400 той же фирмы Microchip. Это 16-разрядный последовательный АЦП с поддержкой синхронного интерфейса SPI. Максимальная частота выборки данных составляет 100 КГц, то есть позволяет получать данные с частотой 48 КГц, заданной в исходных данных к курсовому проекту. Данный АЦП имеет низкое напряжение питания и малую потребляемую мощность (максимум 1.8 мВт на полной частоте в 100 КГц). Преобразователь имеет дифференцирующий вход для обрабатываемого сигнала, что позволяет измерять разность двух потенциалов. Напряжения питания микросхемы Vcc=2,5 – 3,5В . Микросхема выполнена в корпусе типа 8 Pin SOIC с восемью выводами. Условное графическое изображение АЦП TC3400 приведено на рис.14.
Рис. 13. Условное графическое обозначение dsPic33F
Рис. 14. Условное графическое обозначение TC3400
В качестве ЦАП, преобразующего результаты цифровой обработки сигнала процессором в аналоговый выход, выбрана модель MCP4901 той же фирмы Microchip. Это 16-разрядный последовательный синхронный ЦАП с поддержкой интерфейса SPI, для обеспечения нормальной работы устройства необходимы две микросхемы. Потребляемая мощность микросхемы мала и составляет от 2 мВт при напряжении питания 5 В до 1мкВт в режиме пониженного энергопотребления (во время ожидания данных). Напряжение питания составляет от 2.7 В до 5.5 В. Время установки выходного значения составляет порядка 10 мкс. Выходной уровень определяется опорным напряжением и колеблется в диапазоне от 0 до 5 В. Микросхема MCP4901 выполняется в корпусе типа MSOP-8 и имеет 8 выводов. Условное графическое изображение MCP4901 приведено на рис.15.
Рис. 15. Условное графическое обозначение MCP4901
Как уже было сказано ранее, связь АЦП и ЦАП с процессором осуществляется через последовательные порты по интерфейсу SPI. Для приема данных с АЦП выбран порт SPI1 процессора, а для передачи результат на ЦАП – порт SPI2. Интерфейс SPI предполагает трехпроводную связь: по одной линии передаются побитно данные, на вторую выдается сигнал синхронизации начала приема/передачи данных, а по третьей передаются синхроимпульсы с заданной тактовой частотой. Функциональная схема порта SPI изображена на рисунке 16.