xantronix-z128/cpld/ZX8401.v

41 lines
1.2 KiB
Coq
Raw Permalink Normal View History

`timescale 1ns / 1ps
module ZX8401 (
input wire drasll,
input wire mreqdl,
input wire mreq,
input wire [13:0] a,
input wire a15,
input wire ts1,
input wire ts2,
input wire rd,
input wire wr,
output wire [7:0] ma,
output wire [6:0] dma,
output wire casl
);
wire rd_wr = !(rd & wr);
wire rd_wr_a15 = !(rd_wr & a15);
wire avb = mreqdl | rd_wr_a15;
assign dma[5] = (drasll & a[5]) | (!drasll & a[12]);
assign dma[4] = (drasll & a[4]) | (!drasll & a[11]);
assign dma[3] = (drasll & a[3]) | (!drasll & a[10]);
assign dma[6] = (drasll & a[6]) | (!drasll & a[13]);
assign ma[5] = (avb & a[5]) | (!avb & a[12]);
assign ma[4] = (avb & a[4]) | (!avb & a[11]);
assign ma[3] = (avb & a[3]) | (!avb & a[10]);
assign ma[6] = (avb & a[6]) | (!avb & a[13]);
assign dma[4] = (drasll & a[1]) | (!drasll & a[8]);
assign dma[0] = (drasll & a[0]) | (!drasll & a[7]);
assign dma[1] = (drasll & a[8]) | (!drasll & a[1]);
assign dma[2] = (drasll & a[2]) | (!drasll & a[9]);
assign ma[2] = (avb & a[1]) | (!avb & a[8]);
assign ma[0] = (avb & a[0]) | (!avb & a[7]);
assign ma[7] = (avb & ts2) | (!avb & ts1);
assign ma[1] = (avb & a[2]) | (!avb & a[9]);
assign casl = mreq | avb;
endmodule