А если каскадировать таймеры? По захвату перехода, в прерывании
самого быстрого таймера, читаем все счётчики каскада, начиная с
самого быстрого. Если захватываемое событие останавливает быстрый
таймер (и весь каскад) - вообще нет проблем - накладок с
неоднозначностью переходов значений счётчиков не будет. Если не
останавливает - то сложнее, можно нарваться на инкремент следующего
счётчика в каскаде раньше, чем он будет вычитан. Для генерации перехода, тоже можно использовать каскад таймеров. По достижению заданного отсчёта в самом медленном таймере, в его прерывании, активируем прерывание более быстрого таймера. Сам генерируемый переход формируем в прерывании самого быстрого таймера.
Может, вам лучше ПЛИС?