Bläddra i källkod

eye diagram implemented

Tharmetharan Balendran 5 år sedan
förälder
incheckning
95e8c9f53b
1 ändrade filer med 15 tillägg och 4 borttagningar
  1. 15 4
      models/optical_channel.py

+ 15 - 4
models/optical_channel.py

@@ -97,6 +97,17 @@ class OpticalChannel(defs.Channel):
         val_t = np.power(np.absolute(values), 2)
         return t, val_t
 
+    def __plot_eye(self, val_t, num_of_symbols=100):
+        samples_per_symbol = int(self.symbol_period/self.sample_period)
+        val_t_a = np.reshape(val_t[:(2*samples_per_symbol*num_of_symbols)], (-1, 2*samples_per_symbol))
+        t = np.linspace(start=0, stop=self.symbol_period, num=2*samples_per_symbol)
+
+        for sym in val_t_a:
+            plt.plot(t, sym, color="blue")
+        plt.show()
+
+        pass
+
     def forward(self, values):
         # Converting APF representation to time-series
         t, val_t = self.__get_time_domain(values)
@@ -157,14 +168,14 @@ class OpticalChannel(defs.Channel):
 
 if __name__ == '__main__':
     # Simple OOK modulation
-    num_of_symbols = 100
+    num_of_symbols = 1000
     symbol_vals = np.zeros((num_of_symbols, 3))
 
     symbol_vals[:, 0] = np.random.randint(2, size=symbol_vals.shape[0])
-    symbol_vals[:, 2] = 40e9
+    symbol_vals[:, 2] = 0
 
-    channel = OpticalChannel(noise_level=-10, dispersion=-21.7, symbol_rate=10e9,
-                             sample_rate=400e9, length=100, pulse_shape='rcos', show_graphs=True)
+    channel = OpticalChannel(noise_level=-20, dispersion=-21.7, symbol_rate=7e9,
+                             sample_rate=336e9, length=0, pulse_shape='rrcos', show_graphs=False)
     v = channel.forward(symbol_vals)
 
     rx = (v > 0.5).astype(int)