vmest.ru страница 1
скачать файл

ФГБОУ ВПО «Чувашский государственный университет имени И.Н. Ульянова»

Кафедра промышленной электроники

Курсовая работа
«Проектирование устройств ЦОС. Проектирование цифрового фильтра на ADSP2181»

Выполнил: cт. гр. РТЭ-31-09

Сергеев А.И.

Проверил:

Охоткин Г.П.

Чебоксары 2013



Содержание
Аннотация.…………………………………………………………………..….…3

Введение……………………………………………………………………….…..4

Техническое задание……………………………………………….…………..…7

Проектирование БИХ фильтра…………………………………………..….…....8

Проектирование фильтра с помощью LabView ……………………………….15

Расчет границ устойчивости фильтра…………………………………………..17

Анализ реализации звеньев……………………………………………………..19

Составление векторно-матричных уравнений ЦФ…………………………….21

Анализ структурных схем………………………………………………………23

Анализ ошибок квантования ………………………………………………..… 27

Микропроцессоры компании Analog Devices………………………………….30

АЦП………………………………………………………………………………34

Алгоритм программы реализации цифрового фильтра……………….…...….37

Заключение……………………………………………………..……………..…46

Список литературы……………………………………………………………...47

Приложение


Аннотация
В данной работе был проведен синтез и анализ цифрового полосового фильтра, предложена возможная реализация на микроконтроллере ADSP-2181, и проверка расчетов средствами LabVIEW.

Введение

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



  • Абсолютная стабильность их характеристик;

  • Возможность реализации таких алгоритмов обработки, которые в аналоговой обработке не реализуемы;

  • Лёгкая перестраиваемость характеристик;

  • Возможность создания адаптивных фильтров;

Рис.1


ФНЧ – фильтр нижних частот, пропускает частоты, меньше некоторой частоты среза ;

ФВЧ – фильтр верхних частот, пропускает частоты, больше некоторой частоты среза ;

ПФ – полосовой фильтр, пропускает частоты в некотором диапазоне . Они также могут характеризоваться средней частотой и шириной полосы пропускания .

РФ – режекторный или заграждающий фильтр, пропускает на выход все частоты, кроме лежащих в некотором диапазоне .



безымянный

Рис.2


Для реальных АЧХ характерно непостоянство коэффициента передачи фильтра, как в полосе пропускания, так и в полосе задержания. Кроме того, в реальных фильтрах невозможно получить скачкообразное изменение коэффициента передачи при переходе от полосы пропускания к полосе задержания. В реальных АЧХ фильтров всегда существует полоса перехода, в которой коэффициент передачи фильтра непрерывно изменяется от значения, минимально допустимого в полосе пропускания, до значения, максимально допустимого в полосе задержания. Как правило, различие между этими значениями велико (сотни и тысячи раз).

При проектировании БИХ-фильтра в данной работе используется фильтр Чебышева I рода. Это более часто встречающаяся модификация фильтров Чебышева. Амплитудно-частотная характеристика такого фильтра -го порядка задаётся следующим выражением:



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

В полосе пропускания такого фильтра видны пульсации, амплитуда которых определяется показателем пульсации (англ. ripple factor) . В полосе пропускания многочлены Чебышева принимают значения от 0 до 1, поэтому коэффициент усиления фильтра принимает значения от максимального до минимального . На частоте среза коэффициент усиления имеет значение, а на частотах выше неё продолжает уменьшаться с увеличением частоты. (Примечание: обычное определение частоты среза как частоты, когда ЛАЧХ имеет значение −3 дБ в случае фильтра Чебышева не работает).

В случае аналогового электронного фильтра Чебышева его порядок равен числу реактивных компонентов (например, индуктивностей), использованных при его реализации.

Пульсации в полосе пропускания часто задаются в децибелах:

Пульсации в .

Например, пульсации амплитудой в 3 дБ соответствуют .

Рис.3


АЧХ фильтра Чебышева I рода четвёртого порядка с и

Более крутой спад характеристики может быть получен если допустить пульсации не только в полосе пропускания, но и в полосе подавления, добавив в передаточную функцию фильтра нулей на мнимой оси в комплексной плоскости. Это однако приведёт к меньшему эффективному подавлению в полосе подавления.

Задание на курсовой проект

1. Синтез передаточной функции и параметров фильтра. Построить АЧХ и ФЧХ фильтра. Расчет границ устойчивости фильтра.

2. Составление векторно-матричных разностных уравнений фильтра.

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

4. Выбор структуры фильтра. Анализ каскадной и параллельной схем реализации.

5. Анализ ошибок квантования фильтра.

6. Выбор МП, АЦП и ЦАП.

7. Разработка алгоритма и программы реализации фильтра.


Исходные данные

Таблица 1



АФ-прототип

ЦФ

Метод синтеза

Частота

дискретизации , кГц



Тип фильтра

АЧХ

,
дБ

, дБ

, кГц

, кГц







ПФ

Ч1

1,5

40

3,0…7,0

1,0…14,0

БП

50

Используемые сокращения:

Ч1 – фильтр Чебышева первого рода

– допустимый уровень пульсаций АЧХ в полосе пропускания

– минимально необходимое затухание в полосе задержки

, – границы полос пропускания и задержки

БП – билинейное преобразование


Синтез БИХ-фильтра

Перейдём от цифровых частот к аналоговым по формуле:





- цифровые частоты;

- аналоговые частоты;

- период дискретизации

В нашем случае:



,

, .


  1. Рассчитаем АФ-прототип по требованиям, заданным к ЦФ, с помощью системы MatLab.

Определим минимально необходимый порядок ФНЧ-прототипа:

Для этого используем функцию MatLab:


[n Wn]=cheb1ord([Wp1 Wp2],[Ws1 Ws2],Rp,Rs,'s')
в этой функции:

