Новости

Разработка программы цифрового фильтра сигналов для процессора 1892ВМ2Я

Работа добавлена:






Разработка программы цифрового фильтра сигналов для процессора 1892ВМ2Я на http://mirrorref.ru

Министерство образования и науки Российской Федерации

Муромский институт (филиал)

федерального государственного бюджетного образовательного учреждения

высшего образования

«Владимирский государственный университет

имени Александра Григорьевича и Николая Григорьевича Столетовых»

(МИ ВлГУ)

          Факультет: РЭКС

          Кафедра:    радиотехники

КУРСОВАЯ

РАБОТА

            По дисциплине:Процессорная обработка сигналов

Тема:Разработка программы цифрового фильтра

сигналов для процессора 1892ВМ2Я

Руководитель

  Ракитин А.В.

(фамилия, инициалы)

___________________

(подпись) (дата)

Студент      РТз-114

  (группа)

    Царьков П.Н.

       (фамилия, инициалы)

___________________

(подпись)    (дата)

Муром 2017 год

В данной курсовой работе разрабатывается программа фильтра низких частотс конечной импульсной характеристикой (КИХ) на базе сигнального

микропроцессора 1892ВМ2Я (МС-24).

Содержание

    Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1. Анализ технического задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2. Выбор, обоснование и расчёт схемы электрической структурной. . . . . . . . . . . .9

3. Выбор, обоснование и расчёт схемы электрической принципиальной. . . . . . .  14

4. Заключение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5. Список используемых источников. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

   Приложение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . .. . . . . . . . . . . . . .32

Введение

Быстрое развитие вычислительных систем и переход на цифровые стандарты      привело к необходимости обрабатывать большие объёмы информации с высокой скоростью, реагировать на поступающие сигналы в реальном времени, измерять и преобразовывать сигналы. Обработка и фильтрация сигналов требует применения высокопроизводительных систем. Такие системы реализованы на устройствах с применением цифровых процессоров. Одной из основных функций данных микропроцессоров является цифровая обработка сигналов (ЦОС) в реальном масштабе времени. Часто такие микропроцессоры называются сигнальными микропроцессорами (СМП) или цифровыми процессорами обработки сигналов (ЦПОС).

Микросхемы сигнальных процессоров серии "Мультикор" - это однокристальные программируемые многопроцессорные "системы на кристалле" на базе IP-ядерной (IP-intellectual property)платформы "МУЛЬТИКОР", разработанной в ГУП НПЦ "ЭЛВИС".

Процессоры серии "Мультикор" сочетают в себе лучшие качества двух классов приборов: микроконтроллеров и цифровых процессоров обработки сигналов (DSP), что позволяет решать в рамках ограниченных габаритов одновременно обе задачи: управления и высокоточной обработки информации, включая сигналы и изображения.

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

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

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

Тем не менее, цифровые фильтры не могут являться решением всех возможных задач фильтрации, возникающих при обработке сигналов. Для работы в реальном масштабе времени, DSP-процессор должен быть рассчитан на выполнение всех шагов в программе фильтрации в пределах промежутка времени, соответствующего одному такту дискретизации, то есть 1/fs.

1. Анализ технического задания.

В данной курсовой работе необходимо разработать программу фильтра низких частотс конечной импульсной характеристикой (КИХ) на базе сигнального микропроцессора 1892ВМ2Я (МС-24). Алгоритм функционирования ФНЧ фильтра поясняется структурной схемой, приведенной на рисунке 1.

Рисунок 1. Фильтр с конечной импульсной характеристикой порядкаN.

КИХ-фильтр должен работать в соответствии с уравнением, задающим свертку:

                                                (1)

где h(k) – массив коэффициентов фильтра и x(n-k) – входной массив данных фильтра. Число N в уравнении представляет собой число звеньев и определяет эффективность фильтра, как было сказано выше. КИХ-фильтр с числом звеньев N требует N циклов (операций) умножения с накоплением.

Для проектирование КИХ-фильтра низких частот будем  использовать программу Паркса-Макклиллана (Parks-McClellan)

Метод проектирования, основанный на использовании окон для усечения импульсной характеристики и получения желаемой частотной характеристики, исторически был первым методом проектирования КИХ- фильтров. Метод частотной дискретизации был разработан в 70-ых годах и до сих пор популярен в тех случаях, где частотная характеристика является произвольной функцией.

