title Glue GAL for Transputer Link D to A board 1.0 pattern DACGAL revision 2.0 author Dave Keenan company Smalltalk Computing date 17-May-94 CHIP DACGAL GAL22V10 ; PINS 1 2 3 4 5 6 7 8 9 10 11 12 Clk10M NC NC NC NC NC NC NC IAck NC QValid GND ; PINS 13 14 15 16 17 18 19 20 21 22 23 24 /DnReset IValid QAck Clk5M /CSMSB /CSLSB /WR A0 A1 /LDAC LAReset VCC EQUATIONS ; Divide the crystal oscillator frequency by two to clock the C011 link adapter Clk5M := /Clk5M ; A state machine to increment the DAC address after each write (QValid), ; and to pulse LDAC and zero the address after 8 writes or if there is a read ; from the link adapter (IAck). LDAC := /DnReset * /LDAC * A1 * A0 * CSMSB * WR * /QValid + /DnReset * /LDAC * IAck * IValid * /QValid + /DnReset * /LDAC * /WR * IAck * IValid + /DnReset * LDAC * /A1 * /A0 * /CSMSB * /WR A1 := /DnReset * /LDAC * A1 * /IAck * QValid + /DnReset * /LDAC * A1 * WR * QValid + /DnReset * /LDAC * A1 * /WR * /IAck + /DnReset * /LDAC * /A1 * A0 * CSMSB * WR * /IAck * /QValid + /DnReset * /LDAC * A1 * /A0 * WR * /IAck + /DnReset * /LDAC * A1 * /CSMSB * WR * /IAck + /DnReset * /LDAC * A1 * /IValid * QValid + /DnReset * /LDAC * A1 * /WR * /IValid + /DnReset * /LDAC * /A1 * A0 * CSMSB * WR * /IValid * /QValid + /DnReset * /LDAC * A1 * /A0 * WR * /IValid + /DnReset * /LDAC * A1 * /CSMSB * WR * /IValid A0 := /DnReset * /LDAC * /A0 * CSMSB * WR * /IAck * /QValid + /DnReset * /LDAC * A0 * /CSMSB * /IAck + /DnReset * /LDAC * A0 * /WR * /IAck + /DnReset * /LDAC * A0 * /IAck * QValid + /DnReset * /LDAC * A0 * WR * QValid + /DnReset * /LDAC * /A0 * CSMSB * WR * /IValid * /QValid + /DnReset * /LDAC * A0 * /CSMSB * /IValid + /DnReset * /LDAC * A0 * /WR * /IValid + /DnReset * /LDAC * A0 * /IValid * QValid CSMSB := /DnReset * /LDAC * /CSMSB * WR * /IAck * /QValid + /DnReset * /LDAC * CSMSB * /WR * /IAck + /DnReset * /LDAC * CSMSB * /IAck * QValid + /DnReset * /LDAC * CSMSB * WR * QValid + /DnReset * LDAC * /A1 * /A0 * /CSMSB * /WR + /DnReset * /LDAC * /CSMSB * WR * /IValid * /QValid + /DnReset * /LDAC * CSMSB * /WR * /IValid + /DnReset * /LDAC * CSMSB * /IValid * QValid WR := /DnReset * /LDAC * WR * QValid + /DnReset * /LDAC * /IAck * QValid + /DnReset * /LDAC * /IValid * QValid ; Other outputs ; Wait until a byte is received (QValid) before sending a byte (IValid), to avoid ; having a transputer interpret it as the start of a boot after a reset. IValid := /DnReset * /IValid * /IAck * QValid + /DnReset * IValid * /IAck ; The eqn for /CSLSB must be identical to that for CSMSB /CSLSB := /DnReset * /LDAC * /CSMSB * WR * /IAck * /QValid + /DnReset * /LDAC * CSMSB * /WR * /IAck + /DnReset * /LDAC * CSMSB * /IAck * QValid + /DnReset * /LDAC * CSMSB * WR * QValid + /DnReset * LDAC * /A1 * /A0 * /CSMSB * /WR + /DnReset * /LDAC * /CSMSB * WR * /IValid * /QValid + /DnReset * /LDAC * CSMSB * /WR * /IValid + /DnReset * /LDAC * CSMSB * /IValid * QValid ; The eqn for QAck must be identical to that for WR QAck := /DnReset * /LDAC * WR * QValid + /DnReset * /LDAC * /IAck * QValid + /DnReset * /LDAC * /IValid * QValid LAReset = DnReset