n – минимально необходимый для заданных требований порядок фильтра;

Wn – частота среза фильтра;

Wp1,Wp2 - граница полосы пропускания рад/с;

Ws1,Ws2- граница полосы задерживания рад/с;

Rp – допустимый уровень пульсаций в полосе пропускания, дБ ;

Rs – допустимый уровень пульсаций в полосе задерживания, дБ;
Рассчитаем аналоговый ФНЧ прототип:
[z, p, k] = cheb1ap(n, Rs)

в этой функции:

z – нули прототипа;

p – полюсы прототипа;

n – порядок фильтра;

Rs – уровень пульсаций в полосе задерживания;


Определим коэффициенты функции передачи ФНЧ прототипа. Для этого используем функцию MatLab:

[b, a] = zp2tf(z, p, k)

z – нули прототипа;

p – полюсы прототипа;

k – коэффициент усиления;

b – коэффициенты числителя функции передачи;

a – коэффициенты знаменателя функции передачи;
Функция передачи записанная в общем виде:

,

В нашем случае:

b = [ 0 0 0 0,3892];

a = [1,0000 0,8402 1,1030 0,3892].

Тогда функция передачи ФНЧ прототипа примет вид:

Преобразуем аналоговый ФНЧ- прототип в аналоговый ПФ.

Для этого используем функцию MatLab:


[b1, a1]=lp2bp(b, a, w0, Bw)
Функция lp2bp преобразует аналоговый фильтр-прототип (фильтр нижних частот (ФНЧ) с угловой частотой среза, равной 1 рад/с) в полосовой фильтр с заданными средней частотой и шириной полосы пропускания. Где:

b1 – вектор коэффициентов числителя аналогового ПФ

a1 – вектор коэффициентов знаменателя аналогового ПФ

b – коэффициенты числителя ПФ-прототипа.

a – коэффициенты знаменателя ПФ-прототипа.

Wo – средняя частота полосы пропускания.

Bw - ширина полосы пропускания.
Результаты расчета таковы:

b= [1,6e+8 -4,55e-12 0,057 -1,33e-21];

a= [1 26,67 8,7e+7 1,5e+9 2,175e+15 1,67e+16 1,56e+22];
Запишем полученную передаточную функцию АФ-прототипа:

Построим частотные характеристики АЧХ и ФЧХ :



Рис. 4. Частотные характеристики АФ-прототипа


Нули и полюсы АФ-прототипа:

Рис. 5. Нули и полюса АФ-прототипа


Из рисунка видно, что полюса лежат в левой полуплоскости, что свидетельствует об устойчивости АФ-прототипа.

Синтез ЦФ методом билинейного Z-преобразования

Данный метод позволяет синтезировать ЦФ по частотной характеристике АФ-прототипа.

Введем комплексную величину w, связанную с комплексной переменной z билинейным преобразованием:

,

откуда


Сделав подстановку , получим



.

В рассмотрение вводят абсолютную псевдочастоту:



.

Такому соотношению частот, как следует из равенства, соответствует замена



, .

Проведем синтез в MatLab с использованием стандартной функции bilinear


[bz,az]=bilinear(b1,a1,Fd)
где b,a – коэффициенты полиномов числителя и знаменателя АФ-прототипа, bz,az – коэффициенты полиномов числителя и знаменателя ЦФ.

Полученные результаты таковы:

bz=[0,0051 -2,66e-15 -0,0153 -2,13e-14 0,0153 -1,2e-14 -0,0051];

az=[1 -4,52 9,34 -11,15 8,11 -3,41 0,66].

По найденным коэффициентам составим передаточную функцию ЦФ:


Построим диаграмму полюсов и нулей ЦФ

Для этого используем функцию MatLab:

zplane(bz,az);

где:


bz- вектор строка коэффициентов числителя функции передачи фильтра;

az- вектор строка коэффициентов знаменателя функции передачи фильтра;



Рис.6.


Как видно из рисунка, все полюсы лежат внутри окружности единичного радиуса, что говорит об устойчивости ЦФ.
2. Составим разностное уравнение ЦФ. Для этого преобразуем передаточную функцию ,перемножив соответствующие полиномы.

Разностное уравнение примет вид:



3. Решение разностного уравнения для управляющего сигнала типа единичный скачок. Рассчитаем с помощью MatLab.

Запишем коэффициенты передаточной функции:

Решим разностное уравнение методом итерационной процедуры(управляющий сигнал – единичный скачок).

Тогда:

;

;

; и.т.д.

Поскольку у нас управляющий сигнал – единичный скачок, то на входе имеем :

Тогда получим:

;

;

;

и.т.д.


Построим импульсную характеристику цифрового фильтра с использованием функций MatLab (рис. 7):

h = impz(bz, az, n);

где:

h – отсчёты импульсной характеристики;



bz – вектор коэффициентов числителя передаточной функции цифрового фильтра;

az - вектор коэффициентов знаменателя передаточной функции цифрового фильтра;

n – число отсчётов импульсной характеристики;

Рис.7. Импульсная характеристика


Построим переходную характеристику цифрового фильтра (рис. 9):

Для этого подадим на фильтр ряд единичных скачков:

g = filter(bz, az, ones(1, n));

g – отсчёты переходной характеристики;

bz – вектор коэффициентов числителя передаточной функции цифрового фильтра;

az - вектор коэффициентов знаменателя передаточной функции цифрового фильтра;

n – число отсчётов переходной характеристики характеристики;

Рис. 8. Переходная характеристика


Построим частотные характеристики цифрового фильтра:

АЧХ (рис. 9) и ФЧХ (рис. 10) цифрового фильтра :



Рис. 9. АЧХ цифрового фильтра


Рис. 10. ФЧХ цифрового фильтра



