Как работает АОН.
Автор:
Елисеев Александр ase@takas.lt |
Простой пример
оптимального решения. 1
Оптимальное
обнаружение сигнала о котором кое-что известно. 3
Почему
некоторые вещи лудше делать в SIMULINK.. 5
Реализация ядра
алгоритма на PIC16C58. 7
Этот материал посвящен теории АОНа, но не так
называемому “протоколу” (форматы, частоты, временные параметры и т.д.) а именно
алгоритму. Возможно, несколько тяжеловат. Здесь хотелось попробовать возможности
последних версий математических пакетов MathCad 2000 и MatLab 5.2-Simulink 2.2. Поэтому если кто-то еще их не освоил, то
воспользоваться содержимым этого материала будет затруднительно. А освоить
названные программы я бы рекомендовал хотябы для того, чтобы пожалеть свое
время, когда вы бесполезно его тратите с Pascal, С++ или им подобным на программирование того,
что уже запрограммировано.
Данное описание работы алгоритма является некоей
реконструкцией получившейся в результате анализа дизассемблированных дампов
нескольких версий АОНов, изучения нескольких глав из теории радиотехнических
систем и беглого просмотра учебника по теории вероятностей. Следовательно, не
стоит ожидать здесь научной корректности и полных решений. Хотя расчетные данные
полученные с использованием описанной ниже модели позволили сделать не один АОН
на платформах Z80, I8080, MSC51, Z86, PIC16.
Итак, здесь представлен алгоритм известный под
названием “корреляционный”, поскольку существуют и другие, может быть не менее
эффективные, но только не на 8-и разрядных микроконтроллерах. Алгоритм основан
на теории оптимального обнаружения. Для объяснения сущности оптимального
обнаружения рассмотрим простую ситуацию (формулы и графики были построены в
среде MathCad 2000 и можно скачать файл в исходном
формате).
Допустим мы имеем о сигнале следующую информацию:
сигнал может иметь только два уровня напряжения 0 или 1 с равной вероятностью,
смена уровней происходит мгновенно и в случайные моменты времени, при проходе по
линии связи сигнал складывается с белым шумом с известными законом плотности
распределения вероятностей. Задача - периодически измерять значение приходящего
сигнала искаженного шумом и делать оценку его истинного значения при минимуме
ошибок.
|
-количество
выборок | |
|
-вероятность появления сигнала с уровнем
1 | |
|
-используем
биноминальное распределение для моделирования сигнала | |
Гистограмма
сигнала. h
– массив данных дл построения гистограммы (см. Исходный mcd
файл
) | ||
| ||
|
-
смоделируем шум где m - мат ожидание , s- стандартное
отклонение | |
Гистограмма
шума | |
|
- выходной
сигнал равен смеси сигнала с шумом |
Гистограмма
смеси сигнал-шум |
Понятно, что плотность распределения наблюдаемого
сигнала подчиняетс закону полной вероятности и выражается
формулой
|
|
|
- здесь:
и
- условные плотности вероятности наблюдаемого
сигнала при условии что истинный имеет уровень 0 и 1 соответственно.
Задача наблюдателя определить некоторую границу
относительно которой принимать решение о истинном значении сигнала. Граница
должна быть оптимальной в смысле наименьшего количества ошибок в процессе оценки
сигнала.
Допустим:
|
- выбранна
граница. Если значение сигнала превысило границу, то считаем, что истинное
значение равно 1, если нет, то считаем истинным значением
0 |
| |
|
При данной
границе вероятность ошибки будет равна суме площадей заштрихованных красным и
зеленым цветом. Площадь красной области равна вероятности суждения о том, что
истинное значение сигнала равно 0 в то время как он равен 1. Площадь зеленой
области равна вероятности суждения о том, что истинное значение сигнала равно 1
в то время как он равен 0.
Очевидно что
минимальная вероятность ошибки будет в том случае если граница будет выбрана в
той же точке где пересекаются кривые двух распределений. Отношение
p1(x)/p0(x)
называют
отношением правдоподобия. Оно показывает насколько првдоподобнее предположение о
приеме сигнала 1 чем альтернативное предположение о приеме сигнала 0.
Данный подход
называют байесовым методом, упоминание о котором можно встретить в некоторых
публикациях по АОНам.
Однако вс
сложность алгоритма определяется не им.
В применении к
АОНу в качестве измеренного уровеня сигнала выражаемого числом выступает
реализация сигнала на интервале времени выражаемая функцией.
Рассмотрим сигнал
генерируемый при передаче цифры 1 в стандарте АОНа на интервале 10
мс
|
|
|
-временной интервал |
|
-количество выборок | ||||
|
|
| |||||||
| |||||||||
|
|
| |||||||
|
- наложим шум где m – мат. ожидание , s- стандартное отклонение | ||||||||
- верхний график, реализация сигнала в смеси с шумом - нижний, реализация шума | |||||||||
Вся крива
изображающая сигнал в совокупности называется реализацией случайной функции.
Свойства случайных функций изучаются в разделе случайные функции теории
вероятностей. Наиболее полезный раздел - спектральная теория стационарных
случайных функций. К сожалению это довольно обьемная теория и в двух словах ее
здесь не перескажешь. Достаточно сказать, что сигнал рассматривается как
стационарна случайная функция (поскольку случайны фаза и амплитуда), а шум как
белый гаусовский шум с ограниченным спектром.
В случае с АОНом
нам надо принять решение является ли наблюдаемая нами реализация шумом или
смесью сигнала с шумом. Под сигналом мы здесь принимаем одну из тональных частот
присутствующую в сигнале АОНа. Следовательно нам надо принять 6-ть решений для
каждой частоты: 700, 900, 1100, 1300, 1500, 1700 Гц.
Доказано,
что плотность вероятности реализации гаусовского шума
n1 (t) выражается
формулой | |
|
Где
N0 - спектральная
интенсивность шума, k -
постоянный множитель не зависящий от t . Индекс 1
при n обозначает
одномерное распределение. |
Если проще
сказать, то есть формула с помощью которой можно вычислить отношение
правдоподобия основываясь на реализации сигнала на интервале времени и знании о
интенсивности шума. Отношение правдоподобия L(u) выглядит следующим
образом:
|
Где
u1 (t) - реализация принятого сигнала,
v1 (t ) - реализаци ожидаемого сигнала, k - постоянный множитель не зависящий от
t , N0 - спектральная интенсивность шума.
Запишем формулу
ожидаемого сигнала
|
Понятно, что у
ожидаемого сигнала фаза представляет собой случайный параметр. Тогда отношение
правдоподобия является функцией еще одной переменной φ - фазы ожидаемого сигнала. Для устранени
неопределенности проводят статистическое усреднение отношения правдоподобия по
этой переменной путем интегрирования. В результате чего приходят к формуле
достаточно сложной:
|
Где I0 - модифицированная функция Бессел
первого рода нулевого порядка. V1 (t) - амплитуда ожидаемого сигнала.
Из формулы видно,
что выражение под корнем можно вывести из всех остальных составляющих в формуле,
таким образом определив структуру оптимального
обнаружителя
|
Интересно, что
функция взаимно-корреляционного устройства может быть выполнена фильтром
импульсная характеристика которого является зеркальным отражением ожидаемого
сигнала. (т.к. операция свертки осуществляемая фильтром и корреляции описываются
одинаковыми математическими формулами). Поэтому в литературе часто можно
встретить описание оптимальных фильтров (не путать с оптимальными фильтрами не в
контексте оптимального обнаружения).
Приведенна
формула позволяет определить структуру оптимального фильтра, но в реальных
условиях недостаточно адекватна. С одной стороны реальный шум весьма далек от
белого, с другой, здесь не учтено влияние помех и соседних частот посылки АОН.
Поэтому остается необходимость в иммитационном моделировании, которое дало бы
ответы на вопрос о выборе оптимальной границы в условия влияния разных факторов
не учитываемых формулой.
Но для начала
проверим какое влияние окажет на спектр сигнала предельное ограничение его
амплитуды которое производится компаратором.
|
сформируем
предельно ограниченный сигнал |
|
- спектр
входного сигнала |
|
- спектр
предельно ограниченного сигнала |
|
|
|
Как видно, с
небольшим масштабированием, спектр преобразованного сигнала мало изменился по
сравнению со спектром исходного. Эта особенность с успехом применяется в АОНах,
где вместо АЦП применяют компаратор. С другой стороны предельное ограничение
позволяет избавиться от неопределенности амплитуды сигнала и шума, что делает
более надежной работу оптимального обнаружителя
Продолжать можно
и в Mathcad, но количество формул и специальных
символов перевалит тот предел за которым теряется смысл изложения. Кроме того,
попытка иммитационного моделирования в MathCad приведет все к тому же традиционному
программированию, но только на довольно специфичном и ограниченом языке. Пакет
SIMULINK входящий в более общий комплекс
MatLab позволяет создавать модели алгоритмов
обработки сигналов представляя отдельные математические и логические операции в
виде блоков. Последовательность выполнения определяется однонаправленными
связями между блоками. Связи могут объединяться в шины (толстые линии) , а один
блок может параллельно и независимо обслуживать все связи в шине, что называется
векторизацией. Таким образом, можно легко осуществить, как изменение параметров
модели так и ее структуры. Вообщем моделирование несколько смахивает на
аналогичные действия в пакетах моделирования электронных схем MicroCap, WorkBench и т.д..
Ниже представлена
схема созданная в среде SIMULINK и изображающая модель процесса генерирования и
декодирования посылки АОН. Модель, естественно, отражает математическую основу
процесса, а не скажем, физическую структуру некоего абстрактного устройства,
т.е. здесь не стоит искать аналогии с функциональными электронными блоками, хотя
в некоторых случаях это возможно. Как видно из схемы здесь можно варьировать
множество параметров модели включая: период дискретизации сигнала в АОНе,
длительность анализируемой выборки, кодируемую числовую последовательность,
продолжительность частотного пакета, мощность шума, амплитуду частот в пакете,
время моделирования, гистерезис компаратора АОНа. Не составляет труда заменить
компаратор в модели на АЦП .
Результатом
моделирования является вычисляемый параметр изменяющийся после каждой
анализируемой выборки и определяющий уверенность приема сигнала определенной
частоты в данный момент.
На выходе модели стоит блок вывода графиков
уверенности приема всех 6-ти частот стандарта АОНа после каждого цикла анализа
поступающего сигнала. А все это ради того, чтобы определить где же та граница
которая позволит принять решение о приеме ожидаемого сигнала и возможно ли ее
определение вообще при заданных условиях.
Исправление 00.08.31:
В блоке “Фазы эталонных сигналов” должно быть
записано Pi/2 вместо Pi/4
Операция
умножения требующаяся при расчете корреляции крайне нежелательна в применении к
микроконтроллерам поскольку требует значительного времени на выполнение. Но для
двоичных данных поступающих с компаратора ее можно заменить операцией сложения
по модулю 2 ( обозначается XOR или Å).
Данная операция применяется во многоих
АОН-ах. В приведенном здесь примере операция XOR напрямую не применяется , а
заменена операциями сравнения и инкремента в связи с необходимостью экономии
времени. Часто алгоритм упрощают не
включая в него квадратор, к значительному ухудшению результатов это не приводит.
Для ускорения вычислений во многих АОН-ах применяют таблицы эталонных сигналов.
Для двоичных данных, это значения
единичных меандров синусов и косинусов 6-и частот для каждого такта принимаемого
сигнала. Следовательно на каждый такт необходима 12-и битная константа содержащая по биту
на sin и cos каждой частоты. Для оптимального использования
памяти в приведенной программе константы храняться в таблице с наложением первой
тетрады четной по порядку константы на последнюю пустую тетраду
нечетной.
Контроллер
работает от RC генератора с частотой около 5
МГц.
На внешний вход
таймера подается стабильная частота 32768 Гц, она является основой для тактовой
частоты выборки сигнала.
; Рабочие переменные
F700_1
EQU 10 – массив значений
корреляции для sin-ов
и cos-ов
частот
F700_2
EQU
11
F900_1
EQU
12
F900_2
EQU
13
F1100_1
EQU
14
F1100_2
EQU
15
F1300_1
EQU
16
F1300_2
EQU
17
F1500_1
EQU
18
F1500_2
EQU 19
F1700_1
EQU
1A
F1700_2
EQU
1B
N1
EQU
1C
N2
EQU 1D
BYTE1
EQU 1C
– Первая половина эталонной константы
BYTE2
EQU 1D
– Вторая половина эталонной константы
MAX_L EQU 1E
POINTER
EQU 1E
– Указатель на таблицу эталонных констант
CNT_SAMPL
EQU 1F
– Счетчик тактов
DETECT:
CLRWDT
MOVLW B'00100000'
; Внешний тактовый сигнал по перепаду 0/1
OPTION
;
сигнал
делится на 2
MOVLW
10H
MOVWF
FSR
DET1:
CLRF INDF ; Очистить
рабочие ячейки
INCF FSR
BTFSS FSR,5
GOTO
DET1
CLRF
FSR
MOVLW .152 ; Загрузка
количества тактов в выборке
MOVWF CNT_SAMPL
; Цикл выборки. Сигнал считывается каждые 61.0325
мкс
WAIT_CIKL:
MOVF TMR0,W ; Приход внешнего сигнала определяется,
когда
BTFSC STATUS,Z ;
таймер принял значение отличное от нуля
GOTO
WAIT_CIKL
CLRF
TMR0
MOVF
POINTER,W
CALL TABL ; Выборка
эталонной
константы
MOVWF
BYTE1
INCF
POINTER
MOVF
POINTER,W
CALL
TABL
MOVWF
BYTE2
; SIG – вход
сигнала
BTFSC SIG ; Если
сигнал равен биту в эталоне то этот бит превратить в 0
COMF BYTE1
BTFSC
SIG
COMF BYTE2
; Скоректировать
размещение для нечетных
по порядку констант
BTFSS CNT_SAMPL,0
GOTO
DO_SUM
INCF
POINTER
SWAPF
BYTE1,W
ANDLW
B'11110000'
MOVWF
BYTE1
SWAPF
BYTE2
MOVF
BYTE2,W
ANDLW
B'00001111'
IORWF
BYTE1
DO_SUM:
;
Подсчет величин кореляции
;
Инкрементировать
величину корреляции каждый раз когда сигнал совпадает с
эталоном
BTFSS BYTE1,7
INCF
F700_1
BTFSS
BYTE1,6
INCF
F700_2
BTFSS
BYTE1,5
INCF
F900_1
BTFSS
BYTE1,4
INCF
F900_2
BTFSS
BYTE1,3
INCF
F1100_1
BTFSS
BYTE1,2
INCF
F1100_2
BTFSS
BYTE1,1
INCF
F1300_1
BTFSS
BYTE1,0
INCF
F1300_2
BTFSS
BYTE2,7
INCF
F1500_1
BTFSS
BYTE2,6
INCF
F1500_2
BTFSS
BYTE2,5
INCF
F1700_1
BTFSS
BYTE2,4
INCF
F1700_2
DECFSZ CNT_SAMPL
GOTO WAIT_CIKL
; 60 тактов контроллера на один такт выборки. МАКСИМУМ!
;
Коррекция смещения результатов
MOVLW F700_1 ; Установит указатель на
первую рабочую ячейку
MOVWF FSR
MOVLW
.12
MOVWF CNT_SAMPL
;Количество циклов 12
MOVLW .76 ;Вычитать константу 152/2=76
; 5
тактов
DET4:
SUBWF INDF,F ;
( INDF - W )
BTFSS
STATUS,C
COMF
INDF
INCF
FSR
DECFSZ
CNT_SAMPL,F
GOTO DET4
; 7*12 = 84
такта
;
Вычисление и поиск пары максимальных
корреляций
CLRF
SAMPL_CTN
CLRF
MAX_L
MOVLW B'00100000' ; Указатель
частоты
MOVWF CNT_SAMPL ; Загрузить указатель
частоты
; 4
такта
;
Поиск
двух максимальных величин корреляции
DET5:
DECF
FSR
MOVF
INDF,W
DECF
FSR
ADDWF
INDF,F
MOVF
SAMPL_CTN,W
SUBWF INDF,W ; ( [INDF] - SAMPL_CTN ) C=1 IF
INDF>=SAMPL_CTN
BTFSS
STATUS,C
GOTO DET6
MOVF SAMPL_CTN,W
; Сдвиг предыдущего верхнего максимума
MOVWF MAX_L ; в нижний максимум
MOVF N1,W ;
Сдвиг соответствующего указателя частоты
MOVWF N2
;
MOVF INDF,W
MOVWF SAMPL_CTN
MOVF
CNT_SAMPL,W
MOVWF N1
GOTO DET7 ;
Если величина попала в верхний максимум то она
DET6:
; уже не может быть записана в нижний
MOVF
MAX_L,W
SUBWF INDF,W ; ( [INDF] -
MAX_L ) C=1 IF INDF>=MAX_L
BTFSS
STATUS,C
GOTO
DET7
MOVF
INDF,W
MOVWF
MAX_L
MOVF
CNT_SAMPL,W
MOVWF
N2
DET7:
BCF
STATUS,C
RRF
CNT_SAMPL,F
BTFSS
STATUS,C
GOTO
DET5
; 22*6 = 132
такта
; Исходя
из найденых частот с максимальными величинами корреляции
; по таблице
вычисляем соответствующую цифру
MOVF N1,W
IORWF N2,F
CLRF
SAMPL_COD
DET8:
MOVF
SAMPL_COD,W
CALL
TABL_CIPH
SUBWF N2,W ; N2 -
W
BTFSC
STATUS,Z
GOTO
DET9
INCF
SAMPL_COD
MOVF
SAMPL_COD,W
XORLW
.12
BTFSS
STATUS,Z
GOTO
DET8
MOVLW
0FFH
MOVWF
SAMPL_COD
CLRF
SAMPL_CTN
; 16*12 =
192 такта
DET9:
; Выход
SAMPL_COD
содержит цифру из диапазона 0..Bh,
если 0FFh,
то цифра не определена
;
Максимальная продолжительность обработки цифры 417
тактов
RETLW 0
Файл AONmodel.mcd содержит исходные формулы описывающие процесс
оптимального обнаружения
Файл AONmodel.mdl содержит модель в формате SIMULINK 2.2
Валеев
В.Г.
ОБНАРУЖЕНИЕ СИГНАЛОВ НА ФОНЕ НЕГАУССОВСКИХ
ПОМЕХ
Валеев В.Г.,
Язовский А.А.
НЕЛИНЕЙНЫЙ
АВТОКОМПЕНСАТОР ПОМЕХ
Е.В.
Курбатова, Ю.А. Нифонтов
АДАПТИВНОЕ ПОДАВЛЕНИЕ ПОМЕХ
В.А.Данилов, В.Н.Ефименко,
Д.В.Николаенко
ОСНОВЫ
ТЕОРИИ ПТИМАЛЬНОГО ОБНАРУЖЕНИЯ СИГНАЛОВ ПРИ НЕГАУССОВСКИХ ПОМЕХАХ
УЗКОПОЛОСНОГО ТИПА