소스 검색

Add code for PAL20R4, R6 and R8

Fabio Battaglia 4 년 전
부모
커밋
86c1908813

+ 3 - 0
README.md

@@ -36,6 +36,9 @@ The following PAL models are supported:
 - PAL16R4
 - PAL16R6
 - PAL16R8
+- PAL20R4
+- PAL20R6
+- PAL20R8
 
 ### Command line
 

+ 16 - 6
src/main/java/info/hkzlab/dupal/analyzer/App.java

@@ -9,12 +9,22 @@ import info.hkzlab.dupal.analyzer.board.boardio.*;
 import info.hkzlab.dupal.analyzer.devices.*;
 
 public class App {
-    public static volatile String[] palTypes = { PAL16R8Specs.PAL_TYPE, 
-                                                 PAL16R6Specs.PAL_TYPE,
-                                                 PAL16R4Specs.PAL_TYPE,
-                                                 PAL16L8Specs.PAL_TYPE,
-                                                 PAL10L8Specs.PAL_TYPE,
-                                                 PAL20L8Specs.PAL_TYPE };
+    public static volatile String[] palTypes = { 
+                                                // Simple devices
+                                                PAL10L8Specs.PAL_TYPE,
+
+                                                // Asynchronous outputs
+                                                PAL16L8Specs.PAL_TYPE,
+                                                PAL20L8Specs.PAL_TYPE,
+
+                                                // Registered devices
+                                                PAL16R4Specs.PAL_TYPE,
+                                                PAL16R6Specs.PAL_TYPE,
+                                                PAL16R8Specs.PAL_TYPE,
+                                                PAL20R4Specs.PAL_TYPE,
+                                                PAL20R6Specs.PAL_TYPE,
+                                                PAL20R8Specs.PAL_TYPE 
+                                            };
 
     private final static Logger logger = LoggerFactory.getLogger(App.class);
 

+ 116 - 0
src/main/java/info/hkzlab/dupal/analyzer/devices/PAL20R4Specs.java

@@ -0,0 +1,116 @@
+package info.hkzlab.dupal.analyzer.devices;
+
+public class PAL20R4Specs implements PALSpecs {
+
+    public static final String PAL_TYPE = "20R4";
+
+    private static final String[] LABELS_RO =  {  null,  null,  null,  null,  null,  null,  null,  null,  null, null,    null,   null, "ro17", "ro18", "ro19", "ro20",   null,   null,   null,   null,   null,   null };
+    private static final String[] LABELS_IN =  {  "i1",  "i2",  "i3",  "i4",  "i5",  "i6",  "i7",  "i8",  "i9", "i10",   null,   null,   null,   null,   null,   null,   null,   null,  "i11",  "i13",  "i14",  "i23" };
+    private static final String[] LABELS_IO =  {  null,  null,  null,  null,  null,  null,  null,  null,  null,  null, "io15", "io16",   null,   null,   null,   null, "io21", "io22",   null,   null,   null,   null };
+    private static final String[] LABELS_O  =  { };
+
+    @Override
+    public String toString() {
+        return "PAL"+PAL_TYPE;
+    }
+
+    @Override
+    public boolean isActiveLow() {
+        return true;
+    }
+
+    @Override
+    public int getMask_CLK() {
+        return 0x01;
+    }
+
+    @Override
+    public int getMask_OE() {
+        return 0x80000;
+    }
+
+    @Override
+    public int getMask_IN() {
+        return 0x3403FE;
+    }
+
+    @Override
+    public int getMask_IO_R() {
+        return 0xC3;
+    }
+
+    @Override
+    public int getMask_IO_W() {
+        return 0x030C00;
+    }
+
+    @Override
+    public int getMask_RO_R() {
+        return 0x3C;
+    }
+
+    @Override
+    public int getMask_RO_W() {
+        return 0xF000;
+    }
+
+    @Override
+    public int getMask_O_R() {
+        return 0x00;
+    }
+
+    @Override
+    public int getMask_O_W() {
+        return 0x00;
+    }
+
+    @Override
+    public String[] getLabels_RO() {
+        return LABELS_RO;
+    }
+
+    @Override
+    public String[] getLabels_O() {
+        return LABELS_O;
+    }
+
+    @Override
+    public String[] getLabels_IO() {
+        return LABELS_IO;
+    }
+
+    @Override
+    public String[] getLabels_IN() {
+        return LABELS_IN;
+    }
+
+    @Override
+    public int getPinCount_IN() {
+        return 12;
+    }
+
+    @Override
+    public int getPinCount_IO() {
+        return 4;
+    }
+
+    @Override
+    public int getPinCount_O() {
+        return 0;
+    }
+
+    @Override
+    public int getPinCount_RO() {
+        return 4;
+    }
+
+    @Override
+    public int minimumBoardRev() {
+        return 2;
+    }
+
+    @Override
+    public int slotNumber() {
+        return 1;
+    }
+}

+ 116 - 0
src/main/java/info/hkzlab/dupal/analyzer/devices/PAL20R6Specs.java

@@ -0,0 +1,116 @@
+package info.hkzlab.dupal.analyzer.devices;
+
+public class PAL20R6Specs implements PALSpecs {
+
+    public static final String PAL_TYPE = "20R6";
+
+    private static final String[] LABELS_RO =  {  null,  null,  null,  null,  null,  null,  null,  null,  null, null,    null, "ro16", "ro17", "ro18", "ro19", "ro20", "ro21",   null,   null,   null,   null,   null };
+    private static final String[] LABELS_IN =  {  "i1",  "i2",  "i3",  "i4",  "i5",  "i6",  "i7",  "i8",  "i9", "i10",   null,   null,   null,   null,   null,   null,   null,   null,  "i11",  "i13",  "i14",  "i23" };
+    private static final String[] LABELS_IO =  {  null,  null,  null,  null,  null,  null,  null,  null,  null,  null, "io15",   null,   null,   null,   null,   null,   null, "io22",   null,   null,   null,   null };
+    private static final String[] LABELS_O  =  { };
+
+    @Override
+    public String toString() {
+        return "PAL"+PAL_TYPE;
+    }
+
+    @Override
+    public boolean isActiveLow() {
+        return true;
+    }
+
+    @Override
+    public int getMask_CLK() {
+        return 0x01;
+    }
+
+    @Override
+    public int getMask_OE() {
+        return 0x80000;
+    }
+
+    @Override
+    public int getMask_IN() {
+        return 0x3403FE;
+    }
+
+    @Override
+    public int getMask_IO_R() {
+        return 0x81;
+    }
+
+    @Override
+    public int getMask_IO_W() {
+        return 0x020400;
+    }
+
+    @Override
+    public int getMask_RO_R() {
+        return 0x7E;
+    }
+
+    @Override
+    public int getMask_RO_W() {
+        return 0x01F800;
+    }
+
+    @Override
+    public int getMask_O_R() {
+        return 0x00;
+    }
+
+    @Override
+    public int getMask_O_W() {
+        return 0x00;
+    }
+
+    @Override
+    public String[] getLabels_RO() {
+        return LABELS_RO;
+    }
+
+    @Override
+    public String[] getLabels_O() {
+        return LABELS_O;
+    }
+
+    @Override
+    public String[] getLabels_IO() {
+        return LABELS_IO;
+    }
+
+    @Override
+    public String[] getLabels_IN() {
+        return LABELS_IN;
+    }
+
+    @Override
+    public int getPinCount_IN() {
+        return 12;
+    }
+
+    @Override
+    public int getPinCount_IO() {
+        return 2;
+    }
+
+    @Override
+    public int getPinCount_O() {
+        return 0;
+    }
+
+    @Override
+    public int getPinCount_RO() {
+        return 6;
+    }
+
+    @Override
+    public int minimumBoardRev() {
+        return 2;
+    }
+
+    @Override
+    public int slotNumber() {
+        return 1;
+    }
+}

+ 116 - 0
src/main/java/info/hkzlab/dupal/analyzer/devices/PAL20R8Specs.java

@@ -0,0 +1,116 @@
+package info.hkzlab.dupal.analyzer.devices;
+
+public class PAL20R8Specs implements PALSpecs {
+
+    public static final String PAL_TYPE = "20R8";
+
+    private static final String[] LABELS_RO =  {  null,  null,  null,  null,  null,  null,  null,  null,  null, null, "ro15", "ro16", "ro17", "ro18", "ro19", "ro20", "ro21", "ro22",   null,   null,   null,   null };
+    private static final String[] LABELS_IN =  {  "i1",  "i2",  "i3",  "i4",  "i5",  "i6",  "i7",  "i8",  "i9", "i10",  null,   null,   null,   null,   null,   null,   null,   null,  "i11",  "i13",  "i14",  "i23" };
+    private static final String[] LABELS_IO =  { };
+    private static final String[] LABELS_O  =  { };
+
+    @Override
+    public String toString() {
+        return "PAL"+PAL_TYPE;
+    }
+
+    @Override
+    public boolean isActiveLow() {
+        return true;
+    }
+
+    @Override
+    public int getMask_CLK() {
+        return 0x01;
+    }
+
+    @Override
+    public int getMask_OE() {
+        return 0x80000;
+    }
+
+    @Override
+    public int getMask_IN() {
+        return 0x3403FE;
+    }
+
+    @Override
+    public int getMask_IO_R() {
+        return 0x00;
+    }
+
+    @Override
+    public int getMask_IO_W() {
+        return 0x00;
+    }
+
+    @Override
+    public int getMask_RO_R() {
+        return 0xFF;
+    }
+
+    @Override
+    public int getMask_RO_W() {
+        return 0x3FC00;
+    }
+
+    @Override
+    public int getMask_O_R() {
+        return 0x00;
+    }
+
+    @Override
+    public int getMask_O_W() {
+        return 0x00;
+    }
+
+    @Override
+    public String[] getLabels_RO() {
+        return LABELS_RO;
+    }
+
+    @Override
+    public String[] getLabels_O() {
+        return LABELS_O;
+    }
+
+    @Override
+    public String[] getLabels_IO() {
+        return LABELS_IO;
+    }
+
+    @Override
+    public String[] getLabels_IN() {
+        return LABELS_IN;
+    }
+
+    @Override
+    public int getPinCount_IN() {
+        return 12;
+    }
+
+    @Override
+    public int getPinCount_IO() {
+        return 0;
+    }
+
+    @Override
+    public int getPinCount_O() {
+        return 0;
+    }
+
+    @Override
+    public int getPinCount_RO() {
+        return 8;
+    }
+
+    @Override
+    public int minimumBoardRev() {
+        return 2;
+    }
+
+    @Override
+    public int slotNumber() {
+        return 1;
+    }
+}