Разработка устройства цифровой обработки сигналов
Содержание
Введение
Практическая
часть
Выводы
Список
литературы
Введение
В процессе разработки цифровой аппаратуры
передачи и обработки сигналов возникают задачи, для которых приходится
производить громоздкие расчеты и операции над очень малыми числами (10-7), и
поэтому используем ЭВМ. В данной работе используются программные пакеты MatLab
и Visual DSP++, которые упрощают вычисления, построения графиков и дают точные
результаты вычисления.
Практическая часть
Для нахождения коэффициентов фильтра открываем
программный пакет MatLab, и в командной строке прописываем:
>> fdatool
Появляется окно Filter Design & Analysis
Tool, которое выглядит так:
Рис.1. Окно
Filter Design & Analysis Tool.
В появившемся окне задаём параметры фильтра и
нажимаем Design Filter
Описание появившегося окна:type - тип
фильтра;Method - метод реализации фильтра и импульсная характеристика;order -
порядок фильтра;
(Fs) - задать частоту дискретизации; - задать
граничную частоту полосы пропускания ;- задать граничную частоту полосы
задержания;- гарантированное затухание в полосе задержания- неравномерность
рабочего затухания в полосе пропускания
с помощью кнопки Designe Filter под меню
запускаем программу
Выводим на экран АЧХ получившегося фильтра:
Рис.2. АЧХ полученного фильтра.
Выводим ФЧХ полученного фильтра:
Рис.3. ФЧХ полученного фильтра
Выводим ГВЗ полученного фильтра:
Рис.4. ГВЗ полученного фильтра
Нажатием на значок получаем коэффициенты нашего
фильтра :
.034368360279280495
.10310508083784148
.10310508083784148
.034368360279280495
:
.5430332949796606
.1342539034879857
.31627372627408118
Затем нажатием на ,
получаем структурную, прямую каноническую схему фильтра (показано на рис.5)
Рис.5. Структурная схема прямой канонической
формы фильтра.
Что бы найти передаточную функцию цифрового фильтра
H(z) воспользуемся программой Mathcad. В данной программе подставим в формулу
коэффициенты полученные с помощью программы MatLab. И в данной же программе
построим график АЧХ.
Рис.6.Ачх
Реализуем полученный фильтр в
программном пакете Visual DSP++ на сигнальном процессоре ADSP-2181.
Запускаем программный пакет visual
DSP++
Рис.7.
Главное окно visual DSP++
Будем реализовывать цифровой фильтр на
сигнальном процессоре серии 21хх. Для этого во вкладке Session выбираем Select
Session и из списка ADSP- 2181 Simulation.
Рис.8. Показана вкладка Session.
Для того чтобы реализовать фильтр создаем новый
проект во вкладке Project New, выбираем директорию для сохранения и название
проекта. В папке проекта находи файлы bix вводим туда свои коэффициенты.
В появившемся проекте добавляем в папку Source
Files файл “bix” и в Linker Files “ADSP-2181.ldf” Нажимаем Build project (F7)
ставим курсор на последнюю строку программы и нажимаем Run to Cursor.
Листинг программного пакета visual DSP++
************2181 Vector Add Example************/
#define n 10 /*Константа - определяет длину
фильтра*/
#define z_out 0x0500 /*Константа - определяет
длину реализации входного воздействия и отклика*/
section/data data1; /* В
сегменте
данных
data1*/ x_input[z_out+n] = "xin.dat"; /*Файл
данных
- входной
сигнал*/
VAR x_output[z_out+n]; /*Массив данных -
выходной сигнал*/
/pm pm_da; /*В сегменте памяти программы*/
y_input[2*n+1] = "bix.dat"; /*Файл данных - значения
импульсной
характеристики*/
section/pm interrupts; /*------Таблица
векторов прерываний------*/
_reset: JUMP start; nop; nop; nop; /*
0x0000: Reset vector*/; nop; nop; nop; /* 0x0004:
IRQ2*/; nop; nop; nop; /* 0x0008: IRQL1*/; nop; nop; nop; /*
0x000C: IRQL0*/; nop; nop; nop; /* 0x0010: SPORT0
transmit*/; nop; nop; nop; /* 0x0014: SPORT0
receive*/; nop; nop; nop; /* 0x0018: IRQE*/; nop; nop; nop; /*
0x001C: BDMA*/; nop; nop; nop; /* 0x0020: SPORT1
transmit*/; nop; nop; nop; /* 0x0024: SPORT1 receive*/; nop;
nop; nop; /* 0x0028: Timer*/; nop; nop; nop; /*
0x002C: Power down*/
/pm
program;
start: I1=x_input+n; /*В
регистр I1 записывается
адрес первой ячейки входных данных*/=x_output; /*В регистр I2 записывается
адрес первой ячейки выходных данных*/=y_input; /*В регистр I4
записывается адрес первой ячейки коэффициентов фильтра*/= 1; /*Значение, на
которое модифицируется регистр I0*/= -1; /*Значение, на которое модифицируется
регистр I1*/= 1; /*Значение, на которое модифицируется регистр I5*/= 0; /*Длина
регистра I0*/= 0; /*Длина регистра I1*/= 0; /*Длина регистра I2*/= 2*n+1;
/*Длина регистра I4*/= 4;= 0;= n; /*Указание значения счётчика*/ goclr UNTIL CE;
/*Выполнение цикла, пока не достигнет
конца
счётчик*/
goclr: DM(I2,M0)
= AX0;= z_out;
/*Указание значения счётчика*/go UNTIL CE; /*Выполнение цикла, пока не
достигнет конца счётчик*/=I1; /*В регистр I0 записывается значение регистра
I1*/= n; /*Указание значения счётчика*/
MR = 0, MX0 = DM (I0,M1), MY0 = PM(
I4 , M5 ); /*Загрузка
значениями регистров умножителя с накоплением*/
DO sop1 UNTIL CE;: MR=MR+MX0*MY0(SS),
MX0=DM(I0,M1), MY0=PM(I4,M5);
/*Вычисление значения выходного отсчёта*/ =MR+MX0*MY0(SS);/*Округление
значения выходного отсчёта*/=I2; /*В регистр I0 записывается значение регистра
I2*/= DM(I0,M1);= n-1; /*Указание значения счётчика*/
MX0 = DM(I0,M1), MY0 = PM( I4 , M5
);
sop2 : MR=MR+MX0*MY0(SS),
MX0=DM(I0,M1), MY0=PM(I4,M5);
/*Вычисление значения выходного
отсчёта*/=MR+MX0*MY0(SS);/*Округление значения выходного отсчёта*/MV SAT MR;
/*Если произошло переполнение, то производится насыщение регистра MR*/
SR = LSHIFT MR0(LO);= SR OR ASHIFT
MR1(HI);
DM(I2,M0)=SR1; /*В память данных записывается
вычисленное
значение*/
go: MODIFY(I1,M0); /*Изменение значения
регистра I1 на значение М0 без считывания данных*/; /*Переход в режим
пониженной мощности*/
Чтобы посмотреть входной и выходной сигнал нужно
открыть вкладку View, далее Debug, Windows, Plot, New. (показано на рис.9)
Рис.9. Окно Plot Configuration.
В поле Title указываем название графика
В поле Name вводим название характеристики
Во вкладке Address выбираем необходимое
значение.
Параметр Count определяет длину отсчета;
Нажимаем Add, OK.
Получаем входной и выходной сигнал
реализованного фильтра.
Рис.10. Сигнал на входе фильтра
Для того чтобы построить АЧХ синтезированного
фильтра, мы изменяем частоту от 500 Гц до fB=5000 Гц с интервалом в 500 Гц и в
итоге получаем 10 графиков входных и выходных сигналов.
Рис.11. Сигнал на выходе фильтра
Выводы
В ходе работы с помощью, программного пакета
MatLab и Visual DSP++ были получены следующие результаты: в MatLab найдены
коэффициенты фильтра, построена АЧХ цифрового фильтра прототипа (рис.2.), ФЧХ
(рис.3.), ГВЗ( рис.4) и структурная схема прямой канонической формы фильтра
(рис.5.); нашли H(z) и построили график (рис.6.). В Visual DSP++ реализован
цифровой фильтр на сигнальном процессоре серии ADSP- 2181, а именно: листинг
программного пакета Visual DSP++, получен сигнал на входе(рис.10.) и выходе
фильтра(рис.11) при изменении частоты в полосе от 500 Гц до fB=5000 Гц с
интервалом в 500 Гц.
фильтр амплитудный частотный
Список литературы
Цифровая
обработка сигналов/ А.Б.Сергиенко - СПб.: Питер, 2002 - 608 с.
Начала
программирования в среде MatLAB/ Ю.Ф.Лазарев, учебное пособие. - К.: НТУУ
«КПИ», 2003. - 424 с.
Цифровая
обработка сигналов. Вып.1. Теоретические основы цифровой обработки сигналов/
Гадзиковский В.И. - Екб.: ГОУ ВПО УГТУ - УПИ, 2003. - 344с.
Конспект
лекций по дисциплине «Цифровая обработка сигналов и сигнальные процессоры в
ССПО»