Проектирование фильтра с помощью LabView

Проверим расчет в среде разработки LabVIEW. Для этого, воспользовавшись модулем разработки цифровых фильтров (Block Diagram - Functions - Signal Processing - Digital Filter Design), построим схему как показано на рисунке.



Block Diagram

d:\учеба\8 семестр\эпу\курсовая\2013-04-13_151419.jpg

Classical Filter Design

d:\учеба\8 семестр\эпу\курсовая\2013-04-13_151352.jpg

Filter Analysis

d:\учеба\8 семестр\эпу\курсовая\2013-04-13_151512.jpg

Сравнивая переходную характеристику, ЛАЧХ и ФЧХ, а также диаграмму полюсов и нулей, рассчитанные нами, с тем, что выдала нам программа, убеждаемся в схожести результатов проектирования.



Расчет границ устойчивости фильтра

Метод Гурвица, который часто называют методом Рауса-Гурвица, очень удобен для определения устойчивости звеньев при помощи ЭВМ.

Ниже приведён автоматизации работы метода с использованием одного из самых распространённых языков для технических вычислений MATLAB с её синтаксисом.
function [Ust, Mnrs, Mtrx] = raus_gur(D)

if isa(D, 'lti')

[B, D] = tfdata(D, 'v');

end


Ust = 1;

if length(D(:)) < 4

Mtrx = NaN; Mnrs = NaN;

if any(D(:) <= 0)

Ust = 0;

end


return

end


D = D(:);

n = length(D) - 1; % Размеры матрицы Гурвица

A = [zeros(n-1, 1); D(end:-1:1); zeros(n-2, 1)];

Mtrx = zeros(n, n); % Заготовка матрицы Гурвица

Mnrs = zeros(n-2, 1); % Вектор миноров

for i = 1:n

Mtrx(:, i) = A((n - i)*2 + 1:3*n - 2*i);

end


for i = 2:n-1

Mnrs(i-1) = det(Mtrx(1:i,1:i));

end

if any([D(:); Mnrs(:)] <= 0)



Ust = 0;

end
После выполнения программы получим матрицу Гурвица:



Необходимым и достаточным условием устойчивости системы является положительность всех главных определителей матрицы Гурвица, при условии положительности всех её коэффициентов.


После выполнения программы также получим вектор, который содержит значения диагональных определителей от 2×2 до 4×4, первый элемент не имеет значения, а значение внешнего определителя всегда будет иметь тот же знак, что и предыдущий. Согласно методу Гурвица, чтобы система была устойчива, все эти определители должны оказаться положительными.

Убеждаемся, что наша система устойчива.

Анализ реализации звеньев

Рассмотрим прямую форму реализации биквадратного звена:



prjamaja

Рис.11.


Прямая форма содержит:

- 5 регистров для хранения коэффициентов;

- 4 элемента задержки;

- 1 пятивходовой сумматор;

- 1 квантователь.

При программной реализации существенными являются 5 регистров и квантователь. Выходная величина определяется разностным уравнением:



,

где умножение производится точно, квантуется лишь результат суммирования.

Рассмотрим каноническую форму реализации биквадратного звена:

kanoni4eskaja

Рис.12


Каноническая форма содержит:

- 5 регистров для хранения коэффициентов;

- 2 элемента задержки;

- 2 пятивходовых сумматора;

- 2 квантователя.
При программной реализации существенными являются 5 регистров и 2 квантователя. Выходная величина определяется уравнением выхода и уравнением состояния:

где , .

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

Выберем прямую форму реализации.



Векторно-матричные разностные уравнения цифрового фильтра

Векторно-матричные уравнения составим на основе непосредственной декомпозиции передаточной функции:





Решим относительно :





Рис.13




Полученные уравнения запишем в матричной форме:








Анализ структурных схем
Рассмотрим каскадную структурную схему:

В MatLab требуемое разложение передаточной функции H(z) выполняет функция [sos, g]=tf2sos(b, a).

В результате получим:

sos =
1.0000 -0.0001 -0.9999 1.0000 -1.5079 0.8053

1.0000 2.0001 1.0001 1.0000 -1.2200 0.8725

1.0000 -2.0000 1.0000 1.0000 -1.7923 0.9346
G = 0.0051
Тогда передаточная функция будет равна:


Рис. 14
Теперь рассмотрим параллельную структурную схему:



Рис. 15
Для построения структурной формы фильтра в параллельной форме представим H(z) в виде суммы. Каждое из слагаемых при таком представлении соответствует функции передачи рекурсивного фильтра. Сама же операция сложения эквивалентна параллельному соединению этих фильтров с суммированием выходных результатов. В MatLab требуемое разложение H(z) выполняет функция residuez. Опишем её:

[r, p, k] = residuez(b, a)

Входные параметры:

b, a – векторы коэффициентов полиномов числителя и знаменателя функции передачи соответственно;

Выходные параметры:

r – вектор вычетов;

p – вектор полюсов;

k – вектор коэффициентов целой части функции передачи.

Функция residuez выполняет разложение в виде



В результате выполнения программы получим:

r = -0.0346 + 0.0035i

-0.0346 - 0.0035i

-0.0681 - 0.0168i

-0.0681 + 0.0168i

0.1091 + 0.0182i

0.1091 - 0.0182i

p = 0.8961 + 0.3627i

0.8961 - 0.3627i

0.6100 + 0.7074i

0.6100 - 0.7074i

0.7539 + 0.4867i

0.7539 - 0.4867i

k = -0.0077

Тогда передаточная функция будет равна:



Для получения биквадратных звеньев объединим дроби попарно, получим:



где



Подставив численные значения получаем:





Построим параллельную структурную схему фильтра (рис. 16):



Рис.16. Параллельная реализация ЦФ



Анализ ошибок квантования фильтра

