Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use HMB for FPGA Timestamps #5499

Merged
merged 11 commits into from
Aug 4, 2023
Merged

Conversation

ThadHouse
Copy link
Member

Current timestamp read code uses FPGA register reads. Through testing, this read was slower then clock_gettime by about 4-5x. However, another method of reading the FPGA time is available, using HMB. HMB is memory mapped IO from RAM to the FPGA. So to code side, reading the value is just a memory barrier and a memory read.

There is some latency on the write side, so a very small artifical delay (5us) is added to avoid register reads such as interrupts being ahead of current timestamps, which could cause issues.

Below is read times for 1000 calls to clock_gettime, register reads and hmb reads.

Clock: Rise 1.72939400 s Fall 1.72990700 s Delta 0.00051300 s
FPGA : Rise 1.72999000 s Fall 1.73429300 s Delta 0.00430300 s
HMB  : Rise 1.73466800 s Fall 1.73481900 s Delta 0.00015100 s

Current timestamp read code uses FPGA register reads. Through testing,
this read was slower then clock_gettime by about 4-5x. However, another
method of reading the FPGA time is available, using HMB. HMB
is memory mapped IO from RAM to the FPGA. So to code side,
reading the value is just a memory barrier and a memory read.

There is some latency on the write side, so a very small artifical delay
(5us) is added to avoid register reads such as interrupts being ahead
of current timestamps, which could cause issues.

Below is read times for 1000 calls to clock_gettime, register reads and
hmb reads.
```
Clock: Rise 1.72939400 s Fall 1.72990700 s Delta 0.00051300 s
FPGA : Rise 1.72999000 s Fall 1.73429300 s Delta 0.00430300 s
HMB  : Rise 1.73466800 s Fall 1.73481900 s Delta 0.00015100 s
```
@ThadHouse ThadHouse requested review from PeterJohnson and a team as code owners August 3, 2023 06:07
hal/src/main/native/athena/HMB.h Outdated Show resolved Hide resolved
wpiutil/src/main/native/cpp/timestamp.cpp Outdated Show resolved Hide resolved
wpiutil/src/main/native/cpp/timestamp.cpp Outdated Show resolved Hide resolved
wpiutil/src/main/native/cpp/timestamp.cpp Outdated Show resolved Hide resolved
wpiutil/src/main/native/cpp/timestamp.cpp Outdated Show resolved Hide resolved
@ThadHouse
Copy link
Member Author

image

@ThadHouse
Copy link
Member Author

/format

@PeterJohnson PeterJohnson merged commit 3ad5d2e into wpilibsuite:main Aug 4, 2023
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants