home *** CD-ROM | disk | FTP | other *** search
-
- TITLE LIFO RAM CONTROLLER.
- PATTERN 01A.
- REVISION 01.
- AUTHOR CHRIS JAY.
- COMPANY MMI SANTA CLARA, CA.
- DATE 23 SEPTEMBER 1986.
- ;
- ;THE ESSENTIAL CONTROL SIGNALS FOR CONTROLLING
- ;A CMOS STATIC RAM AS A HARDWARE STACK OR
- ;LAST IN FIRST OUT MEMORY ARE GENERATED BY
- ;THE PAL32VX10. WHEN A HIGH PUSH INPUT IS
- ;RECIEVED THE /WR OUTPUT GOES FROM INACTIVE
- ;HIGH TO ACTIVE LOW FOLLOWED BY AN ACTIVE
- ;LOW CHIP SELECT, /CS. PRIOR TO THE ACTIVE WRITE
- ;CYCLE THE ADDRESS COUNT IS INCREMENTED. SO
- ;A PUSH CYCLE WILL CONSIST OF ADDRESS INCREMENT
- ;FOLLOWED BY A WRITE. A POP CYCLE WILL
- ;DECREMENT THE ADDRESS COUNTER AFTER AN ACTIVE
- ;READ. THE /CS OUTPUT WILL GO LOW WITH /WR
- ;INACTIVE HIGH. AS A 'STAND ALONE' DESIGN THIS
- ;PAL CAN CONTROL THE DATA FLOW INTO A STACK
- ;128 LOCATIONS DEEP. FOR THE CONTROL OF LARGER
- ;RAM ARRAYS IT IS POSSIBLE TO CASCADE TWO PAL
- ;DEVICES. THE MOST SIGNIFICANT ADDRESS BIT WILL
- ;BECOME A CARRY OUT SIGNAL FOR A SECOND PAL
- ;DEVICE THE CARRY SIGNAL PROPAGATES
- ;AN UP/DOWN COUNT ENABLE TO THE SECOND PAL
- ;ALLOWING ADDRESSING OF 8K X 8 DEEP STATIC RAMS.
- ;THESE MAY BE EXPANDED IN WIDTH, AND CONTROLLED
- ;BY THE SAME PAL DEVICES TO CREATE STACK
- ;MEMORY ARRAYS OF 16 AND 24 AND 32 BITS
- ;WIDE.
- ;
- CHIP LIFOCONT PAL32VX10
- ;
- ;PIN 1 2 3 4 5 6
- CLK /RST PUSH POP NC NC
-
- ;PIN 7 8 9 10 11 12
- NC NC NC NC NC GND
-
- ;PIN 13 14 15 16 17 18
- NC /WR /CSX XO /Q6 /Q5
-
- ;PIN 19 20 21 22 23 23
- /Q4 /Q3 /Q2 /Q1 /Q0 VCC
-
- GLOBAL BWR BCSX X Q6B Q5B Q4B Q3B Q2B Q1B Q0B
-
- STRING CKUEN '/BWR*/BCSX*/X*PUSH' ;CLOCK UP ENABLE
- STRING CKDEN '/BCSX*X*POP' ;CLOCK DOWN ENABLE
-
- EQUATIONS
-
- GLOBAL.SETF = RST ;ASYNCHRONOUS
- ;RESET.
- /Q0B := /Q0B ;LEAST SIGNIFICANT
- :+: CKUEN ;BIT OF THE
- + CKDEN ;LIFO ADDRESS
- /Q0 = /Q0B ;COUNTER
- /Q0.CMBF = GND ;ENABLE REGISTER
- ;TO A0 OF RAM
- /Q1B := /Q1B ;HOLD COUNT
- :+: /Q0B*CKDEN ;ENABLE DOWN COUNT
- + Q0B*CKUEN ;ENABLE UP COUNT
- /Q1 = /Q1B ;ENABLE REGISTER
- /Q1.CMBF = GND ;TO A1 OF RAM
- ;
- /Q2B := /Q2B ;HOLD
- :+: /Q0B*/Q1B*CKDEN ;ENABLE DOWN COUNT
- + Q0B*Q1B*CKUEN ;ENABLE UP COUNT
- /Q2 = /Q2B ;ENABLE REGISTER
- /Q2.CMBF = GND ;TO A2 OF RAM
- ;
- /Q3B := /Q3B ;HOLD
- :+: /Q0B*/Q1B*/Q2B*CKDEN ;ENABLE DOWN COUNT
- + Q0B*Q1B*Q2B*CKUEN ;ENABLE UP COUNT
- /Q3 = /Q3B ;ENABLE REGISTER
- /Q3.CMBF = GND ;TO A3 OF RAM
- ;
- /Q4B := /Q4B ;HOLD
- :+: /Q0B*/Q1B*/Q2B*/Q3B*CKDEN ;ENABLE DOWN COUNT
- + Q0B*Q1B*Q2B*Q3B*CKUEN ;ENABLE UP COUNT
- /Q4 = /Q4B ;ENABLE REGISTER
- /Q4.CMBF = GND ;TO A4 OF RAM
- ;
- /Q5B := /Q5B ;HOLD
- :+: /Q0B*/Q1B*/Q2B*/Q3B*/Q4B ;
- *CKDEN ;ENABLE DOWN COUNT
- + Q0B*Q1B*Q2B*Q3B*Q4B*CKUEN ;ENABLE UP COUNT
- /Q5 := /Q5B ;ENABLE REGISTER
- /Q5.CMBF = GND ;TO A5 OF RAM
- ;
- BCSX := /BCSX*BWR*/X*PUSH ;CHIP SELECT TO
- + POP*/X*/BCSX*/BWR ;RAM ACTIVE LOW
- /CSX = /BCSX ;FOR READ AND
- /CSX.CMBF = GND ;WRITE
- ;
- BWR := BWR*/X*PUSH ;RD/WR CONTROL TO
- + /BCSX*/X*PUSH ;RAM, ACTIVE LOW
- + /BCSX*X*POP ;TO WRITE, HIGH
- + BWR*POP ;TO READ
- /WR = /BWR ;
- /WR.CMBF = GND ;
- ;
- X := BWR*BCSX*/X ;CONTROL SIGNAL
- + X*PUSH*/BCSX ;X, TO ENABLE
- + BCSX*/X ;SEQUENCING OF
- XO := X ;CS,WR AND THE
- XO.CMBF = GND ;CONTROLLING OF
- ;ADDRESS LINES
- /Q6B := /Q6B ;HOLD
- :+: Q0B*Q1B*Q2B*Q3B*Q4B*Q5B ;
- *CKUEN ;ENABLE UP COUNT
- + /Q0B*/Q1B*/Q2B*/Q3B*/Q4B ;
- */Q5B*CKDEN;ENABLE DOWN COUNT ;
- /Q6 = /Q6B ;
- /Q6.CMBF = GND ;
- ;
- SIMULATION
-
- TRACE_ON /WR /CSX XO CLK PUSH POP ;
- Q0 Q1 Q2 Q3 Q4 Q5 Q6 ;
- SETF RST /PUSH /POP /CLK ;SET INITIAL CONDITIONS
- SETF /RST ;REMOVE ACTIVE RESET
- CLOCKF CLK ;
- FOR K := 1 TO 3 DO ;GENERATE THREE PUSH
- BEGIN ;CYCLES INTO THE RAM
- SETF PUSH ;SET PUSH INSTRUCTION
- FOR I := 1 TO 5 DO ;HIGH
- BEGIN CLOCKF CLK ;CLOCK FOR FIVE CYCLES
- END ;ONE WRITE CYCLE IS
- SETF /PUSH ;GENERATED.
- FOR J := 1 TO 3 DO ;REMOVE PUSH INSTRUCTION
- BEGIN CLOCKF CLK ;
- END ;
- END ;
- SETF /POP ;SET POP INACTIVE
- CLOCKF CLK ;GENERATE FOUR POP
- FOR L := 1 TO 4 DO ;CYCLES
- BEGIN ;GENERATE AN ACTIVE
- SETF POP ;POP, CLOCK ONE POP
- FOR M := 1 TO 5 DO ;CYCLE OVER FIVE
- BEGIN CLOCKF CLK ;CLOCKS.
- END ;
- SETF /POP ;SET POP INACTVE
- FOR N := 1 TO 3 DO ;OVER THREE CLOCK
- BEGIN CLOCKF CLK ;CYCLES.
- END ;
- END ;
- TRACE_OFF