home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / palsum3 / 8count.pds < prev    next >
Text File  |  1987-08-26  |  4KB  |  111 lines

  1. Title     8Count
  2. Pattern   8count.pds
  3. Revision  A
  4. Author    Mehrnaz Hada
  5. Company   Monolithic Memories Inc. Santa Clara, CA
  6. Date      1/15/85
  7.   
  8. ;This 8-bit up/down counter has the hold and load
  9. ;capabilities. It sets all the outputs high if SET=high.
  10. ;It loads new value when SET=low and LOAD=high. Else it
  11. ;counts up if UP=high and counts down if UP=low.
  12.   
  13. CHIP 8BitCounter PAL20X8
  14.   
  15. CLK UP D0 D1 D2 D3 D4 D5 D6 D7 LD GND
  16. /OC SET Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 CIN VCC
  17.   
  18. EQUATIONS
  19.   
  20. /Q0 := /SET* LD*/D0                     ;Load D0
  21.     +  /SET*/LD*/Q0                     ;Hold
  22.    :+: /SET*/LD*CIN* UP                 ;Increment
  23.     +  /SET*/LD*CIN*/UP                 ;Decrement
  24.   
  25. /Q1 := /SET* LD*/D1                     ;Load D1
  26.     +  /SET*/LD*/Q1                     ;Hold
  27.    :+: /SET*/LD*CIN* UP* Q0             ;Increment
  28.     +  /SET*/LD*CIN*/UP*/Q0             ;Decrement
  29.   
  30. /Q2 := /SET* LD*/D2                     ;Load D2
  31.     +  /SET*/LD*/Q2                     ;Hold
  32.    :+: /SET*/LD*CIN* UP* Q0* Q1         ;Increment
  33.     +  /SET*/LD*CIN*/UP*/Q0*/Q1         ;Decrement
  34.   
  35. /Q3 := /SET* LD*/D3                     ;Load D3
  36.     +  /SET*/LD*/Q3                     ;Hold
  37.    :+: /SET*/LD*CIN* UP* Q0* Q1* Q2     ;Increment
  38.     +  /SET*/LD*CIN*/UP*/Q0*/Q1*/Q2     ;Decrement
  39.   
  40. /Q4 := /SET* LD*/D4                     ;Load D4
  41.     +  /SET*/LD*/Q4                     ;Hold
  42.    :+: /SET*/LD*CIN* UP* Q0* Q1* Q2* Q3 ;Increment
  43.     +  /SET*/LD*CIN*/UP*/Q0*/Q1*/Q2*/Q3 ;Decrement
  44.   
  45. /Q5 := /SET* LD*/D5                     ;Load D5
  46.     +  /SET*/LD*/Q5                     ;Hold
  47.    :+: /SET*/LD*CIN* UP* Q0* Q1* Q2* Q3
  48.        * Q4                             ;Increment
  49.     +  /SET*/LD*CIN*/UP*/Q0*/Q1*/Q2*/Q3
  50.        */Q4                             ;Decrement
  51.   
  52. /Q6 := /SET* LD*/D6                     ;Load D6
  53.     +  /SET*/LD*/Q6                     ;Hold
  54.    :+: /SET*/LD*CIN* UP* Q0* Q1* Q2* Q3
  55.        * Q4* Q5                         ;Increment
  56.     +  /SET*/LD*CIN*/UP*/Q0*/Q1*/Q2*/Q3
  57.        */Q4*/Q5                         ;Decrement
  58.   
  59. /Q7 := /SET* LD*/D7                     ;Load D7
  60.     +  /SET*/LD*/Q7                     ;Hold
  61.    :+: /SET*/LD*CIN* UP* Q0* Q1* Q2* Q3
  62.        * Q4* Q5* Q6                     ;Increment
  63.     +  /SET*/LD*CIN*/UP*/Q0*/Q1*/Q2*/Q3
  64.        */Q4*/Q5*/Q6                     ;Decrement
  65.   
  66.   
  67. SIMULATION
  68.   
  69. TRACE_ON  SET LD CIN UP
  70.           D0 D1 D2 D3 D4 D5 D6 D7
  71.           Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
  72.   
  73. SETF OC SET
  74. CLOCKF CLK
  75. CHECK Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0           ;All outputs high
  76. SETF /SET UP CIN /LD                    ;Counting up
  77.   
  78. FOR I:=1 TO 9 DO
  79.  BEGIN
  80.   CLOCKF CLK
  81.   IF I=8 THEN                           ;Checking after 8
  82.    BEGIN                                ;clock pulses
  83.     CHECK /Q7 /Q6 /Q5 /Q4 /Q3 Q2 Q1 Q0
  84.    END
  85.  END
  86.   
  87. SETF /CIN                               ;Holding
  88. CLOCKF CLK
  89. CLOCKF CLK                              ;The outputs hold to
  90.                                         ;their values
  91.   
  92. SETF /UP CIN                            ;Counting down
  93.   
  94. SETF LD /D7 D6 /D5 D4 /D3 D2 /D1 D0     ;Loading some data
  95. CLOCKF CLK
  96. CHECK /Q7 Q6 /Q5 Q4 /Q3 Q2 /Q1 Q0       ;Checking the output
  97.                                         ;for the loaded data
  98. SETF /LD UP                             ;Counting up after
  99. FOR I:=1 TO 5 DO                        ;removing HOLD, count
  100.  BEGIN                                  ;up 3 cycles, count
  101.   CLOCKF CLK                            ;down for 2 cycles.
  102.   IF I=3 THEN
  103.    BEGIN
  104.     SETF /UP
  105.    END
  106.  END
  107.   
  108. TRACE_OFF
  109.   
  110.   
  111.