Сегодня доступны современные программы САПР, которые существенно упрощают проектирование НЧ, ВЧ, полосовых и режекторных КИХ- фильтров. Популярная программа была разработана Парксом (Parks) и Макклилланом (McClellan) и использует алгоритм обмена Ремеза (Remez). Проектирование фильтра начинается с определения параметров, представленных на рисунке 2. неравномерности полосы пропускания, неравномерности полосы задержки (то же, что ослабление) и области перехода.

Рисунок 2.

Согласно техническому заданию мы будем проектировать звуковой НЧ фильтр, который работает при частоте дискретизации 44 кГц. Граничная частота полосы пропускания составляет 1 кГц. Полоса задержки начинается при 3 кГц, неравномерность полосы пропускания равна 0,01 дБ, неравномерность в полосе заграждения (ослабление) - 60 дБ.

2. Разработка алгоритма

Согласно рисунку 3, диаграммы КИХ-фильтров часто изображаются в упрощенном виде. Операции суммирования представляются стрелками, указывающими в точки, а операции умножения обозначают, помещая коэффициенты h(k) рядом со стрелками на линиях. Элемент задержки z-1 показывают, помещая его обозначение выше или рядом с соответствующей линией.

Рисунок 3.Упрощенная схема фильтра

В рядах, задаваемых уравнениями КИХ-фильтров, предполагается последовательное обращение к N коэффициентам от h(0) до h(N-1). Соответствующие точки данных циркулируют в памяти. При этом добавляются новые отсчеты данных, заменяя самые старые, и каждый раз производится вычисление выходного значения фильтра.

Выходной сигнал Y(n) должен быть вычислен до поступления следующего входного сигнала , т.е. за интервал T. В этом заключается суть работы устройства в реальном масштабе времени. Интервал времени T задается частотой дискретизации Fg (T=1/Fg).

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

Т. к. по ТЗ требуется разработать ФНЧ фильтр, то рассчитаем коэффициенты, которые позволяя нам использовать КИХ фильтр, показанный на рисунке 1, использовать как ФНЧ фильтр. Выходной сигнал в момент времениt =nTзависит от входного сигнала в данный момент времени и предшествующих значений входного сигнала:

;    (2)

гдеai. – коэффициенты фильтра.

Если на вход фильтра подать единичный импульсS(0) = 1, то на выходе сумматора возникает последовательность чисел имеющая смысл импульсной характеристики. Для данного фильтра числа совпадают с весовыми коэффициентами.

Расчет коэффициентов КИХ фильтра по заданной спецификации с использованием алгоритмаPARKS-McCLELAN выполним в программеPMFIR.EXE. Она так же позволяет просмотреть амплитудно-частотную и импульсную характеристику полученного фильтра с учетом квантизации коэффициентов фильтра.

Произведем расчет фильтра низких частот согласно полученного ТЗ:

- значение частоты дискретизации 44 КГц;

- значение граничной частоты полосы пропускания 1 кГц;

- значение граничной частоты полосы подавления 3 КГц;

- минимальное затухание в полосе подавления 60 дБ;

- максимальная неравномерность в полосе пропускания 0,01 дБ;

- линейная фазовая характеристика.

Для расчета коэффициентов КИХ фильтра с использованием программы PMFIR.EXE по заданной спецификации сначала необходимо выбрать тип фильтра нажатием соответствующей кнопки клавиатуры:

1 –LOWPASS (фильтр низких частот)

2 –HIGHPASS(фильтр высоких частот)

3 –BANDPASS(фильтр полосовой пропускающий)

4 –BANDSTOP(фильтр полосовой задерживающий)

5 –MULTIBAND

6 –DIFFERENTIATOR (дифференциатор)

7 –HILBERTTRANSFORMER (преобразователь Гильберта)

Нажатием кн.«1» выбираем фильтр низких частот. Вводим значение частоты дискретизации 44,1 кГц, значение граничной частоты полосы пропускания 1 КГц, значение граничной частоты полосы подавления 3 КГц. Далее, программа требует ввода значения максимальной неравномерности в полосе пропускания Ap и минимального затухания в полосе подавления As выраженного в пределах допусков отклонения  и  соответственно. Выразим их из формул:

                            (3)

