home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s205 / 1.ddi / BACKUP.001 / EXAMPLES_RLLENDEC.PDS < prev    next >
Encoding:
Text File  |  1991-02-27  |  17.9 KB  |  466 lines

  1. ; The MACH210 implementation of the RLL 2,7 encoder/decoder
  2. ; design integrates the logic originally contained in two
  3. ; PAL22V10s and one PAL16HD8. One PAL22V10 had the
  4. ; coding/decoding state machines along with the address mark
  5. ; generation and detection logic. The address mark synchronization
  6. ; logic was programmed into another PAL22V10.
  7. ; Miscellaneous glue logic was placed in the PAL16HD8.
  8.  
  9. ; For more information, the PAL RLL 2,7 design is described
  10. ; in the 1988 AMD PAL Device Handbook (pp. 2-651 to 2-659).
  11. ; You can also order a reprint of the RLL article from
  12. ; AMD (#09010A).
  13.  
  14.    TITLE RLL 2,7 Codec Test Case
  15.  PATTERN AK.pds
  16. REVISION 1.0
  17.   AUTHOR Arthur Khu & Nick Schmitz
  18.  COMPANY AMD/MMI
  19.     DATE 12/12/89
  20.  
  21. chip rll_codec mach210
  22.  
  23. PIN 44 VCC
  24. PIN 1 GND
  25. ;node 1  GLOBAL
  26. PIN ?  CLK1
  27. PIN ?  NCLK1
  28. PIN ?  RLL_IN 
  29. PIN ?  CD_CLK1 
  30. PIN ?  SRO_D 
  31. PIN ?  WG 
  32. PIN ?  RG 
  33. PIN ?  NRZ_IN 
  34. PIN ?  INP_0 
  35. PIN ?  INP_1 
  36. PIN ?  INP_2 
  37. PIN ?  INP_3 
  38. PIN ?  AMC 
  39. PIN ?  SRI_A 
  40. PIN ?  SRI_B 
  41. PIN ?  SRI_C 
  42. PIN ?  SRI_D 
  43. PIN ?  SELEN 
  44. PIN ?  PLL_REF 
  45. PIN ?  CLK_SET 
  46. PIN ?  NRZ_OUT 
  47. PIN ?  RLL_OUT 
  48. PIN ?  SRI 
  49. PIN ?  CD_CLK2 
  50. PIN ?  SHIFT_IN 
  51. PIN ?  RD_CLK 
  52. PIN ?  OUTPUT_1 
  53. PIN ?  OUTPUT_0 
  54. PIN ?  AMF 
  55. PIN ?  /LOAD 
  56. PIN ?  SHIFT_OUT 
  57. PIN ?  CNT_3 
  58. PIN ?  CNT_2 
  59. PIN ?  CNT_1 
  60. PIN ?  CNT_0 
  61. PIN ?  VALID 
  62. PIN ?  CMPLT 
  63. NODE ?  AM_LATCH 
  64. NODE ?  SR_Q2 
  65. NODE ?  AM_1 
  66. NODE ?  AM_2 
  67. NODE ?  ST_2 
  68. NODE ?  ST_1 
  69. NODE ?  ST_0 
  70.  
  71. GROUP MACH_SEG_C AM_LATCH
  72.  
  73.  
  74. EQUATIONS    ;    GLOBAL.RSTF = /WG*/RG    GLOBAL.RSTF =  SELEN
  75.  
  76.   PLL_REF =  RG*RLL_IN
  77.   CLK_SET = /SR_Q2 + CD_CLK1*RLL_IN
  78.     SR_Q2 = /CLK_SET + SRI_A
  79.   NRZ_OUT =  SRO_D*RG*AM_LATCH
  80.   RLL_OUT =  SRO_D*WG
  81.       SRI =  RG*CLK_SET + WG*NRZ_IN + WG*AM_LATCH
  82.   CD_CLK2 = /CD_CLK1
  83.  SHIFT_IN =  RG*CD_CLK1 + WG*RD_CLK 
  84.      LOAD =  RD_CLK* WG + RG
  85. SHIFT_OUT = /RD_CLK* RG +/CLK1* WG
  86.  
  87. OUTPUT_1.CLKF = CLK1
  88. OUTPUT_0.CLKF = CLK1
  89. VALID.CLKF    = CLK1
  90. AM_1.CLKF     = CLK1
  91. AM_2.CLKF     = CLK1
  92. ST_2.CLKF     = CLK1
  93. ST_1.CLKF     = CLK1
  94. ST_0.CLKF     = CLK1
  95. AMF.CLKF      = CLK1
  96.  
  97. OUTPUT_1.RSTF = /RG*/WG
  98. OUTPUT_0.RSTF = /RG*/WG
  99. VALID.RSTF    = /RG*/WG
  100. AM_1.RSTF     = /RG*/WG
  101. AM_2.RSTF     = /RG*/WG
  102. ST_2.RSTF     = /RG*/WG
  103. ST_1.RSTF     = /RG*/WG
  104. ST_0.RSTF     = /RG*/WG
  105. AMF.RSTF      = /RG*/WG
  106.  
  107. RD_CLK.CLKF   = NCLK1
  108. CNT_3.CLKF    = NCLK1
  109. CNT_2.CLKF    = NCLK1
  110. CNT_1.CLKF    = NCLK1
  111. CNT_0.CLKF    = NCLK1
  112. CMPLT.CLKF    = NCLK1
  113. AM_LATCH.CLKF = NCLK1
  114.  
  115. RD_CLK.RSTF   = SELEN
  116. CNT_3.RSTF    = SELEN
  117. CNT_2.RSTF    = SELEN
  118. CNT_1.RSTF    = SELEN
  119. CNT_0.RSTF    = SELEN
  120. CMPLT.RSTF    = SELEN
  121. AM_LATCH.RSTF = SELEN
  122.  
  123.   ST_2:= /ST_2* ST_1* ST_0*/INP_3* RG
  124.       +/ST_2* ST_1* ST_0* CMPLT* WG
  125.       + ST_2*/ST_1*/ST_0* CMPLT* WG
  126.       +/ST_2*/INP_0*/ST_1*/INP_1*/ST_0* INP_2*/INP_3* RG
  127.       + ST_2*/ST_1* ST_0* INP_2*/INP_3* AMC* RG
  128.  
  129.   ST_1:= /ST_2*/ST_1*/INP_1*/ST_0*/INP_2*/CMPLT* WG
  130.       +/ST_2*/ST_1*/INP_1*/ST_0*/INP_2* AMF* WG
  131.       +/ST_2*/ST_1*/INP_1*/ST_0*/INP_2*/AMC* WG
  132.       +/ST_2*/ST_1*/ST_0* CMPLT*/AMF* AMC* WG
  133.       +/ST_2*/INP_0*/ST_1*/INP_1*/ST_0*/INP_2* INP_3* RG
  134.       +/ST_2*/ST_1*/ST_0*/INP_2*/INP_3* RG
  135.       +/ST_2*/ST_1* ST_0* INP_2*/INP_3* RG
  136.       +/ST_2*/INP_0* ST_1*/INP_1* ST_0*/INP_2* INP_3* RG
  137.       + ST_2*/ST_1* ST_0*/INP_2* INP_3* RG
  138.       + ST_2*/ST_1* ST_0* INP_2*/INP_3* AMC* RG
  139.  
  140.   ST_0:= /ST_2*/ST_1*/ST_0* INP_2*/CMPLT* WG
  141.       +/ST_2*/ST_1*/ST_0* INP_2* AMF* WG
  142.       +/ST_2*/ST_1*/ST_0* INP_2*/AMC* WG
  143.       +/ST_2*/ST_1*/ST_0* CMPLT*/AMF* AMC* WG
  144.       + ST_2*/ST_1*/ST_0* CMPLT* WG
  145.       +/ST_2* ST_1*/INP_1*/ST_0*/INP_2* WG
  146.       +/ST_2* INP_0*/ST_1*/INP_1*/ST_0*/INP_2* INP_3* RG
  147.       +/ST_2*/ST_1*/ST_0*/INP_2*/INP_3* RG
  148.       +/ST_2* ST_1* ST_0*/INP_2*/INP_3* RG
  149.  
  150.   AM_1:=  AM_1* VALID* CMPLT*/AMF* RG
  151.       + AM_1*/AMF* WG
  152.       + AM_1* AMC* WG
  153.       +/ST_2* ST_1* ST_0*/AM_1* CMPLT* WG
  154.       + ST_2* ST_1*/ST_0*/INP_2*/AM_1*/INP_3* AMC* RG
  155.  
  156.   VALID:= /ST_0*/INP_2*/INP_3* AMC* RG
  157.       +/ST_2*/ST_1*/INP_1*/ST_0*/INP_2* RG
  158.       +/ST_2* ST_1*/INP_1* ST_0*/INP_2* RG
  159.       +/ST_2*/INP_0*/ST_1*/INP_1*/ST_0*/INP_3* RG
  160.       +/ST_1* ST_0* INP_2*/INP_3* AMC* RG
  161.       +/ST_1*/ST_0*/INP_2*/INP_3* RG
  162.       +/ST_2* ST_0* INP_2*/INP_3* RG
  163.       + ST_2*/ST_1* ST_0*/INP_2* INP_3* RG
  164.       +/ST_2* ST_1* ST_0*/INP_3* RG
  165.       +/ST_2* ST_1*/INP_2*/INP_3* RG
  166.  
  167.   OUTPUT_1:= /ST_2*/INP_0*/ST_1*/INP_1*/ST_0*/CMPLT* WG
  168.       +/ST_2*/ST_1*/INP_1*/ST_0* INP_2*/CMPLT* WG
  169.       +/ST_2*/INP_0*/ST_1*/INP_1*/ST_0* AMF* WG
  170.       +/ST_2*/INP_0*/ST_1*/INP_1*/ST_0*/AMC* WG
  171.       +/ST_2*/ST_1*/INP_1*/ST_0* INP_2* AMF* WG
  172.       +/ST_2*/ST_1*/INP_1*/ST_0* INP_2*/AMC* WG
  173.       +/ST_2* INP_0* ST_1* INP_1*/ST_0*/INP_2* WG
  174.       +/ST_2*/INP_0*/ST_1*/INP_1*/ST_0*/INP_2* INP_3* RG
  175.       +/ST_2*/INP_0*/ST_1*/INP_1*/ST_0* INP_2*/INP_3* RG
  176.       +/ST_2*/INP_0* ST_1*/INP_1* ST_0*/INP_2* INP_3* RG
  177.       +/ST_2* ST_1* ST_0* INP_2*/INP_3* RG
  178.       + ST_2*/ST_1*/ST_0*/INP_2*/INP_3* RG
  179.       + ST_2*/ST_1* ST_0*/INP_2* INP_3* RG
  180.  
  181.   OUTPUT_0:= /ST_2*/ST_1* INP_1*/ST_0* INP_2*/CMPLT* WG
  182.       + ST_2*/ST_1*/ST_0* CMPLT* WG
  183.       +/ST_2*/ST_1* INP_1*/ST_0* INP_2* AMF* WG
  184.       +/ST_2*/ST_1* INP_1*/ST_0* INP_2*/AMC* WG
  185.       +/ST_2* ST_1*/INP_1*/ST_0*/INP_2* WG
  186.  
  187.   AMF:= /ST_2*/ST_1*/ST_0* AM_1* CMPLT* AMC* WG
  188.       + AMF* AMC
  189.       +/ST_2*/ST_1*/ST_0* AM_2
  190.  
  191.   AM_2:=  VALID* CMPLT*/AMF* AM_2* RG
  192.       +/AMF* AM_2* WG
  193.       + ST_2* ST_1*/ST_0*/INP_2* AM_1*/INP_3* AMC* RG
  194.  
  195.   RD_CLK:= /RD_CLK
  196.       + RG*/CMPLT*/AM_LATCH* SRI_A*/SRI_B*/SRI_C*/SRI_D
  197.  
  198.   CMPLT:= /RD_CLK* RG*/SRI_A*/CNT_3*/SRI_B* CNT_2* SRI_C*/CNT_1 *
  199.         /SRI_D*/CNT_0*/ST_0*/ST_1*/ST_2
  200.       + RG* CMPLT
  201.       +/RD_CLK* WG* CNT_3* CNT_2* CNT_1* AMC* CNT_0*/ST_0 *
  202.         /ST_1*/ST_2
  203.       + CMPLT* WG* AMC
  204.  
  205.   AM_LATCH:=   RG* AM_LATCH
  206.       + RG* CMPLT* AMC* AM_1
  207.       + WG* AMC*/AM_1*/ST_0*/ST_1*/ST_2
  208.       + WG* AM_LATCH* AMC*/AM_1
  209.  
  210.   CNT_3:=   WG* CNT_3*/CNT_2* AMC
  211.       + WG* CNT_3*/CNT_1* AMC
  212.       + WG* CNT_3* AMC*/CNT_0
  213.       + RG* CMPLT*/SRI_A* CNT_3*/SRI_B*/SRI_C*/SRI_D
  214.       + RD_CLK* CNT_3
  215.       + WG* CNT_3* AMC* ST_2
  216.       + WG* CNT_3* AMC* ST_1
  217.       + WG* CNT_3* AMC* ST_0
  218.       + RG* CNT_3* ST_2
  219.       + RG* CNT_3* ST_1
  220.       + RG* CNT_3* ST_0
  221.       +/RD_CLK* WG*/CNT_3* CNT_2* CNT_1* AMC* CNT_0*/ST_0*/ST_1*/ST_2
  222.  
  223.   CNT_2:=   WG* CNT_2*/CNT_1* AMC
  224.       + WG* CNT_2* AMC*/CNT_0
  225.       + RG* CMPLT*/SRI_A*/SRI_B* CNT_2*/SRI_C*/SRI_D
  226.       +/RD_CLK* WG*/CNT_2* CNT_1* AMC* CNT_0*/ST_0*/ST_1*/ST_2
  227.       + RD_CLK* CNT_2
  228.       + WG* CNT_2* AMC* ST_2
  229.       + WG* CNT_2* AMC* ST_1
  230.       + WG* CNT_2* AMC* ST_0
  231.       + RG* CNT_2* ST_2
  232.       + RG* CNT_2* ST_1
  233.       + RG* CNT_2* ST_0
  234.       +/RD_CLK* RG*/SRI_A*/CNT_3*/SRI_B*/CNT_2* SRI_C* CNT_1 *
  235.         /SRI_D* AMC* CNT_0*/ST_0*/ST_1*/ST_2
  236.  
  237.   CNT_1:=   WG* CNT_1* AMC*/CNT_0
  238.       + RG*/SRI_A*/CNT_3*/SRI_B*/CNT_2* SRI_C* CNT_1*/SRI_D *
  239.           AMC*/CNT_0
  240.       + RG* CMPLT*/SRI_A*/SRI_B*/SRI_C* CNT_1*/SRI_D
  241.       +/RD_CLK* WG*/CNT_1* AMC* CNT_0*/ST_0*/ST_1*/ST_2
  242.       + RD_CLK* CNT_1
  243.       + WG* CNT_1* AMC* ST_2
  244.       + WG* CNT_1* AMC* ST_1
  245.       + WG* CNT_1* AMC* ST_0
  246.       + RG* CNT_1* ST_2
  247.       + RG* CNT_1* ST_1
  248.       + RG* CNT_1* ST_0
  249.       +/RD_CLK* RG*/SRI_A*/CNT_3*/SRI_B*/CNT_2* SRI_C*/CNT_1 *
  250.         /SRI_D* AMC* CNT_0*/ST_0*/ST_1*/ST_2
  251.  
  252.   CNT_0:=   RG* CMPLT*/SRI_A*/SRI_B*/SRI_C*/SRI_D* CNT_0
  253.       +/RD_CLK* WG* AMC*/CNT_0*/ST_0*/ST_1*/ST_2
  254.       +/RD_CLK* RG*/SRI_A*/CNT_3*/SRI_B*/CNT_2* SRI_C*/SRI_D *
  255.           AMC*/CNT_0*/ST_0*/ST_1*/ST_2
  256.       + RD_CLK* CNT_0
  257.       + WG* AMC* CNT_0* ST_2
  258.       + WG* AMC* CNT_0* ST_1
  259.       + WG* AMC* CNT_0* ST_0
  260.       + RG* CNT_0* ST_2
  261.       + RG* CNT_0* ST_1
  262.       + RG* CNT_0* ST_0
  263.  
  264. Simulation
  265.  
  266. TRACE_ON AMC RG WG INP_3 INP_2 INP_1 INP_0 SRI_D SRI_C SRI_B SRI_A
  267.          CMPLT NCLK1 CLK1 SELEN CNT_3 CNT_2 CNT_1 CNT_0 RD_CLK
  268.          ST_2 ST_1 ST_0 OUTPUT_1 OUTPUT_0 VALID AMF AM_1 AM_2
  269. ; 0 -> reset by setting RG and WG low
  270. SETF /AMC /RG /WG /clk1 /nclk1 /SELEN
  271.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  272.  
  273. ;========================= ENCODE TEST ===================
  274. ; The data-code ratio is 1:2 (1 data bit is coded into
  275. ; 2 code bits). The data is shifted into an external
  276. ; 4-bit shift register whose values are the inputs INP_3/2/1/0.
  277. ; When coding, the data to be coded is in bit INP_2, with
  278. ; INP_1 and INP_0 used as lookahead bits. The 2 code bits
  279. ; are generated at OUTPUT_1 and OUTPUT_0.
  280. ;=========================================================
  281.  
  282. ; 1 -> (1011),000,010,011,0010,0011
  283. SETF /AMC /RG  WG /INP_3  INP_2 /INP_1  INP_0   CLOCKF  CLK1
  284.      CHECK /ST_2 /ST_1  ST_0  OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  285. ; 2 -> 1(0110),00,010,011,0010,0011
  286. SETF /AMC /RG  WG  INP_3 /INP_2  INP_1  INP_0   CLOCKF  CLK1
  287.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  288. ; 3 -> 10(1100)00,010,011,0010,0011
  289. SETF /AMC /RG  WG /INP_3  INP_2  INP_1 /INP_0   CLOCKF  CLK1
  290.      CHECK /ST_2 /ST_1  ST_0 /OUTPUT_1  OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  291. ; 4 -> 10,1(1000),010,011,0010,0011
  292. SETF /AMC /RG  WG  INP_3  INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  293.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  294. ; 5 -> 10,11(0000)010,011,0010,0011
  295. SETF /AMC /RG  WG  INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  296.      CHECK /ST_2  ST_1 /ST_0  OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  297. ; 6 -> 10,11,0(0001)0,011,0010,0011
  298. SETF /AMC /RG  WG /INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  299.      CHECK /ST_2 /ST_1  ST_0 /OUTPUT_1  OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  300. ; 7 -> 10,11,00(0010),011,0010,0011
  301. SETF /AMC /RG  WG /INP_3 /INP_2 /INP_1  INP_0   CLOCKF  CLK1
  302.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  303. ; 8 -> 10,11,000,(0100)11,0010,0011
  304. SETF /AMC /RG  WG /INP_3 /INP_2  INP_1 /INP_0   CLOCKF  CLK1
  305.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  306. ; 9 -> 10,11,000,0(1001)1,0010,0011
  307. SETF /AMC /RG  WG /INP_3  INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  308.      CHECK /ST_2 /ST_1  ST_0  OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  309. ;10 -> 10,11,000,01(0011),0010,0011
  310. SETF /AMC /RG  WG  INP_3 /INP_2 /INP_1  INP_0   CLOCKF  CLK1
  311.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  312. ;11 -> 10,11,000,010(0110),010,0011
  313. SETF /AMC /RG  WG /INP_3 /INP_2  INP_1  INP_0   CLOCKF  CLK1
  314.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  315. ;12 -> 10,11,000,010,0(1100)10,0011
  316. SETF /AMC /RG  WG /INP_3  INP_2  INP_1 /INP_0   CLOCKF  CLK1
  317.      CHECK /ST_2 /ST_1  ST_0 /OUTPUT_1  OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  318. ;13 -> 10,11,000,010,01(1001)0,0011
  319. SETF /AMC /RG  WG  INP_3  INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  320.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  321. ;14 -> 10,11,000,010,011(0010),0011
  322. SETF /AMC /RG  WG  INP_3 /INP_2 /INP_1  INP_0   CLOCKF  CLK1
  323.      CHECK /ST_2  ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  324. ;15 -> 10,11,000,010,011,0(0100)011
  325. SETF /AMC /RG  WG /INP_3 /INP_2  INP_1 /INP_0   CLOCKF  CLK1
  326.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  327. ;16 -> 10,11,000,010,011,00(1000)11
  328. SETF /AMC /RG  WG /INP_3  INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  329.      CHECK /ST_2 /ST_1  ST_0  OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  330. ;17 -> 10,11,000,010,011,001(0001)1
  331. SETF /AMC /RG  WG /INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  332.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  333. ;18 -> 10,11,000,010,011,0010(0011)
  334. SETF /AMC /RG  WG /INP_3 /INP_2 /INP_1  INP_0   CLOCKF  CLK1
  335.      CHECK /ST_2  ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  336. ;19 -> 10,11,000,010,011,0010,0(011)00
  337. SETF /AMC /RG  WG /INP_3 /INP_2  INP_1  INP_0   CLOCKF  CLK1
  338.      CHECK /ST_2 /ST_1 /ST_0  OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  339. ;20 -> 10,11,000,010,011,0010,00(11)00
  340. SETF /AMC /RG  WG /INP_3  INP_2  INP_1 /INP_0   CLOCKF  CLK1
  341.      CHECK /ST_2 /ST_1  ST_0 /OUTPUT_1  OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  342.  
  343. ;=========================================================
  344. ;21 -> begin decode operation by resetting state machine
  345. ;      (set RG and WG low)
  346. SETF /AMC /RG /WG /clk1 /nclk1
  347.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0 /VALID /AMF /AM_1 /AM_2
  348.  
  349. ;========================= DECODE TEST ===================
  350. ; Data to decode is (0010)0100,1000,0100,001000.
  351. ; Valid RLL 2,7 code words are separated by ','.
  352. ; The decoded string is 0011,10,11,010. Note that
  353. ; there the code-data ratio is 2:1. The decoded value
  354. ; is generated at OUTPUT_1.
  355. ;=========================================================
  356.  
  357. ;22 -> (0010)0100,1000,0100,001000 = data to decode
  358. SETF /AMC  RG /WG /INP_3 /INP_2  INP_1 /INP_0   CLOCKF  CLK1
  359.      CHECK /ST_2  ST_1  ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  360. ;23 -> 00(1001)00,1000,0100,001000
  361. SETF /AMC  RG /WG  INP_3 /INP_2 /INP_1  INP_0   CLOCKF  CLK1
  362.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  363. ;24 -> 0010(0100),1000,0100,001000
  364. SETF /AMC  RG /WG /INP_3  INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  365.      CHECK  ST_2 /ST_1 /ST_0  OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  366. ;25 -> 001001(00,10)00,0100,001000
  367. SETF /AMC  RG /WG /INP_3 /INP_2  INP_1 /INP_0   CLOCKF  CLK1
  368.      CHECK /ST_2 /ST_1 /ST_0  OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  369. ;26 -> 00100100,(1000),0100,001000
  370. SETF /AMC  RG /WG  INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  371.      CHECK /ST_2  ST_1 /ST_0  OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  372. ;27 -> 00100100,10(00,01)00,001000
  373. SETF /AMC  RG /WG /INP_3 /INP_2 /INP_1  INP_0   CLOCKF  CLK1
  374.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  375. ;28 -> 00100100,1000,(0100),001000
  376. SETF /AMC  RG /WG /INP_3  INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  377.      CHECK  ST_2 /ST_1 /ST_0  OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  378. ;29 -> 00100100,1000,01(00,00)1000
  379. SETF /AMC  RG /WG /INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  380.      CHECK /ST_2 /ST_1 /ST_0  OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  381. ;30 -> 00100100,1000,0100,(0010)00
  382. SETF /AMC  RG /WG /INP_3 /INP_2  INP_1 /INP_0   CLOCKF  CLK1
  383.      CHECK /ST_2  ST_1  ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  384. ;31 -> 00100100,1000,0100,00(1000)
  385. SETF /AMC  RG /WG  INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  386.      CHECK /ST_2  ST_1 /ST_0  OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  387. ;32 -> 00100100,1000,0100,0010(00)XX
  388. SETF /AMC  RG /WG /INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  389.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  390.  
  391. ;========== ADDRESS MARK Detection TEST =================
  392. ; Decode the address mark when AMC (address mark control)
  393. ; is active. The address mark pattern is 00000100.
  394. ; To detect the address mark, the counter state machine
  395. ; CNT_3/2/1/0 should have detected the pattern 0100 at
  396. ; the inputs SRI_D/C/B/A for 5 counts. CMPLT is HIGH
  397. ; when the counter returns to state 0.
  398. ; The AMF (address mark found) output is active only
  399. ; when 2 instances of this unique pattern are detected.
  400. ; The first pattern is detected when AM_1 is set HIGH,
  401. ; and the second pattern when AM_2 is HIGH. AMF is set
  402. ; HIGH on the next cycle.
  403. ;=========================================================
  404.  
  405. ;33 -> reset counter state machine (set RG and WG low)
  406. SETF /AMC /RG /WG /clk1 /nclk1 SELEN
  407.      CHECK /CNT_3 /CNT_2 /CNT_1 /CNT_0  /CMPLT /RD_CLK
  408. ;34 -> start counter state machine => COUNT = 1
  409. SETF  AMC RG /WG /SRI_D SRI_C /SRI_B /SRI_A /SELEN    CLOCKF  NCLK1
  410.      CHECK /CNT_3 /CNT_2 /CNT_1  CNT_0  /CMPLT  RD_CLK
  411. ;34a -> start counter state machine => COUNT = 1
  412. SETF  AMC RG /WG /SRI_D SRI_C /SRI_B /SRI_A /SELEN    CLOCKF  NCLK1
  413.      CHECK /CNT_3 /CNT_2 /CNT_1  CNT_0  /CMPLT /RD_CLK
  414. ;35 -> COUNT = 2
  415. SETF  AMC RG /WG /SRI_D SRI_C /SRI_B /SRI_A     CLOCKF  NCLK1
  416.      CHECK /CNT_3 /CNT_2  CNT_1 /CNT_0  /CMPLT  RD_CLK
  417. ;35a -> COUNT = 2
  418. SETF  AMC RG /WG /SRI_D SRI_C /SRI_B /SRI_A     CLOCKF  NCLK1
  419.      CHECK /CNT_3 /CNT_2  CNT_1 /CNT_0  /CMPLT /RD_CLK
  420. ;36 -> COUNT = 3
  421. SETF  AMC RG /WG /SRI_D SRI_C /SRI_B /SRI_A     CLOCKF  NCLK1
  422.      CHECK /CNT_3 /CNT_2  CNT_1  CNT_0  /CMPLT  RD_CLK
  423. ;36s -> COUNT = 3
  424. SETF  AMC RG /WG /SRI_D SRI_C /SRI_B /SRI_A     CLOCKF  NCLK1
  425.      CHECK /CNT_3 /CNT_2  CNT_1  CNT_0  /CMPLT /RD_CLK
  426. ;37 -> COUNT = 4
  427. SETF  AMC RG /WG /SRI_D SRI_C /SRI_B /SRI_A     CLOCKF  NCLK1
  428.      CHECK /CNT_3  CNT_2 /CNT_1 /CNT_0  /CMPLT  RD_CLK
  429. ;37a -> COUNT = 4
  430. SETF  AMC RG /WG /SRI_D SRI_C /SRI_B /SRI_A     CLOCKF  NCLK1
  431.      CHECK /CNT_3  CNT_2 /CNT_1 /CNT_0  /CMPLT /RD_CLK
  432. ;38 -> COUNT = 0; set CMPLT HIGH
  433. SETF  AMC RG /WG /SRI_D SRI_C /SRI_B /SRI_A     CLOCKF  NCLK1
  434.      CHECK /CNT_3 /CNT_2 /CNT_1 /CNT_0   CMPLT  RD_CLK
  435.  
  436. ;======= circuit synchronized, start AM detection ============
  437. ;39 -> (0000)0100,00000100 = decode 2 address mark patterns
  438. SETF  AMC  RG /WG /INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  439.      CHECK /ST_2  ST_1  ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  440. ;40 -> 00(0001)00,00000100
  441. SETF  AMC  RG /WG /INP_3 /INP_2 /INP_1  INP_0   CLOCKF  CLK1
  442.      CHECK  ST_2 /ST_1  ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  443. ;41 -> 0000(0100),00000100
  444. SETF  AMC  RG /WG /INP_3  INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  445.      CHECK  ST_2  ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF /AM_1 /AM_2
  446. ;42 -> 000001(00,00)000100
  447. SETF  AMC  RG /WG /INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  448.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF  AM_1 /AM_2
  449. ;43 -> 00000100,(0000)0100
  450. SETF  AMC  RG /WG /INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  451.      CHECK /ST_2  ST_1  ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF  AM_1 /AM_2
  452. ;44 -> 00000100,00(0001)00
  453. SETF  AMC  RG /WG /INP_3 /INP_2 /INP_1  INP_0   CLOCKF  CLK1
  454.      CHECK  ST_2 /ST_1  ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF  AM_1 /AM_2
  455. ;45 -> 00000100,0000(0100)
  456. SETF  AMC  RG /WG /INP_3  INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  457.      CHECK  ST_2  ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF  AM_1 /AM_2
  458. ;46 -> 00000100,000001(00)0000
  459. SETF  AMC  RG /WG /INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  460.      CHECK /ST_2 /ST_1 /ST_0 /OUTPUT_1 /OUTPUT_0  VALID /AMF  AM_1  AM_2
  461. ;47 -> 00000100,00000100(00)00
  462. SETF  AMC  RG /WG /INP_3 /INP_2 /INP_1 /INP_0   CLOCKF  CLK1
  463.      CHECK /ST_2  ST_1  ST_0 /OUTPUT_1 /OUTPUT_0  VALID  AMF  AM_1  AM_2
  464. TRACE_OFF
  465.  
  466.