home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s079 / 1.img / V8CPORT.APL < prev    next >
Encoding:
Text File  |  1992-11-17  |  6.1 KB  |  154 lines

  1. TITLE 'APEEL FILE: PEEL18CV8 CHANGE-OF-STATE INPUT PORT WITH INTERRUPT
  2. DESIGNER: Robin Jigour, ICT
  3. DATE: 9/4/87'
  4.  
  5. PEEL18CV8
  6.  
  7. "DESCRIPTION
  8.  
  9. "                      PEEL18CV8
  10.  
  11. "       Change-of-State Input Port with Interrupt
  12. "                     ____  ____
  13. "                    |    \/    |
  14. "               CLK  { 1     20 }  Vcc
  15. "                I0  { 2     19 }- D0
  16. "                I1  { 3     18 }- D1
  17. "                I2  { 4     17 }- D2       ( - = output )
  18. "                I3  { 5     16 }- D3
  19. "                I4  { 6     15 }- D4
  20. "                I5  { 7     14 }- INTR
  21. "                I6  { 8     13 }  /RD
  22. "                I7  { 9     12 }  /CS
  23. "               GND  {10     11 }  A0
  24. "                    |__________|
  25.  
  26.  
  27. " This application uses the PEEL18CV8 as an 8-bit input port
  28. " of which 4 of its inputs can detect a change-of-state.
  29. " When detected, the INTR output is set for interrupting a CPU.
  30. " The state change is latched by four pseudo-buried registers
  31. " which can be read by the CPU on D0-D3 as listed in the address
  32. " table below.  Once read, unless another change has occurred,
  33. " the INTR will be reset.  The D4 output can be used for status
  34. " polling of any remaining state change.  The I4-7 inputs do not
  35. " detect state changes but can be read as a standard input port.
  36.  
  37. " Address        Data Outputs
  38. " -----------    ---------------------------------------
  39. " A0  CS  RD     D0-3                D4
  40. "  X   1   X     Hi-Z                Hi-Z
  41. "  X   X   1     Hi-Z                Hi-Z
  42. "  0   0   0     Read I0-I3 Change   I0-I3 Pending Change Status
  43. "  1   0   0     Read I4-I7 Inputs   Don't care
  44.  
  45.  
  46. "PIN DEFINITIONS"
  47.  
  48. "Inputs"
  49.  
  50. CLK      pin 1   "Must be connected to pin 14, INTR.
  51. I0       pin 2   "I0-I3 inputs can detect change-of-state.
  52. I1       pin 3
  53. I2       pin 4
  54. I3       pin 5
  55. I4       pin 6   "I4-I7 are standard inputs.
  56. I5       pin 7
  57. I6       pin 8
  58. I7       pin 9
  59. A0       pin 11
  60. !CS      pin 12  "Use as inputs only.
  61. !RD      pin 13  "Default macro configuration = pos com feed_pin.
  62.  
  63.  
  64. "Outputs"
  65.  
  66. INTR     pin 14 = pos com feed_or
  67. D4       pin 15 = pos com feed_or   "Internal feedback.
  68. D3       pin 16 = pos com feed_reg
  69. D2       pin 17 = pos com feed_reg
  70. D1       pin 18 = pos com feed_reg
  71. D0       pin 19 = pos com feed_reg  "Pseudo buried registers.
  72.  
  73.  
  74. EQUATIONS
  75.  
  76. D0 = I0 & !CS #               "I0 to D0 register.
  77.      I0 &  CS & !RD #         "I0 to D0 register.
  78.      D0 &  CS & RD & !A0 #    "Read D0 register.
  79.      I4 &  CS & RD & A0       "Read I4.
  80.      Enable D0 = CS & RD      "Enable onto data bus.
  81.  
  82. D1 = I1 & !CS #               "I1 to D1 register.
  83.      I1 &  CS & !RD #         "I1 to D1 register.
  84.      D1 &  CS & RD & !A0 #    "Read D1 register.
  85.      I5 &  CS & RD &  A0      "Read I5.
  86.      Enable D1 = CS & RD      "Enable onto data-bus.
  87.  
  88. D2 = I2 & !CS #               "I2 to D2 register.
  89.      I2 &  CS & !RD #         "I2 to D2 register.
  90.      D2 &  CS & RD & !A0 #    "Read D2 register.
  91.      I6 &  CS & RD &  A0      "Read I6.
  92.      Enable D2 = CS & RD      "Enable onto data-bus.
  93.  
  94. D3 = I3 & !CS #               "I3 to D3 register.
  95.      I3 &  CS & !RD #         "I3 to D3 register.
  96.      D3 &  CS &  RD & !A0 #   "Read D3 register.
  97.      I7 &  CS &  RD &  A0     "Read I7.
  98.      Enable D3 = CS & RD      "Enable onto data-bus.
  99.  
  100. D4 = I0 & !D0 # !I0 & D0 #    "Compare I0-3 with D0-3 registers.
  101.      I1 & !D1 # !I1 & D1 #    "D4=1 if I0-3 and D0-3 are not equal.
  102.      I2 & !D2 # !I2 & D2 #
  103.      I3 & !D3 # !I3 & D3
  104.      Enable D4 = CS & RD      "Enable onto data-bus for status.
  105.  
  106. INTR = D4   & !CS #  "Latch not-equal status uP interrupt and
  107.        D4   & !RD #  "PEEL clock. Clear interrupt when registers
  108.        D4   &  A0 #  "are read and there are no more input state
  109.        INTR & !CS #  "changes, that is, when D4, CS, RD and A0
  110.        INTR & !RD #  "are all 0.
  111.        INTR &  A0
  112.  
  113.  
  114. TEST_VECTORS "Test change-of-state input port I0-4 operation"
  115.  
  116. (  CLK  I0 I1 I2 I3  A0  CS  RD   ->   D0 D1 D2 D3  D4  INTR  )
  117.      0   0  0  0  0   X   0   X   ->    Z  Z  Z  Z   Z    0
  118.      0   0  0  0  0   0   1   1   ->    X  X  X  X   0    0
  119.      0   1  0  0  0   X   0   0   ->    Z  Z  Z  Z   Z    H
  120.      1   1  0  0  0   X   0   0   ->    Z  Z  Z  Z   Z    H
  121.      1   1  0  0  0   0   1   0   ->    Z  Z  Z  Z   Z    H
  122.      1   1  0  0  0   0   1   1   ->    H  L  L  L   L    L
  123.      0   1  0  0  0   0   1   1   ->    H  L  L  L   L    L
  124.      0   1  0  0  0   X   0   X   ->    Z  Z  Z  Z   Z    L
  125.      0   0  0  0  0   X   0   0   ->    Z  Z  Z  Z   Z    H
  126.      1   0  0  0  0   X   0   0   ->    Z  Z  Z  Z   Z    H
  127.      1   0  0  0  0   0   1   0   ->    Z  Z  Z  Z   Z    H
  128.      1   0  0  0  0   0   1   1   ->    L  L  L  L   L    L
  129.      0   0  0  0  0   X   0   X   ->    Z  Z  Z  Z   Z    L
  130.      0   1  0  0  0   X   0   X   ->    Z  Z  Z  Z   Z    H
  131.      1   1  0  0  0   X   0   X   ->    Z  Z  Z  Z   Z    H
  132.      1   1  1  1  1   X   0   0   ->    Z  Z  Z  Z   Z    H
  133.      1   1  1  1  1   0   1   0   ->    Z  Z  Z  Z   Z    H
  134.      1   1  1  1  1   0   1   1   ->    H  L  L  L   H    L
  135.      0   1  1  1  1   X   0   0   ->    Z  Z  Z  Z   Z    H
  136.      1   1  1  1  1   0   1   0   ->    Z  Z  Z  Z   Z    H
  137.      1   1  1  1  1   0   1   1   ->    H  H  H  H   L    L
  138.      0   1  1  1  1   X   0   X   ->    Z  Z  Z  Z   Z    L
  139.      0   0  0  0  0   X   0   X   ->    Z  Z  Z  Z   Z    H
  140.      1   0  0  0  0   X   0   X   ->    Z  Z  Z  Z   Z    H
  141.      1   0  0  0  0   0   1   1   ->    L  L  L  L   L    L
  142.      1   0  0  0  0   X   0   X   ->    Z  Z  Z  Z   Z    L
  143.  
  144.  
  145. TEST_VECTORS "Test standard input port I4-7 operation"
  146.  
  147. ( CLK  I4 I5 I6 I7  A0  CS  RD   ->   D0 D1 D2 D3  D4  INTR  )
  148.    0    1  0  1  0   1   0   0   ->    Z  Z  Z  Z   Z    X
  149.    0    1  0  1  0   1   1   0   ->    Z  Z  Z  Z   Z    X
  150.    0    1  0  1  0   1   1   1   ->    H  L  H  L   X    X
  151.    0    0  1  0  1   1   1   0   ->    Z  Z  Z  Z   Z    X
  152.    0    0  1  0  1   1   1   1   ->    L  H  L  H   X    X
  153.    0    0  1  0  1   1   0   0   ->    Z  Z  Z  Z   Z    X
  154.