(4)

Вычисляем значения допусков, подставив дБ и  дБ и получаем , .

Вводим максимальное значение неравномерности в полосе пропускания 0,00115 и минимальное затухание в полосе подавления 0,001.

Программа производит оценку минимального количества коэффициентов фильтра необходимого для достижения заданных характеристик фильтра и запрашивает уточненного количества коэффициентов фильтра. Вводим значение 22.

На экране отображаются характеристики разработанного фильтра, и предлагается изменить спецификацию фильтра. Отказавшись от изменения спецификации фильтра кн.«N» указываем необходимость квантизации коэффициентов фильтра кн. «Y» и вводим количество разрядов для хранения коэффициентов 16. На экране повторно отображаются характеристики разработанного фильтра с учетом квантизации и предлагается вывести результаты на печать. Отказавшись от печати кн. «N» выбираем запись рассчитанных коэффициентов в файл нажатием кн.«4» и указываем имя файла коэффициентов «PMFIR.FLT». Осуществляем выход из программы нажатием кн. «8».

В сформированном файле, начиная с третьей строки, записаны коэффициенты рассчитанного фильтра в количестве определяемом строкой 2 этого файла. Полученные коэффициенты приведены в таблице 1.

Таблица 1. Коэффициенты рассчитанного фильтра

h(0)

-7082

h(1)

6059

h(2)

6768

h(3)

8624

h(4)

11101

h(5)

13866

h(6)

16629

h(7)

19158

h(8)

21253

h(9)

22752

h(10)

23533

h(11)

23533

h(12)

22752

h(13)

21253

h(14)

19158

h(15)

16629

h(16)

13866

h(17)

11101

h(18)

8624

h(19)

6768

h(20)

6059

h(21)

-7082

3. Разработка программы

Используя разработанную блок-схему и систему команд дляRISC ядра иDSP ядра разработаем программу фильтра низких частотс конечной импульсной характеристикой (КИХ). Текст программы можно написать в любом текстовом редакторе.

Текст программыRISC ядра:

#include "memory_24.h"

extern int Start_DSP;

extern int in_mas;

extern int out_mas;

void exit();

//int InputArray[256];

//int OutputArray[256];

main()

{

   inti;

   int j;

   int coeff_mas[22]={-7082, 6059, 6768, 8624, 11101, 13866, 16629, 19158, 21253, 22752, 23533, 23533, 22752, 21253, 19158, 16629, 13866, 11101, 8624, 6768, 6059,   -7082};

   int output_signal[1764000];

   int input_signal[1764000];

   int order;

   int *ptr_in;

   int *ptr_out;

   int *ptr_coeff;

   int *ptr_YRAM;

  DCSR   = 0;

  SR     = 0;

   SAR    = 0xFFFF;

   PC=((unsigned int)&Start_DSP - (unsigned int)&PRAM)>>2;

   A0=((unsigned int)&in_mas- (unsigned int)&XRAM)>>2;

   A1=((unsigned int)&out_mas- (unsigned int)&XRAM)>>2;

ptr_YRAM=&YRAM;

   ptr_coeff=ptr_YRAM;

   ptr_in=&in_mas;

   ptr_out=&out_mas;

   order=22;

   AT_0=(unsigned int)ptr_coeff>>2;

   IT_0=1;

   M0=order-1;

   MT_0=order-1;

   R10_0=order;

   //for (i=0; i<order; i++)

   //     coeff_mas[i]=1;

   for (i=0; i<order; i++)

        *(ptr_coeff+i)=coeff_mas[i];

   for (j=0; j<order; j++)

        *(ptr_in+j)=input_signal[j];

       DCSR = 0x4000;

       while((~(QSTR))&(1<<31));

   i=0;

   for (; j<441000; j++)

   {

       output_signal[j-order]=*(ptr_out);

       if (i==order) i=0;

       *(ptr_in+i)=input_signal[j];

       i++;

       DCSR = 0x4000;

       while((~(QSTR))&(1<<31));

   }

//TDIV0=0x1f0001;

//RDIV0=0x1f0001;

//SRCTL0=0x21f1;