Either use a TI CDCE913 (or variant) VCXO crystal PLL clock synthesizer to make your FPGA clock.
Tie the 1 PPS GPS to an FPGA input.
Use 2 FPGA outputs to drive a 2N3904/2N3906 to generate a 3 state tuning output voltage to drive the vctrl input of the clock synthesizer.
You FPGA code driving the 2 transistor IOs should only worry if the input GPS 1PPS is ahead of the VCXO output divided down to 1 Hz, drive the 2N3906 on, if it is behind, tune the 2N3904 on, otherwise leave both transistors off to let your charge pump cap hot the tuning speed.
For the 'CDCE913' solution, you can also use a DAC control, or, the 'CDCE913' has an internal I2C controlled DAC tied to it's vctrl pin getting rid of the 2N3904/2N3906 analog solution.
The other choice is to make an FPGA PLL clock set to an exact (1,024,000hz x 512) = 524,288,000 hz by any crystal and PLL settings necessary.
Now, make your divide by 512 clock from the 524.288 MHz (the MSB of this counter is your 1.024MHz sample clock) reset at every rising edge of your GPS 1PPS input. This will have an occasional +1 or -1 clock adjustment at the 524.88MHz range, (2ns glitch) but your sample clock will be locked onto you external GPS source.
I have done this with Altera and Cyclone IV also using a DDR input and DDR output to achieve better than 1ns glitch.
Also, instead of resetting the divide by 512 counter, you may phase compare and tune the FPGAs PLL's phase control offering 1/64 or 1/16 steps shrinking that 1ns or 2ns correction step down to the ~100ps or ~20ps size.