Блок Patterned Interleaver

В процессе исследования чужих графов GnuRadio, увидел использование такого блока как «Patterned Interleaver». Что это? Как работает? Надо разобраться.


Если переводить на русский, то название блока звучит как «Чередователь по шаблону». Попробуем выяснить что за шаблоны, и как они работают.
Запускаем GnuRadio, и добавляем наш блок «Patterned Interleaver»

block_patterned_interleaverКак мы видим, у блока 3 входа и 1 выход. Поглядим, какие свойства мы можем поменять у этого блока.

block_patterned_interleaver1Параметров не так много. Из значимых это понятный «IO Type», который определяет, с каким типом данных работает блок, и загадочное поле «Pattern». В нем мы видим цифры. 0, 1, и 2. Любопытно. У нашего блока тоже три входа под таким индексами. Попробуем дописать в полее «Pattern» тройку.
block_patterned_interleaver2 Да! Теперь можно догадаться, что числа обзначают индекс входного порта, а максимальное значение задает их число.

Но почему некоторые индексы повторяются? Вот нулевой два раза написан.
Думаю нам пора увидеть блок в работе.
Вернем количество входов к изначальному значению, и соберем следующий граф:

block_patterned_interleaver4
Зададим следующие параметры:
Vector source — зададим вектор из 2 чисел «0» и «1», и отключим повторение значения задав «Repeat: No»
Patterned Interleaver — зададим шаблон вида [0,1,2,0]
File Sink
— укажем путь до файла который будет содержать результат работы блока «Patterned Interleaver», а так же отключим буферизацию при выводе, плюс укажем перезаписывать наш файл.

Обратите внимание, что все блоки в графе имеют порты ввода-вывода желтого цвета, это значит что они будут оперировать данными типа short длиной 2 байта.

Итак, что же мы собрали. У нас есть три источника данных. Vector Source выдающий 0 а затем 1, два блока Constant Source постоянно выдающих числа 3 и 4, загадочный Patterned Interleaver, и блок File Sink который выводит результат в файл.
Запускаем наш граф, ждем секунду, и останавливаем граф.
Теперь поглядим что записалось в файл.

$ od -tx2 outdat.bin
0000000 0000 0003 0004 0001
0000010

Первое значение 0x00, затем 0x03,  0x04, и 0x01.  Это наши значения которые мы подавали на вход. Как теперь мы можем понять, блок «Patterned Interleaver» берет данные из входа, чей индекс первый в шаблоне, затем данные из входа чей индекс указан вторым, и т.д. Все оказалось просто!
Попробуем проверить нашу догадку.
Дополним Vector Source значениями 2 и 9, и зададим шаблон Patterned Interleaver как [2,0,1,0]. Если мы правильно понимаем алгоритм работы блока, мы должны получить следующую последовательность:
0004 0000 0003 0001 0004 0002 0003 0009

Запускаем граф. Проверяем.
$ od -tx2 outdat.bin
0000000 0004 0000 0003 0001 0004 0002 0003 0009
0000020

Безупречно! Теперь вы знакомы с принципом работы блока Patterned Interleave

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *