4.2. Simulated Waveforms for the Recurrence Coefficient
An algorithm was designed for waveform simulation on an FPGA platform. A 100 MHz simulation clock was employed in the testbench. In the introduction to this study, we mentioned that there are many combinations of
n and
m. Out of the many combinations of
n and
m, we chose
and
for the experiments with the simulation of
and
. The simulation of the computed waveform of the coefficient
is shown in
Figure 4. In the optimized calculation, n_sub_m_tdata, n_add_m_tdata, and n_2_tdata were used as the initial input values for the calculation. The signals named in the figure beginning with mul and div are multiplication and division operations on
, respectively, and they include the calculation of two intermediate quantities. The waveform simulation results show that when using two adders or subtractors, the operation was completed in 125 ns. Once these intermediate quantities were computed, the computation of
began and was completed in 765 ns. This completed the calculation of Equation (
18). In this way, parallel computation on the FPGA took 750 ns, and if full serial computation was used, then it took 940 ns.
The simulation of the computed waveform of the coefficient
is shown in
Figure 5. In the optimized calculation, n_sub_m_tdata, n_add_m_tdata, and n_2_tdata were used as the initial input values for the calculation. The signals named in the figure beginning with mul and div are multiplication and division operations on
, respectively, and they include the calculation of four intermediate quantities. The waveform simulation results show that when using four adders or subtractors, the operation was completed in 125 ns. Once the intermediate quantities were computed, the computation of
began and was completed in 845 ns. This completed the calculation of Equation (
19). In this way, parallel computation on the FPGA took 830 ns, and if full serial computation was used, then it took 1240 ns.
Coefficients , , and were used when the thermal harmonic coefficient order was greater than or equal to two. Thus, for the simulated waveform experiments on , , and , n = 5 and m = 2 were chosen as the combination of n and m.
The simulation of the computed waveform of the coefficient
is shown in
Figure 6. In the optimized calculation, n_sub_m_tdata, n_add_m_tdata, and n_2_tdata were used as the initial input values for the calculation. In the figure,
is named
. The signals named in the figure beginning with mul and div are multiplication and division operations of
, and they include the calculation of four intermediate quantities. The waveform simulation results show that when using four adders or subtractors, the operation was completed in 125 ns. Once the intermediate quantities were computed, the computation of
began and was completed in 845 ns. This completed the calculation of Equation (
20). In this way, parallel computation on the FPGA consumed 830 ns, and if full serial computation was used, then it took 1320 ns.
The simulation of the computed waveform of the coefficient
is shown in
Figure 7. In the optimized calculation, n_sub_m_tdata, n_add_m_tdata, and n_2_tdata were used as the initial input values for the calculation. In the figure,
is named
. The signals named in the figure beginning with mul and div are multiplication and division operations of
, respectively, and they include the calculation of four intermediate quantities. The waveform simulation results show that when using four adders or subtractors, the operation was completed in 125 ns. Once these intermediate quantities were computed, the computation of
began and was completed in 925 ns. This completed the calculation of Equation (
21). In this way, parallel computation on the FPGA took 905 ns, and if full serial computation was used, then it took 1400 ns.
The simulation of the computed waveform of the coefficient
is shown in
Figure 8. In the optimized calculation, n_sub_m_tdata, n_add_m_tdata, and n_2_tdata were used as the input initial values for the calculation. In the figure,
is named
. The signals named in the figure beginning with mul and div are multiplication and division operations on
, respectively, and they include the calculation of three intermediate quantities. The waveform simulation results show that when using three adders or subtractors, the operation was completed in 125 ns. Once the intermediate quantities were computed, the computation of
began and was completed in 765 ns. This completed the calculation of Equation (
22). In this way, parallel computation on the FPGA took 750 ns, and if full serial computation was used, then it took 1050 ns.
Figure 9 shows the content of the data interaction between the PS and PL via AXI4-Lite. In the figure,
slv_reg0–
slv_reg8 correspond to the function type, control start calculation,
i,
m,
,
,
,
, and
, respectively.
In
Figure 9, we calculated
, and type 002 was correctly selected. The correctness of our design in
Figure 3 is verified.
4.5. FPGA Implementation of Geoid Height
Our optimization of the recursive method between every other order and degree was coded and implemented in Verilog, synthesized using the Xilinx Vitis 2021.2, and implemented in ZYNQ-7020 (XC7Z020-2CLG400). In order to calculate the geoid height in the Earth’s gravitational field, we performed field experiments. The gravitational field model used in this experiment was SGG-UGM-1, and the rest of the required computational quantities were obtained by means of a UM980 (Unicorecom, Beijing, China) compass sensor. The SGG-UGM-1 model which we used is available on the ICGEM website.
Table 5 shows the correlation coefficients for the observation accuracy of the UM980 module.
Table 6 shows the geoid height according to the UM980 acceptance and the geoid height calculated with our system.
Figure 12 shows the experimental platform.
Figure 13 shows the flow of data processing.
To calculate the geoid height in the Earth’s gravitational field, we needed to obtain the longitude and latitude coordinates of the experimental points from UM980. However, the original latitude and longitude coordinates obtained cannot be directly used for calculation; they need to undergo the coordinate transformation process in
Figure 13 to obtain the new coordinate information. The new coordinate information was used to provide the initial values for calculating the required fnALF values in ZYNQ. Subsequently, we obtained the relevant coefficients for each degree from the SGG-UGM-1 model and combined both to derive the geoid height.
As can be seen in
Table 6, the difference between the received geoid height and the calculated geoid height was
. This error indicates that our system can basically meet the needs of outdoor real-time calculation operations.