private void processChannel(int i, SignalBuffer db) { if (db == null) { return; } if (state[i]) { db.one(); } else { db.zero(); } }
public override void tick() { SignalBuffer dbA = getSignalInputBuffer(ioA); SignalBuffer dbB = getSignalInputBuffer(ioB); SignalBuffer dbout = getSignalOutputBuffer(ioOut); if (dbout == null) { return; } if ((dbA == null) && (dbB == null)) { if ((mode == CompareMode.A_larger_equal_B) || (mode == CompareMode.A_smaller_equal_B)) { dbout.one(); } else { dbout.zero(); } return; } switch (mode) { case CompareMode.A_larger_B: if (dbA == null) { for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (0 > dbB.data[i]) ? 1 : -1; } return; } if (dbB == null) { for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (dbA.data[i] > 0) ? 1 : -1; } return; } for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (dbA.data[i] > dbB.data[i]) ? 1 : -1; } return; case CompareMode.A_larger_equal_B: if (dbA == null) { for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (0 >= dbB.data[i]) ? 1 : -1; } return; } if (dbB == null) { for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (dbA.data[i] >= 0) ? 1 : -1; } return; } for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (dbA.data[i] >= dbB.data[i]) ? 1 : -1; } return; case CompareMode.A_smaller_B: if (dbA == null) { for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (0 < dbB.data[i]) ? 1 : -1; } return; } if (dbB == null) { for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (dbA.data[i] < 0) ? 1 : -1; } return; } for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (dbA.data[i] < dbB.data[i]) ? 1 : -1; } return; case CompareMode.A_smaller_equal_B: if (dbA == null) { for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (0 <= dbB.data[i]) ? 1 : -1; } return; } if (dbB == null) { for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (dbA.data[i] <= 0) ? 1 : -1; } return; } for (int i = 0; i < owner.blockSize; i++) { dbout.data[i] = (dbA.data[i] <= dbB.data[i]) ? 1 : -1; } return; } }