1
0
mirror of https://github.com/UzixLS/zx-sizif-xxs.git synced 2025-07-19 07:11:28 +03:00

fix io contention

This commit is contained in:
UzixLS
2022-01-30 15:59:25 +03:00
parent 391a0b32bf
commit cd13ac4a2d

View File

@ -30,12 +30,12 @@ module cpucontrol(
/* CONTENTION */ /* CONTENTION */
wire iorq_contended = bus.iorq && (~bus.a[0] || (~bus.a[1] && ~bus.a[15])); wire iorq_contended = bus.iorq && (~bus.a[0] || (~bus.a[1] && ~bus.a[15] && bus.wr)) && (machine != MACHINE_S3);
reg mreq_delayed, iorq_delayed; reg mreq_delayed, iorq_delayed;
always @(posedge clkcpu) always @(posedge clkcpu)
mreq_delayed <= bus.mreq; mreq_delayed <= bus.mreq;
always @(posedge clkcpu) always @(posedge clkcpu)
iorq_delayed <= iorq_contended; iorq_delayed <= bus.iorq && ~bus.a[0];
wire contention_mem_page = (machine == MACHINE_S3)? rampage128[2] : rampage128[0]; wire contention_mem_page = (machine == MACHINE_S3)? rampage128[2] : rampage128[0];
wire contention_mem_addr = bus.a[14] & (~bus.a[15] | (bus.a[15] & contention_mem_page)); wire contention_mem_addr = bus.a[14] & (~bus.a[15] | (bus.a[15] & contention_mem_page));
wire contention_mem = iorq_delayed == 1'b0 && mreq_delayed == 1'b0 && contention_mem_addr; wire contention_mem = iorq_delayed == 1'b0 && mreq_delayed == 1'b0 && contention_mem_addr;