- •СОДЕРЖАНИЕ
- •1.1. Предмет, цели и задачи курса
- •1.3. Прямой табличный метод
- •1.4. Метод линейной интерполяции
- •2. ПРОГРАММИРОВАНИЕ ЦИФРОВЫХ ФИЛЬТРОВ
- •2.1. Программирование цифровых нерекурсивных фильтров
- •2.2. Программирование цифровых рекурсивных фильтров
- •2.3. Параллельное и последовательное соединение ЦРФ
- •2.4. Точностные характеристики цифровых фильтров
- •2.4.1. Квантование передаточных функций дискретных систем
- •2.4.2. Ошибки квантования в цифровых фильтрах
- •3. ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ БПФ
- •3.1. Два основных алгоритма БПФ, реализация базовой операции
- •3.2. Реализация частных случаев вычисления «бабочки»
- •3.3. Алгоритм двоично-инверсной адресации и перестановка данных
- •3.4. Основные алгоритмы БПФ по модулю 2 с замещением
- •3.5. Алгоритм БПФ с поблочно-плавающей запятой
- •4. ВЫПОЛНЕНИЕ ОПЕРАЦИЙ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
- •4.1. Форматы чисел с плавающей запятой
- •4.2. Операции сложения и вычитания с плавающей запятой
- •4.3. Операция умножения с плавающей запятой
- •4.4. Операция деления с плавающей запятой
- •5. МЕТОДЫ КОМПРЕССИИ ДАННЫХ
- •5.1. Два основных метода сжатия данных
- •5.3. Метод кодирования A-Law
- •5.4. Программы кодирования и декодирования данных
- •6.1. Многомерный формирующий фильтр
- •6.2. Спектральный анализ R-мерного векторного процесса
- •6.4. Матричный алгоритм управления
Начало
Инициализация
Вычисление начальных значений для k-й гармоники
нет
Нужная гармоника ?
да
Подпрограмма вычисления очередного значения синуса и косинуса
Вывод очередного значения синуса или косинуса в буфер
Выведено N отсчетов |
нет |
|
одной гармоники ? |
|
|
да |
|
|
Сформированы |
нет |
|
все гармоники ? |
|
|
да |
|
|
Конец |
|
|
Рисунок1.2. Схема алгоритма формирования последовательности синусоид
1.3. Прямой табличный метод
Все табличные методы используют таблицу синуса для углов от 0 до 360° (от 0 до 2П) длиной N отсчетов, которую можно представить в следующем виде
(табл.17 .1):
Лекции по ППО ВС РВ © Клюс В.Б. |
7 |
|
|
|
Таблица 1.1. Значения синуса из N отсчетов |
|||||
ИНДЕКС |
УГОЛ |
|
ТАБЛИЦА СИНУСА |
|
|
|||
0 |
0×360°/N |
S[0] = sin(0°/N) |
|
|
|
|
||
1 |
1×360°/N |
S[1] = sin(360°/N) |
|
|
|
|
||
2 |
2×360°/N |
S[2] = sin(720°/N) |
|
|
|
|
||
… |
… |
|
|
… |
|
|
|
|
N-2 |
(N-2) |
× |
° |
S[N-2] = sin((N-2) |
× |
360 |
° |
/N) |
|
360 /N |
|
|
|||||
N-1 |
(N-1) |
× |
° |
S[N-1] = sin((N-1) |
× |
360 |
° |
/N) |
|
|
360 /N |
|
|
||||
Данные такой таблицы позволяют получить точные значения синуса с относительными частотами ωk = 2Πk/N кратными минимальной частоте (частоте
первой гармоники) ω1 = 2Π/N, где k – номер гармоники, равный шагу в таблице (целое число).
Но данная таблица позволяет также с некоторым приближением сформи-
ровать синусоидальный сигнал с частотой не кратной ω1. Используя индекс в таблице как угол и параметр (действительное число) как величину шага, прямой табличный метод может быть записан в виде выражения:
S[Int{mod( ·n,N)}] для n = 1, 2, 3, 4, … |
(1.6) |
где Int(a) – целая часть от числа a, mod(a,b) – остаток при делении нацело a/b (т.е. значение в интервале от 0 до N-1).
Это можно проиллюстрировать следующим образом (рис.17 .3):
Выходное Истинное значение значение синуса
Конец |
4.2 |
4.8 |
5.4 |
6.0 |
6.6 |
7.2 |
7.8 |
|
|
|
|
|
|
|
Рисунок1.3. Прямой табличный метод формирования синуса с дробным шагом Реальная частота формируемого сигнала f зависит от интервала дискрети-
зации t и величины шага и определяется выражением: |
|
f = / (t·N) [Hz] |
|
Следует помнить, что согласно теореме Котельникова |
≤ N/2 . |
На рисунке N = 8, = 0.6 и если t = 0.000125 с (125 мкс), то частота сигна- |
|
ла будет равна: |
|
f = 0.6 / (8·0.000125) Hz = 600 Hz |
|
Лекции по ППО ВС РВ © Клюс В.Б. |
8 |
Алгоритм формирования синусоиды заключается в использовании дробных чисел при вычислении индекса, но для индексации в таблице используется только целая часть. Число разрядов целой части должно соответствовать длине таблицы, а дробной – числу промежуточных гармоник. Например, для таблицы из 8-ми точек и трех промежуточных гармоник (шаг ¼) необходимо 3 разряда в целой части и два в дробной.
Недостатком метода являются довольно большие нелинейные искажения, возникающие из-за того, что энергия сигнала распределяется между основной гармоникой с частотой f и гармоническими (nf) и субгармоническими (nf/m) составляющими (где n и m – целые числа).
Полные нелинейные искажения (Total Harmonic Distortion – THD) определяются выражением:
THD = энергия паразитных гармоник / полная энергия сигнала
Чем больше отсчетов в таблице, тем меньше нелинейные искажения. Значения величин нелинейных искажений в зависимости от длины таблицы и шага приведено в табл.17 .2:
Таблица 1.2. Нелинейные искажения
|
Значение THD для таблицы длиной |
||
|
32 |
64 |
128 |
2.00 |
0.00000024 |
0.00000048 |
0.00000054 |
2.25 |
0.00300893 |
0.00075269 |
0.00018859 |
2.50 |
0.00240751 |
0.00060219 |
0.00015080 |
2.75 |
0.00300917 |
0.00075239 |
0.00018835 |
3.00 |
0.00000024 |
0.00000018 |
0.00000012 |
8.25 |
0.00300924 |
0.00075204 |
0.00018889 |
11.625 |
0.00315807 |
0.00079078 |
0.00020128 |
1.4. Метод линейной интерполяции
Данный метод является модификацией предыдущего и в его основе лежит точно такая же таблица синуса и обычная линейная интерполяция функции между двумя точками.
Данный метод описывается выражением
sin(2Π(i+d)/N) ≈ sin(2Πi/N)+d·[sin(2Π(i+1)/N)–sin(2Πi/N)] = S(i)+d·[S(i+1)–S(i)]
где i – целая часть аргумента (индекс в таблице синуса), а d – дробная часть (коэффициент пропорциональности).
Данный метод может быть проиллюстрирован следующим образом
(рис.17 .4):
Лекции по ППО ВС РВ © Клюс В.Б. |
9 |
Интерполированный |
Реальное |
синус |
значение |
5 |
6 |
7 |
8 n |
0 |
1 |
|
2 |
3 |
4 |
|
0,8 |
1,6 |
2,4 |
3,2 |
|
|
i |
d |
|
|
|
Рисунок1.4. Интерполяционный метод формирования синуса с дробным шагом
Значения величин нелинейных искажений для данного метода в зависимости от длины таблицы и шага приведены в табл.17 .3 (как видно из таблицы, уже при 128 точках значение коэффициента нелинейных искажений в этом случае на несколько порядков меньше чем в предыдущем).
Таблица 1.3. Нелинейные искажения
|
Значение THD для таблицы длиной |
||
|
32 |
64 |
128 |
2.00 |
0.00000024 |
0.00000048 |
0.00000054 |
2.25 |
0.00169343 |
0.00018884 |
0.00000054 |
2.50 |
0.00135476 |
0.00015055 |
0.00000012 |
2.75 |
0.00169379 |
0.00018771 |
0.00000101 |
3.00 |
0.00000024 |
0.00000018 |
0.00000012 |
8.25 |
0.00169361 |
0.00018806 |
0.00000006 |
11.625 |
0.00177808 |
0.00019815 |
0.00000155 |
Для вычисления коэффициента нелинейных искажений можно воспользоваться выражением:
THD = (E(total)–E(fundamental)) / E(total)
Где E(total) и E(fundamental) значения полной энергии и энергии основной гармоники сигнала соответственно. Расчет энергии сигнала необходимо вести на интервале, включающем целое число гармоник. Например, при шаге =1,5 и длине таблицы 128 число обрабатываемых отсчетов n должно быть таким, чтобы величина n была кратна 128. Минимальное значение n=256 (256×1,5=384=128×3). В общем случае, если =А/В, где А и В целые числа, минимальное значение n будет равно B×N точек. Полная энергия сигнала считается по формуле
1 BN −1
E(total) = BN n∑=0 x2 (n) ,
а энергия основной гармоники по формуле
Лекции по ППО ВС РВ © Клюс В.Б. |
10 |
E( fundamental) = BN1 (| X (k) |2 +| X (BN −k) |2 )= BN2 | X (k) |2 ,
где X(k) – изображение Фурье k-й гармоники
BN −1
X (k) = ∑x(n)exp(− j(2π / N)nk) .
n=0
Значения THD, приведенные в таблицах, были рассчитаны по вышеприведенным формулам на ПЭВМ с использованием арифметики с плавающей запятой с двойной точностью.
Лекции по ППО ВС РВ © Клюс В.Б. |
11 |
