If the SPI clock is continuous (that is it never stops and another signal marks transactions) and fast enough, you can bring it into FPGA and use as a clock.
If the SPI clock isn't continuous (that is is stops between transfers), you cannot really use it as an FPGA clock because all the logic clocked by this clock will stop along with the clock. In this case, create an internal clock which is at least 4-5 times faster than SPI and sample the SPI clock and data as needed.
But why would you do this instead of just maintaining two different clock domains and synchronizing between them?
A relatively straightforward approach is to just use TDP RX and TX FIFOs, then you don't even have to bother with clock domain crossing.
Which one are you asking about? You quoted two paragraphs from my post which are opposite to each other.
Yeah, I should have trimmed the quote. I was replying to the second one.
But thing is: it depends. On the SPI clock frequency, and the internal clock frequency. Sometimes sampling is not the best option, especially if the oversampling factor is too low.
For the OP's case, 20 MHz SPI, 60 MHz internal clock - it doesn't look too great.
Even if it probably looks horrible to many, especially on FPGAs, the following approach has proven to work as long as the SPI clock is low enough (that would work fine up to at least 50 MHz on typical mid-range FPGAs IME): use the SPI clock as a clock input. That part doesn't look bad. But for "low" frequencies, you don't even need to use a dedicated clock input pin or internal clock network. A typical SPI slave block is small and simple enough that using fabric logic for the clock usually won't cause any timing issues (again for low enough frequencies). The received word can be clocked into the RX FIFO at the last SPI clock pulse, which can also trigger the read of the next word to send from the TX FIFO. And now the uglier part is using the CS signal as an asynchronous reset for your SPI state machine. It looks ugly, be since the SPI clock, in classic SPI, starts after a minimum delay after the first edge of CS, and stops before the last edge of CS, there should be no metastability issues to fear. And as long as the SPI clock is not too high, no timing issues to fear either.
At 20 MHz, I would definitely try this option first. I'm sure some people would cringe at the thought of doing that, though.