## 4 VLPC Network Based on SICD-OPRC Scheme
### System Principle of SICD-OPRC
When adjacent bits of user data are the same, for example \(b_{i}(k)=b_{i}(k+1)=+1\), Equation (16) can be rewritten as follows:  
\[\begin{array}{ll}CV_{ASi}(k)&=\alpha\beta P_{t}\delta_{i}\frac{1}{L_{S}} \sum\limits_{n=1}^{L_{S}}\textbf{S}_{i}(n)\textbf{S}_{i}(n)+\alpha\beta P_{t} \frac{1}{L_{S}}\sum\limits_{ \begin{array}{c}j=1,\\ j\
eq i\end{array} }^{N_{\text{LED}}}\delta_{j}\sum\limits_{n=1}^{L_{S}}\textbf {S}_{j}(n+\tau_{j})\textbf{S}_{i}(n)+\widetilde{N}_{\text{AWGN}}\\ &\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad between user data bits further interfere with this orthogonality, thereby reducing the decoding accuracy. Thus, it is impossible to rely solely on the correlation properties of OPRC to avoid interference between different VLPC signals. To address the challenges of asynchronous transmission and interference between adjacent user data bits in ACDM-based VLPC systems, we introduce and modify the multi-user interference cancellation method from [30] and apply it to mitigate the interference among signals from different LED transmitters, naming this scheme as successive interference cancellation decoding (SICD). This method aims to progressively eliminate interference signals to recover the user data and RSS corresponding to each VLPC signal accurately. The detailed implementation of the scheme is listed as follows. * Step 1: Initial decoding and signal ordering  
First, we use the OPRC corresponding to each VLPC signal to perform an initial decoding of the received signal to estimate the initial RSS of each VLPC signal. Next, we sort the VLPC signals in descending order based on their initial RSS values and designate the VLPC signal with the \(m\)-th largest RSS as the \(m\)-th VLPC signal. * Step 2: Decoding the VLPC signal with the maximum RSS  
We start by decoding the VLPC signal with the maximum RSS, while treating other VLPC signals as noise. We perform cross-correlation between the received signal and the corresponding OPRC. The obtained cross-correlation value can be expressed by:  
\[CV_{1}(k)=\frac{1}{L_{S}}\sum_{n=1}^{L_{S}}\textbf{R}_{s}\Big{(}L_{S}(k-1)+ \widehat{\tau}_{1}+n\Big{)}\textbf{S}_{i}(n), \tag{19}\]  
where \(\widehat{\tau}_{i}\) represents the estimated time delay of the \(i\)-th VLPC signal, which can be obtained by adding a pilot to the beginning of the VLPC signal. Then, we set a threshold, setting as 0 in this paper, to judge the cross-correlation value and recover the user data carried by the 1-th VLPC signal. The process of recovering the \(k\)-th symbol of user data can be represented as:  
\[U_{1}(k)= \begin{cases}1,\text{if }CV_{1}(k)>0\\ 0,\text{if }CV_{1}(k)<0\end{cases} . \tag{20}\]  
At the same time, the RSS of the 1-th VLPC signal is updated from:  
\[RSS_{1}=|CV_{1}(k)|. \tag{21}\]
* Step 3: Interference cancellation and subsequent signal decoding  
We remove the decoded VLPC signal from the received signal. Then, the updated received signal after removing the (\(m\)-1)-th VLPC signal is:  
\[\widehat{\textbf{R}}_{sm}=\widehat{\textbf{R}}_{s(m-1)}-RSS_{m-1}\textbf{U}_{m- 1}\textbf{S}_{m-1}. \tag{22}\]  
Thus, the updated cross-correlation value of the \(m\)-th VLPC signal can be calculated from:  
\[CV_{m}(k)=\frac{1}{L_{S}}\sum_{n=1}^{L_{S}}\widehat{\textbf{R}}_{sm}\Big{(}L_ {S}(k-1)+\widehat{\tau}_{m}+n\Big{)}\textbf{S}_{m}(n). \tag{23}\]  
Then, we can use Equations (20) and (21) to recover the user data and RSS of the \(m\)-th VLPC signal. Therefore, by iteratively removing the decoded signals and updating the received signal, the SICD scheme gradually eliminates interference, allowing for the accurate decoding of each subsequent VLPC signal. This successive interference cancellation approach ensures that the decoding accuracy is maintained even in the presence of asynchronous transmissions and user data bit interference, thereby enhancing the VLC and VLP performance of the VLPC system.