Skip to content
ЦОС · Тема 7 · Филтрите в процесора

Закръглени коефициенти, мащабиране и гранични цикли

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

≈ 5 мин четене∿ 6 живи уредаСамопроверка: 4 въпроса

Квантуване на коефициентите ​

Филтърът от тема 5 е изчислен с коефициенти като 0,53127841… В процесора те се закръглят до B бита. Тогава полюсите и нулите се местят – и АЧХ вече не е тази, която проектирахме. Полюс близо до окръжността може дори да излезе навън – филтърът става неустойчив. Колкото по-тесен и стръмен е филтърът, толкова по-чувствителен е.

Елиптичен НЧФ, 5-и ред
B = 8 бита за коефициентите
✓ Квантуваният е устойчив (max |p| = 0,898022)
ЛАЧХ: точни срещу закръглени
00,20,40,60,81−80−60−40−200Ω/π (1 = fd/2)|H|, dB
точни коефициенти закръглени
ПНД: закръглените (цветни) срещу точните (сиви)
−1−0,50,51−1−0,50,51Re zIm z
✓ Устойчива – всички полюси са вътре в кръга (max |p| = 0,898)
Входът: звукът, както е записан
020040060080010001200−101t – време, msx
входът x(n)
Изходът: звукът през закръгления филтър
020040060080010001200−101t – време, msy
изходът y(n)
Фигура 1.

10 бита – почти същото. 8 бита – ЛП „провисва“ с ≈ 5 dB. 6 бита – полюс излиза от окръжността: пусни думата – изходът расте без край. Включи каскадата: при 6 бита полюсите почти не мърдат.

Каскадна срещу директна форма ​

Най-силното средство е подредбата. В директната форма всеки полюс зависи от всички коефициенти – малка грешка в един мести всички. В каскадата от биквади (звена от 2-ри ред) всяка двойка полюси зависи само от два свои коефициента. Затова БИХ филтрите почти винаги се правят като каскада.

Свирката през тесен ЛФ
B = 10 бита за коефициентите
N/2 = 4 → ред 8
⚠ Квантуваният филтър е НЕУСТОЙЧИВ (max |p| = 1,43713)
Елиптичен ЛФ около 2000 Hz
02000400060008000−100−500f, Hz|H|, dB
идеален закръглен
ПНД: закръглените срещу точните
−1−0,50,51−1−0,50,51Re zIm z
⚠ Неустойчива – полюс е излязъл от кръга (max |p| = 1,44)
Входът: звукът, както е записан
020040060080010001200−101t – време, msx
входът x(n)
Изходът расте без край – филтърът е неустойчив
020040060080010001200−100000001000000t – време, msy
изходът y(n)
⚠ Неустойчив: изходът расте без край. При пускане силата е намалена, за да не гръмне.
Фигура 2.

Директна форма, 10 бита: полюсите са навън, изходът избухва. Включи каскадата – свирката изпиуква точно когато минава през лентата (≈ 320 ms). Директната форма става устойчива чак при 20 бита; каскадата – още от 8.

При КИХ закръглянето добавя малка грешка към АЧХ (най-много (M + 1)·2⁻ᴮ/2), но не може да го направи неустойчив (няма полюси), и линейната ФЧХ остава – симетрията на коефициентите се запазва. Пример: M = 40, B = 12 → грешка ≤ 0,005, ЛЗ не пада сигурно под ≈ −46 dB.

Препълване и мащабиране ​

Филтърът може да усилва: при y(n) = x(n) + 0,975·y(n − 1) някои честоти излизат до 1/(1 − |a|) пъти по-силни. Тогава вътрешните суми не се побират в регистъра и при допълнителен код се увиват. Решението е мащабиране: входът се умножава по K = 1/G, където G е норма на импулсната характеристика до мястото на препълване.

l₁-нормата (сумата от |h|) гарантира, че никога няма препълване, но намалява сигнала повече. l₂-нормата (корен от енергията) е по-икономична – рядко може да препълни. Сега: K = 1/G = 1.

Думата през силно усилващ филтър
Входът: звукът, както е записан
020040060080010001200−101t – време, msx
входът x(n)
Изходът: звукът в 16-битовия регистър
020040060080010001200−101t – време, msy
изходът y(n)
Фигура 3.

Без мащабиране сумите се увиват – изходът е пращящ шум. С l₂ почти чисто; с l₁ винаги чисто. Мести a към 0,5 – усилването пада до 2 и мащабирането почти не трябва.

