Как работает АОН.

Автор: Елисеев Александр ase@takas.lt

 

[Top 100]

 

 

О чем это?. 1

Простой пример оптимального решения. 1

Оптимальное обнаружение сигнала о котором кое-что известно. 3

Почему некоторые вещи лудше делать в SIMULINK.. 5

Моделирование. 5

Результаты моделирования. 7

Реализация ядра алгоритма на PIC16C58. 7

Фрагмент программы.. 7

Приложения. 10

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

 

О чем это?

Этот материал посвящен теории АОНа, но не так называемому “протоколу” (форматы, частоты, временные параметры и т.д.) а именно алгоритму. Возможно, несколько тяжеловат. Здесь хотелось попробовать возможности последних версий математических пакетов 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) - амплитуда ожидаемого сигнала.

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

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

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

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

сформируем предельно ограниченный сигнал

- спектр входного сигнала

- спектр предельно ограниченного сигнала

Как видно, с небольшим масштабированием, спектр преобразованного сигнала мало изменился по сравнению со спектром исходного. Эта особенность с успехом применяется в АОНах, где вместо АЦП применяют компаратор. С другой стороны предельное ограничение позволяет избавиться от неопределенности амплитуды сигнала и шума, что делает более надежной работу оптимального обнаружителя

Почему некоторые вещи лудше делать в SIMULINK

Продолжать можно и в Mathcad, но количество формул и специальных символов перевалит тот предел за которым теряется смысл изложения. Кроме того, попытка иммитационного моделирования в MathCad приведет все к тому же традиционному программированию, но только на довольно специфичном и ограниченом языке. Пакет SIMULINK входящий в более общий комплекс MatLab позволяет создавать модели алгоритмов обработки сигналов представляя отдельные математические и логические операции в виде блоков. Последовательность выполнения определяется однонаправленными связями между блоками. Связи могут объединяться в шины (толстые линии) , а один блок может параллельно и независимо обслуживать все связи в шине, что называется векторизацией. Таким образом, можно легко осуществить, как изменение параметров модели так и ее структуры. Вообщем моделирование несколько смахивает на аналогичные действия в пакетах моделирования электронных схем MicroCap, WorkBench и т.д..

 

Моделирование

 

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

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

 

Исправление 00.08.31:  В блоке “Фазы эталонных сигналов” должно быть записано Pi/2 вместо Pi/4

 

 

Результаты моделирования

 

 

Реализация ядра алгоритма на PIC16C58

 

Операция умножения требующаяся при расчете корреляции крайне нежелательна в применении к микроконтроллерам поскольку требует значительного времени на выполнение. Но для двоичных данных поступающих с компаратора ее можно заменить операцией сложения по модулю 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

 

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

Валеев В.Г.
ОБНАРУЖЕНИЕ СИГНАЛОВ НА ФОНЕ НЕГАУССОВСКИХ ПОМЕХ

Валеев В.Г., Язовский А.А.
НЕЛИНЕЙНЫЙ АВТОКОМПЕНСАТОР ПОМЕХ

Е.В. Курбатова, Ю.А. Нифонтов
АДАПТИВНОЕ ПОДАВЛЕНИЕ ПОМЕХ

 В.А.Данилов, В.Н.Ефименко, Д.В.Николаенко
ОСНОВЫ ТЕОРИИ ПТИМАЛЬНОГО ОБНАРУЖЕНИЯ  СИГНАЛОВ  ПРИ НЕГАУССОВСКИХ ПОМЕХАХ УЗКОПОЛОСНОГО ТИПА