Основное влияние квантования коэффициентов фильтра с использованием конечного числа битов проявляется в изменении положения полюсов и нулей H(z) на комплексной плоскости. В узкополосных фильтрах, например, полюса расположены близко к единичной окружности, так что любое значительное изменение их положения может сделать фильтр неустойчивым. Чем меньше число битов, используемых для представления коэффициентов, тем большим будет изменение положения полюсов и нулей.

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

Проведем квантование коэффициентов каскадной схемы с помощью Matlab:

q = quantizer('fixed','round','saturate', [16 14]);

quantize(q,bi);

Таблица 2


Коэффициент

Исходное значение

Квантованное значение

b11

1

1

b12

-6.905435479320765e-06

0

b13

-0.999999164913313

-1

a12

-1.507867867237576

-1.507873535156250

a13

0.805271626638250

0.805297851562500

b21

1

1

b22

2.000003870255210

1.999938964843750

b23

1.000003870270189

1

a22

-1.220029456905531

-1.220031738281250

a23

0.872489776220886

0.872497558593750

b31

1

1

b32

-1.999996964819733

-2

b33

0.999996964828946

1

a32

1.792282253339165

1.792297363281250

a33

0.934619893116970

0.934631347656250

Найдем полюса фильтра с квантованными коэффициентами:

sos = [1 0 -1 1 -1,50787353515625 0,805297851562500

1 1,99993896484375 1 1 -1,22003173828125 0,872497558593750

1 -2 1 1 -1,79229736328125 0,934631347656250];

[b, a] = sos2tf(sos);

zplane(b,a); grid;

Как видно из графика, полюса фильтра остались внутри единичной окружности, значит после квантования фильтр не теряет устойчивость.

Изменение положения полюсов и нулей очень мало, поэтому не приведет к значительному искажению частотных характеристик.



Микропроцессоры компании Analog Devices

Микропроцессоры компании Analog Devices образуют два семейства: ADSP21xx и ADSP21xxx.

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

Второе семейство микропроцессоров ADSP210xx объединяет 32-разрядные микропроцессоры, ориентированные на сигнальные алгоритмы, требующие выполнения вычислений с плавающей точкой. Семейство представлено микропроцессорами ADSP21010, ADSP21020, ADSP21060, ADSP21062, ADSP21160, ADSP-TS001.

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

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


Микропроцессоры семейства ADSP21хх

Микропроцессоры семейства ADSP21xx успешно конкурируют с аналогичной продукцией компаний Motorola и Texas Instruments благодаря высокой производительности и низкой цене, а также наличию развитых аппаратных и программных средств разработки прикладных систем. Высокая производительность процессоров на сигнальных алгоритмах достигается за счет многофункциональной и гибкой системы команд, аппаратной реализации большинства типичных для сигнальной обработки операций, высокой степени параллелизма процессов в микропроцессоре, сокращения командного цикла. Микропроцессоры ADSP21xx имеют модифицированную гарвардскую архитектуру, в рамках которой предусматривается возможность доступа в память команд при ее физическом разделении с памятью данных. Аналогичную архитектуру, ставшую для процессоров ЦОС стандартом де-факто, имеют многие другие процессоры, в том числе и TMS320xxx. Обобщенная структура микропроцессора ADSP21xx приведена на рис. 1.

Каждый микропроцессор семейства содержит три независимых функциональных блока: АЛУ, умножитель с накоплением (MAC) и устройство барабанного сдвига. Каждый блок непосредственно оперирует с 16-разрядными данными и обеспечивает аппаратную поддержку вычислений с различной точностью.

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

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

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

Микропроцессор ADSP-21msp5x отличается наличием аналогового интерфейса, позволяющего вводить и выводить обрабатываемый сигнал в аналоговой форме. В состав интерфейсных блоков входят АЦП, ЦАП, цифровой и аналоговый фильтры, параллельный интерфейс.

ad-1

Рис.17. Обобщенная структура микропроцессора ADSP21xx


Микропроцессор ADSP-2181 содержит внутренний порт ПДП и байтовый порт ПДП, которые обеспечивают быстрый обмен с внутренней памятью. Внутренний порт ПДП поддерживает асинхронный обмен с памятью программ, а байтовый порт позволяет записывать и читать как команды, так и данные.

Микропроцессоры компании Analog Devices отличает высокая степень параллелизма внутренних операций. За один такт процессор может:



  • генерировать адрес следующей команды;

  • загрузить из памяти следующую команду;

  • выполнить 1 или 2 пересылки данных;

  • обновить 1 или 2 указателя на данные;

  • выполнить операцию.

Микропроцессор, имеющий соответствующее устройство, может в этом же такте:

  • принять и/или передать данные через последовательные порты;

  • принять и/или передать данные хост-процессору;

  • принять и/или передать данные через аналоговый интерфейс.

Основные характеристики микропроцессоров семейства ADSP-21xx приведены в табл. 3
Таблица 3. Основные характеристики микропроцессоров семейства 21хх

Возможности

2101

2103

2105

2115

2111

2171

2173

2181

2183

21msp58

АЛУ

+

+

+

+

+

+

+

+

+

+

Блок MAC

+

+

+

+

+

+

+

+

+

+

Сдвиг

+

+

+

+

+

+

+

+

+

+

Генератор адресов данных

+

+

+

+

+

+

+

+

+

+

Генератор адресов команд

+

+

+

+

+

+

+

+

+

+

ОЗУ данных, Кслов

1

1

0,5

0,5

1

2

2

16

16

2

ОЗУ команд, Кслов

2

2

1

1

2

2

2

16

16

2

Таймер

+

+

+

+

+

+

+

+

+

+

Многоканальный последовательный порт

+

+

-

+

+

+

+

+

+

+

Последовательный порт

+

+

+

+

