home *** CD-ROM | disk | FTP | other *** search
- TITLE UNIVERSAL PORT INTERFACE ADAPTOR
- ; FOR THE MC68020 32-Bit MICROPROCESSOR
- PATTERN PORT INTERFACE.
- REVISION 06.
- AUTHOR VINCENT J. COLI.
- COMPANY MONOLITHIC MEMORIES INC, SANTA CLARA, CA.
- DATE 23 NOVEMBER 1985.
-
- CHIP PORT_INTERFACE PAL20RA10
-
- ;PIN 1 2 3 4 5 6
- /PL /CS CLK /ECS /AS SIZ1
- ;PIN 7 8 9 10 11 12
- SIZ0 PS1 PS0 WS0 WS1 GND
- ;PIN 13 14 15 16 17 18
- /OE /DSACK0 /DSACK1 /LLD /LMD /UMD
- ;PIN 19 20 21 22 23 24
- /UUD Q0 Q1 A0 A1 VCC
- ;
- ;PIN DESCRIPTION
- ;
- ;PIN 1 : /PL..PRELOAD INPUT. /PL IS TAKEN INACTIVE HIGH
- ; : FOR NORMAL OPERATION. TO EFFECT A PRELOAD THE
- ; : THE OUTPUT BUFFERS ARE PUT INTO A 3 - STATE
- ; : CONDITION. DATA IS PLACED ON THE OUTPUT PINS
- ; : AND /PL IS TAKEN ACTIVE LOW. THE PRELOAD DATA
- ; : FALLS THROUGH INTO THE REGISTER ARRAY. THIS
- ; : PIN IS PULLED HIGH FOR NORMAL OPERATION.
- ;PIN 2 :/CS..EXTERNAL INPUT THAT IS DECODED FROM THE
- ; : MICROPROCESSORS HIGHER ORDER ADDRESS LINES WHICH
- ; : GOES ACTIVE LOW TO SELECT THE UNIVERSAL PORT
- ; : ADAPTOR. THIS IS AN ACTIVE LOW INPUT AND COULD
- ; : BE THE OUTPUT OF ANOTHER PAL DEVICE.
- ;PIN 3 : CLK..THE MICROPROCESSOR'S SYSTEM CLOCK DRIVES
- ; : THIS INPUT PIN TO SYNCHRONIZE EVENTS BETWEEN
- ; : THE 68020 AND THE PAL20RA10.
- ;PIN 4 : /ECS..INPUT FROM THE 68020 MICROPROCESSOR THAT
- ; : GOES LOW FOR ONE HALF OF A CLOCK CYCLE TO
- ; : INDICATE THAT THE MPU IS STARTING A BUS CYCLE.
- ;PIN 5 : /AS..ADDRESS STROBE FROM THE 68020 TO VALIDATE
- ; : THE MPU'S FUNCTION CODES, ADDRESS LINES, SIZE
- ; : OUTPUTS AND R/W CONTROL LINES.
- ;PIN 6 : SIZ1..SIZE OUTPUT USED WITH SIZ0 TO INDICATE
- ; : HOW MANY TRANSFERS REMAIN IN A GIVEN BUS CYCLE.
- ;PIN 7 : SIZ0..SIZE OUTPUT USED WITH SIZ1.
- ;
- ;PIN 8 - 9 : PS1,PS0..THESE TWO RESPECTIVE INPUTS TO
- ; : THE PAL20RA10 MAY BE HARDWIRED TO A ONE
- ; : OF FOUR DIGITAL CODE. THIS INDICATES WHETHER
- ; : THE PORT IS NOT PRESENT, BYTE WIDE, WORD WIDE
- ; : OR LONG WORD WIDE. SEE TRUTH TABLE FOR PORT
- ; : SIZE SELECTION.
- ;
- ;PIN 10 - 11 : WS1 AND WS0 RESPECTIVELY. THE ONE OF FOUR
- ; : CODES HARDWIRED TO THIS INPUT INDICATE
- ; : WHETHER ZERO, ONE, TWO OR THREE WAIT
- ; : STATES SHOULD BE INSERTED IN A GIVEN
- ; : CYCLE. SEE TRUTH TABLE FOR WAIT STATES.
- ;PIN 13 : ACTIVE LOW OUTPUT ENABLE FOR THE PAL20RA10.
- ;PIN 14 : /DSACK0..OUTPUT TO THE 68020, PART OF THE
- ; : ASYNCHRONOUS HANDSHAKE INDICATING, WITH /DSACK1
- ; : THE SIZE OF THE PORT, WHEN THE PORT IS READY FOR
- ; : ACCESS.
- ;PIN 15 : /DSACK1..OUTPUT TO THE 68020 USED WITH /DSACK0.
- ;PIN 16 : /LLD..A COMBINATIONAL ADDRESS DECODE OUTPUT TO
- ; : SELECT DATA BUS D0 - D7. ACTIVE LOW.
- ;PIN 17 : /LMD..A COMBINATIONSL ADDRESS DECODE OUTPUT TO
- ; : SELECT DATA BUS D8 - D15. ACTIVE LOW.
- ;PIN 18 : /UMD..A COMBINATIONAL ADDRESS DECODE OUTPUT TO
- ; : SELECT DATA BUS D16 - D23, FOR LONG WORD
- ; : TRANSFERS AND /LD FOR WORD TRANSFERS. ACTIVE LOW.
- ;PIN 19 : /UUD..A COMBINATIONAL ADDRESS DECODE OUTPUT TO
- ; : SELECT DATA BUS D24 - D31, FOR LONG WORD
- ; : TRANSFERS AND /UD FOR WORD TRANSFERS. AND /CS
- ; : BYTE TRANSFERS. ACTIVE LOW.
- ;PIN 20 : Q0..LEAST SIGNIFICANT BIT OUTPUT FROM A TWO
- ; : BIT COUNTER WHICH INCREMENTS ON EACH WAIT STATE
- ; : SAMPLE UNTIL THE COUNT IS EQUAL TO THE WS0, WS1
- ; : BINARY CODED INPUT.
- ;PIN 21 : Q1..MOST SIGNIFICANT BIT OUTPUT OF STATE COUNTER
- ; : USED WITH Q0.
- ;PIN 22 : A0..LEAST SIGNIFICANT ADDRESS INPUT FROM 68020.
- ;PIN 23 : A1..NEXT LEAST SIGNIFICANT ADDRESS INPUT FROM
- ; : 68020.
- ;
- EQUATIONS
-
- UUD = PS1*PS0*CS*AS*/A1*/A0 ;UPPER UPPER DATA BUS (D31-D24)
- + PS1*/PS0*CS*AS*/A0 ;UD FOR 16-BIT PORT
- + /PS1* PS0* CS*AS ;CS FOR 8 BIT PORT
- ;
- /UMD = PS0*A1 ;UPPER MIDDLE DATA BUS (D23-D16)
- + /SIZ1*SIZ0*/A0 ;LD FOR 16-BIT PORT
- + /CS ;
- + /AS ;
- ;
- LMD = PS1*PS0*CS*AS*A1*/A0 ;LOWER MIDDLE DATA BUS (D15-D8)
- + PS1*PS0*CS*AS*/SIZ1*/SIZ0*/A1 ;
- + PS1*PS0*CS*AS*SIZ1* SIZ0*/A1 ;
- + PS1*PS0*CS*AS*/SIZ0*/A1*A0 ;
- ;
- LLD = PS1*PS0*CS*AS*SIZ1*SIZ0*A0 ;LOWER LOWER DATA BUS (D7-D0)
- + PS1*PS0*CS*AS*/SIZ1*/SIZ0 ;
- + PS1*PS0*CS*AS*A1*A0 ;
- + PS1*PS0*CS*AS*SIZ1*A1 ;
- ;
- DSACK0 := PS0*/WS1*/WS0*/Q1*/Q0 ;NO WAIT STATES
- + PS0*/WS1* WS0*/Q1*Q0 ;ONE WAIT STATE
- + PS0* WS1*/WS0*Q1*/Q0 ;TWO WAIT STATES
- + PS0* WS1* WS0*Q1*Q0 ;THREE WAIT STATES
- DSACK0.CLKF = CLK*/DSACK1*/DSACK0 ;CLOCK WHEN DSACK IS UNASSERTED
- DSACK0.RSTF = /AS ;UNASSERTED ADDRESS STROBE RESETS
- DSACK0.TRST = CS ;3-STATE WHEN PORT IS NOT SELECTED
- ;
- DSACK1 := PS1*/WS1*/WS0*/Q1*/Q0 ;NO WAIT STATES
- + PS1*/WS1* WS0*/Q1*Q0 ;ONE WAIT STATE
- + PS1* WS1*/WS0* Q1*/Q0 ;TWO WAIT STATES
- + PS1* WS1* WS0*Q1*Q0 ;THREE WAIT STATES
- DSACK1.CLKF = CLK*/DSACK1*/DSACK0 ;CLOCK WHEN DSACK IS UNASSERTED
- DSACK1.RSTF = /AS ;
- ;
- DSACK1.TRST = CS ;3-STATE WHEN PORT IS NOT SELECTED
- ;INTERNAL STATE COUNTER IS
- Q0 := /Q0 + Q0*Q1 ;RESET FOR THE START OF EACH
- Q0.CLKF = CLK ;MEMORY CYCLE. AND IS INCREMENTED
- Q0.SETF = /AS ;BY THE SYSTEM CLOCK. THE COUNT
- ;SEQUENCE IS COMPARED WITH THE
- Q1 := Q0*/Q1 + /Q0*Q1 + Q0*Q1 ;WAIT STATE INPUT. WHEN THE COUNT
- ;IS EQUAL TO NO OF WAIT STATES
- Q1.CLKF = CLK ;DSACK IS ASSERTED. AT THE END
- Q1.SETF = /AS ;EACH CYCLE THE COUNTER RESETS.
-
- SIMULATION ;SIMULATION SECTION
- ;
- TRACE_ON CLK /ECS /AS PS1 PS0 WS0 WS1 ;SET ZERO WAIT STATES FOR
- /DSACK0 /DSACK1 Q0 Q1 ;FOR A 32 BIT PORT. SET
- SETF /PL OE /CLK CS /AS ;INITIAL CONDITIONS. TO MARK
- /ECS PS1 PS0 /WS1 /WS0 ;END OF PREVIOUS CYCLE.
- FOR J := 0 TO 3 DO ;APPLY FOUR LOOPS TO TEST
- BEGIN ;WAIT STATE GENERATION FIRST
- IF J = 1 THEN ;FOR A 32 BIT PORT. PS0 AND
- BEGIN SETF /PS0 PS1 /WS1 /WS0 ;PS1 HIGH. WITH PS0 LOW AND
- END ;PS1 HIGH THE PORT IS 16
- IF J = 2 THEN ;BITS WIDE. AND THE LOOP IS
- BEGIN SETF PS0 /PS1 /WS1 /WS0 ;RE-RUN. WITH PS0 HIGH AND
- END ;PS1 LOW THE PORT IS BYTE
- IF J = 3 THEN ;WIDE. NO PORT IS PRESENT
- BEGIN SETF /PS0 /PS1 /WS1 /WS0 ;WHEN PS0 AND PS1 ARE BOTH
- END ;SET LOW.
- SETF CLK ECS ;ECS GO INACTIVE. AT START
- SETF /CLK /ECS ;OF CYCLE /ECS GOES ACTIVE
- SETF AS ;FOLLOWD BY AS.
- FOR I := 1 TO 2 DO ;SYSTEM CLOCK GENERATES
- BEGIN ;TWO CLOCKS BEFOR THE
- SETF CLK SETF /CLK ;END OF A CYCLE WITH
- END ;ZERO WAIT STATES.
- SETF /AS ;AT END OF CYCLE SET AS
- SETF CLK ;INACTIVE THEN SET /ECS
- SETF /CLK /AS /ECS /WS1 WS0 ;INACTIVE. SET WAIT STATE
- SETF CLK ECS ;INPUT FOR ONE WAIT STATE
- SETF /CLK /ECS ;/ECS GOES ACTIVE THEN
- SETF AS ;INACTIVE TO MARK START
- FOR I := 1 TO 3 DO ;OF CYCLE. FOLLOWED BY
- BEGIN ;AS GOING ACTIVE. THREE
- SETF CLK SETF /CLK ;SYSTEM CLOCKS ARE REQUIRED
- END ;ON THE APPLICATION OF ONE
- SETF /AS ;WAIT STATE. SET /AS INACTIVE
- SETF CLK ;AT THE END OF CYCLE. SET
- SETF /CLK /AS /ECS WS1 /WS0 ;ECS INACTIVE, AND APPLY
- SETF CLK ECS ;A TWO WAIT STATE INPUT. AT
- SETF /CLK /ECS ;START OF THE CYCLE ECS GOES
- SETF AS ;ACTIVE THEN INACTIVE FOLLOWED
- FOR I := 1 TO 4 DO ;BY THE ADDRESS STROBE. FOUR
- BEGIN ;SYSTEM CLOCKS ARE REQUIRED
- SETF CLK SETF /CLK ;WITH TWO WAIT STATES APPLIED.
- END ;
- SETF /CLK ;AT THE END OF THE CYCLE
- SETF /AS ;AS GOES INACTIVE FOLLOWED
- SETF CLK ;BY ECS. THE WAIT STATE
- SETF /CLK /AS /ECS WS1 WS0 ;INPUT IS SET FOR THREE.
- SETF CLK ECS ;AT START OF CYCLE ECS IS
- SETF /CLK /ECS ;DRIVEN ACTIVE THEN INACTIVE
- SETF AS ;AS GOES ACTIVE. WITH THE
- FOR I := 1 TO 5 DO ;APPLICATION OF THREE WAIT
- BEGIN ;STATES FIVE SYSTEM CLOCKS
- SETF CLK SETF /CLK ;ARE REQUIRED.
- END ;AT THE END OF THE THREE
- SETF /AS ;WAIT STATE CYCLE /AS IS
- SETF CLK ;DRIVEN INACTIVE.
- SETF /CLK ;
- END ;
- TRACE_OFF ;
-