Нормите на два примера
КИХ: 0,3; −0,1; 0,4; 0,25
024600,20,4n – отчетстойност
h(n)
l₁: G = Σ|h(n)| = 1,05 → K = 1/G = 0,952
l₂: G = √Σh²(n) = 0,5679 → K = 1,76
Шумово усилване: Σh²(n) = 0,3225 (−4,91 dB)
БИХ: h(n) = aⁿ
0102030405000,51n – отчетстойност
h(n)
l₁: G = Σ|h(n)| = 40 → K = 1/G = 0,025
l₂: G = √Σh²(n) = 4,5 → K = 0,222
Шумово усилване: Σh²(n) = 20,25 (13,1 dB)
Фигура 4.

КИХ: G = 0,3 + 0,1 + 0,4 + 0,25 = 1,05 → K = 0,952. БИХ с a = 0,975: G = 40 – полюс до окръжността означава огромно усилване.

Гранични цикли ​

Граничен цикъл е трептене на устойчив рекурсивен филтър, което не спира при нулев вход (тема 6). Има два вида:

С ниско ниво (грануларни)С високо ниво (от препълване)
причиназакръглянето в обратната връзкаувиване при препълване
амплитуданяколко δ – мъртвата зонапочти целият обхват
лекповече битове; полюси по-далеч от окръжносттанасищане; мащабиране с l₁
Двата вида гранични цикли
a = 0,8125
4 дробни бита (δ = 1/16)
начално y(0) = 0,5
Мъртва зона ±0,167 → засяда на 0,125
0510152025−1−0,500,51n – отчетy(n)
безкрайна точност закръгление до δ = 1/16
c₁ = 0,875
c₂ = −0,875

y(n) = c₁·y(n−1) + c₂·y(n−2), без вход, y(−2) = −0,75, y(−1) = 0,75 · идеалният е устойчив

⚠ Граничен цикъл с високо ниво (амплитуда 0,73)
020406080−2−1012n – отчетy(n)
без препълване допълнителен код (превъртане)
Фигура 5.

Ляво: y(n) = Q[0,8125·y(n − 1)] засяда на 0,125 – в мъртвата зона (0,0625/0,375 ≈ 0,167). Дясно: с увиване трепти безкрай; смени на насищане – цикълът изчезва.

Шум от закръглените произведения ​

Произведение на две B-битови числа има 2B бита и се закръгля обратно – всеки умножител добавя малко бял шум. Той обаче минава през остатъка от филтъра и се усилва толкова, колкото е енергията Σg² на импулсната характеристика след умножителя. При y(n) = x(n) + a·y(n − 1) шумът се усилва 5,26 пъти.

Тук думата минава през това звено с 8-битови произведения, а ти слушаш само шума (усилен 30 пъти).

Шумът от произведенията
Шумовата ИХ g(n) = aⁿ
010203000,51n – отчетстойност
h(n)
b₀ = 1
a₁ = −0,9 (обратна връзка)
l₁: G = Σ|h(n)| = 10 → K = 1/G = 0,1
l₂: G = √Σh²(n) = 2,294 → K = 0,436
Шумово усилване: Σh²(n) = 5,263 (7,21 dB)
Входът: звукът, както е записан
020040060080010001200−101t – време, msx
входът x(n)
Изходът: звукът само шумът
0200400600800100012000t – време, msy
изходът y(n)
Фигура 6.

a = 0,9: шумово усилване 5,26 (7,2 dB). Дръпни a₁ към −0,99 – усилването става ≈ 50 и шумът се чува ясно; при −0,5 е само 1,33. Всеки бит повече го прави 2 пъти по-тих.

Самопроверка ​

1. Защо БИХ филтрите се реализират като каскада от биквади?

Полюсите на всяко звено зависят само от 2 коефициента – малка чувствителност. На фигура 2: ред 8 в директна форма е неустойчив до 20 бита, в каскада – устойчив от 8.

2. Може ли закръглянето на коефициентите да направи КИХ неустойчив?

Не – КИХ няма полюси (освен в z = 0); само АЧХ се влошава.

3. l₁ или l₂ – кое гарантира, че няма препълване?

l₁ (сумата от |h|) – тя е най-лошият случай. l₂ е по-икономична, но рядко може да препълни.

4. Защо звеното „засяда“ на 0,125 при a = 0,8125 и δ = 1/16?

0,8125·0,125 = 0,1016, закръглено до стъпка 0,0625 → пак 0,125. Мъртвата зона е 0,0625/(2·0,1875) ≈ 0,167 > 0,125.