Скремблер¶
Скремблер (англ. scramble – шифровать, перемешивать) – программное или аппаратное устройство (алгоритм), выполняющее скремблирование, то есть обратимое преобразование цифрового потока без изменения скорости передачи с целью получения свойств случайной последовательности. В данном примере реализовано скремблирование с «псевдослучайной бинарной последовательностью» (Pseudo Random Binary Sequence, PRBS). Эта последовательность вычисляется благодаря LFSR длины 15, заданной ассоциированным многочленом 1+ x^14 + x^15 и начальным значением 100101010000000. Также ниже представлен рисунок описания формулы работы генератора псевдослучайной последовательности.
Далее рассмотрим реализованную схему скремблирования и дескремблирования. Она и битовое сравнение работы данного алгоритма показаны на рисунке ниже.
Запустим данную модель при помощи описанной нами функции запуска и сохраним результаты битовой ошибки.
function run_model(name_model)
Path = string(@__DIR__) * "/" * name_model * ".engee"
if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
model = engee.open( name_model ) # Открыть модель
model_output = engee.run( model, verbose=true ); # Запустить модель
else
model = engee.load( Path, force=true ) # Загрузить модель
model_output = engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
end
return model_output
end
run_model("Scrambler_descrambler")
Проанализируем сохранённые значения. BER равен нулю на протяжении 1001 шага.
# Считывание из simout сохранённых сигналов
BER = simout["Scrambler_descrambler/Error Rate Calculation.Out"];
BER = collect(BER)
BER[end-3:end,:]
Вывод¶
По результатам данной демонстрации мы изучили возможности реализации метода скремблирования, применяемого в протоколах передачи видео DVB второго поколения.