PIC32 is in a different league compared to FPGA. If you run it at 40MHz, your time resolution is 25 ns (if you use Input Capture (IC) which gives you cycle-accurate data, much worse if you do it with interrupts). If you stay with this, using GSPDO is total waste. FPGA (such as Spartan-7) can theoretically give you time resolution of 50-100 ps, which is at least 200 times better than PIC32. On the other hand, PIC is easy. FPGA is easy if you want 2-3 ns resolution - you simply create a counter, run it at 500MHz, and record readings every second. However if you want better than this, there's much more work. You will need calibration logic, and the further you go the more problems you encounter - temperature, trace lengths, SI, jitter, drift etc.
Time resolution is not the only thing you need. The method is important. If you want 1 Hz accuracy, you can simply count pulses for 1 second. You can do it on PIC. If you need sub-Hz frequency, you need to count longer, or you need to change your method and measure time between edges. You still can do it on PIC, but not at higher frequencies.
Therefore, the first thing you need to do is to decide on the accuracy you need in your frequency counter.