Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
28-12-2014_12-52-57 / пповсрв.pdf
Скачиваний:
77
Добавлен:
11.05.2015
Размер:
1.03 Mб
Скачать

HNM1

.ALIGN

128

; выравнивание для N<128

.WORD

0

; коэффициенты фильтра

HNM2

.WORD

0

 

H1

. . .

 

.WORD

0

 

H0

.WORD

0

 

; ПРИМЕЧАНИЕ:

коэффициенты h(k) в памяти данных и должны

;располагаться в том же порядке, что x(n-k);

;порядок h(k) и x(n-k) может быть обратным,

;при этом необходимо изменить команду

;

STM #-1, AR0 (шаг)

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

+∞

если h(k) dt < ∞ , то y(t) < ∞

−∞

Откуда условием физической реализуемости ЦНР является:

N1

h(k) <1

k =0

т.к. если предположить, что на входе фильтра сигнал имеет вид x(n-k)=±1, и знаки противоположны знакам h(k), то

N 1

N 1

 

y(n) = h(k) x(n k) =

 

h(k)

 

 

 

k =0

k =0

 

и, следовательно, для выполнения условия y(n)<1 (отсутствие переполнения), должно выполняться приведенное выше условие физической реализуемости.

2.2. Программирование цифровых рекурсивных фильтров

Прямая форма записи уравнения цифрового фильтра во временной области выглядит следующим образом (прямая форма 1):

N 1

M 1

y(n) = ak x(n k)

bk y(n k)

k =0

k =1

Передаточная функция такого цифрового рекурсивного фильтра (ЦРФ) или фильтра с бесконечной импульсной характеристикой (БИХ или IIR – Infinite Impulse Response) в Z–области записывается уравнением:

 

y(z)

 

 

N1ak zk

H (z) =

=

 

k =0

x(z)

 

M 1

 

 

 

 

 

1

+ bk zk

 

 

 

 

k =1

Лекции по ППО ВС РВ © Клюс В.Б.

17

Имеется и другая форма (называемая канонической) уравнения ЦРФ с использованием промежуточных переменных d:

 

 

 

 

 

 

 

 

 

M 1

 

 

 

 

 

 

 

 

 

 

 

 

 

d(n) = x(n) bk d(n k)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k =1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y(n) = ak d(n k)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k =0

 

 

 

 

 

 

 

 

 

Обе эти формы для случая N = M могут быть представлены следующими

схемами (рис.28 .4):

 

 

 

 

 

 

 

 

 

 

 

 

 

x(n)

 

a0

 

 

 

y(n)

x(n)

 

 

 

d(n) a0

y(n)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z-1

 

a

 

 

-b

1

Z-1

 

 

-b

1

 

Z-1 a

 

 

 

 

 

 

 

x(n-1)

 

1

 

 

 

 

y(n-1)

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d(n-1)

 

 

 

Z-1

 

 

 

 

 

 

 

Z-1

 

 

 

Z-1 a

 

 

a

 

 

-b

2

 

 

-b

2

 

 

 

 

 

 

 

 

x(n-2)

 

2

 

 

 

 

y(n-2)

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d(n-2)

 

 

 

 

 

 

 

 

