From e8727338e29249e86ccd52fe7dde6fb72bc4e43e Mon Sep 17 00:00:00 2001 From: Safak Date: Sat, 7 Jun 2025 20:44:19 +0200 Subject: [PATCH] P2 LFSR --- P2/main.py | 65 +++++++++++++++++++++ Ue6.circ | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 231 insertions(+) create mode 100644 P2/main.py create mode 100644 Ue6.circ diff --git a/P2/main.py b/P2/main.py new file mode 100644 index 0000000..48a442e --- /dev/null +++ b/P2/main.py @@ -0,0 +1,65 @@ +# Linear Feedback Shift Register +class LFSR: + def __init__(self, poly): + self.g = [] # mapping von g g[x] == g_x + self.reg = [] # Register mit dem Zustand + + for ziffer in poly: + self.reg.append(0) + self.g.append(int(ziffer)) + + # poly = str(n, n-1, ..., 0) => g = [0, ..., n-1, n] + self.g.reverse() + self.reg.reverse() + + # Entferne den letzten Eintrag, da dieser den Grad darstellt => Anzahl der Register = len(g) - 1 + self.g.pop() + self.reg.pop() + + + def get_reg_as_string(self): + reg_string = "" + + for i in self.reg: + reg_string = reg_string + str(i) + + return reg_string + + def shift(self, s_i): + reg_old = self.reg.copy() # alter Zustand, um überschreibungen zu vermeiden + + feedback = reg_old[-1] ^ int(s_i) + + for i, value in enumerate(self.g): + if i == 0: + self.reg[i] = feedback + else: + if value == 1: + self.reg[i] = reg_old[i - 1] ^ feedback + else: + self.reg[i] = reg_old[i - 1] + + +def CRC_Parity(daten, g): + schiebe_reg = LFSR(g) + + for s in daten: + schiebe_reg.shift(s) + + return schiebe_reg.get_reg_as_string() + + +def channel_bsc(p, n): + F = 0b0 + ''' + berechne Fehlersequenz F + Achte auf Bedingung + ''' + return F + + +def p_k_Fehler(p): + n = 1000 + + +def main(): diff --git a/Ue6.circ b/Ue6.circ new file mode 100644 index 0000000..3ff9392 --- /dev/null +++ b/Ue6.circ @@ -0,0 +1,166 @@ + + + This file is intended to be loaded by Logisim-evolution v3.9.0(https://github.com/logisim-evolution/). + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +