Search in sources :

Example 11 with Port

use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.

the class PriorityEncoder method updatePorts.

private void updatePorts(Instance instance) {
    Object dir = instance.getAttributeValue(StdAttr.FACING);
    BitWidth select = instance.getAttributeValue(Plexers.ATTR_SELECT);
    int n = 1 << select.getWidth();
    Port[] ps = new Port[n + 4];
    if (dir == Direction.NORTH || dir == Direction.SOUTH) {
        int x = -5 * n + 10;
        int y = dir == Direction.NORTH ? 40 : -40;
        for (int i = 0; i < n; i++) {
            ps[i] = new Port(x + 10 * i, y, Port.INPUT, 1);
        }
        ps[n + OUT] = new Port(0, 0, Port.OUTPUT, select.getWidth());
        ps[n + EN_IN] = new Port(x + 10 * n, y / 2, Port.INPUT, 1);
        ps[n + EN_OUT] = new Port(x - 10, y / 2, Port.OUTPUT, 1);
        ps[n + GS] = new Port(10, 0, Port.OUTPUT, 1);
    } else {
        int x = dir == Direction.EAST ? -40 : 40;
        int y = -5 * n + 10;
        for (int i = 0; i < n; i++) {
            ps[i] = new Port(x, y + 10 * i, Port.INPUT, 1);
        }
        ps[n + OUT] = new Port(0, 0, Port.OUTPUT, select.getWidth());
        ps[n + EN_IN] = new Port(x / 2, y + 10 * n, Port.INPUT, 1);
        ps[n + EN_OUT] = new Port(x / 2, y - 10, Port.OUTPUT, 1);
        ps[n + GS] = new Port(0, 10, Port.OUTPUT, 1);
    }
    for (int i = 0; i < n; i++) {
        ps[i].setToolTip(Strings.getter("priorityEncoderInTip", "" + i));
    }
    ps[n + OUT].setToolTip(Strings.getter("priorityEncoderOutTip"));
    ps[n + EN_IN].setToolTip(Strings.getter("priorityEncoderEnableInTip"));
    ps[n + EN_OUT].setToolTip(Strings.getter("priorityEncoderEnableOutTip"));
    ps[n + GS].setToolTip(Strings.getter("priorityEncoderGroupSignalTip"));
    instance.setPorts(ps);
}
Also used : BitWidth(com.cburch.logisim.data.BitWidth) Port(com.cburch.logisim.instance.Port)

Example 12 with Port

use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.

the class AbstractGate method computePorts.

void computePorts(Instance instance) {
    GateAttributes attrs = (GateAttributes) instance.getAttributeSet();
    int inputs = attrs.inputs;
    Port[] ports = new Port[inputs + 1];
    ports[0] = new Port(0, 0, Port.OUTPUT, StdAttr.WIDTH);
    for (int i = 0; i < inputs; i++) {
        Location offs = getInputOffset(attrs, i);
        ports[i + 1] = new Port(offs.getX(), offs.getY(), Port.INPUT, StdAttr.WIDTH);
    }
    instance.setPorts(ports);
}
Also used : Port(com.cburch.logisim.instance.Port) Location(com.cburch.logisim.data.Location)

Example 13 with Port

use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.

the class ControlledBuffer method configurePorts.

private void configurePorts(Instance instance) {
    Direction facing = instance.getAttributeValue(StdAttr.FACING);
    Bounds bds = getOffsetBounds(instance.getAttributeSet());
    int d = Math.max(bds.getWidth(), bds.getHeight()) - 20;
    Location loc0 = Location.create(0, 0);
    Location loc1 = loc0.translate(facing.reverse(), 20 + d);
    Location loc2;
    if (instance.getAttributeValue(ATTR_CONTROL) == LEFT_HANDED) {
        loc2 = loc0.translate(facing.reverse(), 10 + d, 10);
    } else {
        loc2 = loc0.translate(facing.reverse(), 10 + d, -10);
    }
    Port[] ports = new Port[3];
    ports[0] = new Port(0, 0, Port.OUTPUT, StdAttr.WIDTH);
    ports[1] = new Port(loc1.getX(), loc1.getY(), Port.INPUT, StdAttr.WIDTH);
    ports[2] = new Port(loc2.getX(), loc2.getY(), Port.INPUT, 1);
    instance.setPorts(ports);
}
Also used : Bounds(com.cburch.logisim.data.Bounds) Port(com.cburch.logisim.instance.Port) Direction(com.cburch.logisim.data.Direction) Location(com.cburch.logisim.data.Location)

