mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-15 15:58:41 -04:00
allows the creation of circuits which only uses gates with a maximum of three inputs
This commit is contained in:
parent
8efd06a768
commit
8c4fc62e08
@ -11,6 +11,7 @@ import de.neemann.digital.analyse.expression.Operation;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* uses only gates with three inputs
|
||||
*/
|
||||
public class ThreeInputs implements ExpressionModifier {
|
||||
@Override
|
||||
@ -49,21 +50,12 @@ public class ThreeInputs implements ExpressionModifier {
|
||||
|
||||
private Expression gen(int a, int b) {
|
||||
int num = b - a + 1;
|
||||
System.out.println(num);
|
||||
if (num == 1)
|
||||
return expressions.get(a);
|
||||
else if (num == 2)
|
||||
return opGen.op(expressions.get(a), expressions.get(b));
|
||||
else {
|
||||
int d = 1;
|
||||
while (d * 3 * 2 < num)
|
||||
d *= 3;
|
||||
|
||||
if (d * 3 * 2 == num) {
|
||||
return opGen.op(
|
||||
gen(a, a + d * 3 - 1),
|
||||
gen(a + d * 3, b));
|
||||
} else {
|
||||
int d = num / 3;
|
||||
return opGen.op(
|
||||
gen(a, a + d - 1),
|
||||
gen(a + d, a + d * 2 - 1),
|
||||
@ -71,6 +63,5 @@ public class ThreeInputs implements ExpressionModifier {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -14,10 +14,7 @@ import de.neemann.digital.analyse.expression.Variable;
|
||||
import de.neemann.digital.analyse.expression.format.FormatToExpression;
|
||||
import de.neemann.digital.analyse.expression.format.FormatToTableLatex;
|
||||
import de.neemann.digital.analyse.expression.format.FormatterException;
|
||||
import de.neemann.digital.analyse.expression.modify.ExpressionModifier;
|
||||
import de.neemann.digital.analyse.expression.modify.NAnd;
|
||||
import de.neemann.digital.analyse.expression.modify.NOr;
|
||||
import de.neemann.digital.analyse.expression.modify.TwoInputs;
|
||||
import de.neemann.digital.analyse.expression.modify.*;
|
||||
import de.neemann.digital.analyse.format.TruthTableFormatterLaTeX;
|
||||
import de.neemann.digital.analyse.quinemc.BoolTableByteArray;
|
||||
import de.neemann.digital.builder.ATF150x.ATFDevice;
|
||||
@ -405,6 +402,13 @@ public class TableDialog extends JDialog {
|
||||
}
|
||||
}.setToolTip(Lang.get("menu_table_createTwo_tt")).createJMenuItem());
|
||||
|
||||
createMenu.add(new ToolTipAction(Lang.get("menu_table_createThree")) {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
createCircuit(new ThreeInputs());
|
||||
}
|
||||
}.setToolTip(Lang.get("menu_table_createThree_tt")).createJMenuItem());
|
||||
|
||||
createMenu.add(new ToolTipAction(Lang.get("menu_table_createNAnd")) {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
|
@ -1242,6 +1242,8 @@ Sind evtl. die Namen der Variablen nicht eindeutig?</string>
|
||||
<string name="menu_table_createNOr_tt">Erzeugt eine Schaltung, welche der Wahrheitstabelle entspricht nur mit NOr-Gattern.</string>
|
||||
<string name="menu_table_createTwo">Schaltung mit Gattern mit zwei Eingängen</string>
|
||||
<string name="menu_table_createTwo_tt">Erzeugt eine Schaltung und verwendet nur Gatter mit zwei Eingängen.</string>
|
||||
<string name="menu_table_createThree">Schaltung mit Gattern mit drei Eingängen</string>
|
||||
<string name="menu_table_createThree_tt">Erzeugt eine Schaltung und verwendet nur Gatter mit maximal drei Eingängen.</string>
|
||||
<string name="menu_table_create_hardware">Bausteine</string>
|
||||
<string name="menu_table_create_jedec_tt">Erzeugt eine JEDEC Datei für den Baustein</string>
|
||||
<string name="menu_table_exportTableLaTeX">Export LaTeX</string>
|
||||
|
@ -1238,6 +1238,8 @@
|
||||
<string name="menu_table_createNOr_tt">Creates a circuit which reproduces the truth table only with NOr gates.</string>
|
||||
<string name="menu_table_createTwo">Circuit with two input gates</string>
|
||||
<string name="menu_table_createTwo_tt">create circuit, use only gates with two inputs</string>
|
||||
<string name="menu_table_createThree">Circuit with three input gates</string>
|
||||
<string name="menu_table_createThree_tt">create circuit, use only gates with a maximum of three inputs</string>
|
||||
<string name="menu_table_create_hardware">Device</string>
|
||||
<string name="menu_table_create_jedec_tt">Creates a JEDEC file for the device</string>
|
||||
<string name="menu_table_exportTableLaTeX">Export LaTeX</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user