home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s205 / 1.ddi / BACKUP.001 / EXAMPLES_CNT_16V.PDS < prev    next >
Encoding:
PALASM Design Description  |  1991-02-27  |  3.8 KB  |  106 lines

  1. ; PALASM Design description
  2.  
  3. ; -----------------------Declaration Segment ------------
  4.    TITLE 16 BIT UP / DOWN COUNTER
  5.  PATTERN C16_UDV.PDS
  6. REVISION A
  7.   AUTHOR George Landers & Nick Schmitz
  8.  COMPANY ADVANCED MICRO DEVICES, INC.
  9.     DATE 3 AUG 1990
  10.  
  11. CHIP   COUNT16      MACH110
  12.  
  13. pin  1 gnd
  14. pin 44 vcc
  15. pin  ? CLK1
  16. PIN  ? COUNT
  17. PIN  ? LOAD
  18. PIN  ? UP
  19. NODE ? CRY      COMBINATORIAL
  20. Pin  ? Q[0..15] REG
  21. Pin  ? I[0..15]
  22.  
  23. ;---------------------- Boolean Equation Segment ----------------
  24. EQUATIONS
  25.  
  26. ; Load Terms
  27. Q[0..15].T :=  /COUNT * LOAD *(Q[0..15]*/I[0..15] + /Q[0..15]*I[0..15])
  28. Q[0..15].clkf=CLK1
  29.  
  30. ;Count up terms
  31. Q[0].T:={Q[0].T}+COUNT*/LOAD
  32. Q[1].T:={Q[1].T}+COUNT*/LOAD* UP* Q[0]
  33. Q[2].T:={Q[2].T}+COUNT*/LOAD* UP* Q[0]* Q[1]
  34. Q[3].T:={Q[3].T}+COUNT*/LOAD* UP* Q[0]* Q[1]* Q[2]
  35. Q[4].T:={Q[4].T}+COUNT*/LOAD* UP* Q[0]* Q[1]* Q[2]* Q[3]
  36. Q[5].T:={Q[5].T}+COUNT*/LOAD* UP* Q[0]* Q[1]* Q[2]* Q[3]* Q[4]
  37. Q[6].T:={Q[6].T}+COUNT*/LOAD* UP* Q[0]* Q[1]* Q[2]* Q[3]* Q[4]* Q[5]
  38. Q[7].T:={Q[7].T}+COUNT*/LOAD* UP* Q[0]* Q[1]* Q[2]* Q[3]* Q[4]* Q[5]* Q[6]
  39.  
  40. ;Count down terms
  41. Q[0].T:={Q[0].T}+COUNT*/LOAD
  42. Q[1].T:={Q[1].T}+COUNT*/LOAD*/UP*/Q[0]
  43. Q[2].T:={Q[2].T}+COUNT*/LOAD*/UP*/Q[0]*/Q[1]
  44. Q[3].T:={Q[3].T}+COUNT*/LOAD*/UP*/Q[0]*/Q[1]*/Q[2]
  45. Q[4].T:={Q[4].T}+COUNT*/LOAD*/UP*/Q[0]*/Q[1]*/Q[2]*/Q[3]
  46. Q[5].T:={Q[5].T}+COUNT*/LOAD*/UP*/Q[0]*/Q[1]*/Q[2]*/Q[3]*/Q[4]
  47. Q[6].T:={Q[6].T}+COUNT*/LOAD*/UP*/Q[0]*/Q[1]*/Q[2]*/Q[3]*/Q[4]*/Q[5]
  48. Q[7].T:={Q[7].T}+COUNT*/LOAD*/UP*/Q[0]*/Q[1]*/Q[2]*/Q[3]*/Q[4]*/Q[5]*/Q[6]
  49.  
  50. CRY = UP *  Q[1]* Q[2]* Q[3]* Q[4]* Q[5]* Q[6]* Q[7]
  51.     +/UP * /Q[1]*/Q[2]*/Q[3]*/Q[4]*/Q[5]*/Q[6]*/Q[7]
  52.  
  53.  
  54. ;Count up terms
  55. Q[ 8].T:={Q[ 8].T}+COUNT*/LOAD* UP*CRY*Q[0]
  56. Q[ 9].T:={Q[ 9].T}+COUNT*/LOAD* UP*CRY*Q[0]* Q[8]
  57. Q[10].T:={Q[10].T}+COUNT*/LOAD* UP*CRY*Q[0]* Q[8]* Q[9]
  58. Q[11].T:={Q[11].T}+COUNT*/LOAD* UP*CRY*Q[0]* Q[8]* Q[9]* Q[10]
  59. Q[12].T:={Q[12].T}+COUNT*/LOAD* UP*CRY*Q[0]* Q[8]* Q[9]* Q[10]* Q[11]
  60. Q[13].T:={Q[13].T}+COUNT*/LOAD* UP*CRY*Q[0]* Q[8]* Q[9]* Q[10]* Q[11]* Q[12]
  61. Q[14].T:={Q[14].T}+COUNT*/LOAD* UP*CRY*Q[0]* Q[8]* Q[9]* Q[10]* Q[11]* Q[12]* Q[13]
  62. Q[15].T:={Q[15].T}+COUNT*/LOAD* UP*CRY*Q[0]* Q[8]* Q[9]* Q[10]* Q[11]* Q[12]* Q[13]* Q[14]
  63.  
  64. ;Count down terms
  65. Q[ 8].T:={Q[ 8].T}+COUNT*/LOAD*/UP*CRY*/Q[0]
  66. Q[ 9].T:={Q[ 9].T}+COUNT*/LOAD*/UP*CRY*/Q[0]*/Q[8]
  67. Q[10].T:={Q[10].T}+COUNT*/LOAD*/UP*CRY*/Q[0]*/Q[8]*/Q[9]
  68. Q[11].T:={Q[11].T}+COUNT*/LOAD*/UP*CRY*/Q[0]*/Q[8]*/Q[9]*/Q[10]
  69. Q[12].T:={Q[12].T}+COUNT*/LOAD*/UP*CRY*/Q[0]*/Q[8]*/Q[9]*/Q[10]*/Q[11]
  70. Q[13].T:={Q[13].T}+COUNT*/LOAD*/UP*CRY*/Q[0]*/Q[8]*/Q[9]*/Q[10]*/Q[11]*/Q[12]
  71. Q[14].T:={Q[14].T}+COUNT*/LOAD*/UP*CRY*/Q[0]*/Q[8]*/Q[9]*/Q[10]*/Q[11]*/Q[12]*/Q[13]
  72. Q[15].T:={Q[15].T}+COUNT*/LOAD*/UP*CRY*/Q[0]*/Q[8]*/Q[9]*/Q[10]*/Q[11]*/Q[12]*/Q[13]*/Q[14]
  73.  
  74. ;-------------------------------------------------------------------
  75. Simulation
  76.  
  77. TRACE_ON UP LOAD COUNT CRY Q[0..15]
  78. SETF COUNT /LOAD UP /clk1 I[0..15]
  79.  
  80. For j:=1 to 10 do begin
  81.  
  82.         Clockf clk1 Check  Q[0]
  83.         Clockf clk1 Check /Q[0]
  84.     end
  85. ; 00 cycles
  86. Clockf clk1 Check Q[0] Clockf clk1 Check /Q[0] Clockf clk1 Check Q[0] Clockf clk1 Check /Q[0]
  87. Clockf clk1 Check Q[0] Clockf clk1 Check /Q[0] Clockf clk1 Check Q[0] Clockf clk1 Check /Q[0]
  88. Clockf clk1 Check Q[0] Clockf clk1 Check /Q[0] Clockf clk1 Check Q[0] Clockf clk1 Check /Q[0]
  89. Clockf clk1 Check Q[0] Clockf clk1 Check /Q[0] Clockf clk1 Check Q[0] Clockf clk1 Check /Q[0]
  90. Clockf clk1 Check Q[0] Clockf clk1 Check /Q[0] Clockf clk1 Check Q[0] Clockf clk1 Check /Q[0]
  91. ; 20 cycles
  92.  
  93. check /Q[15..6,4,2..0] Q[5,3]
  94.  
  95. Setf /I[15,13,11,9,7,5,3,1] I[14,12,10,8,6,4,2,0] Load /Count  Clockf clk1
  96.  
  97. Check /Q[15,13,11,9,7,5,3,1] Q[14,12,10,8,6,4,2,0]
  98. clockf clk1 clockf clk1
  99. Check /Q[15,13,11,9,7,5,3,1] Q[14,12,10,8,6,4,2,0]
  100.  
  101. setf /Load Count
  102. clockf clk1 clockf clk1
  103. Check /Q[15,13,11,9,7,5,3] Q[14,12,10,8,6,4,2,1,0]
  104. Trace_off
  105. ;-------
  106.