Could you elaborate on using a clock to delay CS? There is a clock coming into the CPLD that I could utilise.
Here's a Verilog module I use to re-time an input (d) from a slower asynchronous clock domain, transferring it in to a higher-speed clock (clk) domain. This module also gives me single-cycle enable signals in the high-speed clock domain that go active on the rising and falling edges of the input signal. You don't usually want to use a single clocked register (flipflop) to sample an asynchronous signal, because of "metastability" (please look it up, it's important!). Here I am clocking the input through two stages, so the output (q) should be stable. The "rising" and "falling" outputs may be glitchy due to metastability, but they should be stable by the next clock edge, which is where I need to be stable in the rest of my synchronous design. The "q" output will follow the "d" input with a one or two clk delay. This design only works if "clk" is at least twice as fast as the width of the "d" high or low state.
//////////////////////////
module synch2(
input clk,
input d,
output q,
output rising,
output falling
);
reg [1:0] sr;
assign rising = (sr == 2'b01);
assign falling = (sr == 2'b10);
assign q = sr[1];
always @(posedge clk) sr <= {sr[0], d};
endmodule
//////////////////////
So this should give you a delay of one or two "clk" cycles. Even if your design is not synchronous, the "q" output should be glitch-free. If you need more delay, just add a third stage to the two-stage shift registeer ("reg [1:0] sr;").