Example 14 with Port

use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.

the class PortIO method configurePorts.

private void configurePorts(Instance instance) {
    if (instance.getAttributeValue(ATTR_BUS).equals(PINS)) {
    // TODO YSY PINS
    // Port[] ps = new Port[instance.getAttributeValue(ATTR_SIZE)];
    // for (int i = 0; i < instance.getAttributeValue(ATTR_SIZE); i++) {
    // 
    // ps[i] = new Port((i + 1) * 10, 0, Port.OUTPUT, 1);
    // ps[i].setToolTip(StringUtil.constantGetter(String.valueOf(i+1)));
    // }
    // instance.setPorts(ps);
    } else {
        int nbPorts = instance.getAttributeValue(ATTR_SIZE);
        Port[] ps = new Port[((nbPorts - 1) / 32) + 1];
        int i = 0;
        while (nbPorts > 0) {
            ps[i] = new Port((i + 1) * 10, 0, Port.INOUT, (nbPorts > 32) ? 32 : nbPorts);
            ps[i].setToolTip(StringUtil.constantGetter(String.valueOf((32 * i)) + " to " + String.valueOf(32 * i + (nbPorts > 32 ? 32 : nbPorts) - 1)));
            i++;
            nbPorts -= (nbPorts > 32) ? 32 : nbPorts;
        }
        instance.setPorts(ps);
    }
}
Also used : Port(com.cburch.logisim.instance.Port)

Example 15 with Port

use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.

the class DotMatrix method updatePorts.

private void updatePorts(Instance instance) {
    Object input = instance.getAttributeValue(ATTR_INPUT_TYPE);
    int rows = instance.getAttributeValue(ATTR_MATRIX_ROWS).intValue();
    int cols = instance.getAttributeValue(ATTR_MATRIX_COLS).intValue();
    Port[] ps;
    if (input == INPUT_COLUMN) {
        ps = new Port[cols];
        for (int i = 0; i < cols; i++) {
            ps[i] = new Port(10 * i, 0, Port.INPUT, rows);
        }
    } else if (input == INPUT_ROW) {
        ps = new Port[rows];
        for (int i = 0; i < rows; i++) {
            ps[i] = new Port(0, 10 * i, Port.INPUT, cols);
        }
    } else {
        if (rows <= 1) {
            ps = new Port[] { new Port(0, 0, Port.INPUT, cols) };
        } else if (cols <= 1) {
            ps = new Port[] { new Port(0, 0, Port.INPUT, rows) };
        } else {
            ps = new Port[] { new Port(0, 0, Port.INPUT, cols), new Port(0, 10, Port.INPUT, rows) };
        }
    }
    instance.setPorts(ps);
}
Also used : Port(com.cburch.logisim.instance.Port)

Aggregations

Port (com.cburch.logisim.instance.Port)40 BitWidth (com.cburch.logisim.data.BitWidth)12 Direction (com.cburch.logisim.data.Direction)10 Location (com.cburch.logisim.data.Location)9 Bounds (com.cburch.logisim.data.Bounds)6 Value (com.cburch.logisim.data.Value)3 Font (java.awt.Font)3 FontMetrics (java.awt.FontMetrics)3 Graphics (java.awt.Graphics)3 IOException (java.io.IOException)2 Component (com.cburch.logisim.comp.Component)1 AttributeSet (com.cburch.logisim.data.AttributeSet)1 Instance (com.cburch.logisim.instance.Instance)1 InstanceState (com.cburch.logisim.instance.InstanceState)1 VhdlContent (com.cburch.logisim.std.hdl.VhdlContent)1 FileNotFoundException (java.io.FileNotFoundException)1 PrintWriter (java.io.PrintWriter)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1