# A 40 Mb/s VLC System Reusing an Existing Large LED Panel in an Indoor Office Environment
## 3 Challenges and Results  
### Flicker Issue and the Digital Signal Processing (DSP)-Based Solution  
Flicker is a common problem in LED lighting, which is mainly caused by the low-frequency (ranging from 3 Hz to \(\sim\)1 kHz) ripple of the current generated by the power driver in most cases [42]. Unlike the precise voltage sources that were used in our measurements, the commercial LED driver converts AC mains to a \"noisy\" DC current to drive the LED panel. For instance, the full-wave bridge rectifier or power factor correction (PFC) circuitry, which are two typical circuits that have been widely adopted in commercial LED drivers, will generate ripples at twice the AC line frequency [42]. If not suppressed properly, the ripples can lead to severe flicker problems that cascade to data perturbations. Unfortunately, although the driving current from the commercial LED driver has been filtered to prevent \begin{table}
\begin{tabular}{c c} \hline \hline
**Item** & **Value** \\ \hline Oscilloscope & Keysight DSO9254A \\ Arbitrary waveform generator & Tektronix AFG3022 \\ Arbitrary waveform generator output voltage & 10 Vpp (set at the 50 \(\Omega\) impedance) \\ Modulation bandwidth & \(B_{\text{mod}}=10\) MHz \\ MultiCAP carrier number & \(N=10\) \\ Carrier frequencies & 0.5 to 9.5 MHz with a step size of 1 MHz \\ Square-root raised cosine filter roll-off factor & \(\beta=0.15\) \\ Square-root raised cosine filter length & 20 symbols \\ Baseband symbol rate & \(R_{s}=1/T_{s}=869.57\) kBaud \\ Bit-loading pattern & \(\{k_{n},n=1,\cdots,N\}=\{45\,5\,5\,5\,5\,5\,4\,4\,4\}\) \\ Aggregate data rate & \(R_{b}=\sum_{n=1}^{N}R_{s}k_{n}=40\) Mb/s \\ Distance & Up to 2 m \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Key system parameters. the ripples from introducing noticeable flicker, the residual ripple amplitude is still quite high from the communication point of view. There are two major disadvantages: (_i_) the reduced modulation depth for VLC signals--since the VLC signal is superimposed onto the bias current, the headroom left for VLC signals is reduced if the bias current has a high ripple amplitude; (_ii_) the low-frequency flicker can interfere with the signal falling in the frequency range. The following two solutions help to combat the flicker issue:  
1. A high-pass filter circuit can be inserted to filter out the low-frequency flicker if it is possible to modify the analogue frontend of the optical receiver. 2. If it is not feasible to change the hardware, then DSP techniques can be used to remove the flicker by subtracting the low-frequency \"envelope\" from the received signal. The first approach requires a hardware modification according to the specification of flicker and it is not always feasible, while the second DSP approach is more flexible and it can be applied universally. Figure 8 illustrates the detailed block diagram of the DSP solution. The fundamental idea is to subtract the estimated flicker signal from the received signal \(r(t)\). A low-pass finite impulse response (FIR) filter is used to filter out the low-frequency components in order to recover the flicker signal. Before feeding \(r(t)\) through the FIR filter, a decimation operation, or downsampling, is applied to decrease the sampling rate to reduce the implementation complexity of the succeeded FIR filter. After the FIR filter, an interpolation operation is paired to increase the sampling rate back to the original sampling rate. Figure 9a shows the signal \(r(t)\) in blue, which is captured by the OSC and exhibits a slowly changing envelope that is caused by the flicker. From the waveform, the period of the flicker can be roughly estimated to be around 10 ms, indicating a fundamental frequency of 100 Hz (twice the UK mains frequency). Because the flicker is not a perfect single-tone sine wave, a low-pass FIR filter with a cut-off frequency of 500 Hz is used to let a frequency up to the 5 th harmonic pass through to recovery a close replica of the flicker. The filtered signal \(e(t)\) is shown in red in Figure 9a.