PARTNO U207 ; NAME U207 ; DATE July 1, 1992 ; REV 0 ; DESIGNER Dave Haynie ; COMPANY Commodore ; ASSEMBLY A3090 ; LOCATION West Chester ; DEVICE p22v10 ; /************************************************************************/ /* */ /* A3090 Network chip control and interrupt mixer. */ /* */ /* This device manages assorted COM20020 functions and combines */ /* interrupt signals from both this network device and the NCR */ /* SCSI chip. */ /* */ /************************************************************************/ /* */ /* DEVICE DATA: */ /* */ /* Device: 22V10-15 */ /* Clock: CLK (33MHz) */ /* Unused: 21(I/O) */ /* */ /************************************************************************/ /* */ /* REVISION HISTORY: */ /* */ /* DBH Jul 1: Original version. */ /* */ /************************************************************************/ /** INPUTS: **/ PIN 1 = CLK ; /* 33MHz system clock. */ PIN 2 = !NTXEN ; /* Transmit enable from COM20020. */ PIN 3 = !NINT ; /* Network interrupt. */ PIN 4 = !NET ; /* Basic network chip select decode. */ PIN 5 = !DS0 ; /* Low byte data strobe. */ PIN 6 = READ ; /* Z3 READ signal. */ PIN 7 = !RST ; /* System reset signal. */ PIN 8 = !SINT ; /* SCSI interrupt. */ PIN 9 = !INTVEC ; /* Interrupt vector generation. */ PIN 10 = FCS ; /* Z3 full cycle strobe. */ PIN 11 = !SLAVE ; /* Board select. */ PIN 13 = !CFGOUT ; /* Configuration chain output. */ PIN 16 = !ROM ; /* ROM select decode. */ /** OUTPUTS: **/ PIN 14 = !NDS ; /* Network data strobe. */ PIN 15 = !NCS ; /* Network chip select. */ PIN 20 = !NACK ; /* Network data acknowledge. */ PIN 22 = !INT ; /* Interrupt output. */ PIN 23 = PTXEN ; /* Transmit enable to RS-488 driver */ /** USED INTERNALLY: **/ PIN 17 = !NS2 ; /* Network chip cycle counter. */ PIN 18 = !NS1 ; PIN 19 = !NS0 ; /** INTERNAL TERMS: **/ /* The state vector */ field state = [NS2..0]; /** OUTPUT TERMS: **/ /* The transmit enable is just an inversion. */ PTXEN = NTXEN; /* The combined interrupt line is generated based on either of the device-specific interrupt lines. It can only change between Zorro III cycles. */ INT = !FCS & NINT # !FCS & SINT # INT & NINT # INT & SINT; /* This is a simple counter for network access states. The state count starts based on network chip or ROM access. */ NS0.D = !RST & FCS & NCS & !NS0 # !RST & FCS & ROM & !NS0; NS1.D = !RST & FCS & (NS0 $ NS1); NS2.D = !RST & FCS & ((NS0 & NS1) $ NS2); [NS2..0].AR = RST; /* The actual network signals are very easy from here. The chip select for the network chip is simply the first state after the asynchronous NET select has been received. */ NCS.D = !RST & FCS & NET # !RST & FCS & NCS; NCS.AR = RST; /* The network data strobe is driven based on the READ condition. Check the required timing of this again in the COM20020 spec. I also toggle this puppy prior to configuration so that the COM20020 has plenty of time to sense the kind of bus (Motorola in this case, NDS and R/W get diddled at the same time). */ NDS = READ & NCS # !READ & state:1 # NDS & FCS & !RST # !CFGOUT & SLAVE; /* The termination signal is at least 200ns from the chip select (again, verify the timing on this). Since the clock is 33MHz, the states are roughly 30ns each, so we'll need to wait seven states between NCS and the termination signal. Since the only other timed access on the board is the ROM response, that's done here too. A 150ns ROM needs five clocks. */ NACK = NET & state:7 # ROM & state:5 # NACK & FCS & !RST;