Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Реализация КИХ-фильтра на процессоре DSP с использованием циклических буферовСодержание книги
Поиск на нашем сайте
В рядах, задаваемых уравнениями КИХ фильтров, предполагается последовательное обращение к N коэффициентам от h(0) до h(N-1). Соответствующие точки данных циркулируют в памяти. При этом добавляются новые отсчеты данных, заменяя самые старые, и каждый раз производится вычисление выходного значения фильтра. Для реализации циклического буфера может использоваться фиксированный объем оперативной памяти, как показано на рисунке 1.9 для КИХ фильтра с 4 звеньями. Самый старый отсчет данных заменяется новым после каждой операции вычисления свертки. Выборка из четырех последних отсчетов данных всегда сохраняется в оперативной памяти. Чтобы упростить адресацию, чтение из памяти старых значений начинается с адреса, который следует непосредственно за адресом только что записанного нового элемента выборки. Например, если значение x(4) только что записано в ячейку памяти 0, то значения данных читаются из ячеек 1, 2, 3 и 0. Этот пример может быть расширен применительно к любому числу звеньев фильтра. Используя адресацию ячеек памяти таким способом, адресный генератор должен лишь вычислять последовательные адреса, независимо от того, является ли данная операция чтением памяти или записью. Такой буфер в памяти данных называется циклическим, потому что, когда достигается его последняя ячейка, указатель автоматически позиционируется на начало буфера.
Рисунок 1.9 – Вычисление выходного сигнала КИХ фильтра 4-ого порядка с использованием циклического буфера.
Выборка коэффициентов из памяти осуществляется одновременно с выборкой данных. В соответствии с описанной схемой адресации, самый старый отсчет данных выбирается первым. Поэтому сначала должна осуществляться выборка из памяти последнего коэффициента. При использовании адресного генератора, поддерживающего инкрементную адресацию, коэффициенты могут быть сохранены в памяти в обратном порядке: h(N-1) помещается в первую ячейку, а h(0) – в последнюю. И наоборот, коэффициенты могут быть сохранены в порядке возрастания их номеров, если использовать адресный генератор, поддерживающий декрементную адресацию. В примере, показанном на рисунке 1.9, коэффициенты сохранены в обратном порядке. Простая итоговая блок-схема для этих операций представлена на рисунке 1.10. Все операции, выполняемые за один цикл фильтра, производятся за один командный цикл процессора, благодаря чему существенно увеличивается эффективность вычислений. Данное преимущество известно как реализация циклов без дополнительных операций.
Ограничение на число звеньев фильтра, реализующего подпрограммы КИХ фильтрации в реальном масштабе времени, определяется, прежде всего, длительностью процессорного цикла, частотой дискретизации и требуемым объемом других вычислений.
Рисунок 1.10 – Псевдокод программы фильтра, использующей DSP процессор с циклической буферизацией.
Реализация КИХ фильтра на симуляторе DSK5510 Программная реализация 1) Создать проект под названием «exp_1», в предварительно созданной папке «laba_3». 2) Создать и добавить к проекту файл «filter.h», в соответствии с листингом 2.1. Исходный код разработан в соответствии, с алгоритмом рассмотренном в разделе 1 и снабжен построчным комментарием, поэтому рассмотрен не будет. Листинг 2.1 – Листинг файла «filter.h»
Коэффициента фильтра рассчитанные для нормированной частоты среза 0.0773:
Таблица 2.1 – Значение коэффициентов КИХ фильтра.
Умножение коэффициентов фильтра на число 512 и округление, вызвано тем, что операции с дробными числами (с плавающей точкой) производятся с очень большими затратами времени. Увеличение времени вычисления приводит к ухудшению качества отфильтрованного потока звука. Константа 512 выбрана вследствие того, что это число можно представить как 29, а это означает, что накопленный результат умножения с накоплением достаточно побитно сдвинуть вправо на 9 разрядов оператором «>>=», и это будет соответствовать делению суммы на константу 512. В файле «filter.h» реализованы следующие функции:
Таблица 2.2 – Функции реализованные в файле «filter.h»
3) Создать и добавить к проекту файл «main.c», в соответствии с листингом 2.2. Листинг 2.2 – Листинг файла «main.c»
Здесь, закомментирован цикл считывания данных из входного файла «coldplay_in.wav», для того, чтобы построить импульсную характеристику фильтра. Для построения импульсной характеристики, входной буфер сначала обнуляется в цикле, а затем первому отсчету (нулевому) присваивается значение 512, т. к. коэффициенты умножены на число 512. 4) Все остальные файлы проекта создаются по аналогии с предыдущими работами. В таблице 2.3, приведен список файлов проекта.
Таблица 2.3 – Файлы проекта.
5) Необходимо скомпилировать проект. Тестирование КИХ фильтра 1) Необходимо открыть окно визуализации данных для входного и выходного буфера, с настройками, которые показаны на рисунке 2.1, и минимизировать оба окна визуализации, сняв флажок с опции «Float In Main Window» в контекстном меню окна. Эти действия необходимы для построения графика входного сигнала (единичного импульса) и графика реакции КИХ фильтра на импульсное воздействие.
Рисунок 2.1 – Настройки окон визуализации.
2) Следующим шагом следует запустить проект на исполнение, после завершения работы программы вид ИСР CCS станет таким, как показано на рисунке 2.2. Рисунок 2.2 – Построение импульсной характеристики фильтра. Для просмотра содержимого памяти выделенной под выходной буфер, необходимо открыть окно просмотра содержимого памяти, и в настройках указать начальный адрес просмотра «out_buf», рисунок 2.3. Рисунок 2.3 – Настройка окна просмотра содержимого памяти.
Показателем корректной работы фильтра является то, что в выходном буфере содержаться коэффициенты фильтра. 3) Не закрывая окон визуализации необходимо закомментировать участок кода в файле «main.c», который отвечает за формирование единичного импульса, и раскомментировать цикл чтения данных из входного файла, фильтрацию и сохранение результата. 4) Установите точку прерывания в строке запуска функции фильтрации, файл «main.c». 5) Перекомпилируйте проект и запустите на выполнение, окно ИСР CCS примет вид как показано на рисунке 2.4. Рисунок 2.4 – Построение осциллограммы входного и выходного файла. Признаком успешной работы фильтра является более гладкая кривая на осциллограмме выходного сигнала, нежели входного сигнала, на рисунке 2.4 выходная осциллограмма располагается снизу. Т. к. частота дискретизации входного файла соответствует 8000 Гц, то частота среза фильтра будет рассчитываться следующим образом: 8000*0.0773≈618.2 Гц. 6) В процессе работы программы убрать точку прерывания и дать программе закончить вычисления, на это потребуется некоторое время. В процессе работы программы размер выходного файла будет постоянно увеличиваться, а по завершении станет равным размеру входного. 7) Запустить приложение «Общая громкость (Регулятор громкости)», которое располагается: «Пуск→Стандартные→Развлечения». Выбрать раздел «Параметры→Свойства», рисунок 2.5. Рисунок 2.5 – Регулятор громкости звука системы Windows.
8) В появившемся окне в разделе «Микшер», нужно выбрать устройство ввода звука, на рисунке 2.6 это устройство «Realtek HD Audio Input» и нажать кнопку «OK».
Рисунок 2.6 – Свойства регулятора громкости.
9) Окно регулятора громкости станет таким как показано на рисунке 2.7 Рисунок 2.7 – Регулятор громкости для входного звукового сигнала.
Теперь нужно выбрать «громкость линейного входа», установив галочку. После этого система Windows будет воспринимать входной звуковой сигнал с линейного входа звуковой карты. 10) В линейный вход звуковой карты вставить разветвитель, аналогичный тому, что показан на рисунке 2.8. Как правило, линейный вход на звуковой карте голубого цвета. Рисунок 2.8 – Звуковой разветвитель.
11) Звуковым кабелем «папа-папа» соединить одно гнездо разветвителя с линейным выходом, а в оставшееся свободное гнездо разветвителя вставить колонки (наушники). 12) Запустить программу «TES2.EXE», с помощью которой будет строиться спектрограмма, рисунок 2.9. Эта программа анализирует входной звуковой сигнал, в данном случае сигнал с линейного входа. Рисунок 2.9 – Внешний вид программы TES2. 13) Теперь нужно нажать кнопку и воспроизвести любым проигрывателем входной звуковой фай «coldplay_in.wav». Вид программы TES2 будет аналогичен тому, что показан на рисунке 2.10. Рисунок 2.10 – Спектр входного звукового файла.
14) Тем же проигрывателем воспроизвести выходной файл, рисунок 2.11 Рисунок 2.11 – Спектр выходного звукового файла.
Из рисунка отчетливо видна частота среза, которая соответствует заданным характеристикам КИХ фильтра.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 543; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.166.80 (0.011 с.) |