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

          

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


Контроллер работает от 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


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


Вступление. 1

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

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

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

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

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

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

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



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


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

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

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

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



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


В применении к АОНу в качестве измеренного уровня сигнала выражаемого числом выступает реализация сигнала на интервале времени выражаемая функцией.

Рассмотрим сигнал, генерируемый при передаче цифры 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, ElectronicWorkBench и т.д..



Приложения


Файл AONmodel.mcd содержит исходные формулы, описывающие процесс оптимального обнаружения

Файл AONmodel.mdl представляет собой модель в формате SIMULINK 2.2

Как работает АОН
 
Обновлено: October 4, 2005 Автор: AlexandrY



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


Допустим, мы имеем о сигнале следующую информацию: сигнал может иметь только два уровня напряжения 0 или 1 с равной вероятностью, смена уровней происходит мгновенно и в случайные моменты времени, при проходе по линии связи сигнал складывается с белым шумом с известным законом плотности распределения вероятностей. Задача - периодически измерять значение приходящего сигнала искаженного шумом и делать оценку его истинного значения при минимуме ошибок.

Как работает АОН
-количество выборок
Как работает АОН
-вероятность появления сигнала с уровнем 1
Как работает АОН
-используем биноминальное распределение для моделирования сигнала
Как работает АОН

Гистограмма сигнала.

h – массив данных для построения гистограммы (см. исходный mcd файл)

Как работает АОН
Как работает АОН
Как работает АОН
- смоделируем шум где m - мат ожидание, s- стандартное отклонение

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

Гистограмма шума

Как работает АОН
- выходной сигнал равен смеси сигнала с шумом
Как работает АОН

Гистограмма смеси сигнал-шум

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

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

- здесь:

Как работает АОН
и
Как работает АОН
- условные плотности вероятности наблюдаемого сигнала при условии, что истинный имеет уровень 0 и 1 соответственно.

Задача наблюдателя определить некоторую границу относительно которой принимается решение об истинном значении сигнала. Граница должна быть оптимальной в смысле наименьшего количества ошибок в процессе оценки сигнала.

Допустим:

Как работает АОН
- выбранная граница. Если значение сигнала превысило границу, то считаем, что истинное значение равно 1, если нет, то считаем истинным значением 0
Как работает АОН
Как работает АОН
Как работает АОН

При данной границе вероятность ошибки будет равна суме площадей заштрихованных красным и зеленым цветом. Площадь красной области равна вероятности суждения о том, что истинное значение сигнала равно 0, в то время как он равен 1. Площадь зеленой области равна вероятности суждения о том, что истинное значение сигнала равно 1, в то время как он равен 0.

Очевидно, что минимальная вероятность ошибки будет в том случае, если граница будет выбрана в той же точке, где пересекаются кривые двух распределений. Отношение p1(x)/p0(x)

называют отношением правдоподобия. Оно показывает насколько правдоподобнее предположение о приеме сигнала 1, чем альтернативное предположение о приеме сигнала 0.

Данный подход называют байесовым методом, упоминание о котором можно встретить в некоторых публикациях по АОНам.

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




Операция умножения, требующаяся при расчете корреляции, крайне нежелательна в применении к микроконтроллерам, поскольку требует значительного времени на выполнение. Но для двоичных данных поступающих с компаратора ее можно заменить операцией сложения по модулю 2 (обозначается XOR или Å).

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


Данная операция применяется во многих АОН-ах. В приведенном здесь примере операция XOR напрямую не применяется, а заменена операциями сравнения и инкремента в связи с необходимостью экономии времени. Часто алгоритм упрощают, не включая в него квадратор, к значительному ухудшению результатов это не приводит. Для ускорения вычислений во многих АОН-ах применяют таблицы эталонных сигналов. Для двоичных данных, это значения единичных меандров синусов и косинусов 6-и частот для каждого такта принимаемого сигнала. Следовательно, на каждый такт необходима 12-и битная константа, содержащая по биту на sin и cos каждой частоты. Для оптимального использования памяти в приведенной программе константы хранятся в таблице с наложением первой тетрады четной по порядку константы на пустую последнюю тетраду нечетной.


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


Здесь для каждой частоты построен своим цветом график уверенности приема. Как видно, для двух частот с наибольшими уверенностями приема значения достаточно сильно превосходят значения остальных на интервалах каждой частотной посылки. Это убеждает в существовании способа надежно идентифицировать частоты в посылке.

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



Вступление