diff options
author | JaredD <jareddpub@gmail.com> | 2021-07-19 04:41:18 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-19 06:41:18 -0400 |
commit | 15a8cce4dadaa895081d1d9816f37e65117cffb5 (patch) | |
tree | 4be2473cc5ed302e2b2d859f436fd0f101e79ab4 /gr-blocks/grc | |
parent | fbab6c383d6f86ab0de42a90a9182d22637a5b96 (diff) |
blocks: add matrix interleaver block
* blocks: add matrix interleaver block
Matrix interleaver including qa test and example
The matrix interleaver is a hierarchical block that pairs a base
deinterleave block that effectively writes samples into "rows" (1 block of
samples per output) and a base interleave block that outputs samples
iteratively from each input like "columns".
Signed-off-by: Jared Dulmage <jared.dulmage@caliola.com>
Add grc file and update blocks.tree.yml.
Fix module for matrix interleaver example
Signed-off-by: Jared Dulmage <jared.dulmage@caliola.com>
* Update py file docs and license block
Co-authored-by: Jared Dulmage <jared.dulmage@caliola.com>
Diffstat (limited to 'gr-blocks/grc')
-rw-r--r-- | gr-blocks/grc/blocks.tree.yml | 1 | ||||
-rw-r--r-- | gr-blocks/grc/blocks_matrix_interleaver.block.yml | 63 |
2 files changed, 64 insertions, 0 deletions
diff --git a/gr-blocks/grc/blocks.tree.yml b/gr-blocks/grc/blocks.tree.yml index 5fb790efd1..48540f7b72 100644 --- a/gr-blocks/grc/blocks.tree.yml +++ b/gr-blocks/grc/blocks.tree.yml @@ -122,6 +122,7 @@ - blocks_stream_to_vector_decimator - blocks_vector_to_stream - blocks_vector_to_streams + - blocks_matrix_interleaver - blocks_patterned_interleaver - blocks_endian_swap - blocks_vector_insert_x diff --git a/gr-blocks/grc/blocks_matrix_interleaver.block.yml b/gr-blocks/grc/blocks_matrix_interleaver.block.yml new file mode 100644 index 0000000000..d2a664a361 --- /dev/null +++ b/gr-blocks/grc/blocks_matrix_interleaver.block.yml @@ -0,0 +1,63 @@ +id: blocks_matrix_interleaver +label: Matrix Interleaver +flags: [ python ] + +templates: + imports: from gnuradio import blocks + make: |- + blocks.matrix_interleaver( + itemsize=${ type.size } * ${ vlen }, rows=${ rows }, cols=${ cols }, deint=${ deint } + ) + callbacks: + - set_rowsandcols(${ rows }, ${ cols }, ${ deint }) + +parameters: +- id: type + label: IO Type + dtype: enum + options: [complex, float, int, short, byte] + option_attributes: + size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short, gr.sizeof_char] + hide: part +- id: vlen + label: Vec Length + dtype: int + default: '1' + hide: ${ 'part' if vlen == 1 else 'none' } +- id: rows + label: Rows + dtype: int + default: '1' + hide: none +- id: cols + label: Columns + dtype: int + default: '1' + hide: none +- id: deint + label: Deinterleave + dtype: bool + options: [True, False] + default: False + hide: none + +inputs: +- label: in + dtype: ${ type } + vlen: ${ vlen } + +outputs: +- label: out + dtype: ${ type } + vlen: ${ vlen } + +asserts: +- ${ vlen > 0 } + +documentation: 'Jared Dulmage + + Block interleaver reads inputs into rows and writes outputs by cols + + python/matrix_interleaver.py' + +file_format: 1 |