В настоящее время я работаю над реализацией python для соответствия 802.11 dm package-crafter. Сейчас я борюсь с реализацией бит-скремблера, поскольку он производит вывод, отличный от показанного в стандарте IEEE.
Блок-схема и полином генератора показаны на рисунке: Блок-схема из стандарта IEEE 802.11
Начальное значение скремблирования, то есть начальное состояние скремблера, приведено в Пример стандарта с [1, 0, 1, 1, 1, 0, 1]. Я трижды проверил, что мой входной битовый массив для скремблера такой же, как в примере. Мой вывод, однако, похож на только в начале и в конце скремблированного массива.
Моя реализация до сих пор (с использованием numpy):
def scrambler(inBits, seed):
state = np.array(seed, dtype=np.uint8)
outBits = np.zeros(len(inBits), dtype=np.uint8)
for idx in range(len(inBits)):
feedback = state[0] ^ state[3]
outBits[idx] = feedback ^ inBits[idx]
state[0:6] = state[1:]
state[-1] = feedback
return outBits
Моя реализация несовершенна? Спасибо за каждую подсказку и ваше время!
Приветствия Луке