home *** CD-ROM | disk | FTP | other *** search
- TITLE 180DEGREE COUNT
- PATTERN 01
- REVISION 01
- AUTHOR CHRIS JAY
- COMPANY MMI SANTA CLARA
- DATE 17 OCTOBER 1986
-
- ;THE PAL20X10 IS DESIGNED TO COUNT UP FROM 0 TO 180
- ;THEN COUNT DOWN FROM 180 TO 0 FOR THE PURPOSE
- ;OF ADDRESSING A CLOSE APPROXIMATION TO A SINE
- ;FUNCTION STORED IN A BIPOLAR PROM. THE OUTPUT FROM
- ;THE PROM IS FED TO A D/A CONVERTER. THE COUNTER
- ;HAS THREE MODES OF OPERATION, UP COUNT, DOWN COUNT
- ;AND LOAD. DURING AN ACTIVE LOAD A PHASE SHIFT MAY
- ;BE LOADED INTO THE COUNTER, THE SINE WAVE OUTPUT
- ;FROM THE D/A CONVERTER MAY BE PHASE SHIFTED FROM
- ;A REFERENCE WITH AN ACCURACY OF ONE DEGREE.
- ;THE UP REGISTER OUTPUT WILL GO HIGH FOR AN UP
- ;COUNT AND LOW FOR A DOWN COUNT. CDN WILL GO HIGH
- ;FOR A DOWN COUNT AND LOW FOR AN UP COUNT.
- ;THESE CONTROLS AUTOMATICALLY ENABLE UP AND DOWN
- ;COUNT OF REGISTERS Q0 TO Q7.
-
- CHIP DEGREE PAL20X10
-
- ;PIN 1 2 3 4 5 6
- CLK /LD D0 D1 D2 D3
- ;PIN 7 8 9 10 11 12
- D4 D5 D6 D7 DOWN GND
- ;PIN 13 14 15 16 17 18
- /OE Q0 Q1 Q2 Q3 Q4
- ;PIN 19 20 21 22 23 24
- Q5 Q6 Q7 UP CDN VCC
-
- EQUATIONS
-
- /Q0 := Q0*/LD ;TOGGLE
- + /D0*LD ;LOAD D0
- ;
- /Q1 := /Q1*/LD ;HOLD Q1
- + /D1*LD ;LOAD D1
- :+: Q0*/LD*UP ;COUNT UP
- + /Q0*/LD*/UP ;COUNT DOWN
- ;
- /Q2 := /Q2*/LD ;HOLD Q2
- + /D2*LD ;LOAD D2
- :+: Q0*Q1*/LD*UP ;COUNT UP
- + /Q0*/Q1*/LD*/UP ;COUNT DOWN
- ;
- /Q3 := /Q3*/LD ;HOLD Q3
- + /D3*LD ;LOAD D3
- :+: Q0*Q1*Q2*/LD*UP ;COUNT UP
- + /Q0*/Q1*/Q2*/LD*/UP ;COUNT DOWN
- ;
- /Q4 := /Q4*/LD ;HOLD Q4
- + /D4*LD ;LOAD D4
- :+: Q0*Q1*Q2*Q3*/LD*UP ;COUNT UP
- + /Q0*/Q1*/Q2*/Q3*/LD*/UP ;COUNT DOWN
- ;
- /Q5 := /Q5*/LD ;HOLD Q5
- + /D5*LD ;LOAD D5
- :+: Q0*Q1*Q2*Q3*Q4*/LD*UP ;COUNT UP
- + /Q0*/Q1*/Q2*/Q3*/Q4*/LD*/UP ;COUNT DOWN
- ;
- /Q6 := /Q6*/LD ;HOLD Q6
- + /D6*LD ;LOAD D6
- :+: Q0*Q1*Q2*Q3*Q4*Q5*/LD*UP ;COUNT UP
- + /Q0*/Q1*/Q2*/Q3*/Q4*/Q5*/LD*/UP ;COUNT DOWN
- ;
- /Q7 := /Q7*/LD ;HOLD Q7
- + /D7*LD ;LOAD D7
- :+: Q0*Q1*Q2*Q3*Q4*Q5*Q6*/LD*UP ;COUNT UP
- + /Q0*/Q1*/Q2*/Q3*/Q4*/Q5*/Q6*/LD*/UP ;COUNT DOWN
- ;
- /UP := /UP*/LD ;HOLD UP
- + DOWN*LD ;LOAD UP COUNT
- :+: /Q7*/Q6*/Q5*/Q4*/Q3*/Q2*/Q1*Q0*/LD*/UP ;TOGGLE AT 0
- + Q7*/Q6*Q5*Q4*/Q3*/Q2*Q1*Q0*/LD*UP ;TOGGLE AT 180
- ;
- /CDN := UP*/LD ;HOLD DOWN
- + /DOWN*LD ;LOAD DOWN COUNT
- :+: /Q7*/Q6*/Q5*/Q4*/Q3*/Q2*/Q1*Q0*/LD*/UP ;TOGGLE AT 0
- + Q7*/Q6*Q5*Q4*/Q3*/Q2*Q1*Q0*/LD*UP ;TOGGLE AT 180
- ;
- SIMULATION ;
- TRACE_ON CLK /DOWN LD UP CDN ;
- Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 ;
- SETF /CLK LD OE D0 D1 D2 ;LOAD COUNT OF
- /D3 /D4 /D5 /D6 /D7 DOWN ;7 AND ACTIVE
- CLOCKF ;DOWN COUNT.
- SETF /LD ;
- CLOCKF ;SET TO COUNT
- FOR I := 0 TO 17 DO ;MODE
- BEGIN CLOCKF ;APPLY EIGHTEEN
- END ;CLOCK PULSES
- SETF /CLK LD /D0 /D1 /D2 ;LOAD 176 AND
- /D3 D4 D5 /D6 D7 /DOWN ;ACTIVE UP COUNT
- CLOCKF ;
- SETF /LD ;
- CLOCKF ;SET COUNT MODE
- FOR I := 0 TO 15 DO ;GIVE SIXTEEN
- BEGIN CLOCKF ;CLOCK PULSES
- END ;
- TRACE_OFF