mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-28 07:28:20 -04:00
added a TT2 export
This commit is contained in:
parent
a8259aba99
commit
ebd7df3851
@ -29,9 +29,9 @@ public class ATF1502CuplExporter extends Gal16v8CuplExporter {
|
|||||||
*/
|
*/
|
||||||
public ATF1502CuplExporter(String username, Date date) {
|
public ATF1502CuplExporter(String username, Date date) {
|
||||||
super(username, date, "f1502plcc44", new PinMap()
|
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,
|
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);
|
setClockPin(43);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,10 +17,10 @@ import java.util.*;
|
|||||||
* Created by hneemann on 03.03.17.
|
* Created by hneemann on 03.03.17.
|
||||||
*/
|
*/
|
||||||
public class TT2Exporter implements ExpressionExporter<TT2Exporter> {
|
public class TT2Exporter implements ExpressionExporter<TT2Exporter> {
|
||||||
private BuilderCollector builder;
|
private final BuilderCollector builder;
|
||||||
private PinMap pinMap;
|
private final PinMap pinMap;
|
||||||
private int clockPin;
|
private int clockPin;
|
||||||
private String name;
|
private String projectName;
|
||||||
private String device;
|
private String device;
|
||||||
private OutputStreamWriter writer;
|
private OutputStreamWriter writer;
|
||||||
private HashMap<String, Integer> varIndexMap;
|
private HashMap<String, Integer> varIndexMap;
|
||||||
@ -36,7 +36,7 @@ public class TT2Exporter implements ExpressionExporter<TT2Exporter> {
|
|||||||
builder = new BuilderCollector();
|
builder = new BuilderCollector();
|
||||||
pinMap = new PinMap();
|
pinMap = new PinMap();
|
||||||
device = "f1502plcc44";
|
device = "f1502plcc44";
|
||||||
name = "unknown";
|
projectName = "unknown";
|
||||||
clockPin = 43;
|
clockPin = 43;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,11 +59,11 @@ public class TT2Exporter implements ExpressionExporter<TT2Exporter> {
|
|||||||
/**
|
/**
|
||||||
* Sets the project name used
|
* Sets the project name used
|
||||||
*
|
*
|
||||||
* @param name the project name
|
* @param projectName the project name
|
||||||
* @return this for chained calls
|
* @return this for chained calls
|
||||||
*/
|
*/
|
||||||
public TT2Exporter setName(String name) {
|
public TT2Exporter setProjectName(String projectName) {
|
||||||
this.name = name;
|
this.projectName = projectName;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,9 +94,9 @@ public class TT2Exporter implements ExpressionExporter<TT2Exporter> {
|
|||||||
this.writer = writer;
|
this.writer = writer;
|
||||||
line("#$ TOOL CUPL");
|
line("#$ TOOL CUPL");
|
||||||
line("# Berkeley PLA format generated using Digital");
|
line("# Berkeley PLA format generated using Digital");
|
||||||
line("#$ TITLE " + name);
|
line("#$ TITLE " + projectName);
|
||||||
line("#$ MODULE " + name);
|
line("#$ MODULE " + projectName);
|
||||||
line("#$ JEDECFILE " + name);
|
line("#$ JEDECFILE " + projectName);
|
||||||
line("#$ DEVICE " + device);
|
line("#$ DEVICE " + device);
|
||||||
line("#$ PINS " + getPins());
|
line("#$ PINS " + getPins());
|
||||||
line(".i " + inputs.size());
|
line(".i " + inputs.size());
|
||||||
@ -346,7 +346,7 @@ public class TT2Exporter implements ExpressionExporter<TT2Exporter> {
|
|||||||
if (var instanceof Variable) {
|
if (var instanceof Variable) {
|
||||||
set(getVarNum(((Variable) var).getIdentifier()), invers ? 0 : 1);
|
set(getVarNum(((Variable) var).getIdentifier()), invers ? 0 : 1);
|
||||||
} else
|
} else
|
||||||
throw new FuseMapFillerException("invalid Expression");
|
throw new FuseMapFillerException("invalid expression");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ import de.neemann.digital.analyse.expression.modify.TwoInputs;
|
|||||||
import de.neemann.digital.analyse.format.TruthTableFormatterLaTeX;
|
import de.neemann.digital.analyse.format.TruthTableFormatterLaTeX;
|
||||||
import de.neemann.digital.analyse.quinemc.BoolTableIntArray;
|
import de.neemann.digital.analyse.quinemc.BoolTableIntArray;
|
||||||
import de.neemann.digital.builder.ATF1502.ATF1502CuplExporter;
|
import de.neemann.digital.builder.ATF1502.ATF1502CuplExporter;
|
||||||
|
import de.neemann.digital.builder.ATF1502.ATF1502TT2Exporter;
|
||||||
import de.neemann.digital.builder.*;
|
import de.neemann.digital.builder.*;
|
||||||
import de.neemann.digital.builder.Gal16v8.Gal16v8CuplExporter;
|
import de.neemann.digital.builder.Gal16v8.Gal16v8CuplExporter;
|
||||||
import de.neemann.digital.builder.Gal16v8.Gal16v8JEDECExporter;
|
import de.neemann.digital.builder.Gal16v8.Gal16v8JEDECExporter;
|
||||||
@ -401,7 +402,7 @@ public class TableDialog extends JDialog {
|
|||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent actionEvent) {
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
Gal16v8JEDECExporter jedecExporter = new Gal16v8JEDECExporter();
|
Gal16v8JEDECExporter jedecExporter = new Gal16v8JEDECExporter();
|
||||||
createHardware(jedecExporter, filename);
|
createHardware(jedecExporter, filename, "jed");
|
||||||
new ShowStringDialog(parent, Lang.get("win_pinMapDialog"), jedecExporter.getPinMapping().toString()).setVisible(true);
|
new ShowStringDialog(parent, Lang.get("win_pinMapDialog"), jedecExporter.getPinMapping().toString()).setVisible(true);
|
||||||
}
|
}
|
||||||
}.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem());
|
}.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem());
|
||||||
@ -418,7 +419,7 @@ public class TableDialog extends JDialog {
|
|||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent actionEvent) {
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
Gal22v10JEDECExporter jedecExporter = new Gal22v10JEDECExporter();
|
Gal22v10JEDECExporter jedecExporter = new Gal22v10JEDECExporter();
|
||||||
createHardware(jedecExporter, filename);
|
createHardware(jedecExporter, filename, "jed");
|
||||||
new ShowStringDialog(parent, Lang.get("win_pinMapDialog"), jedecExporter.getPinMapping().toString()).setVisible(true);
|
new ShowStringDialog(parent, Lang.get("win_pinMapDialog"), jedecExporter.getPinMapping().toString()).setVisible(true);
|
||||||
}
|
}
|
||||||
}.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem());
|
}.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem());
|
||||||
@ -432,6 +433,12 @@ public class TableDialog extends JDialog {
|
|||||||
createCUPL(new ATF1502CuplExporter());
|
createCUPL(new ATF1502CuplExporter());
|
||||||
}
|
}
|
||||||
}.setToolTip(Lang.get("menu_table_createCUPL_tt")).createJMenuItem());
|
}.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);
|
hardware.add(atf1502);
|
||||||
|
|
||||||
|
|
||||||
@ -440,18 +447,18 @@ public class TableDialog extends JDialog {
|
|||||||
return createMenu;
|
return createMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createHardware(ExpressionExporter expressionExporter, File filename) {
|
private void createHardware(ExpressionExporter expressionExporter, File filename, String suffix) {
|
||||||
if (filename == null)
|
if (filename == null)
|
||||||
filename = new File("circuit.jed");
|
filename = new File("circuit." + suffix);
|
||||||
else
|
else
|
||||||
filename = Main.checkSuffix(filename, "jed");
|
filename = Main.checkSuffix(filename, suffix);
|
||||||
|
|
||||||
JFileChooser fileChooser = new JFileChooser();
|
JFileChooser fileChooser = new JFileChooser();
|
||||||
fileChooser.setFileFilter(new FileNameExtensionFilter("JEDEC", "jed"));
|
fileChooser.setFileFilter(new FileNameExtensionFilter("JEDEC", suffix));
|
||||||
fileChooser.setSelectedFile(filename);
|
fileChooser.setSelectedFile(filename);
|
||||||
if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
|
if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
|
||||||
try {
|
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);
|
expressionExporter.getPinMapping().addAll(pinMap);
|
||||||
new BuilderExpressionCreator(expressionExporter.getBuilder(), ExpressionModifier.IDENTITY).create();
|
new BuilderExpressionCreator(expressionExporter.getBuilder(), ExpressionModifier.IDENTITY).create();
|
||||||
expressionExporter.writeTo(out);
|
expressionExporter.writeTo(out);
|
||||||
|
@ -586,6 +586,8 @@ Zur Analyse können Sie die Schaltung im Gatterschrittmodus ausführen.</string>
|
|||||||
<string name="menu_table_create">Erzeugen</string>
|
<string name="menu_table_create">Erzeugen</string>
|
||||||
<string name="menu_table_createCUPL">CUPL</string>
|
<string name="menu_table_createCUPL">CUPL</string>
|
||||||
<string name="menu_table_createCUPL_tt">Erzeugt eine CUPL Quelldatei welche die Schaltung beschreibt.</string>
|
<string name="menu_table_createCUPL_tt">Erzeugt eine CUPL Quelldatei welche die Schaltung beschreibt.</string>
|
||||||
|
<string name="menu_table_createTT2">TT2</string>
|
||||||
|
<string name="menu_table_createTT2_tt">Erzeugt eine dem Berkeley Logic Interchange Format (BLIF) ähnliche Beschreibung der Logik.</string>
|
||||||
<string name="menu_table_createCircuit">Schaltung</string>
|
<string name="menu_table_createCircuit">Schaltung</string>
|
||||||
<string name="menu_table_createCircuit_tt">Erzeugt eine Schaltung, welche der Wahrheitstabelle entspricht.</string>
|
<string name="menu_table_createCircuit_tt">Erzeugt eine Schaltung, welche der Wahrheitstabelle entspricht.</string>
|
||||||
<string name="menu_table_createCircuitJK">Schaltung mit JK Flipflops</string>
|
<string name="menu_table_createCircuitJK">Schaltung mit JK Flipflops</string>
|
||||||
|
@ -572,6 +572,8 @@ To analyse you can run the circuit in single gate step mode.</string>
|
|||||||
<string name="menu_table_create">Create</string>
|
<string name="menu_table_create">Create</string>
|
||||||
<string name="menu_table_createCUPL">CUPL source</string>
|
<string name="menu_table_createCUPL">CUPL source</string>
|
||||||
<string name="menu_table_createCUPL_tt">Creates a CUPL source file containing the define circuit.</string>
|
<string name="menu_table_createCUPL_tt">Creates a CUPL source file containing the define circuit.</string>
|
||||||
|
<string name="menu_table_createTT2">TT2</string>
|
||||||
|
<string name="menu_table_createTT2_tt">Creates a file containing the circuit similar to the Berkeley Logic Interchange Format (BLIF).</string>
|
||||||
<string name="menu_table_createCircuit">Circuit</string>
|
<string name="menu_table_createCircuit">Circuit</string>
|
||||||
<string name="menu_table_createCircuit_tt">Creates a circuit which reproduces the truth table.</string>
|
<string name="menu_table_createCircuit_tt">Creates a circuit which reproduces the truth table.</string>
|
||||||
<string name="menu_table_createCircuitJK">Circuit with JK flip-flops</string>
|
<string name="menu_table_createCircuitJK">Circuit with JK flip-flops</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user