From ebd7df385178813ac4d458325086799205b856e5 Mon Sep 17 00:00:00 2001 From: hneemann Date: Sat, 4 Mar 2017 15:01:21 +0100 Subject: [PATCH] added a TT2 export --- .../builder/ATF1502/ATF1502CuplExporter.java | 4 +-- .../builder/ATF1502/ATF1502TT2Exporter.java | 33 +++++++++++++++++++ .../digital/builder/tt2/TT2Exporter.java | 22 ++++++------- .../gui/components/table/TableDialog.java | 21 ++++++++---- src/main/resources/lang/lang_de.xml | 2 ++ src/main/resources/lang/lang_en.xml | 2 ++ 6 files changed, 64 insertions(+), 20 deletions(-) create mode 100644 src/main/java/de/neemann/digital/builder/ATF1502/ATF1502TT2Exporter.java diff --git a/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporter.java b/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporter.java index 11d5144df..f6bd86d2f 100644 --- a/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporter.java +++ b/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502CuplExporter.java @@ -29,9 +29,9 @@ public class ATF1502CuplExporter extends Gal16v8CuplExporter { */ public ATF1502CuplExporter(String username, Date date) { super(username, date, "f1502plcc44", new PinMap() - .setAvailBidirectional(4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, + .setAvailBidirectional(4, 5, 6, 8, 9, 11, 12, 14, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, - 29, 31, 32, 33, 34, 36, 37, 38, 39, 40)); + 29, 31, 33, 34, 36, 37, 38, 39, 40)); setClockPin(43); } diff --git a/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502TT2Exporter.java b/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502TT2Exporter.java new file mode 100644 index 000000000..977255a29 --- /dev/null +++ b/src/main/java/de/neemann/digital/builder/ATF1502/ATF1502TT2Exporter.java @@ -0,0 +1,33 @@ +package de.neemann.digital.builder.ATF1502; + +import de.neemann.digital.builder.tt2.TT2Exporter; + +/** + * Creates a TT2 file suitable for the ATF1502 + * + * @author hneemann + */ +public class ATF1502TT2Exporter extends TT2Exporter { + + /** + * Creates a new project name + */ + public ATF1502TT2Exporter() { + this(System.getProperty("user.name")); + } + + /** + * Creates a new project name + * + * @param projectName user name + */ + public ATF1502TT2Exporter(String projectName) { + super(); + setProjectName(projectName); + getPinMapping().setAvailBidirectional(4, 5, 6, 8, 9, 11, 12, 14, 16, 17, + 18, 19, 20, 21, 24, 25, 26, 27, 28, + 29, 31, 33, 34, 36, 37, 38, 39, 40); + setClockPin(43); + } + +} diff --git a/src/main/java/de/neemann/digital/builder/tt2/TT2Exporter.java b/src/main/java/de/neemann/digital/builder/tt2/TT2Exporter.java index 429a73242..e9cfcc667 100644 --- a/src/main/java/de/neemann/digital/builder/tt2/TT2Exporter.java +++ b/src/main/java/de/neemann/digital/builder/tt2/TT2Exporter.java @@ -17,10 +17,10 @@ import java.util.*; * Created by hneemann on 03.03.17. */ public class TT2Exporter implements ExpressionExporter { - private BuilderCollector builder; - private PinMap pinMap; + private final BuilderCollector builder; + private final PinMap pinMap; private int clockPin; - private String name; + private String projectName; private String device; private OutputStreamWriter writer; private HashMap varIndexMap; @@ -36,7 +36,7 @@ public class TT2Exporter implements ExpressionExporter { builder = new BuilderCollector(); pinMap = new PinMap(); device = "f1502plcc44"; - name = "unknown"; + projectName = "unknown"; clockPin = 43; } @@ -59,11 +59,11 @@ public class TT2Exporter implements ExpressionExporter { /** * Sets the project name used * - * @param name the project name + * @param projectName the project name * @return this for chained calls */ - public TT2Exporter setName(String name) { - this.name = name; + public TT2Exporter setProjectName(String projectName) { + this.projectName = projectName; return this; } @@ -94,9 +94,9 @@ public class TT2Exporter implements ExpressionExporter { this.writer = writer; line("#$ TOOL CUPL"); line("# Berkeley PLA format generated using Digital"); - line("#$ TITLE " + name); - line("#$ MODULE " + name); - line("#$ JEDECFILE " + name); + line("#$ TITLE " + projectName); + line("#$ MODULE " + projectName); + line("#$ JEDECFILE " + projectName); line("#$ DEVICE " + device); line("#$ PINS " + getPins()); line(".i " + inputs.size()); @@ -346,7 +346,7 @@ public class TT2Exporter implements ExpressionExporter { if (var instanceof Variable) { set(getVarNum(((Variable) var).getIdentifier()), invers ? 0 : 1); } else - throw new FuseMapFillerException("invalid Expression"); + throw new FuseMapFillerException("invalid expression"); } } diff --git a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java index 04ae69230..7da87c33b 100644 --- a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java @@ -15,6 +15,7 @@ import de.neemann.digital.analyse.expression.modify.TwoInputs; import de.neemann.digital.analyse.format.TruthTableFormatterLaTeX; import de.neemann.digital.analyse.quinemc.BoolTableIntArray; import de.neemann.digital.builder.ATF1502.ATF1502CuplExporter; +import de.neemann.digital.builder.ATF1502.ATF1502TT2Exporter; import de.neemann.digital.builder.*; import de.neemann.digital.builder.Gal16v8.Gal16v8CuplExporter; import de.neemann.digital.builder.Gal16v8.Gal16v8JEDECExporter; @@ -401,7 +402,7 @@ public class TableDialog extends JDialog { @Override public void actionPerformed(ActionEvent actionEvent) { Gal16v8JEDECExporter jedecExporter = new Gal16v8JEDECExporter(); - createHardware(jedecExporter, filename); + createHardware(jedecExporter, filename, "jed"); new ShowStringDialog(parent, Lang.get("win_pinMapDialog"), jedecExporter.getPinMapping().toString()).setVisible(true); } }.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem()); @@ -418,7 +419,7 @@ public class TableDialog extends JDialog { @Override public void actionPerformed(ActionEvent actionEvent) { Gal22v10JEDECExporter jedecExporter = new Gal22v10JEDECExporter(); - createHardware(jedecExporter, filename); + createHardware(jedecExporter, filename, "jed"); new ShowStringDialog(parent, Lang.get("win_pinMapDialog"), jedecExporter.getPinMapping().toString()).setVisible(true); } }.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem()); @@ -432,6 +433,12 @@ public class TableDialog extends JDialog { createCUPL(new ATF1502CuplExporter()); } }.setToolTip(Lang.get("menu_table_createCUPL_tt")).createJMenuItem()); + atf1502.add(new ToolTipAction(Lang.get("menu_table_createTT2")) { + @Override + public void actionPerformed(ActionEvent actionEvent) { + createHardware(new ATF1502TT2Exporter(), filename, "tt2"); + } + }.setToolTip(Lang.get("menu_table_createTT2_tt")).createJMenuItem()); hardware.add(atf1502); @@ -440,18 +447,18 @@ public class TableDialog extends JDialog { return createMenu; } - private void createHardware(ExpressionExporter expressionExporter, File filename) { + private void createHardware(ExpressionExporter expressionExporter, File filename, String suffix) { if (filename == null) - filename = new File("circuit.jed"); + filename = new File("circuit." + suffix); else - filename = Main.checkSuffix(filename, "jed"); + filename = Main.checkSuffix(filename, suffix); JFileChooser fileChooser = new JFileChooser(); - fileChooser.setFileFilter(new FileNameExtensionFilter("JEDEC", "jed")); + fileChooser.setFileFilter(new FileNameExtensionFilter("JEDEC", suffix)); fileChooser.setSelectedFile(filename); if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { try { - try (OutputStream out = new FileOutputStream(Main.checkSuffix(fileChooser.getSelectedFile(), "jed"))) { + try (OutputStream out = new FileOutputStream(Main.checkSuffix(fileChooser.getSelectedFile(), suffix))) { expressionExporter.getPinMapping().addAll(pinMap); new BuilderExpressionCreator(expressionExporter.getBuilder(), ExpressionModifier.IDENTITY).create(); expressionExporter.writeTo(out); diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index a428e14a7..fcdff1315 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -586,6 +586,8 @@ Zur Analyse können Sie die Schaltung im Gatterschrittmodus ausführen. Erzeugen CUPL Erzeugt eine CUPL Quelldatei welche die Schaltung beschreibt. + TT2 + Erzeugt eine dem Berkeley Logic Interchange Format (BLIF) ähnliche Beschreibung der Logik. Schaltung Erzeugt eine Schaltung, welche der Wahrheitstabelle entspricht. Schaltung mit JK Flipflops diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index 77bb467d6..9dcb7a652 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -572,6 +572,8 @@ To analyse you can run the circuit in single gate step mode. Create CUPL source Creates a CUPL source file containing the define circuit. + TT2 + Creates a file containing the circuit similar to the Berkeley Logic Interchange Format (BLIF). Circuit Creates a circuit which reproduces the truth table. Circuit with JK flip-flops