+

+

+

+

+

+

Порт хост-интерфейса

-

-

-

-

+

+

+

-

-

+

Порт ПДП

-

-

-

-

-

-

-

+

+

-

Аналоговый интерфейс

-

-

-

-

-

-

-

-

-

+

Напряжение питания, В

5

3,3

5

5

5

5

3,3

5

3,3

5

Производительность (MIPS)

20

10

13.8

20

20

33

20

33

33

26

Общее для семейства ADSP-21xx микропроцессорное ядро изображено на рис. 17. Арифметико-логическое устройство микропроцессора выполняет стандартный набор арифметических и логических операций, включая деление. Устройство MAC выполняет операции умножения со сложением (вычитанием) за один такт. Устройство сдвига осуществляет арифметические и логические сдвиги операндов, нормализацию и возведение в степень. Функциональные устройства микропроцессора могут обмениваться результатами выполнения операций по шине внутренних результатов.



ad-2

Рис.18. Структура микропроцессорного ядра ADSP21xx


Внутренние функциональные блоки связаны между собой с помощью пяти шин: шина адресов памяти данных (DMA), шина адресов памяти команд (РМА), шина данных памяти данных (DMD), шина данных памяти команд (PMD) шина внутренних результатов (R). Первые четыре шины имеют мультиплексированный внешний интерфейс в виде шины адреса и шины данных (см. рис. 18).

По системе команд все микропроцессоры совместимы снизу вверх. Отдельные представители семейства- ADSP-2171, 2181, 21msp5x - имеют дополнительные и расширенные команды.. Каждая команда выполняется за один такт. Многофункциональные команды микропроцессора объединяют несколько пересылок данных с арифметико-логической обработкой.

Все устройства микропроцессора - 16-разрядные и оперируют с данными в формате с фиксированной точкой. Числа представляются либо как беззнаковые, либо в дополнительном коде. Логические операции выполняются над битовыми строками.

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


АЦП

Для преобразования аналогового сигнала в цифровую форму,  для дальнейшей обработки с помощью ЭВМ необходимо использование АЦП.

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

Критерием выбора АЦП являются его параметры: число разрядов, быстродействие, точность, стоимость.

Число разрядов выходного кода определяет количество возможных уровней квантования входного сигнала. Для n-разрядного двоичного кода это количество равно 2n.

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

 Наиболее быстродействующими являются АЦП параллельного действия, однако они также самые сложные и самые дорогие. АЦП последовательного счета имеют самое низкое быстродействие. Широко распространенные АЦП последовательного приближения обладают средним быстродействием.

Нашим требованиям удовлетворяет 16-разрядный полнодуплексный аудиокодек AD1847.



Рис.19. Функциональная схема кодека AD1847

AD1847 - звуковой стерео кодер-декодер, который объединяет основные виды обработок звуковых сигналов и функции управления в одну интегральную схему. AD1847 является многофункциональной и дешевой ИС, которая может применяться в частных предприятиях мультимедийной области.

Последовательный интерфейс обеспечивает возможность применения ИС на материнских платах компьютеров или PCMCIA картах (картах расширения).

На выходе ЦАП в кристалл включены фильтры. Динамический диапазон превышает 70 дБ при частоте звука 20 кГц. Типовые значения частот от внешних источников - от 5.5 кГц до 48 кГц.

Кодек содержит пару сигма-дельта АЦП и пару сигма-дельта ЦАП. Каналы АЦП могут быть выбраны из четырех стерео пар аналоговых сигналов: линия 1, линия 2, вспомогательная ("вспом") линия 1, и постсмешанная выхода ЦАП. Программно управляемый процесс усиления сигнала позволяет усиливать каждый канал АЦП отдельно. Выходной сигнал с АЦП может быть смешан с входным сигналом ЦАП в цифровом виде.

Пара 16-битовых выводов АЦП доступна по последовательному интерфейсу регистрам контроля/статуса канала ЦАП, который также поддерживает 16-битовый цифровой формат. AD1847 может принять и произвести 16-битовое дополнение пар PCM цифровых данных, 8-битовых без знаковых данных, и 8-битовых по -закону или A-закону кодирования цифровых данных.

Перед ЦАП стоит цифровой интерполяционный фильтр. Аттенюатор (ослабитель) позволяет контролировать громкость каждого канала ЦАП отдельно. Искажения Найквиста убираются с аналогового сигнала ЦАП благодаря переключаемым конденсаторам и фильтрам. Две стерео пары вспомогательных каналов могут также быть смешаны в аналоговой области с выходом DAC.

Последовательный интерфейс данных AD1847 использует Time Division Multiplex (TDM) (Разделение Времени Мультиплексором), которое является совместимым с последовательными портами DSP-процессоров.

Стерео кодек AD1847 принимает стерео сигналы. Все входы должны быть попарно сгруппированы. Сигналы с LINE1, LINE2, AUX1, и постсмешанные сигналы на выходе ЦАП мультиплексированы и подаются на внутренний программируемый усилитель (PGA).

PGA после мультиплексора позволяет усиливать значение сигнала для каждого канала независимо от 0 до 22.5 дБ с шагом +1.5 дБ. Кодер-декодер может работать или в глобальном (все каналы одновременно) стерео режиме или в глобальном моно режиме (активны левые подканалы стереоканалов).

Сигма-дельта АЦП содержит модулятор четвертого порядка. Пассивный фильтр с одним полюсом - все, что требуется для сглаживания аналоговый сигналов, т.к. АЦП поддерживает 64 уровня квантования. АЦП содержит цифровые фильтры дискретизации, и низкочастотный фильтр пропускает 0.4·Fs (Fs – частота дискретизации). При превышении границ, АЦП меняет биты статуса, что можно будет увидеть.

