Some years back I built myself a reciprocal counter based on Bluepill (stm32f103), tdc7200 and a small fpga (ice40lp384).
The MCU asked the fpga via a CAPTURE rising edge to timestamp the Ref_10MHz and Signal.
There were 2 counters in the fpga - for Ref and for Sig.
The counters (both 32bit counters) were running freely.
Thus each MCU "request" generated two 32bit values. You can make many requests per second of course, as the capture takes a couple of Ref clocks.
I read out the two registers into the MCU.
Also during the capture the phase difference between the Ref and Sig rising edges was measured by the TDC7200 (55ps res with 30ps rms).
That gave me another 10-11bits.
The MCU then calculated the Sig frequency out of OLD and NEW capture data diff.
You can make any statistics with the data, of course, as the interval between OLD and NEW capture could be arbitrary long (as the both Ref and Sig counters are running freely) so you are not in hurry
.
I build it on a solder-less breadboard as an experiment, the jitter of my measurements was rather high, about 200ps rms (it requires a different type of construction of course).