Good day How are you? I am a new user to GNU Radio Companion I am using version 3.7.11 I have read, followed and finished the exercises/examples in the tutorials of Working with "GNU Radio Companion" (https://wiki.gnuradio.org/index.php/Guided_Tutorial_GRC) and "Programming GNU Radio in Python" (https://wiki.gnuradio.org/index.php/Guided_Tutorial_GNU_Radio_in_Python) ------------------------- I have been working on designing a whole system to compute the BER of different encoders using GMSK: 1.- Reed Solomon 2.- Convolutional Coding 3.- CRC
I have also installed GR Satellites by Daniel Estévez (https://github.com/daniestevez/gr-satellites) to help me with this task I started building the whole system using GNU Radio Companion to build the blocks, but I had many problems with the input and output of blocks, since there were no transformations to adapt all the blocks among them, and I tried several of the blocks provided with each Encoder/Decoder to make it fit ------------------------- Once I had an idea of how it should work, I tried to start with a simple system only with one of the 'encoders' which was CRC (Stream CRC32) The Block Diagram would look like this (See attached "CRC_Test.grc" file): (Random Source) => (Throttle) => (Stream to Tagged Stream) => (Stream CRC32[Generate CRC]) =>A) B) C) A) => (Char to Float) => (QT GUI Timer Sink) B) => (GMSK Mod [S/S=10]) => (GMSK Demod [S/S=10]) => (Pack K Bits [K=8]) => C) D) C) 2x=> (BER) => (QT GUI Timer Sink) D) => (Char to Float) => (QT GUI Timer Sink) And also adding noise: The Block Diagram would look like this (See attached "CRC_Test_with_noise.grc" file): (Random Source) => (Throttle) => (Stream to Tagged Stream) => (Stream CRC32[Generate CRC]) =>A) B) C) (Noise Source [Gaussian]) => D) A) => (Char to Float) => (QT GUI Timer Sink) B) => (GMSK Mod [S/S=10]) => D) C) 2x=> (BER) => (QT GUI Timer Sink) D) 2x=> (Add) => (GMSK Demod [S/S=10]) => (Pack K Bits [K=8]) => C) E) E) => (Char to Float) => (QT GUI Timer Sink) If I add another "Stream CRC32" block with [Check CRC]; I have three situations: a) I add a "Stream to Tagged Stream" block before the (Stream CRC [Check CRC]) with the same 'Length Tag Name' as the one after the Throttle b) I add a "Stream to Tagged Stream" block before the (Stream CRC [Check CRC]) with a different 'Length Tag Name' as the one after the Throttle and change the "Length Tag Key" of the "Stream CRC32" block c) I do not add a "Stream to Tagged Stream" block before the (Stream CRC [Check CRC]) I get these outputs: a) It provides no output, and an error is shown up: gr::log :FATAL: crc32_bb0 - Missing a required length tag on port 0 at item #14 thread[thread-per-block[16]: <block crc32_bb (14)>]: Missing length tag. b) No output c) It provides an output, but there is no block that removes the CRC bytes, so from my point of view, the BER rate should be higher even if I am using the block "Pack K Bits" with K=8, to recover the bytes after the modulation (Since "GMSK Demod" returns one bit of each byte in separate bytes and I need to reconstruct the signal) I cannot find where I am making the mistake and I would like to ask if someone could point out where I am wrong so I can fix it. Thank you. ------------------------- I tried to do also a simple test of Reed-Solomon encoding But I could not match any Reed-Solomon pair of coder & decoder that were paired together. Only the DVB-T one has, in the same section of the Companion, both the Encoder and the Decoder (If you use the magnifying glass search in the Companion, you find these Reed Solomon results) If you search for "Reed": 1.- ATSC only has a decoder, but I do not want to use a specific implementation; I want to use a general implementation for satellite applications 2.- ITU-T has only an encoder 3.- Satellites (By Dani Estévez) has both an encoder and a decoder; but its input/output is async messages, and I want to test BER, so I need a random source of bits. I do not know how to convert those bits into messages to use these blocks. If you search for "RS": 1.- ATSC shows both an Encoder as "ATSC RS Encoder" and an Decoder as "ATSC Reed-Solomon Decoder" (Why do they have different titles?) 2.- Satellites (By Dani Estévez) has 15 entries, but all of them use messages as input/output and I have the same problem with the Random Source So, I have not been able to build a proper block diagram and test it to get any results I believe that the best approach would be using the FEC Enconder and Decoder from Satellites (By Dani Estévez); but I do not know how to use the Async Message type with the Byte output from Random Source, although I have sought for examples on type conversion, but I could not find any Could you point me in the right direction on how to assemble this graph, please? ------------------------- Since the only implementations of Convolutional coding blocks are from DVB-T and I would like to use a generic application, I have not tried those yet ------------------------- Thank you very much on all the Time you have spent in reading this message and I wish you to have a nice day -- Christian Sêngir Busquiel Sanz
CRC_Test.grc
Description: Binary data
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio