# SOCIS project update 3

**URL:** <https://www.ruby-forum.com/t/socis-project-update-3/242373>\
**Category:** GNU Radio\
**Created:** [June 19, 2015, 10:27am UTC](https://www.ruby-forum.com/t/socis-project-update-3/242373 "2015-06-19T10:27:17Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![musicdenotation](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ea666f/32.png) [@musicdenotation](https://www.ruby-forum.com/u/musicdenotation)\
**Post date:** [June 19, 2015, 10:27am UTC](https://www.ruby-forum.com/t/socis-project-update-3/242373/1 "2015-06-19T10:27:17Z")

</div>

Hey community,

It is time for another project update. So here it is.  
This week I dived into C++ and FECAPI. I implemented a polar encoder for  
FECAPI. Of course this includes all the necessary tests. I decided to go  
with packed bits in the encoder definition. Though I implemented a mode  
which deals with unpacked bits too.  
I did some rough performance tests. Just set up a flowgraph with a head  
block and let 2^32 unpacked bytes go through. Then I measured the time  
it needed to process all those samples. For a first implementation with  
unpacked bits I could achieve a throughput of about 60Mbit/s. This goes  
up to 280Mbit/s for unpacked bits which are packed internally and then  
encoded then unpacked again. And roughly 350Mbit/s for packed bits.  
Those are just rough tests and may be biased. It should serve as a first  
impression.  
Also, some profiling revealed that the computationally intensive part is  
moving info bits to the correct position. Rougly three times more time  
is spent on this than on the actual encoding procedure. I had some  
thoughts on how I could interweave this with encoding in the hope that  
this would save some time. But I haven’t found a solution for that yet.  
It always interferes with encoding too deeply.  
FECAPI is very convenient when it comes to code implementation. It just  
takes care of everything around your code implementation.  
Also, I worked on a decoder. But it is not yet completed. I intend to  
have at least two different ones. A simple successive cancellation  
decoder which shall serve as a reference and a more sophisticated  
successive cancellation list decoder. According to some papers, they  
perform very well in terms of error rate.

For the upcoming week my focus will be on decoders. I will implement  
them in C++ and do all the necessary testing. I am curious how well they  
will perform.

More info and current project progress can be found in [1] and [2].

Cheers  
Johannes

[1] [GitHub - jdemel/gnuradio: GNU Radio](https://github.com/jdemel/gnuradio)  
[2] [GitHub - jdemel/socis-2015-gr-results: ESA SOCIS 2015 files and information](https://github.com/jdemel/socis-proposal)