-bN-2 y(n-N+2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x(n-N+2)

aN-2

 

 

-bN-2

 

aN-2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d(n-N+2)

 

 

 

-1

 

 

 

 

 

 

 

-1

 

 

-1

 

Z

a

 

 

-b

N-1

Z

 

 

-b

N-1

Z a

 

 

 

 

 

x(n-N+1)

 

N-1

 

y(n-N+1)

 

 

 

 

N-1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d(n-N+1)

Рисунок2.4. Граф-схемы цифровых рекурсивных фильтров

Прямая форма требует 2N+1 коэффициентов и 2N+1 рабочих ячеек для переменных X, Y (переменные x(n), y(n) могут храниться в одной ячейке памяти). При канонической реализации число переменных в два раза меньше (N+2).

Коэффициенты a и b в обеих формулах одинаковые, в чем можно убедить-

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

 

 

y(n)

= a0d(n)

+ a1d(n-1)

+ a2d(n-2)

 

 

d(n)

= x(n)

– b1d(n-1)

– b2d(n-2)

 

 

d(n-1)

= x(n-1)

– b1d(n-2)

– b2d(n-3)

 

 

d(n-2)

= x(n-2)

– b1d(n-3)

– b2d(n-4)

 

 

y(n)

= a0[x(n)

– b1d(n-1)

– b2d(n-2)]

+

 

 

+ a1[x(n-1)

– b1d(n-2)

– b2d(n-3)]

+

 

 

+ a2[x(n-2)

– b1d(n-3)

– b2d(n-4)]

=

 

 

= a0x(n)

+ a1x(n-1)

+ a2x(n-2)

 

 

– b1[a 0d(n-1)

+ a1d(n-2)

+ a2d(n-3)]

 

 

– b2[a 0d(n-2)

+ a 1d(n-3)

+ a 2d(n-4)]

=

 

 

= a0x(n)

+ a1x(n-1)

+ a2x(n-2)

 

 

– b1y(n-1)

– b2y(n-2)

 

 

 

 

Лекции по ППО ВС РВ © Клюс В.Б.

18

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

В качестве примера можно рассмотреть программирование ЦРФ второго порядка с прямой и косвенной адресацией (в отличие от ЦНФ обнуление пре-

дыстории обязательно для ЦРФ).

мл.

 

DN

Расположение отсчетов предыстории в памяти

данных аналогично их расположению у нерекур-

ст.

DNM1

сивного фильтра.

DNM2

 

 

;Линейная программа ЦРФ (каноническая форма) 2-го порядка

START:

.text

#XN, DP

; секция программы

 

LD

; сделать текущей страницу с XN

 

SSBX

SXM

; режим расширения знака

 

 

SSBX

FRCT

; режим умножения дробных чисел

 

RSBX

OVM

; нет коррекции переполн. в АЛУ

 

ORM

#1, PMST

; коррекция перепол. при записи

 

LD

#0, A

; обнуление предыстории (А:=0)

 

STL

A, DNM1

; DNM1:=0

 

 

STL

A, DNM2

; DNM2:=0

 

; программа ЦРФ (ввод и вывод через параллельный порт)

 

NXIPT:

PORTR

PA2, XN

; ввод из порта x(n)

 

 

; вычисление d(n)

 

 

 

LD

XN, 16, A ; x(n) в старшую часть акк.А

 

 

LD

DNM1, T

; Т:=d(n-1)

 

 

MAS

B1, A

; A:=A-T*b1=A-b1*d(n-1)

 

 

LD

DNM2, T

; T:=d(n-2)

 

 

MASR

B2, A

; A:=A-T*b2=A-b2*d(n-2) и окр.

 

 

STH

A, DN

; d(n)=x(n)-b1*d(n-1)-b2*d(n-2)

 

; вычисление y(n)

; A:=T*a2=a2*d(n-2) [T:=d(n-2)]

 

MPY

A2, A

 

LTD

DNM1

; T:=d(n-1), d(n-1)Æd(n-2)

 

 

MAC

A1, A

; A:=A+T*a1=A+a1*d(n-1)

 

 

LTD

DN

; T:=d(n), d(n)Æd(n-1)

 

 

MACR

A0, A

; A:=A+T*a0=A+a0*d(n) и округл.

 

STH

A, XN

; y(n)Æx(n)

 

 

BD

NXIPT

; задержанный переход на NXIPT

 

PORTW

XN, PA2

;2w вывод в порт y(n)

 

XN

.data

0

; секция данных

 

.WORD

; вход и выход фильтра

 

DN

.WORD

0

; предыстория фильтра

 

DNM1

.WORD

0

 

 

DNM2

.WORD

0

 

 

 

 

Лекции по ППО ВС РВ © Клюс В.Б.

19

A0

.WORD

0

;

коэффициенты фильтра

A1

.WORD

0

 

 

A2

.WORD

0

 

 

B1

.WORD

0

 

 

B2

.WORD

0

 

 

; Программа ЦРФ N-го порядка с использованием MACP и MACD

START:

.text

#0, DP

;

секция программы

LD

;

сделать текущей 0-ю страницу

 

SSBX

SXM

;

режим расширения знака

 

SSBX

FRCT

;

режим умножения дробных чисел

 

RSBX

OVM

;

нет коррекции переполн. в АЛУ

 

ORM

#1, PMST

;

коррекция перепол. при записи

 

STM

#DNMN1, AR2 ;

AR2:= адрес d(n-(N-1))

 

RPTZ

A, #N-2

;

А:=0 и повторить N-1 раз

 

STL

A, *AR2-

;

обнуление предыстории d(n-k)

; программа ЦРФ (ввод и вывод через последовательн. порт)

NXIPT:

LD

McDRR, 16, A ; ввод из порта x(n) в AH

 

; вычисление d(n)

 

AR2:= адрес d(n-(N-1))

 

STM

#DNMN1, AR2 ;

 

RPT

#N-2

;

повторить N-1 раз

 

MACP

*AR2-,BNM1,A ; A:=A+(AR2)*(-bk)=A-bk*d(n-k)

 

STH

A, *AR2

;

d(n)

 

; вычисление y(n)

 

AR2:= адрес d(n-(N-1))

 

STM

#DNMN1, AR2 ;

 

RPTZ

A, #N-1

;

А:=0 и повторить N раз

 

MACD

*AR2-,ANM1, A ; A:=A+(AR2)*ak=A+ak*d(n-k)

 

BD

NXIPT

;

задержанный переход на NXIPT

 

STH

A, McDXR

;1w вывод в порт y(n)

ANMN1

NOP

0

;1w пустая команда

.WORD

 

 

A1

. . .

 

 

.WORD

0

;

коэффициенты фильтра

A0

.WORD

0

BNMN1

.WORD

0

 

 

B1

. . .

 

 

.WORD

0

;

секция данных

DN

.data

0

.WORD

;

предыстория фильтра

DNM1

.WORD

0

 

 

DNMN1

. . .

 

 

.WORD

0

;

резервная пустая ячейка

XN

.WORD

0

; ПРИМЕЧАНИЕ: коэффициенты ak и bk в памяти программ и

;располагаются только в таком порядке !!!

Лекции по ППО ВС РВ © Клюс В.Б.

20

; Программа ЦРФ с использованием циклической адресации

.text

#0, DP

;

секция программы

START: LD

;

сделать текущей 0-ю страницу

SSBX

SXM

;

режим расширения знака

SSBX

FRCT

;

режим умножения дробных чисел

RSBX

OVM

;

нет коррекции переполн. в АЛУ

ORM

#1, PMST

;

коррекция перепол. при записи

STM

#DNMN1, AR2 ;

AR2:= адрес d(n-(N-1))

RPTZ

A, #N-3

;

А:=0 и повторить N-2 раз

STL

A, *AR2-

;

обнуление предыстории d(n-k)

STL

A, *AR2

;

обнуление предыстории d(n-1)

STM

#1, AR0

;

AR0:= шаг в кольцевом буфере

STM

#N, BK

;

размер кольцевого буфера

; программа ЦРФ (ввод и вывод через последовательн. порт)

NXIPT:

LD

McDRR, 16, A ; ввод из порта x(n) в AH

 

; вычисление d(n)

; AR3:= адрес b1

 

STM

#B1, AR3

 

RPT

#N-2

; повторить N-1 раз

 

MAS

*AR2+0%,*AR3+, A ; A:=A-d(n-k)*bk

 

STH

A, *AR2

; d(n)

 

; вычисление y(n)

; А:=0 и повторить N раз

 

RPTZ

A, #N-1

 

MAC

*AR2+0%,*AR3+, A ; A:=A+d(n-k)*ak

 

BD

NXIPT

; задержанный переход на NXIPT

 

STH

A, McDXR

;1w вывод в порт y(n)

 

NOP

 

;1w пустая команда

 

.data

32

; секция данных

DN

.ALIGN

; выравнивание для N<32

.WORD

0

; предыстория фильтра

DNM1

.WORD

0

 

DNMN1

. . .

 

.WORD

0

; коэффициенты фильтра

B1

.WORD

0

BNMN1

. . .

 

.WORD

0

 

A0

.WORD

0

 

ANMN1

. . .

 

.WORD

0

 

; ПРИМЕЧАНИЕ:

коэффициенты ak и bk в памяти данных и

;должны располагаться в указанном порядке,

;при этом порядок ak, bk и d(n-k) может быть

;и обратным, тогда AR0:=-1 и меняется

;адресация на *AR3-

Недостаток канонической формы – возможно переполнение, недостаток прямой – в 2 раза больше памяти.

Лекции по ППО ВС РВ © Клюс В.Б.

21

Соседние файлы в папке 28-12-2014_12-52-57