# Design and Application Space Exploration of a Domain-Specific Accelerator System
## 4 Test Case Application  
Some representative real-life tasks including digital pulse compression, moving target detection, and space-time adaptive processing have been realized and tested on RASP. To demonstrate the effectiveness of RASP, we choose one task that contains a variety of computational motifs and covers different operations. By implementing this task, the ability of the system to deal with diverse applications is manifested.  
Space-time adaptive processing (STAP) is a signal processing technique commonly used in radar systems [26; 27]. With the help of the technique, it is possible to achieve order-of-magnitude sensitivity improvements in target detection. According to the addressed array size, the whole calculation amount of STAP is vast (up to \(10^{6}\) to \(10^{9}\)), and the task involves a set of sub-algorithms like matrix covariance, matrix inversion, matrix multiplication, matrix conjugation, division and so on. The goal is to find the optimal space-time weights in NM-dimensional space, where N is the number of antenna elements (our spatial degrees of freedom), and M is the number of pulse-repetition interval (PRI) taps. The detailed algorithm structure diagram is shown in Figure 7.  
Figure 6: Breakdown of DMA transmission and computation time across different sub-algorithms with different sizes. The unit of the number of counts on each bar is “cycle”.  
In the weight calculating process, the optimal weight vector is expressed as:  
\[w=\mu R^{-1}s \tag{1}\]  
where, \(\mu=\frac{1}{s^{H}R^{-1}s}\) is the normalization coefficient. The output of a space-time processor is the weighting result, \(z=W^{H}x\). The weighting result then sends out for threshold detection.  
The algorithm mentioned above can be decomposed and expressed in MATLAB step by step. The procedure is listed in Table 1.  
Building the application in a compiler environment, the primary work is algorithm API function construction. The API function combination is directly derived from the MATLAB decomposition, and each step listed in the table represents an executable sub-algorithm by RASP. The API calling and data address arrangement should be elaborately organized to fit the task order.  
After compiling, a series of bit streams corresponding to each step is generated and stored in the external memory; execution will take place in serial. The source matrix data is stored in external memory, and all the intermediate results are stored and fetched in internal SRAM blocks. The final result data will be sent out for further processing after all the steps are done.  
From the implementation point of view, the chosen task is a representative one that involves multiple different operations, revealing the ability of RASP to perform complicated tasks. The amount of calculation is huge and exhibits a certain degree of computation complexity, but the compilation process is convenient and efficient; this property makes it friendly to programmers, and they do not need to learn the detailed information about the hardware implementation process.  
\begin{table}
\begin{tabular}{l c} \hline \hline
**Task Decomposition Presentation in MATLAB** & \\ \hline
1: R1 = X1 \(\times\) (X1’) & X1: Array data vector \\
2: T1 = inv(R1) & \\
3: U1 = T1 \(\times\) S1 & S1: Steering vector \\
4: S\_con1 = S1’ & \\
5: T1 = S\_con1 \(\times\) U1 & \\
6: Z\_con1 = Z1’ & \\
7: m1 = Z1. \(\times\) Z\_con1 & \\
8: V1 = U1 \(\times\) Z\_con1 & \\
9: W1 = V1/m1 & \\
10: W\_con1 = W1’ & \\
11: Y1 = W\_con1 \(\times\) X1 & \\ \hline \hline \end{tabular}
\end{table}
Table 1: Task decomposition in MATLAB presentation.  
Figure 7: STAP task structure diagram.