Сигма-дельта ЦАП содержит программируемый аттенюатор и низкочастотный фильтр.

Аттенюатор позволяет независимо контролировать каждый канал ЦАП от 0 дБ до -94.5 дБ с шагом 1.5 дБ. Фильтры удаляют высокочастотные компоненты с выходных сигналов ЦАП. Никакие внешние компоненты не требуются.



Программирование фильтра в VisualDSP++

Выбор сессии


Перед началом проектирования необходимо определить, для какого процессора семейства ADSP будет написана программа и выбрать сессию данного процессора:

  1. В главном меню выбрать “Session”→”New”.

  2. Выбрать семейство процессоров;

  3. Выбрать процессор;

  4. Платформа всегда находится в режиме симуляции, хотя есть возможность при подключении скан-эмулятора переключаться в режим эмуляции и отлаживать изделия на основе процессоров ADSP.

  5. Нажать «ОК».

Также существует возможность выбора одной из открытых ранее сессий, осуществляемое через меню “Session”→”Select Session” или “Session”→”Session List”. Если в процессе компоновки и компиляции среда выдает сообщение о неверном выборе сессии, то ее можно изменить с помощью тех же меню.

Файл lfd


Файл (Linker Description Files) описывает систему, для которой будет построен код и описывает карту программного кода в памяти и процессоре. Каждый проект должен содержать ldf-файл.

Основными директивами ldf-файла являются:



  1. ARCHITECTURE (ADSP-2181) – в скобках указывается процессор.

  2. SEARCH_DIR( $ADI_DSP\218x\lib ) – в скобках указывается путь по которому нужно искать библиотеки описанные в разделе $OBJECTS.

  3. $OBJECTS = библиотека1, библиотека2,… - через запятую перечисляются библиотеки используемые в программе.

  4. MEMORY { описание памяти} в фигурных скобках может содержать строки вида mem { TYPE(PM RAM) START(0x000000) END(0x000003) WIDTH(24) }

    1. mem – имя сегмента памяти;

    2. TYPE – в скобках указывается тип памяти (PM RAM или DM RAM);

    3. START – в скобках указывается начальный адрес памяти;

    4. END – в скобках указывается конечный адрес памяти;

    5. WIDTH – задает ширину ячейки памяти в битах, допускается 16 или 24.

В простейшем случае можно воспользоваться файлом из стандартной поставки пакета ADSP, находящимся в каталоге $ADI_DSP\218x\ldf для семейства 218x или $ADI_DSP\219x\ldf для семейства 219x.

Исходный текст


Как уже было сказано симулятор поддерживает язык ассемблера и язык С++. Но в среде разработки Visual ADSP++ 21xx поддержка C++ включена только для процессоров семейства ADSP219x.

Настройка портов


На ввод:

  1. Выбрать меню Settings→Streams;

  2. Выбрать опцию файл;

  3. Задать имя входного файла;

  4. Задать формат файла;

  5. В пункте Destination→Device выбрать один из портов.

  6. Если порт расположен в памяти, то задать его адрес.

  7. Нажать “Connect”.

На вывод:

  1. Выбрать меню Settings→Streams;

  2. В пункте Source→Device выбрать один из портов.

  3. Если порт расположен в памяти, то задать его адрес.

  4. В пункте Destination→File задать имя выходного файла.

  5. Выбрать формат выходного файла.

  6. Нажать “Connect”.

Список активных портов можно узнать на вкладке “Active” окна “Streams”.

Настройка прерываний.


Прерывания задаются в меню “Settings → Interrupts”:

    1. задать имя прерывания.

    2. задать минимальное количество циклов между прерываниями.

    3. задать максимальное количество циклов между прерываниями.

    4. задать количество циклов перед появлением первого прерывания

Количество циклов измеряется в количестве машинных инструкций, т.е. при задании параметров “1,2,200” первое прерывание возникнет после выполнения 200 машинных инструкций, и будет возникать далее с интервалом 1 или 2 инструкции.


Построение графиков


VDSP предлагает широкий выбор построения графиков.
plotadsp

Алгоритм построения:



    1. задать тип графика (Type)

    2. задать отображаемое название графика (Title)

    3. задать наименование набора данных (Name)

    4. задать тип памяти, из которой будут браться точки (Memory)

    5. задать начальный адрес (Address) и смещение (Offest). Начальный адрес можно задавать именованной областью памяти (массив, метка). Адрес первой точки вычисляется как сумма начального адреса + смещение.

    6. Задать количество точек (Count)

    7. Задать шаг (Stride)

    8. Задать тип данных (Data)

    9. При выборе двумерного типа графика необходимо выполнить шаги 4-8 для оси Х и для оси Y.

    10. Нажать кнопку “Add”.


Программирование портов.


Для получения внешних данных в процессорах ADSP предусмотрены два последовательных порта(SPORT0 и SPORT1).

Последовательный порт получает данные со входа DR или передает их на выход DT. Биты данных синхронны с таймером, находящимся в блоке последовательного порта или могут быть синхронизированы с внешним таймером (SCLK). Чтение и передача данных происходит по сигналам синхронизации RFS и TFS.

Перед включением последовательного порта, его необходимо настроить. Управляющие регистры портов являются регистрами с отображением в память и находятся по адресам 0x3FF3-0x3FFA(SPORT0) и 0x3FEF-0x3FF2(SPORT1).

Отличие регистра SPORT0 от SPORT1 заключается в том, что порт 0 может настраиваться на мультиканальный режим.

Таблица 4

Адрес для SPORT0

Адрес для SPORT1

Назначение

0x3FF7-0x3FFA




Предназначены для настройки порта для работы в мультиканальном режиме

0x3FF6

0x3FF2

Контрольный регистр

0x3FF5

0x3FF1

Регистр делителя внутреннего таймера

0x3FF4

