Obydwa rozwiazania sa podobnie podatne na nieliniowosc i wymagaja filtrow pasywnych przed i za mieszaczem. W przypadku homodyny, te drugie to filtry dolnoprzepustowe. Homodyna jest bardziej podatna na szumy 1/f, przesluch LO na wejscie sygnalu w.cz. mieszacza (co powoduje powstanie skladowej stalej na jego wyjsciu) i ma wyzsze wymagania wobec spasowania obu kanalow mieszacza I/Q i przetwornika A/ C (nie ma mozliwosci pasywnego odfiltrowania sygnalu lustrzanego).
W praktyce lepiej zrobic tak jak planujesz - ustawic IF nieco powyzej zera (CLIF) i obrobic sygnal cyfrowo (zespolony filtr bandpass i mieszacz do DC). Odpada problem z szumami i skladowa stala i zostaje "tylko" spasowanie kanalow I i Q (tu bedzie potrzebny scalony mieszacz I/Q i dwukanalowy przetwornik A/C ze wspoldzielonym zegarem i napieciem odniesienia).
Taki filtr (FIR) mozna dosc latwo recznie zsyntezowac, gorzej z implementacja (najlepiej filtrowac kilkukrotnie z decymacja).
W skrocie: Odpowiedz impulsowa "zwyklego" filtru (skalarnego) to w najprostszym przypadku suma tonow (cosinusow) o czestotliwosciach, ktore chcesz przepuscic (np. 0, 1, 2,.., ft dla filtru dolnoprzepustowego), pomnozona przez okno wygladzajace. Chodzi o to by splot tej odpowiedzi z sygnalem w pasmie dal ten sam sygnal na wyjsciu, a z sygnalem spoza pasma dal 0.
Filtr ze wspolczynnikami zespolonymi uzywa tonow nie w postaci "cos (omega*t)" a "cos(omega*t)+j*sin(omega*t)". Najlepiej wyobrazic sobie taki sygnal jako wektor o dlugosci 1 obracajacy sie z predkoscia katowa omega. Po kierunku obracania sie tego wektora mozna ustalic czy czestotliwosc jest dodatnia czy ujemna. W przypadku sygnalow skalarnych bylo to niemozliwe bo cos(omega*t) jest funkcja parzysta (geometrycznie sygnal skalarny to rzut obracajacego sie wektora na os liczb rzeczywistych).
Dalej jest juz analogicznie jak z filtrem skalarnym - sumujesz tony o czestotliwosciach, ktore chcesz przepuscic i mnozysz przez okno wygladzajace. Np.:
odpowiedz_impulsowa(t) = okno(t) * [ ... + cos(-1*t) + j*sin(-1*t) + // = cos(1*t) - j*sin(1*t) cos(0*t) + j*sin(0*t) + // = 1 cos(1*t) + j*sin(1*t) + cos(2*t) + j*sin(2*t) + ... ]
Wszystkie operacje na tej odpowiedzi impulsowej (np. splot z sygnalem wejsciowym) musza uzywac operacji na liczbach zespolonych.
Sorry, ze tak lopatologicznie. Mam nadzieje, ze Ci sie to przyda.
-hob