Перейти к содержанию

    

С какой точностью можно определить частоту за 160 периодов?

при оценке частоты важны snr, время накопления и интервал стационарности источника

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для улучшения отношения сигнал/шум, нарежьте полосу на поддиапазоны фильтрами, это не займет много времени вычислений. Для быстрого измерения частоты можно использовать банк фильтров; банк фильтров + фазовые доопределители; банк скользящих дпф. Также посмотрите в сторону измерения частоты медленно меняющихся сигналов, как-то встречал статьи где народ за несколько тактов измеряет некоторые параметры сигналов. Может что интересное попадется. Примерные статьи:

Spoiler

Измерение разности фаз квазогармонических сигналов в реальном времени (Игнатьев, Никитин). 

Измерение разности фаз (воронов).

Эффективный алгоритм совместной оценки временной задержки и частотного сдвига чм сигналов (Сарычев, морозов)

Оценивание мгновенной частоты широкополосных сигналов (Никитин, Юшанов).

Различные корреляционные методы.

 

Изменено пользователем Skryppy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задача как то странно сформулирована...
Если входной сигнал имеет неизвестную частоту - то откуда известно, что 6 выборок на период? Очевидно, 6 выборок - это значение для некоей внутренней опорной частоты. Чтобы определить частоту входного сигнала, достаточно мерить период. При частоте дискретизации в 6 раз выше входного сигнала, без учета шумов, погрешность измерения составит +- 8%. Далее этот результат можно бросать на интегрирующий рекурсивник и получать более точные значения. Также можно ресемплировать сигнал на более высокую частоту дискретизации, чтобы получить нужную точность. Для этого совсем не нужно хранить 1000 отсчетов.
Кстати, а почему 1000, а не 1024?)
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 hours ago, a_electronic said:

Задача как то странно сформулирована...
Если входной сигнал имеет неизвестную частоту - то откуда известно, что 6 выборок на период? Очевидно, 6 выборок - это значение для некоей внутренней опорной частоты. Чтобы определить частоту входного сигнала, достаточно мерить период. При частоте дискретизации в 6 раз выше входного сигнала, без учета шумов, погрешность измерения составит +- 8%. Далее этот результат можно бросать на интегрирующий рекурсивник и получать более точные значения. Также можно ресемплировать сигнал на более высокую частоту дискретизации, чтобы получить нужную точность. Для этого совсем не нужно хранить 1000 отсчетов.
Кстати, а почему 1000, а не 1024?)
 

Это ЧМ сигнал, несущая частота в 6 раз ниже частоты АЦП. Частота дискретизации демодулированного сигнала в 1000 раз ниже частоты АЦП.

В полосе приёма могут быть сильные помехи, т.к. сигнал слабый.

Модулирующий сигнал - аналоговый, ограниченный по полосе.

 

Есть мысль попробовать что-то типа следящей системы анализирующей 1000 отсчётов на входе с целью выдачи одного отсчёта на выход.

И ограничить скорость изменения выходного сигнала.

 

Более высокая частота - тяжела по ресурсам. Лучше увеличивать анализ большего количества периодов на входе и смотреть за тенденцией изменения частоты...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для модулированных сигналов часто используется DDC - Digital Down-Conversion: https://en.wikipedia.org/wiki/Digital_down_converter

Сигнал умножается на синус и косинус несущей частоты, потом фильтруются высокие частоты. В вашем случае достаточно будет фильтра с полосой пропускания порядка 1/1000 от частоты АЦП (выше раза в два на самом деле). После этого фильтра сэмплы прореживаются до его Найквиста. Одновременно решаются две задачи - отфильтровать внеполосные помехи и сохранить ВСЮ информацию о модулированном сигнале на уменьшенном sample rate.

Мгновенную амплитуду и фазу из сигнала с 1/1000 частоты сэмплов АЦП можно получать через atan2 (софт) или CORDIC (FPGA).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
17 hours ago, serebr said:

Для модулированных сигналов часто используется DDC - Digital Down-Conversion: https://en.wikipedia.org/wiki/Digital_down_converter

Сигнал умножается на синус и косинус несущей частоты, потом фильтруются высокие частоты. В вашем случае достаточно будет фильтра с полосой пропускания порядка 1/1000 от частоты АЦП (выше раза в два на самом деле). После этого фильтра сэмплы прореживаются до его Найквиста. Одновременно решаются две задачи - отфильтровать внеполосные помехи и сохранить ВСЮ информацию о модулированном сигнале на уменьшенном sample rate.

