Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Листинг 2. Каждый раз при получении выборки, она помещается в буфер rxsamples[]. Затем запускается программа
entered, rxptr указывающая на самую старую выборку в буфере. Секрет FSK демодулятора заключен в следующих нескольких строка C кода.
for (i=0; i<NPERBAUD; i++)
{
sample = rxsamples[(rxptr+i) % NPERBAUD];
outloi += ( sample * coeffloi[i] );
outloq += ( sample * coeffloq[i] );
outhii += ( sample * coeffhii[i] );
outhiq += ( sample * coeffhiq[i] );
}
out = (outhii>>15) * (outhii>>15) + (outhiq>>15) * (outhiq>>15) - (outloi>>15) * (outloi>>15) - (outloq>>15) * (outloq>>15);
Система FSK, применяемая в
радиолюбительской практике, по-
добна той, которую используют те-
лефонные компании для передачи
идентификационного номера зво-
нящего абонента в соответствии
со стандартом Bell 202. Скорость
сигнала составляет 1200 бит в се-
кунду. Частота 0 равна 2200 Гц.
Частота 1 равна 1200 Гц.
Существуют и отличия. На-
пример, пакетная радиосвязь син-
хронная, а идентификатор но-
мера – асинхронный. Хотя в
действительности это не оказыва-
ет влияния на обработку сигнала.
Практическая реализация скры-
той FSK-демодуляции включает в
себя два фильтра, настроенных на
частоты 0 и 1.
Демодулятор использует четы-
ре таблицы. Таблицы coeffloi[] и
coefflog[] содержат исходные зна-
чения синуса и косинуса восьми
выборок на низкой частоте (1200
Гц). coeffhii[] и coefflhiq[] – зна-
чения синуса и косинуса восьми
выборок на высокой частоте (2200
Гц). Каждый раз, когда выборка
извлекается из АЦП, запускаются
низко- и высокочастотные филь-
тры, содержащие последние во-
семь выборок. Этот процесс под-
робно описан в листинге 2.
По окончании цикла фильтра-
ции таблицы outloi и outloq пред-
ставляют фазу и амплитуду низко-
частотных (1200 Гц) компонентов
входного сигнала. Таблицы outhii
и outhiq – соответственно фазу и
амплитуду сигнала частотой 2200
Гц. Мне не интересны значения
фазы, так как я просто могу под-
считать полную энергию каждо-
го фильтра, взяв сумму квадра-
тов компонентов I и Q (см. рис.
5). После этого я могу вычесть
энергию, определенную нижним
фильтром из энергии, взятой в
верхнем фильтре. Если результат
положительный, то принимается
высокая частота (2200 Гц, бит 0).
Если же разница отрицательная,
то берется низкая частота (1200
Гц, бит 1).
Составить ответ | Вернуться на конференцию.
Ответы