Overview
The ACE90011 is a high-velocity, deterministic hardware accelerator designed for the real-time execution of Extended Kalman Filter (EKF) algorithms. It provides a production-ready "Math-to-Silicon" pipeline that transforms complex state-estimation mathematics into high-frequency, bit-perfect FPGA logic.
By offloading recursive mathematical kernels from a system’s primary processor, the core enables extreme computational throughput with zero execution jitter.
The core is engineered as a universal mathematical fabric for high-stakes tracking and navigation environments. It is specifically optimized for:
Multi-Sensor Fusion: Tracking targets using asynchronous data from stationary or mobile sensor platforms.
Flexible Observation Modeling: Processing any combination of sensor inputs, including Range, Azimuth, and Elevation. The architecture allows for the handling of non-measured quantities by setting their corresponding observation values to a mathematically large displacement, maintaining filter stability across diverse sensor types.
Dynamic State Estimation: Performing high-frequency state projections and covariance updates for autonomous robotics, aerospace navigation, and defense-sector target acquisition.
The ACE90011 maintains a surprisingly lean resource utilization footprint that enables its implementation on the majority of the FPGA models.
The core is optimized for a mid range FPGA ( Artix-7), but ACE can easily port on any customer-selected FPGA (any vendor).
While the core is fully functional, ACE internal development procedures provide the possibility for the customer to adapt to their needs:
The algorithm
The FPGA model
The latency/resources trade off
The precision/resources trade off
Memory map
Core interfaces (e.g. the BRAM interfaces can be set to AXI)
Algorithm
The algorithm model was used both for the definition and validation (against a golden model) of the ACE_EKF_RADAR.
A summary of the operations executed from the core is given by:
Prediction (in ECEF coordinates)
Computation of the predicted results (ECEF-> NED-> spheric coordinates)
Computation of the Jacobian of the observation model
State update
The detailed model is reported as an Appendix 1.
The ACE90011 core utilizes IEEE-754 Single-Precision (32-bit) floating-point arithmetic. Specific implementation-level exceptions, optimized for maximum silicon throughput and reduced latency, are explicitly detailed in the Appendix 2 section of this datasheet.
Technical Characteristics
The ACE90011 core is optimized for cost-effective, high-reliability silicon.
The following results were obtained from a full implementation on a mid-range AMD/Xilinx Artix-7 (XC7A100TCSG324-1).
In the frame of the compilation of this datasheet, the ACE_EKF_RADAR was packaged as a Vivado IP core and attached to a SerDes used for testbenching (the Serdes offers a 5 wires interface to the testbench and manages the access to the two BRAMs used for input output).
The testbench is structured to read the input data from a file and save the results in another file. For cores that require the validation of the evolution, like the ACE90011, the Testbench can be structured in several stages, enabling the simulation over several execution cycles.
The ACE deliverables would generally not include the source code, but a more generic synthetized netlist (in Vivado it would be a dcp or edf).
In addition, ACE will provide:
The core datasheet, with interface instructions
The SerDes Core
The TestBench
A License Key for every FPGA Serial Number (if the acquisition is per SN)
Resource Utilization
Timing and Throughput
The core achieves robust timing closure at 200MHz, providing a guaranteed execution schedule.
Internal Math Clock: 200.00 MHz
Update Latency: 1,560 Cycles (7.8 s @ 200MHz)
Worst Negative Slack (WNS): 0.272 ns
Deterministic Update Rate: ~125,000 updates/sec
Interfaces
The core interface with the user is provided by only:
A user provided clock
A memory for data exchange
The user shall populate the input fields before triggering the start.
The locations marked as INPUT (IN) in the memory map are not modified by the core, in order to limit the number of memory accesses in case the variables are unchanged for more measurements.
The memory map is reported in Appendix 2.
Production cores include a lightweight, static integrity check that binds the core to the FPGA’s unique DNA.
ACE generates a per‑device key offline, and the core recomputes the same function on the FPGA DNA using simple combinatorial logic. If the values match, the core operates normally; if not, the math results are intentionally invalid.
This prevents unauthorized redistribution of the IP and protects the customer from bitstream cloning by competitors.
The mechanism is static, deterministic, and has no runtime or timing impact.
Results
The core was validated comparing the obtained results with the ones produced by a “Golden Model” operating in double precision.
The trajectory of the target is reported in Figure 2 in NED coordinates (centred on a fixed sensor).
It has to be noted that both filters had been initialized with a consistent offset ([1000, -2000, -200] in NED coordinates) and both filters processed the same measurements (same noise).
Figure 2
Figure 3
The error magnitude plot is reported in Figure 4.
Figure 4
It is possible to see that, while the Golden Model is faster in the convergence, the results are comparable when the filters reach their regime state.
A table of the achieved results is reported in Appendix 3:
Note: Xilinx®, Vivado®, and all related marks are trademarks of Advanced Micro Devices, Inc.
Screenshots are used for illustrative purposes only. ACE is not affiliated with or endorsed by AMD/Xilinx.
% =================================================================
% ACE EKF REFERENCE MODEL - VALIDATION SUITE
% =================================================================
% x : State vector [Pos_X; Pos_Y; Pos_Z; Vel_X; Vel_Y; Vel_Z] in ECEF (m, m/s)
% P : State Covariance Matrix (6x6)
% Q : Process Noise Covariance (6x6)
% z_obs : Measurement vector [Range; Azimuth; Elevation]
% R_cov : Measurement Noise Covariance (3x3)
% R_mat : Rotation Matrix (3x3) - ECEF to Local NED/Navigation frame
% [Xs; Ys; Zs] : Sensor position in ECEF coordinates
% K_RAD : Scaling factor (1/pi) to convert Radians to Scaled Radians [-1, +1]
%
=================================================================
% --- PREDICT STEP ---
% Linear state projection based on time step (dt)
F = eye(6); F(1,4)=dt; F(2,5)=dt; F(3,6)=dt;
x_pred = F * x;
P_pred = F * P * F' + Q;
% --- OBSERVATION MODEL ---
% 1. Calculate relative displacement in ECEF
dx_e = x_pred(1:3) - [Xs; Ys; Zs];
% 2. Rotate displacement into the local sensor/navigation frame
local = R_mat' * dx_e;
dx = local(1); dy = local(2); dz = local(3);
% 3. Calculate intermediate geometry for Range/Azimuth/Elevation
dxy_sq = dx^2 + dy^2;
dxy = sqrt(dxy_sq);
r_sq = dxy_sq + dz^2;
r_est = sqrt(r_sq); % Estimated Range
% 4. Compute h(x) with angles in Scaled Radians [-1, +1]
% Azimuth = atan2(y,x), Elevation = atan2(-z, horizontal_dist)
h_x = [r_est;
atan2(dy, dx) * K_RAD;
atan2(-dz, dxy) * K_RAD];
% 5. Residual (Innovation) calculation
y = z_obs(n,:)' - h_x;
% 6. Angular Wrap-around (Modulo 2 logic for Scaled Radians)
if y(2) > 1, y(2) = y(2) - 2; elseif y(2) < -1, y(2) = y(2) + 2; end
% --- JACOBIAN (H) CALCULATION ---
% Partial derivatives of Range, Azimuth, and Elevation w.r.t Local Coordinates
dr_dl = [dx/r_est, dy/r_est, dz/r_est];
da_dl = [-dy/dxy_sq, dx/dxy_sq, 0] * K_RAD;
de_dl = [(dx*dz)/(r_sq*dxy), (dy*dz)/(r_sq*dxy), -dxy/r_sq] * K_RAD;
% Chain rule: transform local derivatives back to ECEF frame
H = [( [dr_dl; da_dl; de_dl] * R_mat' ), zeros(3,3)];
% --- UPDATE STEP ---
S = H * P_pred * H' + R_cov; % Innovation Covariance
K = (P_pred * H') / S; % Kalman Gain
x = x_pred + K * y; % Updated State
P = (eye(6) - K * H) * P_pred; % Updated Covariance
Appendix 2: Memory map
Appendix 3: Detailed validation results