Additional sound QoS

This commit is contained in:
Zane Kaminski 2024-09-29 06:51:00 -04:00
parent 835ee81f0d
commit 3a8f07e71b

View File

@ -71,26 +71,53 @@ module CNT(
end
end
/* I/O QoS select register */
reg IOQoSCSr;
always @(posedge CLK) IOQoSCSr <= IOQoSCS;
/* QoS select register */
reg QoSCSr;
always @(posedge CLK) QoSCSr <= IOQoSCS || SndQoSCS;
reg SndQoSCSr;
always @(posedge CLK) SndQoSCSr <= SndQoSCS;
/* I/O QoS timer */
reg [2:0] IOQS;
always @(posedge CLK) begin
if (!nRESr || (BACTr && QoSCSr)) IOQS[2:0] <= 1;
if (!nRESr || (BACTr && (IOQoSCSr || SndQoSCSr))) IOQS[2:0] <= 1;
else if (IOQS==0) IOQS[2:0] <= 0;
else if (EFall && TimerTC) IOQS[2:0] <= IOQS[2] ? 0 : IOQS+1;
end
/* Sound QoS timer */
reg [1:0] SndQS;
always @(posedge CLK) begin
if (BACTr && SndQoSCSr) SndQS[1:0] <= 1;
else if (BACTr && IOQoSCSr) SndQS[1:0] <= 0;
else if (SndQS==0) SndQS[1:0] <= 0;
else if (EFall && TimerTC) SndQS[1:0] <= SndQS+1;
end
/* I/O QoS enable */
always @(posedge CLK) if (!BACT) IOQoSEN <= IOQS!=0;
/* Sound QoS enable */
always @(posedge CLK) if (!BACT) SndQoSEN <= SndQS!=0;
/* MC68K clock enable */
always @(posedge CLK) MCKE <= BACT || BACTr || (IOQS==0) || C8MFall;
/* Sound QoS removed */
assign SndQoSReady = 1;
/* Sound QoS wait state control */
reg [4:0] Wait;
always @(posedge CLK) begin
if (!BACT) Wait <= 0;
else Wait <= Wait+1;
end
/* Sound QoS ready control */
always @(posedge CLK) begin
if (!BACT) SndQoSReady <= !SndQoSEN;
else if (BACTr) IOQoSCSr <= 1;
else if (Wait==5'h1F) SndQoSReady <= 1;
end
/* Startup sequence state control */
wire ISTC = EFall && TimerTC && LTimerTC;