Here, we describe an IM/DD task that is relevant to high-speed optical communication systems used in data centers. Compared to other machine learning-inspired benchmarks, the task offers several advantages. First, the dataset is inherently time-dependent, i.e., there is a time dimension that can be natively mapped to the dynamic evolution of SNNs. Second, small-scale SNNs can achieve the target accuracy required by technical communication standards. Third, due to the small scale and the defined target accuracy, the task facilitates the optimization for real-world aspects, such as energy efficiency, resource requirements, and system complexity.
The following description is widely taken from Arnold et al (2024), to which the reader is referred to for more details.
The goal of a communication system is to transmit a binary message
The IM/DD system is commonly used, e.g. in datacenters.
| Symbol index |
1 | 2 | 3 | 4 |
|---|---|---|---|---|
| 00 | 01 | 11 | 10 |
The transmit sequence
where
After the PD, the sequence of received values
To ensure reliable transmission in practical systems, at the output of the receiver, a target BER is defined.
For a given link and noise power
We define two different parametrizations of the IM/DD link as separate tasks.
During training, the user is free to alter the parameters, e.g., the noise power
The low chromatic dispersion Task (LCD-Task) emphasizes non-linear impairment with little CD and thus weak ISI.
Receivers require a smaller number of
| Parameter | Value |
|---|---|
N |
10000 |
n_taps |
7 |
alphabet |
[-3, -1, 1, 3] |
oversampling_factor |
3 |
baudrate |
112 GBd |
wavelength |
1270 mn |
dispersion_parameter |
-5 ps/nm/km |
fiber_length |
4 km |
noise_power_db |
-20 dB |
roll_off |
0.2 |
bias |
2.25 |
The standard single-mode fiber Task (SSMF-Task) models the standard single-mode fiber with a used wavelength of 1550 nm, which is widely used in practice due to its low attenuation and, thus, wide range.
The IM/DD link suffers from severe ISI, increasing the number of required input samples
| Parameter | Value |
|---|---|
N |
10000 |
n_taps |
21 |
alphabet |
[0, 1, |
oversampling_factor |
3 |
baudrate |
50 GBd |
wavelength |
1550 mn |
dispersion_parameter |
-17 ps/nm/km |
fiber_length |
5 km |
noise_power_db |
-20 dB |
roll_off |
0.2 |
bias |
0.25 |
To demonstrate the demapping performance, the achieved BER at a noise power of
The PyTorch-based datasets corresponding to the defined tasks are imported as LCDDataset and SSMFDataset.
from torch.utils.data import DataLoader
from IMDD import LCDDataset
# Dataset
dataset = LCDDataset(bit_wise=False)
dataset.set_n_taps(n_tap)
# Data loader
dataloader = DataLoader(dataset, batch_size, shuffle=True)
for (y_chunk, q) in dataloader:
... # trainAfter completing one epoch (i.e., accessing all continuous_sampling=False.
The number of taps set_n_taps and set_noise_power_db.
An IMDDModel in the dataset generates indices k of shape (n_taps,), representing the chunked received data together with the index (1,).
Hence, the tensor holds all symbols required to process n_taps//2.
This allows shuffling and batching along the first dimension using a PyTorch Dataloader, resulting in y_chunk of shape (batch_size, n_taps) and q of shape (batch_size,).
Each transmit symbol is labeled with its assigned bits, generated using the provided get_graylabels function, and accessed at the corresponding index q.
By default, the dataset does not directly return bit-level labels to maintain flexibility.
This design supports symbol-level receivers, allowing models to output class index bit_level=True in the dataset configuration changes the format of (N, 2), where each entry contains binary values corresponding to the respective bits.
To compute the BER based on either predicted symbols or bits, we provide a helper function bit_error_rate.
An arbitrarily parameterized IM/DD link can be created by passing an instance of IMDDParams to an IMDDModel.
A dataset is created by instantiating IMDDDataset with the given parameters.
This allows users to adapt the provided link implementations to suit their specific requirements.
from IMDD import IMDDDataset, IMDDParams
# Parameterization
params = IMDDParams(...)
# Link model
link = IMDDModel(params)
# Dataset
dataset = IMDDDataset(params, bit_level=False)If you use this dataset, please cite as:
...[1] E. Arnold, G. Böcherer, F. Strasser, E. Müller, P. Spilger, S. Billaudelle, et al., “Spiking neural network nonlinear demapping on neuromorphic hardware for IM/DD optical communication,” Journal of Lightwave Technology, vol. 41, no. 11, pp. 1–8, 2023. DOI: 10.1109/JLT.2023. 3252819.