Документация Engee

Convolutional Interleaver

Перестановка входных символов с помощью набора сдвиговых регистров.

convolutional interleaver

Системный объект: ConvolutionalInterleaver()

Описание

Блок Convolutional Interleaver переставляет символы во входном сигнале. Внутри него используется набор сдвиговых регистров.

Параметр Initial conditions указывает значения, заполняющие каждый сдвиговый регистр в начале моделирования (за исключением первого сдвигового регистра, который имеет нулевую задержку). Если параметр Initial conditions является скаляром, то его значение заполняет все сдвиговые регистры, кроме первого. Если Initial conditions — вектор-столбец, длина которого равна параметру Rows of shift registers, то каждый элемент этого вектора заполняет соответствующий сдвиговый регистр. Значение первого элемента параметра Initial conditions не используется, так как первый сдвиговый регистр имеет нулевую задержку.

Порты

Вход

Port_1 — входной сигнал
скаляр | вектор | матрица

Входной сигнал, в котором нужно переставить символы.

Типы данных: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Bool

Поддержка комплексных чисел: Да

Выход

Port_1 — выходной сигнал
скаляр | вектор | матрица

Выходной сигнал с переставленными символами.

Тип и размер выходного сигнала соответствует типу и размеру входного.

Типы данных: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Bool

Поддержка комплексных чисел: Да

Параметры

Rows of shift registers — строки сдвиговых регистров
6 (по умолчанию) | целое положительное число

Количество сдвиговых регистров, которые блок использует внутри себя.

Тип данных:Float64

Register length step — шаг длины регистра
2 (по умолчанию) | целое положительное число

Количество символов, на которое отличается длина каждого последующего сдвигового регистра. В последнем регистре хранится ноль символов.

Тип данных:Float64

Initial conditions — начальные условия
0 (по умолчанию) | скаляр | вектор-столбец

Значения, заполняющие каждый сдвиговый регистр в начале моделирования.

Тип данных:Float64

Системный объект ConvolutionalInterleaver()

Функция ConvolutionalInterleaver() дублирует работу блока Convolutional Interleaver и переставляет символы во входном сигнале.

Параметры системного объекта ConvolutionalInterleaver(Rows of shift registers, Register length step, Initial conditions) соответствуют параметрам блока Convolutional Interleaver.

Подробнее о логике работы функции ConvolutionalInterleaver() смотрите здесь.

Конструктор
import ComponentBase.CausalInterface: step!, setup!, release!, reset!
import CausalDSP.Interleaving: ConvolutionalInterleaver
c = ConvolutionalInterleaver(Rows of shift registers, Register length step, Initial conditions)
Пример использования системного объекта

Для вызова ConvolutionalInterleaver() и получения выходного сигнала выполните в командной строке Engee следующий код:

import ComponentBase.CausalInterface: step!, setup!, release!, reset! # Вызов методов интерфейса
import CausalDSP.Interleaving: ConvolutionalInterleaver # Вызов системного объекта из библиотеки
in = [1;2;3] # Входящий сигнал
c = ConvolutionalInterleaver(3,2,-1) # Задание параметров системного объекта
setup!(c, in) # Определение размерности входящего сигнала
step!(c, in) # Выполнение первого шага симуляции
step!(c, in) # Выполнение второго шага симуляции
step!(c, in) # Выполнение третьего шага симуляции

Результат выполнения:

engee> import ComponentBase.CausalInterface: step!, setup!, release!, reset!
engee> import CausalDSP.Interleaving: ConvolutionalInterleaver
engee> in = [1;2;3]
3-element Vector{Int64}:
1
2
3
engee> c = ConvolutionalInterleaver(3,2,-1)
ConvolutionalInterleaver: N=3 Slope=2 Init=-1
engee> setup!(c, in)
engee> step!(c, in)
3-element Vector{Float64}:
1.0
-1.0
-1.0
engee> step!(c, in)
3-element Vector{Float64}:
1.0
-1.0
-1.0
engee> step!(c, in)
3-element Vector{Float64}:
1.0
2.0
-1.0

Подробнее о задержке сверточного перемежения и деперемежения (восстановления)

Общая задержка методов сверточного перемежения-деперемежения равна

,

где:

  • — количество регистров, равно значению параметра Rows of shift registers.

  • — шаг длины регистра, равно значению параметра Register length step.

На диаграмме ниже показана структура общего перемежителя, состоящего из набора сдвиговых регистров, каждый из которых имеет заданную задержку, обозначаемую как , и коммутатора для переключения входных и выходных символов через регистры. k-й регистр сдвига содержит символов, где и имеет значение задержки, равное . С каждым новым входным символом коммутатор переключается на новый регистр и вводит новый символ, одновременно удаляя самый старый символ в этом регистре. Когда коммутатор достигает N-го регистра, при следующем новом вводе коммутатор возвращается к первому регистру.

convolutional interleaver 1