// (c) NedoPC 2010
//
// wait generator for Z80
`include "../include/tune.v"
module zwait(
input wire rst_n,
input wire wait_start_gluclock,
input wire wait_start_comport,
input wire wait_end,
output reg [6:0] waits,
output wire wait_n,
output wire spiint_n
);
`ifdef SIMULATE
initial
begin
// force waits = 7'd0;
waits <= 7'd0;
end
`endif
wire wait_off_n;
assign wait_off_n = (~wait_end) & rst_n;
// RS-flipflops
//
always @(posedge wait_start_gluclock, negedge wait_off_n)
if( !wait_off_n )
waits[0] <= 1'b0;
else if( wait_start_gluclock )
waits[0] <= 1'b1;
//
always @(posedge wait_start_comport, negedge wait_off_n)
if( !wait_off_n )
waits[1] <= 1'b0;
else if( wait_start_comport )
waits[1] <= 1'b1;
always @(posedge wait_end) // just dummy for future extensions
begin
waits[6:2] <= 5'd0;
end
assign spiint_n = ~|waits;
`ifndef SIMULATE
assign wait_n = spiint_n ? 1'bZ : 1'b0;
`else
assign wait_n = 1'bZ;
`endif
endmodule