Мгновенную амплитуду и фазу из сигнала с 1/1000 частоты сэмплов АЦП можно получать через atan2 (софт) или CORDIC (FPGA).

Это уже промоделировано. АЦП-Фильтр-DDC-демодулятор.

В качестве демодулятора - опробован atan, 3-точки и фапч. Демодулятор на ПЛИС.

 

Пока разводятся платки - хочется попробовать что-то нестандартное.

Из неприятного - есть помехи в полосе до АЦП, и при малой девиации - возрастает КНИ, особенно на 3-точках.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не вполне понятно, зачем использовать алгоритм "3-точки", когда есть FPGA и можно без проблем посчитать честный арктангенс с помощью CORDIC?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
21 hours ago, serebr said:

Не вполне понятно, зачем использовать алгоритм "3-точки", когда есть FPGA и можно без проблем посчитать честный арктангенс с помощью CORDIC?

Хотябы потому, что я пока не умею считать арктангенс с помощью CORDIC...

 

Оказывается люди научились демодулировать ЧМ с помощью дельта сигма:

Quote

This  paper  presents  an  alternative  structure,  referred  to  as  a delta–sigma  frequency-to-digital  converter, that  simultaneously performs frequency demodulation and digitization.

The prototype achieved 50kSample/s frequency-to-digital conversion of a 10MHz  frequency-modulated  signal with  a  worst  case  signal-to-noise-and-distortion  ratio  of  85dB and a worst case spurious-free dynamic range of 88dB.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
On 11/30/2018 at 2:54 PM, _4afc_ said:

Есть ЧМ сигнал, приходящий с АЦП с дискретизацией 6 точек на период.

А откуда приходит этот ЧМ сигнал на вход АЦП? Что является его источником? Может, нужно глубже копнуть в консерватории?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
25 minutes ago, blackfin said:

А откуда приходит этот ЧМ сигнал на вход АЦП? Что является его источником? Может, нужно глубже копнуть в консерватории?

Источником является ПЧ. Делается программный ЧМ демодулятор. Хочется мудрой экзотики.

 

Просто подумалось, что если на 1000 входных отсчётов, мне надо выдать 1 выходной, то нельзя-ли обнюхать этот блок из 1000 отсчётов как-то аналитически и принять решение об изменении уровня на выходе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 minutes ago, _4afc_ said:

Источником является ПЧ. Делается программный ЧМ демодулятор. 

Придется копнуть глубже... ;)

А на вход ПЧ оно откуда приходит? Это что, кодированное информационное сообщение, или это дальность до объекта?

А то, ведь, ЛЧМ еще и в дальномерах используют.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 minute ago, blackfin said:

А на вход ПЧ оно откуда приходит? Это что, кодированное информационное сообщение, или это дальность до объекта?

А то, ведь, ЛЧМ еще и в дальномерах используют.

Или кодированное или аналог непрерывный.

 

Пока думаю над приёмом аналогового сигнала.

Приём из эфира. С шумами в полосе. С малой разрядностью (без АРУ на входе).

 

Передатчика на руках нет, всё со слов - поэтому закладываюсь на самый плохой случай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 hours ago, _4afc_ said:

Хотябы потому, что я пока не умею считать арктангенс с помощью CORDIC...

Есть бесплатные варианты CORDIC: https://opencores.org/projects/cordic. Кроме того, как Intel так и Xilinx имеют встроенные IP модули для вычисления CORDIC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 hours ago, serebr said:

Есть бесплатные варианты CORDIC: https://opencores.org/projects/cordic. Кроме того, как Intel так и Xilinx имеют встроенные IP модули для вычисления CORDIC.

Регистрироваться или вставлять в проект чёрный ящик - неинтересно.

Чем он лучше таблицы или полинома?

Есть это чудо в псевдокоде, чтобы проверить на матлабе, си, верилоге...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CORDIC позволяет вычислять арктангенс с произвольной точностью, легко подстраивается на требуемое число входных/выходных бит. Этот алгоритм не требует аппаратных умножителей, разве что для произвольного масштабирования вычисленного угла. В свое время я написал с нуля этот модуль за несколько дней, включая верификацию на Матлабе. Так что ради интереса вполне подходящий алгоритм для самостоятельной реализации.

Очень доходчиво изложено, например, здесь: http://www.andraka.com/files/crdcsrvy.pdf

 

Изменено пользователем serebr
Link added

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти