TITLE "LMA Rev 3 Programming PLD"; CONSTANT PROG_ADDRESS = H"238"; SUBDESIGN prog ( %*--INPUTS--*% address[9..0] : INPUT; %* PC control to TOA *% pc_data[7..0] : BIDIR; ior, iow : INPUT; aen : INPUT; reset : INPUT; conf_done : INPUT; nstatus : INPUT; %*--OUTPUTS--*% data : OUTPUT; nconfig : OUTPUT; dclk : OUTPUT; ) VARIABLE control_latch[2..0] : DFFE; port_read : NODE; port_write : NODE; BEGIN IF ((address[9..0] == PROG_ADDRESS) & (aen == GND) & iow == GND) THEN port_write = GND; ELSE port_write = VCC; END IF; IF ((address[9..0] == PROG_ADDRESS) & (aen == GND) & ior == GND) THEN port_read = GND; ELSE port_read = VCC; END IF; control_latch[2..0].d = pc_data[2..0]; control_latch[2..0].clk = port_write; control_latch[2..0].clrn = !reset; nconfig = control_latch[2]; data = control_latch[1]; dclk = control_latch[0]; pc_data[7] = TRI (VCC, !port_read); pc_data[6] = TRI (GND, !port_read); pc_data[5] = TRI (VCC, !port_read); pc_data[4] = TRI (nstatus, !port_read); pc_data[3] = TRI (conf_done, !port_read); pc_data[2] = TRI (control_latch[2].q, !port_read); pc_data[1] = TRI (control_latch[1].q, !port_read); pc_data[0] = TRI (control_latch[0].q, !port_read); END;