Hi, Thanks for the answers.I attach the Rx flowchart and grc of the frequency hopping. I have successfully used it on QO100 satellite. George SV1BDS
Στάλθηκε από το Ταχυδρομείο Yahoo σε Android Στις Πέμ, 27 Απρ, 2023 στις 14:57, ο χρήστηςMarcus Müller<mmuel...@gnuradio.org> έγραψε: Hi George, > Also I have implemented 1.000.000 hops/sec frequency hopping at QO100 > satellite, spread > over 1 MHz, using 10240 different frequencies. > Is this project of general interest? Well, that's impossible to say, but honestly: it probably is! And also, you shouldn't care too much :) It's cool in any case! My advise is: Just put it out there. But I do have signal theory questions: We know that if a signal has a bandwidth of 1 MHz, we can (complex) sample it and contain all its signal content with a sampling rate of 1 MS/s. If you're doing a million hops per second, how are you achieving a bandwidth of only 1 MHz? That means that every hop only gets a single sample, and you can't signify "frequency" with just a single number. So, I might have misunderstood you there, but it would seem what you claim to have done is mathematically not possible :( > I create this script using Python to create QAM constellations points. > May be of general interest. It's nice, but GNU Radio already comes with that! from gnuradio import digital constellation = digital.constellation_16qam() points = constellation.points() (and you can just use digital.constellation_16qam().points() in a GRC block parameter, no need to build a string!) These are also power-normalized to 1. If you don't want normalized (or different sizes of) QAM constellation, digital.qam.make_non_differential_constellation(M, gray_coded) is your friend; digital.qam.make_non_differential_constellation(4096, True) makes a nice 4096-QAM, but it's average power isn't 1; you can fix that points = digital.qam.make_non_differential_constellation(4096, True) average_pwr = sum(point**2 for point in points) / len(points) print(f"Average power: {average_pwr}; normalization factor hence: {average_pwr**(-1/2)}") normalized_points = [ point * average_pwr**(-1/2) for point in points ] Similarly, since you're doing satellite communications, you might be interested in PSKs, an A-PSKs. You can create a PSK using digital.psk.psk_constellation(m=4, mod_code='gray', differential=True) e.g. digital.psk.psk_constellation(16, differential=False) If you don't have GNU Radio but just python, str([(i, j) for i in range(-n, n, 2) for j in range (-n, n, 2)]) does the same as your code, but might be a bit easier to read (again, if you want to use this in GRC, don't do the conversion to `str`; GRC accepts any valid Python in its fields). Best regards, Marcus
FH_USBTESTRx.pdf
Description: Adobe PDF document
FH_USBTESTRx.grc
Description: Binary data