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

         

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


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


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


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



Вступление