--- Quote Start ---
One more question, is there any metastability problem in my design?
--- Quote End ---
Should be O.K. by double registering of SCK and SS.
--- Quote Start ---
Could you show me more details?
--- Quote End ---
Domain crossing data transfer is easy for write data, register the data in the SCK domain, transfer the update event to the sysclock domain, e.g. by a toggle synchronizer. The data can be expected to be stable and consistent when the update event arrives.
Read data transfer is more difficult. A suitable method depends on the amount of data (number of different read addresses). A straightforward way is to have registers permanently updated by the sysclock, update is paused while synchronized SS is active. If you have too many data, it can be fetched after the address is decoded, possibly needing a few empty SPI clock cycles between address and data phase.