Blame | Last modification | View Log | Download | RSS feed | ?url?
% PENTAGON-1024SL ver 2.2
*** Additional CPLD design ***
King Of Evil 2004-2006
%
Title "P1024SL2";
Subdesign P1024SL2
(
a0, a1, a3, a9, a12, a13, a14, a15, mreq, iorq, wr,
trd, m1, f8, sr, sl, wd, wfde, rdd: input;
drd, rclk, wrd, wgclk, wrfe, bc1, bdir, port1, port2,
tr, ma: output;
)
Variable
ftakt, wgtrg1, wgtrg2, count[3..0], shift[3..0],
strg1, strg2 :dff;
a1415, trtr, iowr, ay, 7ffd, eff7, mm, notwfde, qdr, cclk, f1 :node;
Begin
mm=mreq or m1;
a1415=a14 nor a15;
ma=mm or a1415;
trtr=not (a1415 and (not trd) and a13 and a12 and (not a9));
tr=trtr or mm;
iowr=iorq or wr;
ay=(a15 and a13) nand (a1 nor iorq);
bc1=ay nor (a14 nand m1);
bdir=ay nor wr;
7ffd=a15 or a1 or iowr;
eff7=iowr or a3 or a12 or (not (a15 and a14 and a13));
wrfe=iowr or a0;
port1=eff7 and wrfe; port2=wrfe nand 7ffd;
notwfde=not wfde;
ftakt.clk=f8; cclk=not (ftakt.q); ftakt.d=cclk;
strg1.clk=cclk; f1=not(strg1.q); strg1.d=f1;
strg2.clk=f1; wgclk=not(strg2.q); strg2.d=wgclk;
wgtrg1.clk=cclk; wgtrg1.d=rdd; wgtrg1.clrn=notwfde; wgtrg1.prn=vcc;
qdr=wgtrg1.q;
wgtrg2.clk=cclk; wgtrg2.d=qdr; wgtrg2.prn=notwfde; wgtrg2.clrn=vcc;
drd=(not (wgtrg2.q)) or qdr;
rclk=count[3].q;
count[].clk=cclk;
if drd then count[].d=count[].q+1;
else count[0].d=gnd; count[1].d=gnd; count[2].d=vcc; count[3].d=rclk;
end if;
shift[].clk=not cclk;
if wd then shift[0].d=sr; shift[1].d=sr nor sl; shift[2].d=sl; shift[3].d=gnd;
else shift[3..1].d=shift[2..0].q; shift[0].d=gnd;
end if;
wrd=shift[3].q;
end;