CCSDS Encoder Definition: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(Created page with "Category:Block Docs Category:Stub Docs This is the template for the "Page-per-block Docs". This first section should describe what the block...")
 
No edit summary
Line 1: Line 1:
[[Category:Block Docs]]
[[Category:Block Docs]]
[[Category:Stub Docs]]
CCSDS Encoding class for convolutional encoding with rate 1/2, K=7, and polynomials [109, 79].
This is the template for the [[:Category:Block_Docs|"Page-per-block Docs"]]. This first section should describe what the block does and how to use it, using however many paragraphs necessary.  Note that the title of the wiki page should match the block's name in GRC, i.e. the one defined in the block's .grc file.  Look at the [[FFT]] Block for a good example.
 
Uses Phil Karn's (KA9Q) implementation of the CCSDS encoder for rate 1/2, K=7, and CC polynomial [109, 79]. These are non-adjustable in this encoder. For an adjustable CC encoder where we can set the rate, constraint length, and polynomial, see [[CC Encoder Definition]].


As this is a basic template, it's also in the [[:Category:Stub_Docs|"Stub Docs category"]]. Please improve it.


== Parameters ==
== Parameters ==
(''R''): <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls ''Run-time adjustable'']</span>
(''R''): <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls ''Run-time adjustable'']</span>


; Param 1 (''R'')
; Parallelism
: Description of parameter, provide any tips or recommended values. Note that the name of the parameter above should match the param's label that shows up in grc (e.g. Sample Rate).
: It seems that one can create a tensor of one or two dimensions of encoders. More info is needed on this.
 
; Dimension 1
: Active when parallelism > 0
 
; Dimension 2
: Active when parallelism > 1
 
; Frame bits
: When not being used in a tagged stream mode, this encoder will only process frames of the length provided here. If used in a tagged stream block, this setting becomes the maximum allowable frame size that the block may process.
 
; Start state
: Initialization state of the shift register.


; Param 2
; Streaming behaviour
: blah blah blah
: Specifies how the convolutional encoder will behave and under what conditions.
:; Streaming: This mode expects an uninterrupted flow of samples into the encoder, and the output stream is continually encoded.
:; Terminated: Mode designed for packet-based systems. This mode adds rate*(k-1) bits to the output as a way to help flush the decoder.
:; Tailbiting: Another packet-based method. Instead of adding bits onto the end of the packet, this mode will continue the code between the payloads of packets by pre-initializing the state of the new packet based on the state of the last packet for (k-1) bits.
:; Truncated: A truncated code always resets the registers to the start state between frames.


== Example Flowgraph ==
== Example Flowgraph ==
Line 21: Line 37:


; C++ files
; C++ files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fec/lib/ccsds_encoder_impl.cc Here]


; Header files
; Header files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fec/lib/ccsds_encoder_impl.h Here]


; Public header files
; Public header files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fec/include/gnuradio/fec/ccsds_encoder.h Here]


; Block definition
; Block definition
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/master/gr-fec/grc/variable_ccsds_encoder_def_list.block.yml Yaml]

Revision as of 11:05, 1 August 2019

CCSDS Encoding class for convolutional encoding with rate 1/2, K=7, and polynomials [109, 79].

Uses Phil Karn's (KA9Q) implementation of the CCSDS encoder for rate 1/2, K=7, and CC polynomial [109, 79]. These are non-adjustable in this encoder. For an adjustable CC encoder where we can set the rate, constraint length, and polynomial, see CC Encoder Definition.


Parameters

(R): Run-time adjustable

Parallelism
It seems that one can create a tensor of one or two dimensions of encoders. More info is needed on this.
Dimension 1
Active when parallelism > 0
Dimension 2
Active when parallelism > 1
Frame bits
When not being used in a tagged stream mode, this encoder will only process frames of the length provided here. If used in a tagged stream block, this setting becomes the maximum allowable frame size that the block may process.
Start state
Initialization state of the shift register.
Streaming behaviour
Specifies how the convolutional encoder will behave and under what conditions.
Streaming
This mode expects an uninterrupted flow of samples into the encoder, and the output stream is continually encoded.
Terminated
Mode designed for packet-based systems. This mode adds rate*(k-1) bits to the output as a way to help flush the decoder.
Tailbiting
Another packet-based method. Instead of adding bits onto the end of the packet, this mode will continue the code between the payloads of packets by pre-initializing the state of the new packet based on the state of the last packet for (k-1) bits.
Truncated
A truncated code always resets the registers to the start state between frames.

Example Flowgraph

Insert description of flowgraph here, then show a screenshot of the flowgraph and the output if there is an interesting GUI. Currently we have no standard method of uploading the actual flowgraph to the wiki or git repo, unfortunately. The plan is to have an example flowgraph showing how the block might be used, for every block, and the flowgraphs will live in the git repo.

Source Files

C++ files
Here
Header files
Here
Public header files
Here
Block definition
Yaml