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

Attachment: CRC_Test.grc
Description: Binary data

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to