0x3FF0

Регистр делителя сигнала RFS

0x3FF3

0x3FEF

Регистр автобуфера

Формат контрольного регистра последовательного порта.


0-3: длина получаемого/отправляемого слова–1. Например: при значении 1111b длина слова будет равна 16. Может принимать значения от 3 до 15.

4-5: тип данных.

00 - данные выровнены вправо, старшие биты заполняются нулями.

01 - данные выровнены вправо, старшие биты заполняются знаковыми битами.

10 – данные пакуются(распаковываются) в соответствии с правилом µ-law.

11 – данные пакуются(распаковываются) в соответствии с правилом A-law.

6: INVRFS – задает активный уровень для сигнала RFS. 0 – высокий. 1 – низкий.

7: INVTFS – задает активный уровень для сигнала TFS. 0 – высокий. 1 – низкий.

8: IRFS. Должен быть равен 0, если сигнал RFS – внешний, 1 – если внутренний.

9: ITFS. Должен быть равен 0, если сигнал TFS – внешний, 1 – если внутренний.

10: TFSW. Должен быть равен 0 для режима нормального кадра при передаче, 1 – для альтернативного режима.

11: TFSR. Должен быть равен 0, если сигнал TFS необходим только для первого слова, 1 – если для каждого.

12: RFSW. Должен быть равен 0 для режима нормального кадра при приеме, 1 – для альтернативного режима.

13: RFSR. Должен быть равен 0, если сигнал RFS необходим только для первого слова, 1 – если для каждого.

В режиме нормального кадра данные проверка данных идет по спаду тактирующего таймера. При поступлении сигнала RFS(TFS) данные фиксируются по следующему спаду таймера и поступают при каждом фронте таймера. Если данные идут последовательно, то следующий сигнал RFS(TFS) должен поступить при получении последнего бита слова.

В альтернативном режиме сигнал RFS(TFS) проверяется также по спаду тактирующего таймера. Первый бит слова должен выдаваться в этом такте. Длина слова берется из младших битов контрольного слова.

14: ISCLK. Задает режим синхросигналов для портов. 0 – внешние, 1- внутренние.

15-ый бит используется только в SPORT0 и задает мультиканальный режим. В данном случае биты 7, 9-13 приобретают другое значение.


Регистры таймера.


    1. Регистр делителя внутреннего таймера(SCLKDIV) задает частоту внутреннего таймера последовательного порта.



    1. Регистр делителя сигнала RFS задает количество синхросигналов – 1, число которых должно проходить между генерацией процессором сигналов RFS.

Системный контрольный регистр


Наконец чтобы прерывание от порта сработало, необходимо включить порт, установив 10-12 биты системного контрольного регистра(адрес 0x3FFF), и размаскировав прерывания в регистре IMASK.

10: конфигурация SPORT1. 1 – как последовательный порт. 0 – как таймер.

11: включить SPORT1.

12: включить SPORT0.




Сеанс работы.


  1. открыть Visual DSP++;

  2. открыть меню “Project→New…”;

  3. задать опции проекта(в большинстве случаев задается только процессор);

  4. после этого, если их не было должны появиться основные окна. Если их нет, то можно открыть их с помощью меню “View”;

  5. создать с помощью любого текстового редактора файл с расширением asm(если программа будет написана на ассемблере) или cpp(если программа будет написана на С++) или с помощью меню “File→New” создать и сохранить файл с вышеуказанными расширениями;

  6. щелкнуть правой кнопкой мыши по окну “Project”;

  7. выбрать “Add File(s) to Folder…”;

  8. указать имя созданного файла;

  9. файл в зависимости от типа попадет в папку “Source Files“ (asm или cpp) или в папку “Header Files”(если заголовочный файл Си программы);

  10. открыть файл двойным щелчком мыши по имени;

  11. набрать следующую программу:

Программа реализует фильтр Чебышева первого рода, удовлетворяющий следующим условиям:

fd = 50000 Гц; rp=1,5 дБ; rs= 40 дБ; fp= 3000...7000 Гц; fs=1000...14000 Гц.


#define n 6 {порядок фильтра}

#define abn 14 {кол-во коэффициентов фильтра}

#define oldn 7 {}
.section/data dm_data;

.var out[100];

.var/circ oldx[oldn];
.section/pm pm_data;

.var coab[abn]="coeff.dat";


.section/pm interrupts;

__reset: JUMP start; nop; nop; nop;

RTI; nop; nop; nop;

RTI; nop; nop; nop;

RTI; nop; nop; nop;

RTI; nop; nop; nop;

RTI; nop; nop; nop;

RTI; nop; nop; nop;

RTI; nop; nop; nop;

RTI; nop; nop; nop;

JUMP receive; nop; nop; nop;

RTI; nop; nop; nop;

RTI; nop; nop; nop;
.section/pm program;
start:

CALL initPort;

CALL initRegs;
waitLoop:

IDLE;


JUMP waitLoop;
initPort:

AX0 = 0x0000;

DM(0x3FFE)=AX0; DM(0x3FFD)=AX0; DM(0x3FFC)=AX0;

DM(0x3FFB)=AX0; AX0=0x6B17; DM(0x3FF2)=AX0;

AX0=0x0002; DM(0x3FF1)=AX0; AX0=255; DM(0x3FF0)=AX0;

AX0=0x0000; DM(0x3FEF)=AX0; ICNTL=0x07; IMASK=0x02;

AX0=0x0C00; DM(0x3FFF)=AX0;

RTS;
initRegs:

I3=out; L3=0;

ENA M_MODE;

RTS;

receive:



IMASK = 0; CALL filter; IMASK = 2;

RTI;
filter:

I0=oldx; M0=1; M1=-3; L0=oldn; M2=0;

I4=coab; M4=1; L4=abn; AX0=RX1;

