ECU Table Theory
The 'tables' are the key to ECU operation, and the basis of all tuning efforts. The ECU uses tables to map the inputs that it has measured like RPM or water temperature into some sort of useful output. The most important tables are:
The "Alpha/N" tables: These tables take two inputs and produce one output. The inputs are throttle angle (Alpha) and engine RPM (N). The output depends on the table's purpose:
Alpha/N Fuel table: output is injector squirt duration
Alpha/N ignition table: output is the desired spark advance
The "MAP/N" tables: These tables take two inputs and produce one output. The inputs are manifold air pressure (MAP) and engine RPM (N). Once again, the output depends on the table's purpose:
MAP/N Fuel table: output is injector squirt duration
MAP/N ignition table: output is the desired spark advance
The ECU processes all four tables in essentially identical fashion. To explain that, we will consider a simplified example of a hypothetical Alpha/N ignition table, shown below:
| 0% Throttle | 25% Throttle | 50% Throttle | 100% Throttle | |
| 1000 RPM | 5 degrees | 10 degrees | 10 degrees | 5 degrees |
| 4000 RPM | 10 degrees | 15 degrees | 17 degrees | 20 degrees |
| 7000 RPM | 15 degrees | 20 degrees | 22 degrees | 26 degrees |
| 10000 RPM | 20 degrees | 25 degrees | 27 degrees | 30 degrees |
The table is made up of a sequence of rows and columns, where the rows correspond to RPM, and the columns correspond to Throttle angle. Consider a situation where the ECU has just measured the speed of the engine to be exactly 4000 RPM. At this same instant, the ECU has also measured that the rider is holding the throttle exactly 50% open. The ECU wants to know what spark advance it should be setting the next time it wants to fire a spark. To answer this question, the ECU looks for a row that corresponds to the current RPM. Then it scans across the columns in that row until it finds the column entry that corresponds to 50% throttle. The value in the table at the desired row and column defines what the ECU should do under those conditions. In the example of 4000 RPM and 50% throttle, the corresponding entry is a request to fire the spark at 17 degrees BTDC (Before Top Dead Center). Likewise, if our hypothetical engine was turning 7000 RPM and the throttle was 100% open, then our simple table would tell the ECU to fire the ignition to fire at 26 degrees BTDC.
This begs the obvious question: what happens if your exact engine RPM or throttle position is not listed in the table? It turns out that it is not practical to make the table bigger. A much better approach is to compress the information in the table in a simple mathematical manner.
In addition to defining what happens at certain specific combinations of RPM and throttle, the tables also define how an output should be calculated between table entries. The easiest way to do this is to define a simple linear relationship between any two adjacent entries. For example, by defining a linear relationship between the amount of advance at 0% throttle and 25% throttle on the 1000 RPM row, we now can figure out exactly what to do if the throttle is open to some amount between 0% and 25%. Basically, the ECU calculates what percentage the throttle is open between 0% and 25%. It then applies the exact same percentage between the outputs that correspond to 0% and 25%.
For example: assume the engine is turning 1000 RPM, and the throttle position is 12.5% open. This means that the throttle is currently half way between the 0% entry and the 25% entry. As a result, the ECU picks a spark advance that is also half way between the value at 0% (5 degrees of advance) and the value at 25% (10 degrees of advance). This would correspond to 7.5 degrees of advance at 12.5% throttle, 1000 RPM.
RPM can be interpolated in the exact same fashion. to provide values that are defined by the table, but not actually present in the table. Interpolation allows a table to express information that is not explicitly mentioned in the table. This allows the tables to be very small, yet contain a lot of very precise information about what to do under all kinds of circumstances.
From a tuning perspective, the big question is to determine how the Aprilia tables are formatted: what is a row, what is a column, and what does the table entry output mean.
Displaying Tables
If you extract the data from the table, break it down into the proper row and column lengths, and then pass it to a graphing program (I used Excel for this picture), you get something like this:

The RPM axis goes from 800 to 12000. The throttle angle is displayed as a column number from 1 to 18. The fuel output is the vertical axis, ranging from 0 to 165. I have not figured out what the units really correspond to on the vertical (fuel) axis, but it is safe to assume that 0 means no fuel, and 165 means lots of fuel. It is easy to see that small throttle angles (regardless of RPM) do not require much fuel to be squirted. The more you twist the throttle open, the more fuel gets added.
If you click here, you can get the Excel worksheet that I used to create the picture above. It is kind of fun to rotate the picture to look at it from various angles. To do that, load the worksheet into excel. Then, click on the plot picture. After that, you can rightclick-and-hold on any corner of the axis display and then mouse around to rotate the cube.
Next up: The Alpha/N tables -- converting Throttle Angle and Engine RPM into spark and fuel info.
It will be worth it in the end.
Wright Cyclone in full song.