Fixup Autoconfig dtack

Don't assert DTACK until data time during Autoconfig cycles.
Asserting on Autoconf address decode was too fast for 68040
This commit is contained in:
Matt Harlum 2022-06-07 18:52:41 +00:00
parent 2c0ebbb932
commit 849941a405
3 changed files with 909 additions and 902 deletions

File diff suppressed because it is too large Load Diff

View File

@ -25,6 +25,7 @@ module Autoconfig (
output reg CFGOUT_n,
output ram_cycle,
output autoconfig_cycle,
output reg dtack,
output reg configured,
output reg [3:0] DOUT
);
@ -63,6 +64,7 @@ begin
case (z3_state)
Z3_IDLE:
begin
dtack <= 0;
if (!FCS_n && autoconfig_cycle)
z3_state <= Z3_START;
else
@ -78,7 +80,11 @@ begin
z3_state <= Z3_START;
end
end
Z3_DATA: z3_state <= Z3_END;
Z3_DATA:
begin
z3_state <= Z3_END;
dtack <= 1;
end
Z3_END:
begin
if (FCS_n)

View File

@ -120,6 +120,7 @@ Autoconfig AUTOCONFIG (
.CFGOUT_n (autoconfig_cfgout),
.ram_cycle (ram_cycle),
.autoconfig_cycle (autoconfig_cycle),
.dtack (autoconfig_dtack),
.configured (configured),
.DOUT (autoconfig_dout),
.SENSEZ3 (SENSEZ3)
@ -155,7 +156,7 @@ assign BUFDIR = READ;
assign CFGOUT_n = (SENSEZ3) ? autoconfig_cfgout : CFGIN_n;
assign SLAVE_n = !(!FCS_n && (autoconfig_cycle || ram_cycle));
assign DTACK_n = (!SLAVE_n) ? !(ram_dtack || autoconfig_cycle) : 1'bZ;
assign DTACK_n = (!SLAVE_n) ? !(ram_dtack || autoconfig_dtack) : 1'bZ;
assign MTACK_n = 1'bZ;