(12-05-2022 21:25)SP6FRE napisał(a): Najbardziej teraz interesuje mnie w jaki sposób w jednym urządzeniu udaje się uniknąć wpływu przemiatania w wodospadzie na odbiornik. W szczególności tajemniczo brzmi "bezpośrednie próbkowanie (ADC+FPGA)". Jak możesz to napisz kilka zdań na ten temat. Przychodzi mi do głowy jedynie taki pomysł, że próbkowanie jest na tyle szybkie, że jedną z próbek, właśnie na częstotliwości dedykowanej do odbioru wykorzystuje się właśnie w dalszej obróbce do odbioru.
Leszku, zasady pracy DDC (Direct Digital Conversion) były poruszane już wielokrotnie na tym forum przy okazji Tulipana DDC czy Radioberry. Paweł SQ8MVY i Potr SP9FKP próbowali popularyzować ten rodzaj odbioru ale jakoś tak się złożyło że było małe zainteresowanie tematem. Polega to na tym że sygnał z anteny po wzmocnieniu i klasycznej filtracji pasmowej "wchodzi" na ADC. Filtracja pasmowa ma duży wpływ na poziom podłogi szumowej ale nie jest niezbędna, wystarczy LPF na ~40% f próbkowania. Najpopularniejszy ADC to 14 lub 16 bit 122.88 Msps (tak: 122.88 MHz!). Zgodnie z teoria Nyquista-Shannona masz do dyspozycji na raz około 60MHz pasma analogowego. Następnie taki strumień wchodzi do FPGA gdzie odbywa się przemiana + decymacja (zawężanie pasma) i filtracja. Efekt jest taki że na wyjściu otrzymujemy strumień danych IQ z pasmem 48...192kHz wokół żądanej częstotliwości odbioru a dodatkowo dzięki decymacji na dużej ilości próbek rozdzielczość wzrasta do 24 bit - efekt podobny do processing gain w FFT. Dalej kolejną obróbką zajmuje się już DSP - dla firmware UHSDR jest to STM a interface to I2S(SAI). Ostatnio mamy kolejny przypadek transceivera dzialającego w ten sposób - ruskiego Wilka. Notabene opartego w bardzo dużym stopniu na naszym firmware UHSDR.
W tym układzie bardzo prosto robi się kolejny kompletny odbiornik - po prostu powielasz bloczek w FPGA tyle razy ile potrzebujesz i masz do tego zasoby. Bloczki podłączasz do tej samej magistrali danych wejściowych. DSP musi sobie z tym później poradzić ale to nie problem dzięki np. kolejnym decymacjom.
Jeden odbiornik zajmuje w fpga około 4 tys. makrokomórek co dla kostki za 40PLN stanowi około 25% zasobów. Nadajnik robi się podobnie a dodatkowo układ może pracować w pełnym dupleksie.
Zgodnie z teorią próbkowania można także odbierać sygnały o f dużo wyższej niż połowa częstotliwości próbkowania - vide film który podlinkowałem z próby odbioru przemiennika SR9P.
Cytat:
Ale tak jak sugerujesz, stosuję zasadę nadpisania ostatniej linii bieżącymi danymi a wyświetlanie osiągam nie przez przepisanie z linii do linii ale przez wyświetlenie linii w odpowiednim porządku. Oszczędza to ponad tysiąc operacji przepisywania danych co w tej skali ma znaczenie mimo, że to operacje jedno lub dwutaktowe. Na razie nie opanowałem jeszcze w pełni kontrolera ST7735 więc być może tu są jeszcze jakieś rezerwy.
Oczywiście - nie podejrzewałem nawet że przesuwasz pamięć choć i to w STM jest możliwe dzięki DMA 2D. Chodziło mi o to że niektóre kontrolery LCD mają "sprzętowy" scroll w tedy wysyłasz tylko najnowszą linię wodospadu do lcd a pozostałe poprzednie przesuwane są przez zmianę kolejności wyświetlania linii w samym kontrolerze - nie przesuwa się pamięci ekranu, to stary trik który stosowaliśmy jeszcze w latach 80-tych na C64
Co do pomiaru poziomu wejściowego - FFT w UHSDR jest liczone dla 512, 1024 i 2048 punktów w zależności od wymaganej rozdzielczości ekranu. Obliczanie poziomu sygnału odbieranego jest na podstawie sumy amplitud binów które znajdują się w zakresie filtra odbiorczego (dodatkowo obszar ten jest podświetlony na widmie). pomiary były sprawdzane z uzyciem tłumika kalibrowanego i zgadzają się idealnie.