Nous considérons les mêmes états initiaux des trois LFSR R1, R2 et R3, c'est-à-dire : (0,0,1), (1,0,1,1) et (0,1,0,0,1), respectivement. Comme c'est donnée dans la série d'exercices, l'expression mathématique de la sortie FSM «x; » est : Si les séquences de sortie des LFSR R1, R2 et R3 sont : (a0, a1a2, ...), (bî, b1, b2, ...) et (co, c1, c2, ...), respectivement, et on définie b_1 = C_1 = 0, alors la sortie de générateur à pas alterné est (xo, x1, x2, ...) où : xj = btj)cj-t(j)-1 avec t(j) = (oa) -1 pour tout j≥ 0. 1. Écrivez un programme qui donne la séquence de sortie de LFSR R1. 2. Écrivez un programme qui donne la séquence de sortie de LFSR R2. 3. Écrivez un programme qui donne la séquence de sortie de LFSR R3. 4. Écrivez un programme qui donne la séquence de sortie de FSM. 5. Quelle est la période de la séquence de sortie de FSM que votre programme donne ? 6. Vérifiez que la période de la séquence de sortie de FSM obtenue par programme est égale à la valeur théorique suivante : T = 241. (242 − 1). (243 − 1), où L1, L2 et L3 sont les longueurs des LFSR R1, R2 et R3, respectivement.
def lfsr(n): a = 0 while True: a = (a << 1) ^ (a >> n) yield a def lfsr_prime(n): a = 0 while True: a = (a << 1) ^ (a >> n) if a == 0: yield a def lfsr_prime_odd