Hi Ralf, Good news!
Regarding your question, In order to be sure that what the block was measuring was right, I've used a complete software transceiver together with a Channel Model block. You may take a look at https://github.com/git-artes/gr-isdbt/blob/master/examples/full_transceiver.grc. This example is easily reproduced in DVB-T by combining the TX and RX example flowgraphs. best Federico El lun, 13 dic 2021 a las 8:02, Ralf Gorholt (<ralf.gorh...@gmx.de>) escribió: > Hello Federico, > > after a lot of thinking I have finally managed to adapt your OFDM > Synchronization and TMCC Decoder blocks for DVB-T :-) The problem was that > the frame and symbol indexes in the tags sent by the TPS decoder were not > correct. > > Although I can see the video now, I am not sure that I have really done > everything right, because I have still some problems of understanding. > Perhaps you can bring some light into the dark? > > I have connected GUI number sinks to the freq. error and samp. error > outputs of the OFDM Synchronization block to display the values and I have > noticed the following: > > 1) With interpolation in the OFDM Synchronization block turned on, when I > adjust the frequency of the source block (frequency correction ppm) so that > the freq. error output value is near to zero, this value drifts very slowly > in one direction, from higher to lower values, crossing zero (i.e. from > positive to negative values). > 2) The value at the samp. error output is zero and constant (at least I > have seen no change during about 30 minutes). > > Is this the correct behaviour? If not, how should it be? > > Thank you very much for your help and kind regards, > > Ralf > > Am 11.12.2021 um 16:11 schrieb Ralf Gorholt: > > Hello Federico, > > I have a lot of difficulties to generate the output and the tags for the > blocks that follow my TPS Decoder in the flowgraph. That's why I had the > idea to take a different approach. > > The OFDM Synchronization block outputs the payload carriers (1705 in 2K > mode) whereas the Demod Reference Symbols block that normally follows the > FFT expects 2048 carriers. My question sounds certainly silly but would it > be possible to fill in the missing carriers with zero carriers (amplitude > and phase == 0) to get 2048 carriers again and thus be able to use the > original DVB-T blocks? As far as I know, in DVB-T the carriers at the > borders are all set to zero (and perhaps the one in the middle too). > Perhaps this would be too simple to be true :-) > > Regards, > > Ralf > > Am 10.12.2021 um 14:41 schrieb Ralf Gorholt: > > Hi Federico, > > indeed, the "symbol_index" tag that is normally sent for each OFDM symbol > is missing. This might cause an unexpected situation for the following > deinterleaver block, "Access not within mapped region" according to > valgrind. > > I will see how I can generate the symbol index for each symbol. The "Demod > Reference Signals" block uses the dvbt_pilot_gen object to parse the input > data and to generate symbol and frame indices. > > As far as I have understood, in your block OFDM Synchronization you have > combined the symbol acquisition and the FFT. Then you connect a TMCC > decoder that eliminates the TMCC and auxiliary carriers, generates tags and > outputs the data carriers. My idea was to do the same for the TPS signals > in DVB-T. > > To my surprise, in principle what I have done seems to work. If not, my > TPS decoder would not be able to correctly decode the TPS information that > changes accordingly when I change settings in the transmitter, for instance > the modulation scheme. > > I will focus on the tags and see what is missing. > > Regards, > > Ralf > > Am 10.12.2021 um 14:25 schrieb Federico 'Larroca' La Rocca: > > Hi, > > I'd be more than happy to help. A couple of things that come into my mind. > > The OFDM Synchronization block is a combination of our "old" OFDM Symbol > acquisition (for a while now it's been part of GNU Radio) and Sync and > Channel estimation blocks (which performed equalization and integer > frequency correction) . The most important difference is that OFDM > Synchronization includes a loop with the estimated channel gains, which in > turn is used to estimate the sampling error (plus fine frequency errors). > It also indicates some events downstream via tags, just like the older > blocks. This new "DVB-T OFDM Synchronization" block should then be a > combination, if I'm not mistaken, of OFDM Symbol Acquisition plus Demod > Reference Signals (I'm sure Ron will know more on this). > > Anyhow, my point is that you should take a look at the OFDM Symbol > Acquisition and Demod Reference Signals blocks in GNU Radio, and check > which tags are used and when. Maybe this lack of tags is generating an > unforeseen situation on the downstream blocks which generate the segfault? > Furthermore, if I'm not mistaken, the pilots in DVB-T (in particular > continuous pilots) are not exactly the same as in ISDB-T. Another > possibility is that the Demod Reference Signals block is not equivalent to > our Sync and Channel estimation block, and further processing is needed for > it to be ready for the DVB-T Demap... > > best > Federico > > El vie, 10 dic 2021 a las 9:55, Ralf Gorholt (<ralf.gorh...@gmx.de>) > escribió: > >> Hi Vasil, >> >> thank you for your message. As I have no experience with GNU Radio and >> command line debugging, your hints may be really helpful. I have >> attached the gdb and valgrind output to this email. >> >> In the gdb output thread 27 that receives the SIGSEGV is the DVB-T >> "Symbol Inner Interleaver" that comes with GNU Radio, not one of my >> blocks. >> >> As far as valgrind is concerned, it tells me for my block OFDM >> Synchronization: "Conditional jump or move depends on uninitialised >> value(s)". I will see if I can find out which variable is uninitialized >> and how I can get rid of this problem. >> >> Kind regards, >> >> Ralf >> >> Am 10.12.2021 um 12:35 schrieb Vasil Velichkov: >> > Hi Ralf, >> > >> > On 10/12/2021 11.52, Ralf Gorholt wrote: >> >> Unfortunately, when I deactivate the original flowgraph, it does no >> >> longer work and I get a -11 return code. >> > The "-11" value means that you got a segmentation fault and the process >> was kill with signal 11 (SIGSEGV) >> > >> > >> https://docs.python.org/3.8/library/subprocess.html#subprocess.CalledProcessError.returncode >> > https://www.man7.org/linux/man-pages/man7/signal.7.html >> > >> > In my opinion the easiest way to debug segfaults is to run the >> flowgraph under gdb and valgrind. Open your flowgraph in the >> gnuradio-companion and then Generate (F5) but do not Execute (F6). The open >> a terminal, go where the flowgraph python (.py) file was generated and >> execute >> > >> > gdb -ex run --args /usr/bin/python3 test.py >> > >> > and then when it stops execute `bt` command in the gdb's shell and >> provide the full output. To run it under valgrind execute >> > >> > valgrind --tool=memcheck /usr/bin/python3 test.py >> > >> > Adjust the path to your python interpreter and its version if needed. >> > >> > Regards, >> > Vasil >> > > > >