[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
По поводу смешения - это просто умножение. Амплитуда гетеродинной синусоиды - максимальная.
По поводу синтеза гетеродинных сигналов - держать одну большую таблицу в которой затабулирован о д и н полный период синуса. Можно также и вторую, в которой лежит косинус, но проще воспользоваться тем, что cos(x)=sin(x+PI/2). 65536 отсчетов не обязательно, можно, скажем 1024 отсчета. В качестве индекса при выборке из таблицы используются с т а р ш и е 10 бит накапливающего сумматора. Что касается алгоритма DSO, то в чистом виде амплитуда на выходе такого гетеродина из-за ошибок округления будет медленно плыть.
Выглядит цифровой синтезатор частоты (DDS) примерно так:
static unsigned short phase; //здесь - точность 16 бит
const float tab[1024]={0.0,...};//В реальном устройстве можно int
//
//каждый такт
//
phase=phase+friq; //иногда переполняется, т.е берется по mod 65536
k=phase/64; //k - старшие 10 бит от phase
sin=tab[k];
k=k+256; if(k>=1024) k=k-1024;
cos=tab[k];
По поводу фильтров - надо иметь линию задержки на T*Fд отсчетов и каждый отсчет туда писать. Когда необходимо вычислить выходной сигнал
все, что в этой ЛЗ лежит, суммируется.
Привязывать частоту вычисления выходных сигналов к частотам несущих
не надо. Для нормального приема битов достаточно делать это 4-6 раз
за битовый интервал, т.е. c периодом T/4 - T/6.
E-mail: info@telesys.ru