CNTR=n;

CALL series;



TX1=AY0; DM(I3,M0)=AY0;

RTS;
series:

MX0 = AX0; MY0 = 8; MR = MX0*MY0(SS);

DO filt UNTIL CE;

MY0=PM(I4,M4); MX0=DM(I0,M0); AX1=MX0;

MR=MR+MX0*MY0(SS),MX0=DM(I0,M0),MY0=PM(I4,M4);

MR=MR+MX0*MY0(SS),MX0=DM(I0,M0),MY0=PM(I4,M4);

MR=MR-MX0*MY0(SS),MX0=DM(I0,M1),MY0=PM(I4,M4);

MR=MR-MX0*MY0(SS);

DM(I0,M0)=AX0; DM(I0,M0)=AX1; SI = MR0;

SR = ASHIFT SI BY -3(LO);

filt: AX0 = SR0;

AX1 = DM(I0,M2); DM(I0,M0)=AX0;

DM(I0,M0)=AX1; SI = AX0;

SR = ASHIFT SI BY -10(LO); AY0 = SR0;

RTS;



  1. аналогичным образом создать, добавить и открыть файл с расширением ldf;

  2. набрать следующий текст:

ARCHITECTURE(ADSP-2181)

SEARCH_DIR( $ADI_DSP\218x\lib )

$OBJECTS = $COMMAND_LINE_OBJECTS;

MEMORY


{

seg_inttab { TYPE(PM RAM) START(0x00000) END(0x0002f) WIDTH(24) }

seg_code { TYPE(PM RAM) START(0x00030) END(0x02fff) WIDTH(24) }

seg_pmdata { TYPE(PM RAM) START(0x03000) END(0x03fff) WIDTH(24) }

seg_dmdata { TYPE(DM RAM) START(0x00000) END(0x00fff) WIDTH(16) }

}

PROCESSOR p0



{

LINK_AGAINST( $COMMAND_LINE_LINK_AGAINST)

OUTPUT( $COMMAND_LINE_OUTPUT_FILE )

SECTIONS


{

sec_inttab

{

INPUT_SECTIONS( $OBJECTS(interrupts) )



} >seg_inttab

sec_code


{

INPUT_SECTIONS( $OBJECTS(program) )

} >seg_code

sec_dmdata

{

INPUT_SECTIONS( $OBJECTS(dm_data) )



} >seg_dmdata

seg_pmdata

{

INPUT_SECTIONS( $OBJECTS(pm_data) )



} >seg_pmdata
}

}


  1. с помощью алгоритма настройки портов настроить последовательный порт SPORT1 на вход из файла “input.dat”:

  2. настроить SPORT1 на вывод в файл “output.dat”;

  3. с помощью меню “Project→Build” собрать проект;

  4. проект соберется, файл автоматически запустится на выполнение;

  5. запустить программу на выполнение. После некоторого времени программа выдаст сообщение «Error in reading from stream for Sport 1.» Это говорит о том, что программа считала все данные из входного файла для SPORT1, и на выходе сформировались данные.

  6. на выходе также сформировался файл output.dat, в котором записаны выходные значения фильтра.

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

Для работы программы в папке проекта должны быть файлы: coeff.dat – коэффициенты фильтра, ones.dat – единичный входной сигнал.



Заключение.
В данной работе проведен синтез и анализ цифрового БИХ фильтра без использования специализированных средств Matlab и с их использованием. Проведена проверка фильтра на устойчивость. Получены схемные реализации ЦФ. Выбрана аппаратная реализация и составлена программа работы фильтра, включая кодек. Была проведена проверка синтеза в пакете LabView.

Литература

1. Антонью А. Цифровые фильтры. Анализ и проектирование.- М.: Радио и связь, 1983. – 264с.

2. Вальпа О.Д. Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием VisualDSP++. – М.:Горячяя линия-Телеком,2007. -270 с.

3. Гольденберг Л.М., Матюшкин Б.Д., Поляк М.Н. Цифровая обработка сигналов. - М.: Радио и связь, 1990. – 256с

4. Айфичер Э., Джервис Б. Цифровая обработка сигналов. Практический подход (2-е издание, 2004). -992c

5. Хемминг Р.В. Цифровые фильтры. Пер. с англ./ Под ред. А.М. Трахтман М. Сов. радио, 1980. - 224 с.



Приложение
c:\users\andrey\desktop\011.jpg

c:\users\andrey\desktop\022.jpgc:\users\andrey\desktop\031.jpgc:\users\andrey\desktop\041.jpg
скачать файл



Смотрите также:
Проектирование устройств цос. Проектирование цифрового фильтра на adsp2181
368.93kb.
Тема: «Проектирование учебного занятия с планированием цифрового интерактивного оборудования в начальной школе. Типовые затруднения в педагогической деятельности»
30.18kb.
Каноническое проектирование асоиу. Предпроектное обследование Каноническое проектирование асоиу
32.78kb.
Задание на курсовое проектирование
198.46kb.
Проекта: Проектирование технологического процесса механической обработки детали
22.94kb.
Технологический регламент на проектирование и выполнение работ по гидроизоляции и антикоррозионной защите монолитных и сборных бетонных и железобетонных конструкций
338.5kb.
Проектирование образовательного процесса в гбдоу №32 в 2013-2014 учебном году
145.26kb.
Лабораторная работа №2 Тема «Проектирование 16-ти двухвходовых логических схем и доказательство с помощью них основных тождеств булевой алгебры»
57.77kb.
Проектирование информационных систем
45.74kb.
Литература: Л. П. Белова «Социально-педагогическое проектирование»
47.11kb.
Лекция № «Технология разработки управленческих решений»
238.45kb.
Пояснительная записка "Расчет и проектирование червячной шлицевой фрезы"
66.46kb.